@micheeeeel/yinyangapp 1.0.6 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -0
- package/dist/bundle.js +2 -1
- package/dist/bundle.js.LICENSE.txt +1 -0
- package/dist/types/adapters/yinYangAdapter.d.ts +10 -0
- package/dist/types/animations/AnimationsMngr.d.ts +7 -19
- package/dist/types/api-film.d.ts +22 -0
- package/dist/types/api.d.ts +48 -0
- package/dist/types/benchmark/runner.d.ts +5 -0
- package/dist/types/benchmark/scenarios.d.ts +118 -0
- package/dist/types/components/action-image/ActionImageModal.d.ts +42 -0
- package/dist/types/components/controller/YinYangController.d.ts +946 -18
- package/dist/types/components/controller/action-stack/ActionStackController.d.ts +149 -0
- package/dist/types/components/controller/action-stack/ActionStackDragHandler.d.ts +111 -0
- package/dist/types/components/controller/action-stack/ActionStackManager.d.ts +118 -0
- package/dist/types/components/controller/action-stack/ActionStackState.d.ts +169 -0
- package/dist/types/components/controller/actions/ActionProjectionService.d.ts +73 -0
- package/dist/types/components/controller/actions/ChildActionMenuController.d.ts +83 -0
- package/dist/types/components/controller/actions/CoreEventMenuController.d.ts +90 -0
- package/dist/types/components/controller/actions/radialItemMenu.d.ts +117 -0
- package/dist/types/components/controller/children/ChildInteractionController.d.ts +38 -0
- package/dist/types/components/controller/children/ChildrenOrbitService.d.ts +14 -0
- package/dist/types/components/controller/force-field/EventFieldLifecycleController.d.ts +104 -0
- package/dist/types/components/controller/force-field/EventFieldRenderer.d.ts +86 -0
- package/dist/types/components/controller/force-field/ForceFieldComputationService.d.ts +50 -0
- package/dist/types/components/controller/force-field/ForceFieldDetailsPanel.d.ts +639 -0
- package/dist/types/components/controller/force-field/ForceFieldLifecycleController.d.ts +53 -0
- package/dist/types/components/controller/force-field/ForceFieldRenderer.d.ts +67 -0
- package/dist/types/components/controller/force-field/types.d.ts +42 -0
- package/dist/types/components/controller/labels/ChildScoresDeltaRenderer.d.ts +33 -0
- package/dist/types/components/controller/labels/ContextLabelsRenderer.d.ts +155 -0
- package/dist/types/components/controller/labels/WeightPreviewRingRenderer.d.ts +61 -0
- package/dist/types/components/controller/odd/ChildrenOrbitManager.d.ts +25 -0
- package/dist/types/components/controller/odd/OddViewManager.d.ts +44 -0
- package/dist/types/components/controller/search/SearchPanelSynchronizer.d.ts +125 -0
- package/dist/types/components/controller/settings/ControllerSettingsApplier.d.ts +50 -0
- package/dist/types/components/controller/state/BlockingAnimationTracker.d.ts +17 -0
- package/dist/types/components/controller/state/YinYangControllerState.d.ts +176 -0
- package/dist/types/components/controller/utils/actionStackMath.d.ts +13 -0
- package/dist/types/components/controller/utils/actionStackReorder.d.ts +7 -0
- package/dist/types/components/controller/utils/childrenOrbit.d.ts +18 -0
- package/dist/types/components/controller/utils/cuttingLabels.d.ts +9 -0
- package/dist/types/components/controller/utils/eventFieldStyle.d.ts +13 -0
- package/dist/types/components/controller/utils/eventFieldTargets.d.ts +47 -0
- package/dist/types/components/controller/utils/forceFieldMetadata.d.ts +4 -0
- package/dist/types/components/controller/utils/forceFieldPresentation.d.ts +9 -0
- package/dist/types/components/controller/utils/forceFieldStyle.d.ts +10 -0
- package/dist/types/components/controller/utils/labelGeometry.d.ts +5 -0
- package/dist/types/components/controller/utils/oddCutting.d.ts +2 -0
- package/dist/types/components/controller/utils/svgCoordinates.d.ts +9 -0
- package/dist/types/components/controller/utils/svgTransform.d.ts +5 -0
- package/dist/types/components/controller/utils/textLayout.d.ts +2 -0
- package/dist/types/components/controls/VizControlsPanel.d.ts +14 -0
- package/dist/types/components/factory/YinYangAppFactory.d.ts +4 -6
- package/dist/types/components/model/YinYangModel.d.ts +4 -30
- package/dist/types/components/panel/DiagramPanelBridge.d.ts +34 -0
- package/dist/types/components/panel/PanelManager.d.ts +150 -0
- package/dist/types/components/search/GlobalSearchController.d.ts +396 -0
- package/dist/types/components/stack-nav/StackNavOverlay.d.ts +82 -0
- package/dist/types/components/view/BorderDrawer.d.ts +203 -13
- package/dist/types/components/view/SpikeDrawer.d.ts +37 -31
- package/dist/types/components/view/ViewInitializer.d.ts +438 -2
- package/dist/types/components/view/YinYangDrawer.d.ts +414 -11
- package/dist/types/config/animationConfig.d.ts +37 -0
- package/dist/types/config/deltaColors.d.ts +64 -0
- package/dist/types/config/labelStyleConfig.d.ts +50 -0
- package/dist/types/data/OddCategoryColors.d.ts +12 -2
- package/dist/types/data/adverse-action-planner.d.ts +51 -0
- package/dist/types/data/adverse-action-planner.test.d.ts +1 -0
- package/dist/types/data/amplifier-engine.d.ts +107 -0
- package/dist/types/data/amplifier-engine.test.d.ts +1 -0
- package/dist/types/data/combo-engine.d.ts +94 -0
- package/dist/types/data/combo-engine.test.d.ts +1 -0
- package/dist/types/data/odd_generic_descriptions.d.ts +4 -0
- package/dist/types/data/odd_labels.d.ts +5 -0
- package/dist/types/data/yasuni_actions.d.ts +47 -0
- package/dist/types/data/yasuni_adverse_actions.d.ts +2 -0
- package/dist/types/data/yasuni_adverse_key_events.d.ts +2 -0
- package/dist/types/data/yasuni_cause.d.ts +33 -0
- package/dist/types/data/yasuni_graph.d.ts +22 -0
- package/dist/types/data/yasuni_key_events.d.ts +61 -0
- package/dist/types/data/yasuni_propagation_layers.d.ts +3 -0
- package/dist/types/interfaces/IActions.d.ts +1 -0
- package/dist/types/interfaces/ICauseGraph.d.ts +9 -0
- package/dist/types/interfaces/ICauseModel.d.ts +33 -0
- package/dist/types/interfaces/IGraphicsStrategy.d.ts +9 -5
- package/dist/types/interfaces/IPropagationLayers.d.ts +27 -0
- package/dist/types/interfaces/IViewData.d.ts +12 -0
- package/dist/types/interfaces/IYinYangAppFactory.d.ts +3 -3
- package/dist/types/interfaces/IYinYangController.d.ts +301 -6
- package/dist/types/interfaces/IYinYangGeometry.d.ts +43 -0
- package/dist/types/interfaces/IYinYangInternalModel.d.ts +34 -0
- package/dist/types/interfaces/IYinYangModel.d.ts +3 -11
- package/dist/types/main.d.ts +9 -0
- package/dist/types/utils/actionImages.d.ts +14 -0
- package/dist/types/utils/actionPropagation.d.ts +74 -0
- package/dist/types/utils/appMode.d.ts +5 -0
- package/dist/types/utils/causeGraph.d.ts +6 -0
- package/dist/types/utils/causeMetrics.d.ts +26 -0
- package/dist/types/utils/chainCardHeight.d.ts +27 -0
- package/dist/types/utils/d3/D3Element.d.ts +2 -2
- package/dist/types/utils/d3/D3GraphicsStrategy.d.ts +21 -4
- package/dist/types/utils/deltaChips.d.ts +15 -0
- package/dist/types/utils/deltaLabels.d.ts +54 -0
- package/dist/types/utils/facetteImages.d.ts +1 -0
- package/dist/types/utils/geometryUtils.d.ts +0 -1
- package/dist/types/utils/hierBadge.d.ts +44 -0
- package/dist/types/utils/idleSphereImage.d.ts +8 -0
- package/dist/types/utils/keyEventImages.d.ts +41 -0
- package/dist/types/utils/oddLegend.d.ts +30 -0
- package/dist/types/utils/positionalEfficiency.d.ts +16 -0
- package/dist/types/utils/yinYangWatermark.d.ts +29 -0
- package/package.json +27 -12
- package/dist/index.html +0 -1
- package/dist/types/data/coupe_rase_Orangs-outans/data_Kalimantan.d.ts +0 -3
- package/dist/types/data/coupe_rase_Orangs-outans/data_PT_Mayawana_Persada.d.ts +0 -3
- package/dist/types/data/data_institu_bancaire.d.ts +0 -3
- package/dist/types/interfaces/IOddItem.d.ts +0 -6
- package/dist/types/script.d.ts +0 -13
package/dist/bundle.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("d3")):"function"==typeof define&&define.amd?define(["d3"],e):"object"==typeof exports?exports.YinYangApp=e(require("d3")):t.YinYangApp=e(t.d3)}(this,t=>(()=>{"use strict";var e={5(t,e){function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function i(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,n(i.key),i)}}function n(t){var e=function(t){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,"string");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==r(e)?e:e+""}Object.defineProperty(e,"__esModule",{value:!0}),e.AnimationsMngr=void 0;var o=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.subscribers=[]},e=[{key:"subscribe",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e4;this.subscribers.push({component:t,clockWise:e,time:r})}},{key:"startAll",value:function(){var t=this;this.subscribers.forEach(function(e){var r=e.component,i=e.clockWise,n=e.time;return t.animate(r,i,n)})}},{key:"revertRotation",value:function(t){var e=this.subscribers.find(function(e){return e.component===t});e&&(t.view.viewInitializer.yinYangGroup.interruptAllAnimation(),e.clockWise=!e.clockWise,this.animate(t,e.clockWise,e.time))}},{key:"animate",value:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e3,i=t.view.viewInitializer,n=i.yinYangGroup,o=i.yinOrYangGroup,a=i.positionX,s=i.positionY;n.applyContinuousRotation(r,a,s,e),Object.values(o).forEach(function(t){var n=t.type,o=i.yinOrYangGroup.yin.centerY,s=i.yinOrYangGroup.yang.centerY,c=i.yinOrYangGroup.yin.radius,l=i.yinOrYangGroup.yang.radius,u="yang"===n?c:-l,y="yang"===n?s:o;t.graphElementGroup.applyTranslationAndRotationAltogether(r,a,y,u,e,n)})}}],e&&i(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();e.AnimationsMngr=o},67(t,e){function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function i(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,n(i.key),i)}}function n(t){var e=function(t){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,"string");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==r(e)?e:e+""}Object.defineProperty(e,"__esModule",{value:!0}),e.YinYangDrawer=void 0;var o=function(){return t=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.ViewInitializer=e},(e=[{key:"initialize",value:function(){this.viewData=this.ViewInitializer.viewData,this.yinYangGroup=this.ViewInitializer.yinYangGroup,this.yinOrYangGroup=this.ViewInitializer.yinOrYangGroup,this.graphicStrategy=this.ViewInitializer.graphicStrategy,this.positionX=this.ViewInitializer.positionX,this.positionY=this.ViewInitializer.positionY,this.categories=this.ViewInitializer.categories,this.containerId=this.ViewInitializer.containerId,this.key=this.ViewInitializer.key}},{key:"createYinYangPattern",value:function(){this.drawMainCircle(),this.drawSemiCircle(),this.drawYinYangSymbols(this.yinOrYangGroup)}},{key:"drawMainCircle",value:function(){this.graphicStrategy.drawCircle(this.yinYangGroup,this.positionX,this.positionY,this.ViewInitializer.borderInnerRadius,"white"),this.yinYangGroup.select("circle").setAttribute("stroke","black")}},{key:"drawSemiCircle",value:function(){this.graphicStrategy.drawArc(this.yinYangGroup,this.positionX,this.positionY,0,this.ViewInitializer.borderInnerRadius,0,Math.PI,"black")}},{key:"drawYinYangSymbols",value:function(t){var e=this;Object.values(t).forEach(function(t){e.drawYinOrYang(t.centerY,t.radius,t.type)})}},{key:"drawYinOrYang",value:function(t,e,r){this.graphicStrategy.drawCircle(this.yinYangGroup,this.positionX,t,e,"yin"===r?"black":"white");var i=e/this.yinOrYangGroup[r].smallRadiusRatio;this.drawCategoryArcs(t,e,r,i),this.graphicStrategy.drawCircle(this.yinOrYangGroup[r].graphElementGroup,this.positionX,t,i,"yin"===r?"white":"black",1)}},{key:"drawCategoryArcs",value:function(t,e,r,i){var n=this;this.categories.forEach(function(o){var a="".concat(n.containerId,"-").concat(o.category,"-").concat(n.key,"-").concat(r),s="".concat(n.containerId,"-categoryArcMask-").concat(a);n.categories.length>1&&n.graphicStrategy.createYinOrYangArcMask(s,n.positionX,t,i,e,o.angles.startAngle,o.angles.endAngle,r);var c="".concat(n.containerId,"-categoryArcGradientId-").concat(a);n.graphicStrategy.createUnderlyingCircleGradient(c,o.color),n.graphicStrategy.createUnderlyingCircleWithArcMask(s,c,n.yinOrYangGroup[r].graphElementGroup,n.positionX,t,e)})}}])&&i(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();e.YinYangDrawer=o},317(t,e,r){function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,i=Array(e);r<e;r++)i[r]=t[r];return i}function o(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,a(i.key),i)}}function a(t){var e=function(t){if("object"!=i(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=i(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==i(e)?e:e+""}var s,c=this&&this.__createBinding||(Object.create?function(t,e,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(e,r);n&&!("get"in n?!e.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,i,n)}:function(t,e,r,i){void 0===i&&(i=r),t[i]=e[r]}),l=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),u=this&&this.__importStar||(s=function(t){return s=Object.getOwnPropertyNames||function(t){var e=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[e.length]=r);return e},s(t)},function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r=s(t),i=0;i<r.length;i++)"default"!==r[i]&&c(e,t,r[i]);return l(e,t),e});Object.defineProperty(e,"__esModule",{value:!0}),e.D3GraphicsStrategy=void 0;var y=u(r(893)),p=r(601),f=r(620),h=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.animator=new f.D3Animator,this.currentScale=1,this.currentY=0,this.currentX=0},e=[{key:"initialize",value:function(t,e){var r=y.select("#".concat(t)).append("svg").attr("width",e).attr("height",e);return this.defs=new p.D3Element(r.append("defs")),new p.D3Element(r)}},{key:"resizeGroup",value:function(t,e,r,i){t.setAttribute("transform","translate(".concat(r,", ").concat(i,") \n scale(").concat(e,") \n translate(").concat(-r,", ").concat(-i,") "))}},{key:"drawArc",value:function(t,e,r,i,n,o,a,s){var c=y.arc().innerRadius(i).outerRadius(n).startAngle(o).endAngle(a);t.appendElement("path").setAttribute("d",c).setAttribute("transform","translate(".concat(e,",").concat(r,")")).setStyle("fill",s)}},{key:"drawCircle",value:function(t,e,r,i,n){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;return t.appendElement("circle").setAttribute("cx",e.toString()).setAttribute("cy",r.toString()).setAttribute("r",i.toString()).setStyle("fill",n).setStyle("opacity",o.toString())}},{key:"createLinearGradient",value:function(t,e,r,i,n,o,a){var s=this.defs.appendElement("linearGradient").setAttribute("id",t).setAttribute("x1",e).setAttribute("y1",r).setAttribute("x2",i).setAttribute("y2",n).setAttribute("gradientUnits",a);return o.forEach(function(t){s.appendElement("stop").setAttribute("offset",t.offset).setAttribute("stop-color",t.color).setAttribute("stop-opacity",t.opacity.toString())}),s}},{key:"createArc",value:function(t,e,r,i){return y.arc().innerRadius(t).outerRadius(e).startAngle(r).endAngle(i)}},{key:"createYinOrYangArcMask",value:function(t,e,r,i,n,o,a,s){var c=Math.PI-o,l=Math.PI-a,u=this.createArc(i,n,"yang"===s?o:c,"yang"===s?a:l),y=this.defs.appendElement("mask").setAttribute("id",t);this.createLinearGradient("start","0%","0%","100%","0%",[{offset:"0%",color:"white",opacity:1},{offset:"100%",color:"white",opacity:0}],"objectBoundingBox"),this.createLinearGradient("end","0%","0%","100%","0%",[{offset:"0%",color:"white",opacity:0},{offset:"100%",color:"white",opacity:1}],"objectBoundingBox");var p=180+180*("yang"===s?o:c)/Math.PI,f=.1*n;y.appendElement("rect").setAttribute("x",(e-("yang"===s?0:f)).toString()).setAttribute("y",r.toString()).setAttribute("transform","rotate(".concat(p,",").concat(e,",").concat(r,")")).setAttribute("width",f.toString()).setAttribute("height",n.toString()).setAttribute("fill","yang"===s?"url(#start)":"url(#end)");var h=180+180*("yang"===s?a:l)/Math.PI;return y.appendElement("rect").setAttribute("x",(e-("yang"===s?f:0)).toString()).setAttribute("y",r.toString()).setAttribute("transform","rotate(".concat(h,",").concat(e,",").concat(r.toString(),")")).setAttribute("width",f.toString()).setAttribute("height",n.toString()).setAttribute("fill","yang"===s?"url(#end)":"url(#start)"),y.appendElement("path").setAttribute("d",u({})||"").setAttribute("transform","translate(".concat(e,", ").concat(r.toString(),")")).setAttribute("fill","white"),y}},{key:"createBorderMask",value:function(t,e,r,i,n){var o=this.createArc(i,n,0,2*Math.PI),a=this.defs.appendElement("mask").setAttribute("id",t),s=this.defs.appendElement("radialGradient").setAttribute("id","borderMaskGradient").setAttribute("cx","50%").setAttribute("cy","50%").setAttribute("r","50%"),c=i/n,l=100*c,u=l+100*(1-c)*.7;s.appendElement("stop").setAttribute("offset","".concat(l,"%")).setAttribute("stop-color","white").setAttribute("stop-opacity","1"),s.appendElement("stop").setAttribute("offset","".concat(u,"%")).setAttribute("stop-color","white").setAttribute("stop-opacity","0"),a.appendElement("path").setAttribute("d",o({})||"").setAttribute("transform","translate(".concat(e,", ").concat(r,")")).setAttribute("fill","url(#borderMaskGradient)")}},{key:"changeBorderColors",value:function(t,e,r){var i=e;r.push(r[0]),this.animator.applyColorAnimation(t.select("stop:first-child").node(),i,r);var o=function(t){return function(t){if(Array.isArray(t))return n(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return n(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(r).filter(function(t){return void 0!==t});o.length>0&&o.unshift(o.pop()),o.push(o[0]),this.animator.applyColorAnimation(t.select("stop:last-child").node(),i,o)}},{key:"drawLineWithGradient",value:function(t,e,r,i,n,o){t.appendElement("line").setAttribute("x1",e.toString()).setAttribute("y1",r.toString()).setAttribute("x2",i.toString()).setAttribute("y2",n.toString()).setStyle("stroke","url(#".concat(o,")"))}},{key:"createUnderlyingCircleGradient",value:function(t,e){var r=this.defs.appendElement("radialGradient").setAttribute("id",t).setAttribute("cx","50%").setAttribute("cy","50%").setAttribute("r","50%");r.appendElement("stop").setAttribute("offset","0%").setAttribute("stop-color",e).setAttribute("stop-opacity","1"),r.appendElement("stop").setAttribute("offset","100%").setAttribute("stop-color",e).setAttribute("stop-opacity","0")}},{key:"createUnderlyingCircleWithArcMask",value:function(t,e,r,i,n,o){this.drawCircle(r,i,n,o,"url(#".concat(e,")")).setAttribute("mask","url(#".concat(t,")"))}}],e&&o(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();e.D3GraphicsStrategy=h},441(t,e,r){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.initializeYinYangApp=s,e.createYinYangSvg=function(t){var e,r,i,n=document.createElement("div");n.style.position="absolute",n.style.left="-99999px",n.style.top="-99999px",document.body.appendChild(n);var o=document.createElement("div"),a=null!==(e=t.viewData.containerId)&&void 0!==e?e:"yinyang-temp-".concat(crypto.randomUUID()).replace(/[^a-zA-Z0-9-_]/g,"");o.id=a,n.appendChild(o);var s=Object.assign(Object.assign({},t.viewData),{containerId:a}),l=c(t.data,s,null===(r=t.isEnemy)||void 0===r||r);(null===(i=t.includeChildren)||void 0===i||i)&&l.createYinYangChildren();var u=o.querySelector("svg"),y=u instanceof SVGSVGElement?u.cloneNode(!0):null;return document.body.removeChild(n),y},e.createYinYangSvgs=function(t){var e=document.createElement("div");e.style.position="absolute",e.style.left="-99999px",e.style.top="-99999px",document.body.appendChild(e);var r=[];return t.forEach(function(t,i){var n,o,a,s=document.createElement("div"),l=null!==(n=t.viewData.containerId)&&void 0!==n?n:"yinyang-temp-".concat(i,"-").concat(crypto.randomUUID()).replace(/[^a-zA-Z0-9-_]/g,"");s.id=l,e.appendChild(s);var u=Object.assign(Object.assign({},t.viewData),{containerId:l}),y=c(t.data,u,null===(o=t.isEnemy)||void 0===o||o);(null===(a=t.includeChildren)||void 0===a||a)&&y.createYinYangChildren();var p=s.querySelector("svg");p instanceof SVGSVGElement&&r.push(p.cloneNode(!0)),e.removeChild(s)}),document.body.removeChild(e),r};var n=r(578),o=i(r(462)),a=r(317);function s(t){var e={modelDataEnemy:o.default,viewDataEnemy:t},r=new a.D3GraphicsStrategy;new n.YinYangAppFactory(r).create(e.modelDataEnemy,e.viewDataEnemy,!0).createYinYangChildren()}function c(t,e,r){var i=new a.D3GraphicsStrategy;return new n.YinYangAppFactory(i).create(t,e,r)}document.addEventListener("DOMContentLoaded",function(){try{var t=document.getElementById("svg-container");if(!t)throw new Error("#svg-container non trouvé");var e=t.clientWidth,r=t.clientHeight,i={minEdge:Math.min(e,r),containerId:"svg-container",borderAnimationDuration:15e3};console.log("combien de fois tu passes par là en tant que parent ?"),s(i)}catch(t){console.error("An error occurred during initialization:",t)}})},462(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=[{categorie:"Environment",composante:"Déforestation de la forêt tropicale",score:.1,description:"Destruction massive de la forêt tropicale, menaçant les habitats naturels."},{categorie:"Environment",composante:"Drainage des tourbières",score:.2,description:"Assèchement des tourbières, perturbant l'écosystème et augmentant les émissions de CO2."},{categorie:"Environment",composante:"Plantations d'eucalyptus et d'acacias",score:.3,description:"Établissement de monocultures avec impact négatif sur la biodiversité."},{categorie:"Economy",composante:"Création d'emplois temporaires",score:.4,description:"Offre d'emplois à court terme mais sans développement durable à long terme."},{categorie:"Economy",composante:"Production de matières premières pour le papier",score:.5,description:"Contribution économique par la production de papier, mais avec des pratiques non durables."},{categorie:"Wellbeing",composante:"Violation des droits des indigènes Dayak",score:.1,description:"Vol des terres et déplacement des communautés locales, affectant leur mode de vie."},{categorie:"Wellbeing",composante:"Impact sur la santé des travailleurs",score:.3,description:"Conditions de travail potentiellement dangereuses sans mesures de protection adéquates."},{categorie:"Peace",composante:"Conflits avec les communautés locales",score:.2,description:"Tensions et conflits dus au vol des terres et à la destruction des ressources naturelles."},{categorie:"Peace",composante:"Manque de transparence financière",score:.2,description:"Absence de divulgation des informations sur les dirigeants et les pratiques de l'entreprise."},{categorie:"Cooperation",composante:"Relations avec les organisations environnementales",score:.1,description:"Faibles collaborations avec les ONG, malgré les appels à l'action."},{categorie:"Cooperation",composante:"Engagement envers la chaîne d’approvisionnement sans déforestation",score:.3,description:"Déclaration d'engagement par RGE, mais non-respecté par PT Mayawana Persada."}]},468(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.categoryColorNames=void 0,e.categoryColorNames={Environment:"green",Economy:"blue",Wellbeing:"red",Peace:"orange",Cooperation:"cyan"}},528(t,e){function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function i(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,n(i.key),i)}}function n(t){var e=function(t){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,"string");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==r(e)?e:e+""}Object.defineProperty(e,"__esModule",{value:!0}),e.BorderDrawer=void 0;var o=function(){return t=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.ViewInitializer=e},e=[{key:"initialize",value:function(){this.viewData=this.ViewInitializer.viewData,this.yinYangGroup=this.ViewInitializer.yinYangGroup,this.graphicStrategy=this.ViewInitializer.graphicStrategy,this.positionX=this.ViewInitializer.positionX,this.positionY=this.ViewInitializer.positionY,this.borderThickness=this.ViewInitializer.borderThickness,this.innerRadius=this.ViewInitializer.borderInnerRadius,this.outerRadius=this.ViewInitializer.borderOuterRadius,this.categories=this.ViewInitializer.categories,this.isChild=this.ViewInitializer.isChild,this.containerId=this.ViewInitializer.containerId,this.key=this.ViewInitializer.key}},{key:"createBorders",value:function(){this.graphicStrategy.drawArc(this.yinYangGroup,this.positionX,this.positionY,this.innerRadius,this.outerRadius,0,2*Math.PI,this.ViewInitializer.isEnemy?"black":"white");for(var t=this.ViewInitializer.controller.getBorderNb(),e=0;e<t;e++){var r=this.innerRadius+this.borderThickness*e,i=r+this.borderThickness;this.drawBorder(r,i,e)}}},{key:"drawBorder",value:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=this.categories[0].color,n="";if(!this.isChild){var o=this.CreateBorderMaskAndGradient(t,e,r),a=o.border_gradient_id,s=o.borderMaskId;i="url(#".concat(a,")"),n="url(#".concat(s,")")}var c=this.yinYangGroup.appendElement("g"),l=this.graphicStrategy.drawCircle(c,this.positionX,this.positionY,t+this.borderThickness/2,"none",1);l.setStyle("stroke",i).setStyle("stroke-width",this.borderThickness.toString()),this.isChild||c.setStyle("filter","url(#rainbow-filter)"),this.isChild?l.setStyle("opacity","0.2"):l.setStyle("mask",n)}},{key:"CreateBorderMaskAndGradient",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=this.categories.map(function(t){return t.color}),n=[{offset:"0%",color:i[0],opacity:1},{offset:"100%",color:i[i.length-1],opacity:1}],o="".concat(this.containerId,"-borderGradient-").concat(this.key,"-").concat(r),a=this.graphicStrategy.createLinearGradient(o,"0%","0%","100%","0%",n,"objectBoundingBox");this.graphicStrategy.changeBorderColors(a,this.viewData.borderAnimationDuration,i);var s="".concat(this.containerId,"-borderMaskId-").concat(this.key,"-").concat(r);return this.graphicStrategy.createBorderMask(s,this.positionX,this.positionY,t,e),{border_gradient_id:o,borderMaskId:s}}}],e&&i(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();e.BorderDrawer=o},535(t,e){function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function i(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,n(i.key),i)}}function n(t){var e=function(t){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,"string");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==r(e)?e:e+""}Object.defineProperty(e,"__esModule",{value:!0}),e.YinYangView=void 0;var o=function(){return t=function t(e,r,i,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this._positionX=0,this._positionY=0,this.viewInitializer=e,this.yinYangDrawer=r,this.spikeDrawer=i,this.borderDrawer=n},(e=[{key:"controller",get:function(){return this._controller},set:function(t){this._controller=t}},{key:"viewData",get:function(){return this._viewData},set:function(t){this._viewData=t}},{key:"positionX",get:function(){return this._positionX},set:function(t){this._positionX=t}},{key:"positionY",get:function(){return this._positionY},set:function(t){this._positionY=t}},{key:"viewInitializer",get:function(){return this._viewInitializer},set:function(t){this._viewInitializer=t}},{key:"yinYangDrawer",get:function(){return this._yinYangDrawer},set:function(t){this._yinYangDrawer=t}},{key:"spikeDrawer",get:function(){return this._spikeDrawer},set:function(t){this._spikeDrawer=t}},{key:"borderDrawer",get:function(){return this._borderDrawer},set:function(t){this._borderDrawer=t}},{key:"initialize",value:function(t,e,r){this.controller=t,this.viewData=e,this.viewInitializer.initializeGraphicElements(t,e,r),this.yinYangDrawer.initialize(),this.yinYangDrawer.createYinYangPattern(),this.spikeDrawer.initialize(),this.spikeDrawer.createSpikes(),this.borderDrawer.initialize(),this.borderDrawer.createBorders()}},{key:"addClickEventToYinYangGroup",value:function(t){this.viewInitializer.yinYangGroup.addEventListener("click",t)}},{key:"addClickEventToArcGroups",value:function(t,e){this.viewInitializer.yinOrYangGroup[t].graphElementGroup.addEventListener("click",e)}}])&&i(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();e.YinYangView=o},573(t,e,r){function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,i=Array(e);r<e;r++)i[r]=t[r];return i}function o(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,a(i.key),i)}}function a(t){var e=function(t){if("object"!=i(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=i(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==i(e)?e:e+""}Object.defineProperty(e,"__esModule",{value:!0}),e.YinYangModel=void 0;var s=r(468),c=function(){return t=function t(e,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=arguments.length>3?arguments[3]:void 0;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sortedData=e.sort(function(t,e){return t.categorie.localeCompare(e.categorie)}),this.categories=this.setupCategories(e),this.key=r,this.parentKey=i,this.childCounter=0,this.borderNb=2,this.isEnemy=n},(e=[{key:"generateChildKey",value:function(){return"".concat(this.key,".").concat(this.childCounter++)}},{key:"calculateAverageScore",value:function(){var t=this.sortedData.reduce(function(t,e){return t+e.score},0);return Math.round(t/this.sortedData.length*10)/10}},{key:"getSmallCircleData",value:function(){var t=this;return this.sortedData.map(function(e,r){return{score:e.score,angle:r*(2*Math.PI/t.sortedData.length)}})}},{key:"setupCategories",value:function(t){var e=t.reduce(function(t,e){return t[e.categorie]=(t[e.categorie]||0)+1,t},{}),r=t.length,i=[],o=0;return Object.entries(e).map(function(t){var e=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var i,n,o,a,s=[],c=!0,l=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(i=o.call(r)).done)&&(s.push(i.value),s.length!==e);c=!0);}catch(t){l=!0,n=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw n}}return s}}(t,e)||function(t,e){if(t){if("string"==typeof t)return n(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t,2),a=e[0],c=e[1],l=2*Math.PI*o,u=c/r;o+=u;var y=l+2*Math.PI*u;i.push({category:a,color:s.categoryColorNames[a]||"grey",percentage:u,angles:{startAngle:l,endAngle:y}})}),i}}])&&o(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();e.YinYangModel=c},578(t,e,r){function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,o(i.key),i)}}function o(t){var e=function(t){if("object"!=i(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=i(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==i(e)?e:e+""}Object.defineProperty(e,"__esModule",{value:!0}),e.YinYangAppFactory=void 0;var a=r(573),s=r(535),c=r(839),l=r(5),u=r(892),y=r(948),p=r(528),f=r(67),h=function(){return t=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.idCounter=0,this.graphicsStrategy=e,this.instances=new Map,this.animator=this.createAnimationsManager()},e=[{key:"generateUniqueId",value:function(){return"".concat(this.idCounter++)}},{key:"getInstances",value:function(){return this.instances}},{key:"createModel",value:function(t){var e,r,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";try{var o=n?null!==(r=null===(e=this.instances.get(n))||void 0===e?void 0:e.generateChildKey())&&void 0!==r?r:"":this.generateUniqueId();return new a.YinYangModel(t,o,n,i)}catch(t){throw console.error("Error creating model:",t),t}}},{key:"createView",value:function(){try{var t=new y.ViewInitializer(this.graphicsStrategy),e=new f.YinYangDrawer(t),r=new u.SpikeDrawer(t),i=new p.BorderDrawer(t);return new s.YinYangView(t,e,r,i)}catch(t){throw console.error("Error creating view:",t),t}}},{key:"createController",value:function(t,e){try{return new c.YinYangController(t,e,this)}catch(t){throw console.error("Error creating controller:",t),t}}},{key:"createAnimationsManager",value:function(){try{return new l.AnimationsMngr}catch(t){throw console.error("Error creating animations manager:",t),t}}},{key:"create",value:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3?arguments[3]:void 0;try{var n=this.createModel(t,r,i),o=this.createView(),a=this.createController(n,o);return o.initialize(a,e,this.instances.get(null!=i?i:"")),this.instances.set(n.key,a),a.InitializeAnimations(),a}catch(t){throw console.error("Error creating app:",t),t}}}],e&&n(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();e.YinYangAppFactory=h},601(t,e){function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function i(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,n(i.key),i)}}function n(t){var e=function(t){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,"string");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==r(e)?e:e+""}Object.defineProperty(e,"__esModule",{value:!0}),e.D3Element=void 0;var o=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.selection=e}return e=t,r=[{key:"appendElement",value:function(e){return new t(this.selection.append(e))}},{key:"setStyle",value:function(t,e){return this.selection.style(t,e),this}},{key:"setAttribute",value:function(t,e){return this.selection.attr(t,e),this}},{key:"addEventListener",value:function(t,e){this.selection.on(t,e)}},{key:"getSelection",value:function(){return this.selection}},{key:"select",value:function(e){return new t(this.selection.select(e))}},{key:"node",value:function(){return this.selection.node()}},{key:"getDimensions",value:function(){var t=this.selection.node();if(t instanceof SVGSVGElement){var e=t.getBoundingClientRect();return{width:e.width,height:e.height}}return{width:0,height:0}}},{key:"interruptAllAnimation",value:function(){this.selection.interrupt().selectAll("*").interrupt()}},{key:"applyContinuousRotation",value:function(t,e,r){var i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];this.selection.transition().duration(t).attrTween("transform",function(){return function(t){return"rotate(".concat(t*(i?360:-360),",").concat(e,",").concat(r,")")}})}},{key:"applyTranslationAndRotationAltogether",value:function(t,e,r,i,n,o){this.selection.transition().duration(t).attrTween("transform",function(){return function(t){var a=2*t*Math.PI*(n?1:-1),s=i*Math.sin(a),c=i-i*Math.cos(a),l=e+s,u=r+c,y="yang"===o?3:-1,p=180*a/Math.PI;return"rotate(".concat(y*p,", ").concat(l,", ").concat(u,") translate(").concat(s,", ").concat(c,")")}})}}],r&&i(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r}();e.D3Element=o},620(t,e){function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function i(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,n(i.key),i)}}function n(t){var e=function(t){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,"string");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==r(e)?e:e+""}Object.defineProperty(e,"__esModule",{value:!0}),e.D3Animator=void 0;var o=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)},(e=[{key:"applyColorAnimation",value:function(t,e,r){var i=document.createElementNS("http://www.w3.org/2000/svg","animate");i.setAttribute("attributeName","stop-color"),i.setAttribute("values",r.join(";")),i.setAttribute("dur","".concat(e,"ms")),i.setAttribute("repeatCount","indefinite"),t.appendChild(i)}}])&&i(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();e.D3Animator=o},839(t,e){function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function i(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,n(i.key),i)}}function n(t){var e=function(t){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,"string");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==r(e)?e:e+""}Object.defineProperty(e,"__esModule",{value:!0}),e.YinYangController=void 0;var o=function(){return t=function t(e,r,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.model=e,this.view=r,this.factory=i,this.animator=r.viewInitializer.graphicStrategy.animator},(e=[{key:"getBorderNb",value:function(){try{return this.model.borderNb}catch(t){throw console.error("Error getting border number:",t),t}}},{key:"getSortedData",value:function(){try{return this.model.sortedData}catch(t){throw console.error("Error getting sorted data:",t),t}}},{key:"getCategories",value:function(){try{return this.model.categories}catch(t){throw console.error("Error getting categories:",t),t}}},{key:"getKey",value:function(){try{return this.model.key}catch(t){throw console.error("Error getting key:",t),t}}},{key:"getParentKey",value:function(){try{return this.model.parentKey}catch(t){throw console.error("Error getting parent key:",t),t}}},{key:"getIsEnemy",value:function(){try{return this.model.isEnemy}catch(t){throw console.error("Error getting isEnemy status:",t),t}}},{key:"calculateAverageScore",value:function(){try{return this.model.calculateAverageScore()}catch(t){throw console.error("Error calculating average score:",t),t}}},{key:"generateChildKey",value:function(){try{return this.model.generateChildKey()}catch(t){throw console.error("Error generating child key:",t),t}}},{key:"createYinYangChildren",value:function(){var t=this;try{this.model.getSmallCircleData().forEach(function(e,r){e.score,e.angle;var i={minEdge:2*t.view.viewInitializer.smallCircleRadius,containerId:t.view.viewData.containerId,borderAnimationDuration:t.view.viewData.borderAnimationDuration};t.factory.create([t.model.sortedData[r]],i,t.model.isEnemy,t.getKey());var n=t.view.viewInitializer.borderOuterRadius,o=n/(2*t.view.viewInitializer.smallCircleRadius+n);t.view.viewInitializer.resizeWholePattern(o)})}catch(t){throw console.error("Error drawing YinYang children:",t),t}}},{key:"InitializeAnimations",value:function(){var t=this;try{this.factory.animator.subscribe(this),this.view.addClickEventToYinYangGroup(function(){return t.factory.animator.revertRotation(t)}),["yang","yin"].forEach(function(e){t.view.addClickEventToArcGroups(e,function(){return t.factory.animator.revertRotation(t)})})}catch(t){throw console.error("Error initializing animations:",t),t}}}])&&i(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();e.YinYangController=o},892(t,e){function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function i(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,n(i.key),i)}}function n(t){var e=function(t){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,"string");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==r(e)?e:e+""}Object.defineProperty(e,"__esModule",{value:!0}),e.SpikeDrawer=void 0;var o=function(){return t=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.ViewInitializer=e},(e=[{key:"initialize",value:function(){this.viewData=this.ViewInitializer.viewData,this.categories=this.ViewInitializer.categories,this.isChild=this.ViewInitializer.isChild,this.yinOrYangGroup=this.ViewInitializer.yinOrYangGroup,this.sortedData=this.ViewInitializer.controller.getSortedData(),this.positionX=this.ViewInitializer.positionX,this.containerId=this.ViewInitializer.containerId,this.key=this.ViewInitializer.key,this.graphicStrategy=this.ViewInitializer.graphicStrategy}},{key:"createSpikes",value:function(){this.drawYinYangSpikes(this.yinOrYangGroup)}},{key:"drawYinYangSpikes",value:function(t){var e=this;Object.values(t).forEach(function(t){e.drawYinOrYangSpikes(t.centerY,t.radius,t.type)})}},{key:"drawYinOrYangSpikes",value:function(t,e,r){var i=this;this.categories.forEach(function(n){i.isChild||i.drawSpikes(n,t,e/i.yinOrYangGroup[r].smallRadiusRatio,e,r,n.angles.startAngle,n.angles.endAngle)})}},{key:"drawSpikes",value:function(t,e,r,i,n,o,a){var s=this,c=this.sortedData.filter(function(e){return e.categorie===t.category});c.forEach(function(l,u){var y=o+(a-o)*((u+1)/(c.length+1));y="yang"===n?-y+Math.PI:y;var p=s.positionX+r*Math.sin(y),f=e+r*Math.cos(y),h="yang"===n?s.ViewInitializer.borderInnerRadius*l.score:s.ViewInitializer.borderInnerRadius*(1-l.score),d=p+(h=h>i-r?i-r:h)*Math.sin(y),v=f+h*Math.cos(y),g=p.toString(),m=f.toString(),b=d.toString(),w=v.toString(),S="".concat(s.containerId,"-gradientSpike-").concat(s.key,"-").concat(n,"-").concat(t.category,"-").concat(u);s.graphicStrategy.createLinearGradient(S,g,m,b,w,[{offset:"0%",color:"yin"===n?"black":"white",opacity:1},{offset:"80%",color:t.color,opacity:1},{offset:"100%",color:t.color,opacity:0}],"userSpaceOnUse"),s.graphicStrategy.drawLineWithGradient(s.yinOrYangGroup[n].graphElementGroup,p,f,d,v,S)})}}])&&i(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();e.SpikeDrawer=o},893(e){e.exports=t},939(t,e){function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function i(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,n(i.key),i)}}function n(t){var e=function(t){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,"string");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==r(e)?e:e+""}Object.defineProperty(e,"__esModule",{value:!0}),e.GeometryUtils=void 0;var o=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)},e=[{key:"calculateSpikeLength",value:function(t,e){return t*e*.5}},{key:"calculateSmallCircleRadius",value:function(t,e){return 2*Math.PI*t/e/2}}],null&&i(t.prototype,null),e&&i(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();e.GeometryUtils=o},948(t,e,r){function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,o(i.key),i)}}function o(t){var e=function(t){if("object"!=i(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=i(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==i(e)?e:e+""}Object.defineProperty(e,"__esModule",{value:!0}),e.ViewInitializer=void 0;var a=r(939),s=function(){return t=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.borderThicknessRatio=10,this.offsetfromBorder=0,this.graphicStrategy=e},(e=[{key:"initializeGraphicElements",value:function(t,e,r){this.containerId=e.containerId,this.controller=t,this.viewData=e,this.borderOuterRadius=this.viewData.minEdge/2,this.borderThickness=this.borderOuterRadius/this.borderThicknessRatio,this.borderInnerRadius=this.borderOuterRadius-this.borderThickness*t.getBorderNb(),this.smallCircleRadius=a.GeometryUtils.calculateSmallCircleRadius(this.borderInnerRadius,this.controller.getSortedData().length),this.distanceFromChild=r?0:this.borderOuterRadius+this.smallCircleRadius+this.offsetfromBorder,this.graphicContainer=r?r.view.viewInitializer.graphicContainer:this.createGraphicContainer(this.containerId),this.globalGroup=r?r.view.viewInitializer.globalGroup:this.graphicContainer.appendElement("g"),this.yinYangGroup=this.globalGroup.appendElement("g"),this.averageScore=this.controller.calculateAverageScore(),this.categories=this.controller.getCategories(),this.key=t.getKey(),this.isChild=!!r;var i=this.getPatternPosition(r);this.positionX=i.positionX,this.positionY=i.positionY,this.yinOrYangGroup=this.createYinOrYangGroups(),this.isEnemy=t.getIsEnemy()}},{key:"resizeWholePattern",value:function(t){this.graphicStrategy.resizeGroup(this.globalGroup,t,this.positionX,this.positionY)}},{key:"createGraphicContainer",value:function(t){return this.graphicStrategy.initialize(t,this.viewData.minEdge)}},{key:"createYinOrYangGroups",value:function(){var t=this.borderInnerRadius*this.averageScore,e=this.borderInnerRadius-t,r=this.positionY-e,i=this.positionY+t;return{yang:{type:"yang",graphElementGroup:this.globalGroup.appendElement("g"),centerY:r,radius:t,smallRadiusRatio:5},yin:{type:"yin",graphElementGroup:this.globalGroup.appendElement("g"),centerY:i,radius:e,smallRadiusRatio:5}}}},{key:"getPatternPosition",value:function(t){return t?this.GetChildPosition(t.view):this.centerMotif()}},{key:"GetChildPosition",value:function(t){var e,r=(Number(null===(e=this.controller)||void 0===e?void 0:e.getKey().split(".").pop())||0)*(2*Math.PI/t.controller.getSortedData().length);return{positionX:t.viewInitializer.positionX+t.viewInitializer.distanceFromChild*Math.cos(r),positionY:t.viewInitializer.positionY+t.viewInitializer.distanceFromChild*Math.sin(r)}}},{key:"centerMotif",value:function(){var t=this.graphicContainer.getDimensions();return{positionX:t.width/2,positionY:t.height/2}}}])&&n(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();e.ViewInitializer=s}},r={};return function t(i){var n=r[i];if(void 0!==n)return n.exports;var o=r[i]={exports:{}};return e[i].call(o.exports,o,o.exports,t),o.exports}(441)})());
|
|
1
|
+
/*! For license information please see bundle.js.LICENSE.txt */
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("d3")):"function"==typeof define&&define.amd?define(["d3"],t):"object"==typeof exports?exports.YinYangApp=t(require("d3")):e.YinYangApp=t(e.d3)}(this,e=>(()=>{"use strict";var t={5125(e,t,n){function i(e){var t,n,i=(null===(t=e.name)||void 0===t?void 0:t.trim())||(null===(n=e.libelle)||void 0===n?void 0:n.trim());return i&&i.length>0?i:e.fallback}function r(e){var t,n,i=(null===(t=e.shortName)||void 0===t?void 0:t.trim())||(null===(n=e.libelleCourt)||void 0===n?void 0:n.trim());return i&&i.length>0?i:e.fallback}Object.defineProperty(t,"__esModule",{value:!0}),t.mapCauseToInternalModel=function(e){var t,n,a=(t=e.components.map(function(e){return e.perimeterWeight}),n=t.reduce(function(e,t){return e+t},0)||1,t.map(function(e){return e/n}));return{slices:e.components.map(function(e,t){return{id:e.id,weight:a[t]}}),components:e.components.map(function(e){var t=i({name:e.name,fallback:e.id}),n=r({shortName:e.shortName,fallback:t});return{id:e.id,label:t,shortLabel:n,orientation:e.orientation,odds:e.odds.map(function(e){return{id:e.id,label:i({name:e.name,libelle:e.libelle,fallback:e.id}),shortLabel:r({shortName:e.shortName,libelleCourt:e.libelleCourt,fallback:i({name:e.name,libelle:e.libelle,fallback:e.id})}),satelliteCount:e.oddCutting.length,cuttingScores:e.oddCutting.map(function(e){return e.score}),cuttingWeights:e.oddCutting.map(function(e){return e.weight}),cuttingIds:e.oddCutting.map(function(e){return e.id}),cuttings:e.oddCutting.map(function(e){var t=i({name:e.name,libelle:e.libelle,fallback:"Cutting ".concat(e.id)});return{id:e.id,label:t,shortLabel:r({shortName:e.shortName,libelleCourt:e.libelleCourt,fallback:t})}})}})}})}},t.buildChildCuttingInternalModel=function(e,t,n,i){var r,a,o,s=null===(r=t.cuttingIds)||void 0===r?void 0:r[n],l=null===(a=t.cuttings)||void 0===a?void 0:a[n];return{slices:[{id:t.id,weight:1}],components:[{id:t.id,label:t.label,shortLabel:t.shortLabel,orientation:e.orientation,odds:[{id:t.id,label:t.label,shortLabel:t.shortLabel,satelliteCount:t.satelliteCount,cuttingScores:[i],cuttingWeights:[null!==(o=t.cuttingWeights[n])&&void 0!==o?o:1],cuttingIds:void 0!==s?[s]:void 0,cuttings:l?[l]:void 0}]}]}},n(996)},3005(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.AnimationsMngr=void 0;var o=n(1123),s=function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.subscriberMap=new Map},t=[{key:"subscribe",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.animationConfig.rotationDurationMs;this.subscriberMap.set(e,{component:e,clockWise:t,time:n,angle:0,lastLabelRefreshAngle:NaN})}},{key:"startAll",value:function(){var e=this;this.subscriberMap.forEach(function(t){return e.animate(t.component,t.clockWise,t.time)})}},{key:"setRotationDuration",value:function(e){var t=Math.max(100,e);this.subscriberMap.forEach(function(e){e.time=t})}},{key:"revertRotation",value:function(e){var t=this.subscriberMap.get(e);t&&(t.clockWise=!t.clockWise,this.startRotationLoop(t))}},{key:"stopRotation",value:function(e){var t=this.subscriberMap.get(e);t&&(void 0!==t.frameId&&(cancelAnimationFrame(t.frameId),t.frameId=void 0),void 0!==t.blockingAnimationToken&&(e.endBlockingAnimation(t.blockingAnimationToken),t.blockingAnimationToken=void 0),t.lastTimestamp=void 0,t.angle=0,t.lastLabelRefreshAngle=NaN,this.resetRotationFrame(e))}},{key:"resetRotationFrame",value:function(e){var t=e.view.viewInitializer,n=t.yinYangGroup,i=t.positionX,r=t.positionY;n.setAttribute("transform","rotate(0,".concat(i,",").concat(r,")"));var a=function(e){e.yin.graphElementGroup.setAttribute("transform","translate(0, 0)"),e.yang.graphElementGroup.setAttribute("transform","translate(0, 0)")};a(t.yinOrYangGroup),a(t.yinOrYangGroupGhost),e.view.yinYangDrawer.refreshOddArcLabelsOrientation()}},{key:"animate",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.animationConfig.rotationDurationMs,i=this.subscriberMap.get(e);i&&(i.clockWise=t,i.time=n,this.startRotationLoop(i))}},{key:"startRotationLoop",value:function(e){var t=this;void 0!==e.frameId&&cancelAnimationFrame(e.frameId),void 0===e.blockingAnimationToken&&(e.blockingAnimationToken=e.component.beginBlockingAnimation("rotation")),e.lastTimestamp=void 0;var n=function(i){var r=e.time,a=e.clockWise;void 0===e.lastTimestamp&&(e.lastTimestamp=i);var o=i-e.lastTimestamp;e.lastTimestamp=i;var s=o/r*360*(a?1:-1);e.angle=(e.angle+s)%360,t.applyRotationFrame(e,e.angle),e.frameId=requestAnimationFrame(n)};e.frameId=requestAnimationFrame(n)}},{key:"applyRotationFrame",value:function(e,t){var n=e.component,i=n.view.viewInitializer,r=i.yinYangGroup,a=i.positionX,o=i.positionY;r.setAttribute("transform","rotate(".concat(t,",").concat(a,",").concat(o,")"));var s=t*Math.PI/180,l=Math.sin(s),c=Math.cos(s);this.applyRotationToYinYangGroup(i.yinOrYangGroup,a,l,c,t),this.applyRotationToYinYangGroup(i.yinOrYangGroupGhost,a,l,c,t);var d=Math.abs(t-e.lastLabelRefreshAngle);(isNaN(e.lastLabelRefreshAngle)||d>=.5)&&(n.view.yinYangDrawer.refreshOddArcLabelsOrientation(),e.lastLabelRefreshAngle=t)}},{key:"applyRotationToYinYangGroup",value:function(e,t,n,i,r){var a=e.yin,o=e.yang,s=a.radius,l=o.radius,c=-l*n,d=l*(i-1);a.graphElementGroup.setAttribute("transform","rotate(".concat(-r,",").concat(t+c,",").concat(a.centerY+d,") translate(").concat(c,",").concat(d,")"));var u=s*n,p=s*(1-i);o.graphElementGroup.setAttribute("transform","rotate(".concat(3*r,",").concat(t+u,",").concat(o.centerY+p,") translate(").concat(u,",").concat(p,")"))}}],t&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.AnimationsMngr=s},9079(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}function o(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}Object.defineProperty(t,"__esModule",{value:!0}),t.createYinYangFilmSvg=function(e){var t,n,i,r,a,s,h,g,b,C,k,S,_,A=e.size,E=null!==(t=e.rotationDurationMs)&&void 0!==t?t:7e3,O=null!==(n=e.switchDurationMs)&&void 0!==n?n:u.animationConfig.componentSwitchDurationMs,D=Math.max(0,Math.floor(null!==(i=e.transitionFrames)&&void 0!==i?i:4)),M=null===(r=e.stripText)||void 0===r||r,L="yyf".concat(++f),F=document.createElement("div");F.style.cssText="position:absolute;left:-99999px;top:-99999px";var T=document.createElement("div");T.id="".concat(L,"-host"),T.style.width=T.style.height="".concat(A,"px"),F.appendChild(T),document.body.appendChild(F);try{var P=Array.isArray(e.data.slices)?e.data:(0,d.mapCauseToInternalModel)(e.data),B=new l.YinYangAppFactory(new c.D3GraphicsStrategy).create(P,{containerId:T.id,minEdge:A,borderAnimationDuration:0}),G=B.view.viewInitializer,R=T.querySelector("svg");if(!(R instanceof SVGSVGElement))throw new Error("[yinyangapp] film : aucun <svg> rendu");var q=null!==(a=R.getAttribute("viewBox"))&&void 0!==a?a:"0 0 ".concat(null!==(s=R.getAttribute("width"))&&void 0!==s?s:A," ").concat(null!==(h=R.getAttribute("height"))&&void 0!==h?h:A),z=P.components,N=G.geometry.borderSegments.map(function(e){return{p:(t=e.startAngle-Math.PI/2,n=t%p,(n<0?n+p:n)/p),idx:z.findIndex(function(t){return t.id===e.category})};var t,n}).filter(function(e){return e.idx>=0}).sort(function(e,t){return e.p-t.p});if(!N.length)throw new Error("[yinyangapp] film : aucun segment de bordure");for(var j=Math.min(O/E,.95),H=new I(L),K=[],V=[],Y=function(e){return y(H.intern(e,function(e){var t=new Map;return e.querySelectorAll("defs > *").forEach(function(e){return t.set(e.id,e)}),t}(R)))},W=N.length,U=0;U<W;U++){var X=N[U],Z=N[(U-1+W)%W],Q=N[(U+1)%W],$=U+1<W?Q.p-X.p:1-X.p+Q.p,J=Math.min(j,$),ee=D>0&&Z.idx!==X.idx;if(ee)for(var te=0;te<D;te++)G.renderSwitchFrame(Z.idx,X.idx,(te+1)/(D+1)),K.push({markup:Y(w(R,M)),spans:v(X.p+J*te/D,X.p+J*(te+1)/D)});G.renderSwitchFrame(X.idx,X.idx,1),K.push({markup:Y(w(R,M)),spans:v(ee?X.p+J:X.p,X.p+$)}),B.view.borderDrawer.activateSegment(X.idx),V.push({markup:Y(x(R)),spans:v(X.p,X.p+$)})}var ne=[].concat(K,V),ie=G.geometry.layout,re=ie.borderInnerRadius+2,ae=p*re,oe=ae*(null!==(b=null===(g=e.spark)||void 0===g?void 0:g.lengthRatio)&&void 0!==b?b:.08),se=null!==(k=null===(C=e.spark)||void 0===C?void 0:C.color)&&void 0!==k?k:"#72f5ff",le=null!==(_=null===(S=e.spark)||void 0===S?void 0:S.strokeWidth)&&void 0!==_?_:Math.max(1.5,A/60),ce="var(--yy-rotation,".concat(E,"ms)"),de=["@keyframes ".concat(L,"-spin{to{transform:rotate(360deg)}}"),".".concat(L,"-spark{transform-box:view-box;transform-origin:").concat(ie.positionX,"px ").concat(ie.positionY,"px;animation:").concat(L,"-spin ").concat(ce," linear infinite}")],ue=[];ne.forEach(function(e,t){var n=e.spans.flatMap(function(e){var t,n,i=(n=2,function(e){if(Array.isArray(e))return e}(t=e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(t,n)||o(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=i[0],a=i[1];return["".concat(m(r),"{opacity:1}"),"".concat(m(Math.max(r,a-1e-5)),"{opacity:1}"),"".concat(m(a),"{opacity:0}")]}).join("");de.push("@keyframes ".concat(L,"-f").concat(t,"{0%{opacity:0}").concat(n,"100%{opacity:0}}"),".".concat(L,"-f").concat(t,"{opacity:0;animation:").concat(L,"-f").concat(t," ").concat(ce," step-end infinite}")),ue.push('<g class="'.concat(L,"-f").concat(t,'">').concat(e.markup,"</g>"))});var pe='<circle class="'.concat(L,'-spark" cx="').concat(ie.positionX,'" cy="').concat(ie.positionY,'" r="').concat(re,'" fill="none" stroke="').concat(se,'" stroke-width="').concat(le,'" stroke-linecap="round" stroke-dasharray="').concat(oe," ").concat(ae-oe,'"/>'),he=document.createElementNS("http://www.w3.org/2000/svg","svg");return he.setAttribute("viewBox",q),he.setAttribute("width",String(A)),he.setAttribute("height",String(A)),he.style.overflow="visible",he.innerHTML="<style>".concat(de.join(""),"</style>")+"<defs>".concat(H.emitted.join(""),"</defs>")+ue.join("")+pe,he}finally{document.body.removeChild(F)}};var l=n(4578),c=n(8317),d=n(5125),u=n(1123),p=2*Math.PI,h=/url\((?:["']|")?#([^)"'&]+)(?:["']|")?\)|href="#([^"]+)"/g,f=0,g=["g[data-orbit-spark-layer='true']","g[data-balance-spark-layer='true']","g[data-role='idle-sphere-overlay']","g[data-role='children-group']","g[data-role='border-arcs-group']","g[data-role^='odd-interactive-layer']","g[data-role^='odd-label-layer']","g[data-role='facette-weight-label']","[data-role='facette-state-label']","[data-role='odd-hit-zone']"].join(",");function v(e,t){return t<=1?[[e,t]]:[[e,1],[0,t-1]]}function m(e){return"".concat((100*e).toFixed(3),"%")}function y(e){return e.replace(/(-?\d+\.\d{2})\d+/g,"$1")}function b(e,t){var n,i,r=function(e){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=o(e))){t&&(e=t);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,a=!0,s=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return a=e.done,e},e:function(e){s=!0,r=e},f:function(){try{a||null==t.return||t.return()}finally{if(s)throw r}}}}(e.matchAll(h));try{for(r.s();!(i=r.n()).done;){var a=i.value;t.add(null!==(n=a[1])&&void 0!==n?n:a[2])}}catch(e){r.e(e)}finally{r.f()}}var I=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.uid=t,this.canonical=new Map,this.emitted=[],this.counter=0},(t=[{key:"intern",value:function(e,t){var n=this,i=new Map,r=function(e){var a=i.get(e);if(a)return a;var o=t.get(e);if(!o)return e;var s=o.outerHTML.replace(/<animate\b[\s\S]*?<\/animate>/g,""),l=new Set;b(s,l),l.forEach(function(e){s=C(s,e,r(e))});var c=y(s.replace(/\sid="[^"]*"/,"")),d=n.canonical.get(c);return d||(d="".concat(n.uid,"-d").concat(n.counter++),n.canonical.set(c,d),n.emitted.push(c.replace(/^<(\w+)/,'<$1 id="'.concat(d,'"')))),i.set(e,d),d},a=new Set;b(e,a);var o=e;return a.forEach(function(e){o=C(o,e,r(e))}),o}}])&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();function C(e,t,n){if(t===n)return e;var i=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.replace(new RegExp("url\\(((?:[\"']|")?)#".concat(i,"\\1\\)"),"g"),"url($1#".concat(n,"$1)")).replace(new RegExp('href="#'.concat(i,'"'),"g"),'href="#'.concat(n,'"'))}function w(e,t){var n=e.cloneNode(!0);return n.querySelectorAll(g).forEach(function(e){return e.remove()}),n.querySelectorAll("g").forEach(function(e){"none"===e.style.display&&e.remove()}),t&&n.querySelectorAll("text").forEach(function(e){return e.remove()}),n.querySelectorAll("defs").forEach(function(e){return e.remove()}),Array.from(n.children).map(function(e){return e.outerHTML}).join("")}function x(e){var t,n=e.querySelector("g[data-role='border-arcs-group']");if(!n)return"";var i=n.cloneNode(!0);i.querySelectorAll("text").forEach(function(e){return e.remove()}),i.querySelectorAll("[style]").forEach(function(e){e.style.removeProperty("filter"),e.style.removeProperty("transition")}),i.querySelectorAll("[filter]").forEach(function(e){return e.removeAttribute("filter")});var r=null===(t=n.parentElement)||void 0===t?void 0:t.getAttribute("transform");return r?'<g transform="'.concat(r,'">').concat(i.outerHTML,"</g>"):i.outerHTML}},7844(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.createYinYangFilmSvg=t.mapCauseToInternalModel=void 0,t.mountYinYang=function(e){var t,n,i,r="string"==typeof e.container?document.getElementById(e.container):e.container;if(!r)throw new Error("[yinyangapp] conteneur introuvable : ".concat(e.container));r.id||(r.id=l("yinyang"));var a={containerId:r.id,minEdge:null!==(t=e.minEdge)&&void 0!==t?t:Math.min(r.clientWidth,r.clientHeight),borderAnimationDuration:null!==(n=e.borderAnimationDuration)&&void 0!==n?n:o.animationConfig.borderColorCycleDurationMs};return{controller:c(e.data,a,null===(i=e.includeChildren)||void 0===i||i),destroy:function(){r.innerHTML=""}}},t.createYinYangSvg=function(e){var t;return null!==(t=d([e])[0])&&void 0!==t?t:null},t.createYinYangSvgs=d;var i=n(4578),r=n(8317),a=n(5125),o=n(1123),s=n(5125);function l(e){var t="undefined"!=typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():Math.random().toString(36).slice(2);return"".concat(e,"-").concat(t).replace(/[^a-zA-Z0-9-_]/g,"")}function c(e,t,n){var o=new i.YinYangAppFactory(new r.D3GraphicsStrategy).create(function(e){return function(e){return Array.isArray(e.slices)}(e)?e:(0,a.mapCauseToInternalModel)(e)}(e),t);return n&&o.createYinYangChildren(),o}function d(e){var t=document.createElement("div");t.style.position="absolute",t.style.left="-99999px",t.style.top="-99999px",document.body.appendChild(t);try{return e.map(function(e,n){var i,r,a,s=document.createElement("div");s.id=null!==(i=e.viewData.containerId)&&void 0!==i?i:l("yinyang-temp-".concat(n)),s.style.width="".concat(e.viewData.minEdge,"px"),s.style.height="".concat(e.viewData.minEdge,"px"),t.appendChild(s);var d=Object.assign(Object.assign({},e.viewData),{containerId:s.id,borderAnimationDuration:null!==(r=e.viewData.borderAnimationDuration)&&void 0!==r?r:o.animationConfig.borderColorCycleDurationMs});c(e.data,d,null===(a=e.includeChildren)||void 0===a||a);var u=s.querySelector("svg"),p=u instanceof SVGSVGElement?u.cloneNode(!0):null;return t.removeChild(s),p})}finally{document.body.removeChild(t)}}Object.defineProperty(t,"mapCauseToInternalModel",{enumerable:!0,get:function(){return s.mapCauseToInternalModel}});var u=n(9079);Object.defineProperty(t,"createYinYangFilmSvg",{enumerable:!0,get:function(){return u.createYinYangFilmSvg}})},9560(e,t,n){this&&this.__awaiter,Object.defineProperty(t,"__esModule",{value:!0}),n(3919)},3919(e,t,n){function i(){var e,t,n="function"==typeof Symbol?Symbol:{},a=n.iterator||"@@iterator",o=n.toStringTag||"@@toStringTag";function s(n,i,a,o){var s=i&&i.prototype instanceof c?i:c,d=Object.create(s.prototype);return r(d,"_invoke",function(n,i,r){var a,o,s,c=0,d=r||[],u=!1,p={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(t,n){return a=t,o=0,s=e,p.n=n,l}};function h(n,i){for(o=n,s=i,t=0;!u&&c&&!r&&t<d.length;t++){var r,a=d[t],h=p.p,f=a[2];n>3?(r=f===i)&&(s=a[(o=a[4])?5:(o=3,3)],a[4]=a[5]=e):a[0]<=h&&((r=n<2&&h<a[1])?(o=0,p.v=i,p.n=a[1]):h<f&&(r=n<3||a[0]>i||i>f)&&(a[4]=n,a[5]=i,p.n=f,o=0))}if(r||n>1)return l;throw u=!0,i}return function(r,d,f){if(c>1)throw TypeError("Generator is already running");for(u&&1===d&&h(d,f),o=d,s=f;(t=o<2?e:s)||!u;){a||(o?o<3?(o>1&&(p.n=-1),h(o,s)):p.n=s:p.v=s);try{if(c=2,a){if(o||(r="next"),t=a[r]){if(!(t=t.call(a,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,o<2&&(o=0)}else 1===o&&(t=a.return)&&t.call(a),o<2&&(s=TypeError("The iterator does not provide a '"+r+"' method"),o=1);a=e}else if((t=(u=p.n<0)?s:n.call(i,p))!==l)break}catch(t){a=e,o=1,s=t}finally{c=1}}return{value:t,done:u}}}(n,a,o),!0),d}var l={};function c(){}function d(){}function u(){}t=Object.getPrototypeOf;var p=[][a]?t(t([][a]())):(r(t={},a,function(){return this}),t),h=u.prototype=c.prototype=Object.create(p);function f(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,r(e,o,"GeneratorFunction")),e.prototype=Object.create(h),e}return d.prototype=u,r(h,"constructor",u),r(u,"constructor",d),d.displayName="GeneratorFunction",r(u,o,"GeneratorFunction"),r(h),r(h,o,"Generator"),r(h,a,function(){return this}),r(h,"toString",function(){return"[object Generator]"}),(i=function(){return{w:s,m:f}})()}function r(e,t,n,i){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}r=function(e,t,n,i){function o(t,n){r(e,t,function(e){return this._invoke(t,n,e)})}t?a?a(e,t,{value:n,enumerable:!i,configurable:!i,writable:!i}):e[t]=n:(o("next",0),o("throw",1),o("return",2))},r(e,t,n,i)}var a=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))(function(r,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function s(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(o,s)}l((i=i.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0}),t.runLargeDatasetScenario=function(){return a(this,void 0,void 0,i().m(function e(){var t,n,r,a,d,u;return i().w(function(e){for(;;)switch(e.n){case 0:return t=h(),n=t.container,r=t.viewData,performance.mark("bm-large-start"),a=new s.D3GraphicsStrategy,d=new o.YinYangAppFactory(a),u=(0,l.mapCauseToInternalModel)(p(c.yasuniCause)),d.create(u,r).createYinYangChildren(),performance.mark("bm-large-end"),performance.measure("bm-large","bm-large-start","bm-large-end"),e.n=1,new Promise(function(e){return requestAnimationFrame(function(){return e()})});case 1:n.remove();case 2:return e.a(2)}},e)}))},t.runComponentSwitchScenario=function(e){return a(this,void 0,void 0,i().m(function t(){var n,r,a,f,g,v,m,y,b,I,C;return i().w(function(t){for(;;)switch(t.n){case 0:a=h(),f=a.container,g=a.viewData,v=new s.D3GraphicsStrategy,m=new o.YinYangAppFactory(v),y=(0,l.mapCauseToInternalModel)(p(c.yasuniCause)),b=m.create(y,g),I=c.yasuniCause.length,performance.mark("bm-switch-start"),C=0;case 1:if(!(C<I)){t.n=4;break}return null===(n=null==e?void 0:e.onSwitchStart)||void 0===n||n.call(e),b.searchNavigateToComponent(C),t.n=2,u(d.animationConfig.componentSwitchDurationMs);case 2:return null===(r=null==e?void 0:e.onSwitchEnd)||void 0===r||r.call(e),t.n=3,u(100);case 3:C++,t.n=1;break;case 4:performance.mark("bm-switch-end"),performance.measure("bm-switch","bm-switch-start","bm-switch-end"),m.animator.stopRotation(b),f.remove();case 5:return t.a(2)}},t)}))},t.runTransitionScenario=function(){return a(this,void 0,void 0,i().m(function e(){var t,n,r,a,f,g,v;return i().w(function(e){for(;;)switch(e.n){case 0:return t=h(),n=t.container,r=t.viewData,a=new s.D3GraphicsStrategy,f=new o.YinYangAppFactory(a),g=(0,l.mapCauseToInternalModel)(p(c.yasuniCause)),(v=f.create(g,r)).createYinYangChildren(),performance.mark("bm-transition-start"),f.animator.animate(v,!0,d.animationConfig.rotationDurationMs),e.n=1,u(3e3);case 1:f.animator.stopRotation(v),performance.mark("bm-transition-end"),performance.measure("bm-transition","bm-transition-start","bm-transition-end"),n.remove();case 2:return e.a(2)}},e)}))},t.runBaselineScenario=function(e){return a(this,void 0,void 0,i().m(function t(){var n,r,a,d,f,g,v,m;return i().w(function(t){for(;;)switch(t.n){case 0:return a=h(),d=a.container,f=a.viewData,g=new s.D3GraphicsStrategy,v=new o.YinYangAppFactory(g),m=(0,l.mapCauseToInternalModel)(p(c.yasuniCause)),v.create(m,f).createYinYangChildren(),t.n=1,new Promise(function(e){return requestAnimationFrame(function(){return e()})});case 1:return performance.mark("bm-baseline-start"),null===(n=null==e?void 0:e.onMeasureStart)||void 0===n||n.call(e),t.n=2,u(3e3);case 2:null===(r=null==e?void 0:e.onMeasureEnd)||void 0===r||r.call(e),performance.mark("bm-baseline-end"),performance.measure("bm-baseline","bm-baseline-start","bm-baseline-end"),d.remove();case 3:return t.a(2)}},t)}))},t.runForceFieldNavScenario=function(e){return a(this,void 0,void 0,i().m(function t(){var n,r,a,d,f,g,y,b,I;return i().w(function(t){for(;;)switch(t.n){case 0:return a=h(),d=a.container,f=a.viewData,g=new s.D3GraphicsStrategy,y=new o.YinYangAppFactory(g),b=(0,l.mapCauseToInternalModel)(p(c.yasuniCause)),(I=y.create(b,f)).createYinYangChildren(),performance.mark("bm-forcefield-nav-setup-start"),I.searchNavigateToAction(0,"ODD_15",0,"gen_bhf_moratoire_infra"),performance.mark("bm-forcefield-nav-setup-end"),performance.measure("bm-forcefield-nav-setup","bm-forcefield-nav-setup-start","bm-forcefield-nav-setup-end"),t.n=1,u(v);case 1:return performance.mark("bm-forcefield-nav-start"),null===(n=null==e?void 0:e.onSteadyStateStart)||void 0===n||n.call(e),t.n=2,u(m);case 2:null===(r=null==e?void 0:e.onSteadyStateEnd)||void 0===r||r.call(e),performance.mark("bm-forcefield-nav-end"),performance.measure("bm-forcefield-nav","bm-forcefield-nav-start","bm-forcefield-nav-end"),d.remove();case 3:return t.a(2)}},t)}))},t.runForceFieldDirectScenario=function(e){return a(this,void 0,void 0,i().m(function t(){var n,r,a,d,g,y,b,I,C;return i().w(function(t){for(;;)switch(t.n){case 0:return a=h(),d=a.container,g=a.viewData,y=new s.D3GraphicsStrategy,b=new o.YinYangAppFactory(y),I=(0,l.mapCauseToInternalModel)(p(c.yasuniCause)),(C=b.create(I,g)).createYinYangChildren(),performance.mark("bm-forcefield-direct-setup-start"),C.activateForceFieldMultiSource(f),performance.mark("bm-forcefield-direct-setup-end"),performance.measure("bm-forcefield-direct-setup","bm-forcefield-direct-setup-start","bm-forcefield-direct-setup-end"),t.n=1,u(v);case 1:return performance.mark("bm-forcefield-direct-start"),null===(n=null==e?void 0:e.onSteadyStateStart)||void 0===n||n.call(e),t.n=2,u(m);case 2:null===(r=null==e?void 0:e.onSteadyStateEnd)||void 0===r||r.call(e),performance.mark("bm-forcefield-direct-end"),performance.measure("bm-forcefield-direct","bm-forcefield-direct-start","bm-forcefield-direct-end"),d.remove();case 3:return t.a(2)}},t)}))},t.runForceFieldMergedScenario=function(e){return a(this,void 0,void 0,i().m(function t(){var n,r,a,d,f,y,b,I,C;return i().w(function(t){for(;;)switch(t.n){case 0:return a=h(),d=a.container,f=a.viewData,y=new s.D3GraphicsStrategy,b=new o.YinYangAppFactory(y),I=(0,l.mapCauseToInternalModel)(p(c.yasuniCause)),(C=b.create(I,f)).createYinYangChildren(),performance.mark("bm-forcefield-merged-setup-start"),C.activateForceFieldMultiSource(g),performance.mark("bm-forcefield-merged-setup-end"),performance.measure("bm-forcefield-merged-setup","bm-forcefield-merged-setup-start","bm-forcefield-merged-setup-end"),t.n=1,u(v);case 1:return performance.mark("bm-forcefield-merged-start"),null===(n=null==e?void 0:e.onSteadyStateStart)||void 0===n||n.call(e),t.n=2,u(m);case 2:null===(r=null==e?void 0:e.onSteadyStateEnd)||void 0===r||r.call(e),performance.mark("bm-forcefield-merged-end"),performance.measure("bm-forcefield-merged","bm-forcefield-merged-start","bm-forcefield-merged-end"),d.remove();case 3:return t.a(2)}},t)}))};var o=n(4578),s=n(8317),l=n(5125),c=n(14),d=n(1123),u=function(e){return new Promise(function(t){return setTimeout(t,e)})};function p(e){return{id:"benchmark",name:"Benchmark",components:e.map(function(e){var t,n=e.odds.map(function(e){return{id:e.id,name:e.name,oddCutting:e.cuttings.map(function(e){var t,n;return{id:e.id,libelle:e.name,score:null!==(t=e.score)&&void 0!==t?t:.5,weight:null!==(n=e.weight)&&void 0!==n?n:1}})}}),i=n.reduce(function(e,t){return e+t.oddCutting.reduce(function(e,t){return e+t.weight},0)},0);return{id:e.id,name:e.name,orientation:null!==(t=e.orientation)&&void 0!==t?t:"yin",odds:n,perimeterWeight:i}})}}function h(){var e="bm-".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2)),t=document.createElement("div");return t.id=e,t.style.cssText="position:fixed;left:0;top:0;width:".concat(800,"px;height:").concat(800,"px;overflow:hidden;pointer-events:none;z-index:99999;"),document.body.appendChild(t),{container:t,viewData:{minEdge:800,containerId:e,borderAnimationDuration:d.animationConfig.borderColorCycleDurationMs}}}var f=[{oddId:"ODD_15",cuttingIndex:0}],g=[{oddId:"ODD_15",cuttingIndex:0},{oddId:"ODD_6",cuttingIndex:0},{oddId:"ODD_3",cuttingIndex:0}],v=3e3,m=3e3},1782(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.ActionImageModal=void 0;var o=n(6982),s=n(1204),l=new Map(o.yasuniActions.map(function(e){return[e.id,e.name]})),c=function(){return e=function e(){var t=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.isOpen=!1,this._preloaded=new Set,this._outsideClickHandler=null,this._keyHandler=null,this._dragState=null,this.overlayEl=document.createElement("div"),this.overlayEl.className="action-image-modal-overlay",this.overlayEl.hidden=!0,this.overlayEl.innerHTML='\n <div class="action-image-modal-dialog" role="dialog" aria-modal="true">\n <button type="button" class="action-image-modal-close" aria-label="Fermer">✕</button>\n <img class="action-image-modal-img" alt="">\n <div class="action-image-modal-caption"></div>\n </div>\n ',this.imgEl=this.overlayEl.querySelector(".action-image-modal-img"),this.captionEl=this.overlayEl.querySelector(".action-image-modal-caption"),this.overlayEl.querySelector(".action-image-modal-close").addEventListener("click",function(){return t.close()}),document.body.appendChild(this.overlayEl),this._bindGlobalListeners(),this._bindCardStepsOverlayDrag()},t=[{key:"_resolveZoomTarget",value:function(e){var t,n;if(!e)return null;var i=e.closest("[data-full-src]");if(null==i?void 0:i.dataset.fullSrc)return{src:i.dataset.fullSrc,caption:null!==(t=i.dataset.caption)&&void 0!==t?t:""};var r=e.closest(".action-thumb[data-action-id]"),a=null==r?void 0:r.dataset.actionId;return a?{src:(0,s.getActionImageUrl)(a,"full"),caption:null!==(n=l.get(a))&&void 0!==n?n:""}:null}},{key:"_bindGlobalListeners",value:function(){var e=this;document.addEventListener("click",function(t){var n=e._resolveZoomTarget(t.target);n&&e.open(n.src,n.caption)}),document.addEventListener("mouseover",function(t){var n=e._resolveZoomTarget(t.target);n&&e._preloadFull(n.src)},{passive:!0}),document.addEventListener("focusin",function(t){var n=e._resolveZoomTarget(t.target);n&&e._preloadFull(n.src)})}},{key:"_bindCardStepsOverlayDrag",value:function(){var e=this;document.addEventListener("pointerdown",function(t){var n=t.target.closest(".ff-card-steps-overlay");n&&0===t.button&&(e._dragState={overlay:n,pointerId:t.pointerId,startY:t.clientY,startScrollTop:n.scrollTop,moved:!1,downTarget:t.target})}),document.addEventListener("pointermove",function(t){var n=e._dragState;if((null==n?void 0:n.pointerId)===t.pointerId){var i=t.clientY-n.startY;!n.moved&&Math.abs(i)<6||(n.moved||n.overlay.setPointerCapture(n.pointerId),n.moved=!0,n.overlay.scrollTop=n.startScrollTop+i,t.preventDefault())}});var t=function(t){var n,i=e._dragState;if((null==i?void 0:i.pointerId)===t.pointerId&&(e._dragState=null,!i.moved&&!i.downTarget.closest("a, button, [data-row-idx], .ff-step-nav"))){var r=null===(n=i.overlay.closest(".ff-card-media"))||void 0===n?void 0:n.querySelector(".action-thumb[data-action-id], [data-full-src]");null==r||r.dispatchEvent(new MouseEvent("click",{bubbles:!0}))}};document.addEventListener("pointerup",t),document.addEventListener("pointercancel",t)}},{key:"_preloadFull",value:function(e){this._preloaded.has(e)||(this._preloaded.add(e),(new Image).src=e)}},{key:"open",value:function(e,t){var n=this;this.imgEl.src=e,this.imgEl.alt=t,this.captionEl.textContent=t,this.overlayEl.hidden=!1,this.overlayEl.offsetWidth,this.overlayEl.classList.add("action-image-modal-overlay--open"),this.isOpen=!0;var i=function(e){n.overlayEl.querySelector(".action-image-modal-dialog").contains(e.target)||n.close()};this._outsideClickHandler=i,document.addEventListener("mousedown",i);var r=function(e){"Escape"===e.key&&n.close()};this._keyHandler=r,document.addEventListener("keydown",r)}},{key:"close",value:function(){var e=this;if(this.isOpen){this.isOpen=!1,this.overlayEl.classList.remove("action-image-modal-overlay--open"),this._outsideClickHandler&&(document.removeEventListener("mousedown",this._outsideClickHandler),this._outsideClickHandler=null),this._keyHandler&&(document.removeEventListener("keydown",this._keyHandler),this._keyHandler=null);var t=function(){e.overlayEl.hidden=!0,e.imgEl.src="",e.overlayEl.removeEventListener("transitionend",t)};this.overlayEl.addEventListener("transitionend",t)}}}],t&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.ActionImageModal=c},4839(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(e,t)||c(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(){var e,t,n="function"==typeof Symbol?Symbol:{},i=n.iterator||"@@iterator",r=n.toStringTag||"@@toStringTag";function s(n,i,r,a){var s=i&&i.prototype instanceof c?i:c,d=Object.create(s.prototype);return o(d,"_invoke",function(n,i,r){var a,o,s,c=0,d=r||[],u=!1,p={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(t,n){return a=t,o=0,s=e,p.n=n,l}};function h(n,i){for(o=n,s=i,t=0;!u&&c&&!r&&t<d.length;t++){var r,a=d[t],h=p.p,f=a[2];n>3?(r=f===i)&&(s=a[(o=a[4])?5:(o=3,3)],a[4]=a[5]=e):a[0]<=h&&((r=n<2&&h<a[1])?(o=0,p.v=i,p.n=a[1]):h<f&&(r=n<3||a[0]>i||i>f)&&(a[4]=n,a[5]=i,p.n=f,o=0))}if(r||n>1)return l;throw u=!0,i}return function(r,d,f){if(c>1)throw TypeError("Generator is already running");for(u&&1===d&&h(d,f),o=d,s=f;(t=o<2?e:s)||!u;){a||(o?o<3?(o>1&&(p.n=-1),h(o,s)):p.n=s:p.v=s);try{if(c=2,a){if(o||(r="next"),t=a[r]){if(!(t=t.call(a,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,o<2&&(o=0)}else 1===o&&(t=a.return)&&t.call(a),o<2&&(s=TypeError("The iterator does not provide a '"+r+"' method"),o=1);a=e}else if((t=(u=p.n<0)?s:n.call(i,p))!==l)break}catch(t){a=e,o=1,s=t}finally{c=1}}return{value:t,done:u}}}(n,r,a),!0),d}var l={};function c(){}function d(){}function u(){}t=Object.getPrototypeOf;var p=[][i]?t(t([][i]())):(o(t={},i,function(){return this}),t),h=u.prototype=c.prototype=Object.create(p);function f(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,o(e,r,"GeneratorFunction")),e.prototype=Object.create(h),e}return d.prototype=u,o(h,"constructor",u),o(u,"constructor",d),d.displayName="GeneratorFunction",o(u,r,"GeneratorFunction"),o(h),o(h,r,"Generator"),o(h,i,function(){return this}),o(h,"toString",function(){return"[object Generator]"}),(a=function(){return{w:s,m:f}})()}function o(e,t,n,i){var r=Object.defineProperty;try{r({},"",{})}catch(e){r=0}o=function(e,t,n,i){function a(t,n){o(e,t,function(e){return this._invoke(t,n,e)})}t?r?r(e,t,{value:n,enumerable:!i,configurable:!i,writable:!i}):e[t]=n:(a("next",0),a("throw",1),a("return",2))},o(e,t,n,i)}function s(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=c(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw a}}}}function l(e){return function(e){if(Array.isArray(e))return d(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function u(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,p(i.key),i)}}function p(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var h,f=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),g=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),v=this&&this.__importStar||(h=function(e){return h=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},h(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=h(e),i=0;i<n.length;i++)"default"!==n[i]&&f(t,e,n[i]);return g(t,e),t}),m=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))(function(r,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function s(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(o,s)}l((i=i.apply(e,t||[])).next())})},y=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.YinYangController=void 0;var b=n(1123),I=n(996),C=n(8474),w=y(n(616)),x=y(n(5465)),k=n(6982),S=n(14),_=n(1411),A=n(1830),E=n(5463),O=n(8483),D=n(9285),M=n(3669),L=v(n(600)),F=n(9692),T=n(819),P=n(4468),B=n(3115),G=n(6976),R=n(4105),q=n(9656),z=n(7578),N=n(3026),j=n(3613),H=n(6016),K=n(7128),V=n(3664),Y=n(7745),W=n(9523),U=n(6664),X=n(920),Z=n(2295),Q=n(8906),$=n(8748),J=n(5125),ee=n(9786),te=n(6313),ne=n(7766),ie=n(9577),re=n(7871),ae=n(7290),oe=n(8286),se=new Map(k.yasuniActions.map(function(e){return[e.id,e]}));function le(e){return e.targetedActionIds.map(function(e){var t,n=se.get(e);return{id:e,name:null!==(t=null==n?void 0:n.name)&&void 0!==t?t:e}})}var ce=function(){function e(t,n,i){var r=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.childControllers=[],this.childOddMap=new Map,this.persistentActionContext=null,this.pendingComponentSwitchContext=void 0,this.CHILD_LABEL_SHORT_MAX_CHARS=20,this.ACTION_DRAG_THRESHOLD_PX=12,this.htmlDragGhost=null,this.selectedSourceFocus=null,this.focusBeforeComponentSwitch=null,this.savedSourceComponentLinks=[],this._pendingCuttingFocusAfterSwitch=null,this._pendingOddHighlightAfterSwitch=null,this._pendingCuttingNavigationAfterSwitch=null,this._pendingKeyEventMenuAfterSwitch=!1,this.isCoreEventMenuOpen=!1,this.activeKeyEventId=null,this.state=new K.YinYangControllerState,this._routeNextDirectActionBlockToPanelB=!1,this._suppressDirectActionBlockRender=!1,this._ffHoverChildNode=null,this._onDiagramChildHoverCb=null,this._onDiagramComposanteHoverCb=null,this._onDiagramActionHoverCb=null,this._onDiagramOddArcHoverCb=null,this.model=t,this.view=n,this.factory=i,this.animator=n.viewInitializer.graphicStrategy.animator,this.state.blockingAnimations.onChange(function(){return r.refreshGhostVisualState()}),this.actionStackController=new z.ActionStackController(this.onStackItemVisibilityToggle.bind(this),void 0),this.childActionMenuController=new R.ChildActionMenuController(n,this.getChildRenderedCenter.bind(this),this.actionStackController.updateVisual.bind(this.actionStackController),function(e,t,n){var i;r.activateActionFromChild(e,t,n,!0);var a=r.childOddMap.get(e.getKey());if(a){var o=r.view.viewInitializer.getCurrentComponentIndex();null===(i=r.onDiagramNavChangeCb)||void 0===i||i.call(r,{type:"action",componentIndex:o,oddId:a.oddId,cuttingIndex:a.cuttingIndex,actionId:t})}},this.validateActionSelection.bind(this),function(e,t,n,i){return r.searchPanelSynchronizer.startActionDrag(e,t,n,i,function(){var e;return null===(e=r._onDiagramActionDragIntentCb)||void 0===e?void 0:e.call(r)})}),this.coreEventMenuController=new q.CoreEventMenuController(n,this.previewKeyEvent.bind(this),this.validateKeyEventSelection.bind(this),function(e,t,n,i){return r.searchPanelSynchronizer.startActionDrag(e,t,n,i,function(){var e;return null===(e=r._onDiagramActionDragIntentCb)||void 0===e?void 0:e.call(r)})}),this.forceFieldDetailsPanel=new N.ForceFieldDetailsPanel,this.forceFieldDetailsPanel.setSphereInfo(S.yasuniSphere.name,S.yasuniSphere.description),this.forceFieldDetailsPanel.setComboHighlightCallbacks(function(e){return r.actionStackController.highlightComboContext(e)},function(){return r.actionStackController.clearComboHighlight()}),this.forceFieldDetailsPanel.setStackItemHighlightCallback(function(e){r.actionStackController.highlightByStackItemId(e),r.highlightOddByStackItemId(e)}),this.forceFieldDetailsPanel.setOddLegendHoverCallback(function(e){r.view.yinYangDrawer.setHoverOddId(e)}),this.forceFieldDetailsPanel.setOddLegendActiveChangeCallback(function(e,t){r.view.yinYangDrawer.setActiveOddId(t?e:null)}),this.view.yinYangDrawer.setOnOddArcHover(function(e){var t;r.forceFieldDetailsPanel.highlightOddLegendChip(e);var n=r.view.yinYangDrawer.getActiveOddId();console.debug("[ODD-HL:hoverCb]",{id:e,fallback:n,resolved:null!=e?e:n}),r.highlightOddInChildren(null!=e?e:n),null===(t=r._onDiagramOddArcHoverCb)||void 0===t||t.call(r,e)}),this.actionStackController.setBlockHighlightCallback(function(e){return r.forceFieldDetailsPanel.highlightBlockByStackItemId(e)}),this.actionStackController.setSatelliteHighlightCallback(function(e){return r.highlightOddByStackItemId(e)}),this.forceFieldDetailsPanel.setActionNameResolver(function(e){var t,n;return null!==(n=null===(t=se.get(e))||void 0===t?void 0:t.name)&&void 0!==n?n:e}),this.forceFieldDetailsPanel.setOnDiagramElementHover(function(e){if(r._ffHoverChildNode&&(L.select(r._ffHoverChildNode).style("filter",null),r._ffHoverChildNode=null),r.view.spikeDrawer.unhighlightSpikes(),e){var t=r.getCurrentComponent();if(t){var n=r.childControllers.find(function(n){var i=r.childOddMap.get(n.getKey());return!(!i||i.oddId!==e.oddId||void 0!==e.cuttingId&&(0,M.resolveOddCuttingId)(t,e.oddId,i.cuttingIndex)!==e.cuttingId)});if(n){var i=r.childOddMap.get(n.getKey());if(i){var a=n.view.viewInitializer.yinYangGroup.node();a&&(L.select(a).style("filter","brightness(1.5) drop-shadow(0 0 10px rgba(255,255,255,0.75)) drop-shadow(0 0 22px rgba(114,245,255,0.45))"),r._ffHoverChildNode=a),r.view.spikeDrawer.highlightSpikeByCuttingIndex(e.oddId,i.cuttingIndex)}}}}}),this.forceFieldDetailsPanel.setActionTagClickCallback(function(e,t){var n,i,a;if(r.actionStackController.getOrderedActionIds().includes(e))r.actionStackController.flashActionById(e),t&&r.actionStackController.flashComboContext(t);else{var o=null!==(i=null===(n=se.get(e))||void 0===n?void 0:n.name)&&void 0!==i?i:e;null===(a=r.openSearchWithQuery)||void 0===a||a.call(r,o)}}),this.forceFieldRenderer=new j.ForceFieldRenderer,this.eventFieldRenderer=new H.EventFieldRenderer,this.childScoresDeltaRenderer=new V.ChildScoresDeltaRenderer,this.weightPreviewRingRenderer=new Y.WeightPreviewRingRenderer,this.contextLabelsRenderer=new W.ContextLabelsRenderer,this.forceFieldComputationService=new U.ForceFieldComputationService,this.childrenOrbitManager=new ne.ChildrenOrbitManager({view:this.view,getChildControllers:function(){return r.childControllers},state:this.state,renderOppositeChildrenForceField:function(e){return r.renderOppositeChildrenForceField(e)}}),this.oddViewManager=new te.OddViewManager({view:this.view,getChildControllers:function(){return r.childControllers},getChildOddMap:function(){return r.childOddMap},getActiveChildKey:function(){return r.state.children.activeChildKey},enterOddView:this.enterOddView.bind(this),exitOddView:this.exitOddView.bind(this),getCurrentComponent:this.getCurrentComponent.bind(this),getAllComponents:this.getAllComponents.bind(this),forceFieldDetailsPanel:this.forceFieldDetailsPanel,actionStackController:this.actionStackController,hasActiveAction:function(){return r.state.menu.hasActiveChildAction},buildKeyEventBlocksForComponent:function(e){return r.buildKeyEventBlocksForComponent(e)},onNavigateToAction:function(e){return r.navigateToPrereqAction(e)}}),this.searchPanelSynchronizer=new ie.SearchPanelSynchronizer({view:this.view,getChildControllers:function(){return r.childControllers},getChildOddMap:function(){return r.childOddMap},state:this.state,ACTION_DRAG_THRESHOLD_PX:this.ACTION_DRAG_THRESHOLD_PX,setPendingContext:function(e){r.pendingComponentSwitchContext=e},setPendingOddHighlightAfterSwitch:function(e){r._pendingOddHighlightAfterSwitch=e},setPendingCuttingNavigationAfterSwitch:function(e,t,n){r._pendingCuttingNavigationAfterSwitch={oddId:e,cuttingIndex:t,forceOpen:n}},setRouteNextDirectActionBlockToPanelB:function(e){r._routeNextDirectActionBlockToPanelB=e},setSuppressDirectActionBlockRender:function(e){r._suppressDirectActionBlockRender=e},prepareForComponentSwitch:this.prepareForComponentSwitch.bind(this),animateChildrenHide:this.animateChildrenHide.bind(this),setChildrenEnabled:this.setChildrenEnabled.bind(this),onDiagramComposanteClicked:this.onDiagramComposanteClicked.bind(this),onDiagramOddArcClicked:this.onDiagramOddArcClicked.bind(this),onDiagramNavChange:function(e){var t;return null===(t=r.onDiagramNavChangeCb)||void 0===t?void 0:t.call(r,e)},applyEnterOddView:function(e){return r.applyEnterOddView(e)},applyOddHighlight:function(e){return r.applyOddHighlight(e)},focusChildByOddCutting:function(e,t,n){return r.focusChildByOddCutting(e,t,n)},focusChildByOddCuttingAndAction:function(e,t,n){return r.focusChildByOddCuttingAndAction(e,t,n)},validateActionSelection:this.validateActionSelection.bind(this),validateKeyEventSelection:this.validateKeyEventSelection.bind(this),restoreKeyEventDiagramState:this.restoreKeyEventDiagramState.bind(this),actionStackController:this.actionStackController,childActionMenuController:this.childActionMenuController,renderDragGhost:this.renderDragGhost.bind(this),removeDragGhost:this.removeDragGhost.bind(this),clientPointToGlobalGroup:this.clientPointToGlobalGroup.bind(this)}),this.actionStackManager=new re.ActionStackManager({view:this.view,state:this.state,actionStackController:this.actionStackController,getChildControllers:function(){return r.childControllers},getChildOddMap:function(){return r.childOddMap},getSelectedSourceFocus:function(){return r.selectedSourceFocus},setSelectedSourceFocus:function(e){r.selectedSourceFocus=e},getPersistentActionContext:function(){return r.persistentActionContext},setPersistentActionContext:function(e){r.persistentActionContext=e},getInternalModel:function(){return r.getInternalModel()},getCurrentComponent:this.getCurrentComponent.bind(this),getCurrentComponentOrUndefined:this.getCurrentComponentOrUndefined.bind(this),getAllComponents:this.getAllComponents.bind(this),prepareForComponentSwitch:this.prepareForComponentSwitch.bind(this),animateChildrenHide:this.animateChildrenHide.bind(this),recomputeIncomingForceFieldForItems:this.recomputeIncomingForceFieldForItems.bind(this),buildProjectionActionsFromStackItems:this.buildProjectionActionsFromStackItems.bind(this),buildForceFieldSourceIndicesFromStackItems:this.buildForceFieldSourceIndicesFromStackItems.bind(this),clearProjectedActionState:this.clearProjectedActionState.bind(this),clearActiveChild:this.clearActiveChild.bind(this),clearForceFieldComputationState:this.clearForceFieldComputationState.bind(this),renderOppositeChildrenForceField:this.renderOppositeChildrenForceField.bind(this),renderForceFieldDetails:this.renderForceFieldDetails.bind(this),buildChildrenOrbitData:this.buildChildrenOrbitData.bind(this),renderChildScoresDeltas:this.renderChildScoresDeltas.bind(this),syncGhostTensionFromAction:this.syncGhostTensionFromAction.bind(this),renderGhostDetailsForActiveAction:this.renderGhostDetailsForActiveAction.bind(this),renderCumulativeDetailsForCutting:this.renderCumulativeDetailsForCutting.bind(this),renderSourceActionDetailsForCurrentSource:this.renderSourceActionDetailsForCurrentSource.bind(this),renderActionPropagationTable:this.renderActionPropagationTable.bind(this),clearGhostDetails:this.clearGhostDetails.bind(this),showComposanteInfo:this.showComposanteInfo.bind(this),refreshChildActionMenu:function(){return r.updateChildActionMenu(r.buildChildrenOrbitData())}}),this.childInteractionController=new $.ChildInteractionController({view:this.view,getCurrentComponent:this.getCurrentComponent.bind(this),getActiveChildKey:function(){return r.state.children.activeChildKey},setActiveChildKey:function(e){var t;r.state.setActiveChildKey(e),r.refreshComponentTitle(),null===(t=r._onActiveChildChange)||void 0===t||t.call(r)},openActionMenuFromChild:this.openActionMenuFromChild.bind(this),highlightOddInChildren:this.highlightOddInChildren.bind(this),cancelOddHighlight:this.cancelOddHighlight.bind(this),syncGhostTensionFromAction:this.syncGhostTensionFromAction.bind(this),renderGhostDetailsForActiveAction:this.renderGhostDetailsForActiveAction.bind(this),onUserCuttingClicked:function(e){var t,n=r.childOddMap.get(e.getKey());if(n){var i=r.view.viewInitializer.getCurrentComponentIndex();null===(t=r.onDiagramNavChangeCb)||void 0===t||t.call(r,{type:"cutting",componentIndex:i,oddId:n.oddId,cuttingIndex:n.cuttingIndex})}},onChildHover:function(e,t){var n,i=r.view.viewInitializer.getCurrentComponentIndex();null===(n=r._onDiagramChildHoverCb)||void 0===n||n.call(r,null!==e?i:null,e,t)}}),this.forceFieldLifecycleController=new X.ForceFieldLifecycleController({state:this.state,childOddMap:this.childOddMap,forceFieldComputationService:this.forceFieldComputationService,forceFieldRenderer:this.forceFieldRenderer,getCurrentComponent:this.getCurrentComponent.bind(this),getAllComponents:this.getAllComponents.bind(this),updateChildActionMenu:this.updateChildActionMenu.bind(this),updateContextLabels:this.updateContextLabels.bind(this),clearForceFieldDetails:this.clearForceFieldDetails.bind(this),renderForceFieldDetails:this.renderForceFieldDetails.bind(this),renderActionPropagationTable:this.renderActionPropagationTable.bind(this),renderSourceActionDetailsForCurrentSource:this.renderSourceActionDetailsForCurrentSource.bind(this),clearGhostDetails:this.clearGhostDetails.bind(this),clearForceFieldComputationState:this.clearForceFieldComputationState.bind(this),buildChildrenOrbitData:this.buildChildrenOrbitData.bind(this),setContextLabelsVisibilityOpacity:this.contextLabelsRenderer.setVisibilityOpacity.bind(this.contextLabelsRenderer),getGlobalGroupNode:function(){return r.view.viewInitializer.globalGroup.node()},getChildRenderedCenter:this.getChildRenderedCenter.bind(this),getComponentBorderTargetPoint:this.getComponentBorderTargetPoint.bind(this)}),this.eventFieldLifecycleController=new Z.EventFieldLifecycleController({state:this.state,childOddMap:this.childOddMap,eventFieldRenderer:this.eventFieldRenderer,getActiveKeyEvents:this.getEventFieldKeyEvents.bind(this),getCurrentComponentOrUndefined:this.getCurrentComponentOrUndefined.bind(this),getActiveItems:function(){return r.actionStackManager.getActiveItems()},getChildControllers:function(){return r.childControllers},getGlobalGroupNode:function(){return r.view.viewInitializer.globalGroup.node()},getChildRenderedCenter:this.getChildRenderedCenter.bind(this),getComponentBorderTargetPoint:this.getComponentBorderTargetPoint.bind(this),getEventFieldSource:this.getEventFieldSource.bind(this)}),this.settingsApplier=new ee.ControllerSettingsApplier({state:this.state,view:this.view,hasChildrenControllers:function(){return r.childControllers.length>0},getOrbitData:function(){var e;return null!==(e=r.state.forceField.orbitData)&&void 0!==e?e:r.buildChildrenOrbitData()},updateContextLabels:this.updateContextLabels.bind(this),updateChildActionMenu:this.updateChildActionMenu.bind(this),updateCoreEventMenu:this.updateCoreEventMenu.bind(this),applyChildrenFitScale:this.applyChildrenFitScale.bind(this),clearForceFieldComputationState:this.clearForceFieldComputationState.bind(this),renderOppositeChildrenForceField:function(){return r.renderOppositeChildrenForceField()}})}return t=e,n=[{key:"getBorderNb",value:function(){try{return this.model.borderNb}catch(e){throw e}}},{key:"getInternalModel",value:function(){try{return this.model.internalModel}catch(e){throw e}}},{key:"getAllComponents",value:function(){try{return this.getInternalModel().components}catch(e){throw e}}},{key:"getKey",value:function(){try{return this.model.key}catch(e){throw e}}},{key:"getParentKey",value:function(){try{return this.model.parentKey}catch(e){throw e}}},{key:"getForceFieldAllLinkDetails",value:function(){return this.state.forceField.allLinkDetails}},{key:"generateChildKey",value:function(){try{return this.model.generateChildKey()}catch(e){throw e}}},{key:"createYinYangChildren",value:function(){var t,n=this;try{if(!this.state.children.enabled)return void this.state.setChildrenPendingRefresh(!0);this.state.setActiveChildKey(null),this.refreshComponentTitle(),null===(t=this._onActiveChildChange)||void 0===t||t.call(this),this.childOddMap.clear(),this.clearChildren();var i=2*this.view.viewInitializer.smallCircleRadius,r=0,a=this.getCurrentComponent();if(!a)return;var o=a.odds.flatMap(function(e){return e.cuttingWeights}),s=o.length>0?o.reduce(function(e,t){return e+t},0)/o.length:1;a.odds.forEach(function(t){for(var o,l,c=Math.max(1,t.cuttingScores.length),d=0;d<c;d+=1){var u=null!==(o=t.cuttingScores[d])&&void 0!==o?o:(0,I.oddTensionFromCuttings)(t.cuttingScores,t.cuttingWeights),p=null!==(l=t.cuttingWeights[d])&&void 0!==l?l:s,h=e.weightToSizeRatio(p,s),f=(0,J.buildChildCuttingInternalModel)(a,t,d,u),g={minEdge:i*h,containerId:n.view.viewData.containerId,borderAnimationDuration:n.view.viewData.borderAnimationDuration,weightRatio:h,weight:p},v=n.factory.create(f,g,n.getKey());n.childControllers.push(v),n.childrenOrbitManager.invalidateCache(),n.childOddMap.set(v.getKey(),{oddId:t.id,score:u,cuttingIndex:d}),n.attachChildToggleHandler(v),n.attachChildHoverHandler(v),r+=1}}),r>0&&this.applyChildrenFitScale(),this.state.setHasActiveChildAction(!1),this.setChildrenHiddenState(!0),this.animateChildren(!0),this.attachBackgroundClickHandler(),this.state.children.orbitEnabled?this.startChildrenOrbit(this.state.children.orbitSpeed):this.applyChildrenOrbitTransforms(0),this.renderOppositeChildrenForceField()}catch(e){throw e}}},{key:"getChildActionClusterReach",value:function(e){return 1.7*e+Math.max(14,.32*e)}},{key:"getMaxWeightRatio",value:function(t){var n=t.odds.flatMap(function(e){return e.cuttingWeights}),i=n.length>0?n.reduce(function(e,t){return e+t},0)/n.length:0;return i<=0?1:e.weightToSizeRatio(Math.max.apply(Math,l(n)),i)}},{key:"computeGlobalFitShrinkRatio",value:function(){var e=this,t=this.view.viewInitializer.borderOuterRadius,n=this.view.viewInitializer.smallCircleRadius,i=this.view.viewInitializer.distanceFromChild,r=this.getChildActionClusterReach(n),a=this.getAllComponents(),o=n*(a.length>0?Math.max.apply(Math,l(a.map(function(t){return e.getMaxWeightRatio(t)}))):1),s=i+Math.max(o,r)+20;return t/Math.max(t,s)}},{key:"applyChildrenFitScale",value:function(){void 0===this.cachedGlobalFitShrinkRatio&&(this.cachedGlobalFitShrinkRatio=this.computeGlobalFitShrinkRatio()),this.view.viewInitializer.resizeWholePattern(this.cachedGlobalFitShrinkRatio)}},{key:"createFacetteImageRing",value:function(){this.view.borderDrawer.createFacetteImageRing()}},{key:"rebuildFacetteImageRing",value:function(){this.view.borderDrawer.rebuildFacetteImageRing()}},{key:"rebuildBorderSegments",value:function(){this.view.borderDrawer.rebuildBorderSegments()}},{key:"setChildrenEnabled",value:function(e){var t=this;if(this.state.children.enabled!==e){if(this.state.setChildrenEnabled(e),this.disableOuterSpark(),this.view.yinYangDrawer.refreshOddArcLabelsVisibility(),this.view.yinYangDrawer.refreshIdleSphereOverlay(),!e)return this.contextLabelsRenderer.updateComponentTitleOnly(document.getElementById("component-title-container"),S.yasuniSphere.name,null,this.state.labels.componentFontScale*this.view.viewInitializer.labelsFontAutoScale,this.state.labels.textShadowEnabled,function(){return t.showComposanteInfo()}),this.view.borderDrawer.deactivateSegment(),this.state.setHasActiveChildAction(!1),this.clearActiveChild(),this.state.clearMenuActiveSelection(),this.stopChildrenOrbit(),this.animateChildren(!1),this.clearForceFieldDetails(),void this.eventFieldLifecycleController.updateEventField();this.view.borderDrawer.activateSegment(this.view.viewInitializer.getCurrentComponentIndex()),this.state.children.pendingRefresh?(this.state.setChildrenPendingRefresh(!1),this.refreshChildrenForComponentSwitch()):this.childControllers.length>0?(this.state.setHasActiveChildAction(!1),this.setChildrenHiddenState(!0),this.animateChildren(!0)):this.createYinYangChildren(),this.eventFieldLifecycleController.updateEventField()}}},{key:"debugFillActionStackWithRandomActions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6;if(this.state.children.enabled||this.setChildrenEnabled(!0),0!==this.childControllers.length){this.actionStackController.clearAll();for(var t=0;t<e;t+=1){var n=this.childControllers[Math.floor(Math.random()*this.childControllers.length)],i=this.getActionsForChild(n.getKey());if(0!==i.length){var r=i[Math.floor(Math.random()*i.length)];this.validateActionSelection(n,r.id,r.name)}}}}},{key:"animateChildrenHide",value:function(){0!==this.childControllers.length&&this.state.children.enabled&&(this.childActionMenuController.animateClose(),this.state.clearMenuActiveSelection(),this.animateChildren(!1))}},{key:"beginBlockingAnimation",value:function(e){return this.state.blockingAnimations.begin(e)}},{key:"endBlockingAnimation",value:function(e){this.state.blockingAnimations.end(e)}},{key:"hasActiveBlockingAnimation",value:function(){return this.state.blockingAnimations.isAnyActive}},{key:"refreshGhostVisualState",value:function(){this.syncGhostTensionFromAction(),this.view.viewInitializer.refreshGhostDisplay()}},{key:"prepareForComponentSwitch",value:function(e){var t,n,i,r,a,o,c,d,u=this;if(this.forceFieldRenderer.hide(),this.eventFieldRenderer.hide(),this.isCoreEventMenuOpen||null!==this.activeKeyEventId){this.isCoreEventMenuOpen=!1;var p=this.activeKeyEventId?E.yasuniKeyEventMap.get(this.activeKeyEventId):void 0;void 0!==p&&(e===p.originComposanteId||(0,Q.keyEventReachesComponent)(p,e))||this.setActiveKeyEventId(null),this.updateCoreEventMenu(),this.notifyKeyEventMenuState(!1)}var h,f=null!==(r=null!==(n=null===(t=this.persistentActionContext)||void 0===t?void 0:t.sourceComponentId)&&void 0!==n?n:null===(i=this.actionStackManager.getActiveItems()[0])||void 0===i?void 0:i.sourceComponentId)&&void 0!==r?r:null,g=this.state.forceField.links.length>0?l(this.state.forceField.links):null!==(o=null===(a=this.persistentActionContext)||void 0===a?void 0:a.links)&&void 0!==o?o:[],v=null===(c=this.getCurrentComponent())||void 0===c?void 0:c.id,m=this.getAllComponents(),y=s(this.actionStackManager.getActiveItems());try{var b=function(){var e=h.value;if(!v||e.sourceComponentId===v)return 0;var t=null==m?void 0:m.find(function(t){return t.id===e.sourceComponentId});if(!t)return 0;var n,i=(0,M.resolveOddCuttingId)(t,e.sourceOddId,e.sourceCuttingIndex),r=null!==(d=e.effectiveDelta)&&void 0!==d?d:u.state.action.delta,a=s((0,C.propagateForceFieldActionInComponent)(t,x.default,e.sourceOddId,i,r,u.state.action.propagationFactor,w.default,m));try{for(a.s();!(n=a.n()).done;){var o=n.value;if(("inter"===o.layerType||"bridge"===o.layerType)&&o.toComponentId){var l={fromComponentId:e.sourceComponentId,toComponentId:o.toComponentId,fromOddId:o.fromOddId,toOddId:o.toOddId,fromCuttingId:o.fromCuttingId,toCuttingId:o.toCuttingId,targetedCutting:o.targetedCutting,baseDelta:o.baseDelta,weight:o.weight,strategicWeight:o.weight,layerType:o.layerType,propagationFactor:o.propagationFactor,absorption:o.absorption,gap:o.gap,fromState:o.fromState,toState:o.toState,deltaTo:o.deltaTo,rationale:o.rationale,layersInvolved:[o.layerType],localLayerWeights:null,bridgeLayerWeights:null};g.push({targetComponentId:o.toComponentId,thickness:(0,ae.getForceFieldThickness)(Math.abs(o.weight)),potentialGain:o.deltaTo,revealDelayMs:0,detail:l})}}}catch(e){a.e(e)}finally{a.f()}};for(y.s();!(h=y.n()).done;)b()}catch(e){y.e(e)}finally{y.f()}if(!f||0===g.length)return this.pendingComponentSwitchContext=null,void this.view.borderDrawer.clearSourceBeacon();if(e!==f){this.focusBeforeComponentSwitch=this.selectedSourceFocus?Object.assign({},this.selectedSourceFocus):null,this.savedSourceComponentLinks=l(g);var I=new Map;g.forEach(function(t){if(t.targetComponentId===e){var n=t.detail.toOddId,i="".concat(t.detail.fromComponentId,"::").concat(t.detail.fromOddId,"::").concat(n),r=I.get(i);(!r||t.potentialGain>r.potentialGain)&&I.set(i,{toOddId:n,thickness:t.thickness,potentialGain:t.potentialGain,detail:t.detail})}}),this.pendingComponentSwitchContext=I.size>0?{type:"incoming",sourceComponentId:f,linksByOddId:I}:null,console.debug("[switch-context] prepareForComponentSwitch",{sourceComponentId:f,targetComponentId:e,linksToCheckCount:g.length,incomingLinkCount:I.size,pendingType:this.pendingComponentSwitchContext?this.pendingComponentSwitchContext.type:null});var k=S.yasuniCause.findIndex(function(e){return e.id===f});console.debug("[switch-context] beacon requested",{sourceComponentId:f,sourceComponentIndex:k,targetComponentId:e,hasIncomingLinks:I.size>0}),k>=0&&(this.view.borderDrawer.flashSourceBeacon(k),this.view.borderDrawer.activateSegment(k));var _=I.size>0?this.forceFieldDetailsPanel.snapshotPanelHtml():null;null!==_&&this.forceFieldDetailsPanel.freezeForSwitch(_)}else this.pendingComponentSwitchContext={type:"reactivate"}}},{key:"handleComponentSwitchChildren",value:function(){if(void 0===this.pendingComponentSwitchContext&&this.persistentActionContext){var e=this.getCurrentComponent();e?this.prepareForComponentSwitch(e.id):this.pendingComponentSwitchContext=null}this.state.setHasActiveChildAction(!1),this.clearActiveChild(),this.state.setChildrenEnabled(!0),this.disableOuterSpark(),this.view.yinYangDrawer.refreshOddArcLabelsVisibility(),this.view.yinYangDrawer.refreshIdleSphereOverlay(),this.state.setChildrenPendingRefresh(!1),this.refreshChildrenForComponentSwitch()}},{key:"refreshChildrenForComponentSwitch",value:function(){return m(this,void 0,void 0,a().m(function e(){var t,n,i,r,o,s,l,c,d,u,p=this;return a().w(function(e){for(;;)switch(e.n){case 0:if(this.state.children.enabled){e.n=1;break}return this.state.setChildrenPendingRefresh(!0),e.a(2);case 1:this.clearActiveChild(),this.clearChildren(),this.createYinYangChildren(),this.getEventFieldKeyEvents().length>0&&this.eventFieldLifecycleController.updateEventField(),t=this.pendingComponentSwitchContext,this.pendingComponentSwitchContext=void 0,"incoming"===(null==t?void 0:t.type)?(this.restoreIncomingForceFieldContext(t),n=this._pendingCuttingFocusAfterSwitch,this._pendingCuttingFocusAfterSwitch=null,null!==n?(this.forceFieldDetailsPanel.unfreezeForSwitch(),requestAnimationFrame(function(){p.onCuttingLabelClick(n.oddId,n.cuttingId)})):this.forceFieldDetailsPanel.unfreezeForSwitch()):"reactivate"===(null==t?void 0:t.type)?(this._suppressDirectActionBlockRender=!0,this.reactivatePersistentAction(),this._suppressDirectActionBlockRender=!1,this.renderSourceActionDetailsForCurrentSource()):"searchCutting"===(null==t?void 0:t.type)?this.focusChildByOddCutting(t.oddId,t.cuttingIndex,t.forceOpen):"searchOdd"===(null==t?void 0:t.type)?this.applyEnterOddView(t.oddId):"searchOddHighlight"===(null==t?void 0:t.type)?this.applyOddHighlight(t.oddId):"searchAction"===(null==t?void 0:t.type)?this.focusChildByOddCuttingAndAction(t.oddId,t.cuttingIndex,t.actionId):"restoreAction"===(null==t?void 0:t.type)&&(this._routeNextDirectActionBlockToPanelB=!0,this._suppressDirectActionBlockRender=!0,this.focusChildByOddCuttingAndAction(t.oddId,t.cuttingIndex,t.actionId),this._suppressDirectActionBlockRender=!1,this._routeNextDirectActionBlockToPanelB=!1),null===t&&(i=this.view.viewInitializer.getCurrentComponentIndex(),(r=S.yasuniCause[i])&&this.forceFieldDetailsPanel.renderComposanteInfo(r,this.buildKeyEventBlocksForComponent(r),function(e){return p.navigateToPrereqAction(e)})),null!==(o=this._pendingCuttingFocusAfterSwitch)&&(this._pendingCuttingFocusAfterSwitch=null,this.forceFieldDetailsPanel.unfreezeForSwitch(),requestAnimationFrame(function(){p.onCuttingLabelClick(o.oddId,o.cuttingId)})),null!==this._pendingOddHighlightAfterSwitch&&(s=this._pendingOddHighlightAfterSwitch,this._pendingOddHighlightAfterSwitch=null,this.applyOddHighlight(s)),null!==this._pendingCuttingNavigationAfterSwitch&&(l=this._pendingCuttingNavigationAfterSwitch,c=l.oddId,d=l.cuttingIndex,u=l.forceOpen,this._pendingCuttingNavigationAfterSwitch=null,this.focusChildByOddCutting(c,d,u)),this._pendingKeyEventMenuAfterSwitch&&(this._pendingKeyEventMenuAfterSwitch=!1,this.openCoreEventMenu());case 2:return e.a(2)}},e,this)}))}},{key:"restoreIncomingForceFieldContext",value:function(e){var t,n=this,i=e.sourceComponentId,r=e.linksByOddId,a=this.getCurrentComponentOrUndefined();if(a){var o=[],l=[],c=null!==(t=w.default.localK)&&void 0!==t?t:.65;if(r.forEach(function(e,t){var r,d,u,p,h=e.toOddId,f=null!==(r=e.detail.fromComponentId)&&void 0!==r?r:i,g=e.detail,v=e.potentialGain;l.push(g);var m=a.odds.find(function(e){return e.id===h});if(m){var y=(0,I.stateFromTension)((0,I.oddTensionFromCuttings)(m.cuttingScores,m.cuttingWeights)),x=null!==(u=null===(d=w.default.intraOddByComponent[a.id])||void 0===d?void 0:d[h])&&void 0!==u?u:[],k=function(t){var i=Math.max(1,m.cuttingScores.length);n.childControllers.forEach(function(r,s){var c=n.childOddMap.get(r.getKey());if(c&&c.oddId===h){var d=(0,M.resolveOddCuttingId)(a,h,c.cuttingIndex),u=Object.assign(Object.assign({},g),{toCuttingId:d});l.push(u),o.push({sourceComponentId:f,endIndex:s,thickness:e.thickness,potentialGain:t/i,revealDelayMs:0,detail:u})}})};if(0!==x.length){var S="bridge"===g.layerType,_=S?g.toCuttingId:g.targetedCutting;if(void 0!==_){var A=(0,C.findNodeInTree)(x,_);if(A){var E=new Set,O=function(t,i,r,d,u){var p,g,v=s(t);try{var m=function(){var t,s,v=g.value,m=v.edge,w=v.rationale;if(E.has(m.toCuttingId))return 0;if(E.add(m.toCuttingId),n.childControllers.forEach(function(e,i){var r=n.childOddMap.get(e.getKey());r&&r.oddId===h&&(0,M.resolveOddCuttingId)(a,h,r.cuttingIndex)===m.toCuttingId&&(t=i,s=(0,I.stateFromTension)(r.score))}),void 0===t||void 0===s)return 0;var k=(0,C.absorptionMultiplier)(s),S=(0,C.gapMultiplier)(y,s),_=i*m.w*c*k*S;if(Math.abs(_)<1e-9)return 0;var A={fromComponentId:void 0!==u?a.id:f,toComponentId:a.id,fromOddId:h,toOddId:h,fromCuttingId:u,toCuttingId:m.toCuttingId,baseDelta:i,weight:m.w,strategicWeight:m.w,layerType:"intra",propagationFactor:c,absorption:k,gap:S,fromState:y,toState:s,deltaTo:_,rationale:w,layersInvolved:["inter","intra"],localLayerWeights:null,bridgeLayerWeights:null};l.push(A),o.push(Object.assign(Object.assign({},void 0!==r?{startIndex:r}:{sourceComponentId:f}),{endIndex:t,thickness:e.thickness,potentialGain:_,revealDelayMs:d*b.animationConfig.forceFieldRevealChainStepMs,detail:A}));var D=(null!==(p=m.targetedCuttings)&&void 0!==p?p:[]).map(function(e){var t=(0,C.findNodeInTree)(x,e.cuttingId);return t?{edge:t,rationale:e.rationale}:null}).filter(function(e){return null!==e});O(D,_,t,d+1,m.toCuttingId)};for(v.s();!(g=v.n()).done;)m()}catch(e){v.e(e)}finally{v.f()}};if(S){var D;E.add(A.toCuttingId),n.childControllers.forEach(function(e,t){var i=n.childOddMap.get(e.getKey());i&&i.oddId===h&&(0,M.resolveOddCuttingId)(a,h,i.cuttingIndex)===A.toCuttingId&&(D=t)}),void 0!==D&&o.push({sourceComponentId:f,endIndex:D,thickness:e.thickness,potentialGain:v,revealDelayMs:0,detail:g});var L=(null!==(p=A.targetedCuttings)&&void 0!==p?p:[]).map(function(e){var t=(0,C.findNodeInTree)(x,e.cuttingId);return t?{edge:t,rationale:e.rationale}:null}).filter(function(e){return null!==e});L.length>0&&O(L,v,D,0,A.toCuttingId)}else O([{edge:A,rationale:g.rationale}],v,void 0,0,void 0)}else S||k(v)}else x.forEach(function(t){var i,r;if(n.childControllers.forEach(function(e,o){var s=n.childOddMap.get(e.getKey());s&&s.oddId===h&&(0,M.resolveOddCuttingId)(a,h,s.cuttingIndex)===t.toCuttingId&&(i=o,r=(0,I.stateFromTension)(s.score))}),void 0!==i&&void 0!==r){var s=(0,C.absorptionMultiplier)(r),d=(0,C.gapMultiplier)(y,r),u=v*t.w*c*s*d;if(!(Math.abs(u)<1e-9)){var p={fromComponentId:f,toComponentId:a.id,fromOddId:h,toOddId:h,toCuttingId:t.toCuttingId,baseDelta:v,weight:t.w,strategicWeight:t.w,layerType:"intra",propagationFactor:c,absorption:s,gap:d,fromState:y,toState:r,deltaTo:u,rationale:g.rationale,layersInvolved:["inter","intra"],localLayerWeights:null,bridgeLayerWeights:null};l.push(p),o.push({sourceComponentId:f,endIndex:i,thickness:e.thickness,potentialGain:u,revealDelayMs:0,detail:p})}}})}else k(v)}}),0!==o.length){var d=(0,G.projectGhostStateForIncomingLinks)({component:a,incomingLinks:o});d?this.state.applyGhostProjection({projectedGhostTensionByOddId:d.projectedGhostTensionByOddId,projectedGhostStateByOddId:d.projectedGhostStateByOddId,projectedGhostComponentTension:d.projectedGhostComponentTension,projectedGhostCuttingStatesByOddId:d.projectedGhostCuttingStatesByOddId}):this.applyEmptyGhostProjectionState(),this.state.setIncomingForceFieldLinks(o,l),this.state.setHasActiveChildAction(!0),this.renderOppositeChildrenForceField(),this.syncGhostTensionFromAction(),this.renderGhostDetailsForActiveAction()}}}},{key:"recomputeIncomingForceFieldForItems",value:function(e,t,n){var i,r,a,o,c=this,d=new Set(e.map(function(e){return e.sourceOddId})),u=this.savedSourceComponentLinks.filter(function(e){return e.targetComponentId===n&&d.has(e.detail.fromOddId)}),p=new Map;u.forEach(function(e){if(e.targetComponentId===n){var t=e.detail.toOddId,i="".concat(e.detail.fromComponentId,"::").concat(e.detail.fromOddId,"::").concat(t),r=p.get(i);(!r||e.potentialGain>r.potentialGain)&&p.set(i,{toOddId:t,thickness:e.thickness,potentialGain:e.potentialGain,detail:e.detail})}});var h,f=new Set(u.map(function(e){return e.detail.fromComponentId})),g=this.getAllComponents(),v=s(e.filter(function(e){return e.sourceComponentId!==n&&!f.has(e.sourceComponentId)}));try{var m=function(){var e=h.value,t=null==g?void 0:g.find(function(t){return t.id===e.sourceComponentId});if(!t)return 1;var r,a=(0,M.resolveOddCuttingId)(t,e.sourceOddId,e.sourceCuttingIndex),o=null!==(i=e.effectiveDelta)&&void 0!==i?i:c.state.action.delta,l=s((0,C.propagateForceFieldActionInComponent)(t,x.default,e.sourceOddId,a,o,c.state.action.propagationFactor,w.default,g));try{for(l.s();!(r=l.n()).done;){var d=r.value;if(d.toComponentId===n&&("inter"===d.layerType||"bridge"===d.layerType)){var u="".concat(e.sourceComponentId,"::").concat(d.fromOddId,"::").concat(d.toOddId),f=p.get(u);if(!(f&&Math.abs(f.potentialGain)>=Math.abs(d.deltaTo))){var v={fromComponentId:e.sourceComponentId,toComponentId:n,fromOddId:d.fromOddId,toOddId:d.toOddId,fromCuttingId:d.fromCuttingId,toCuttingId:d.toCuttingId,targetedCutting:d.targetedCutting,baseDelta:d.baseDelta,weight:d.weight,strategicWeight:d.weight,layerType:d.layerType,propagationFactor:d.propagationFactor,absorption:d.absorption,gap:d.gap,fromState:d.fromState,toState:d.toState,deltaTo:d.deltaTo,rationale:d.rationale,layersInvolved:[d.layerType],localLayerWeights:null,bridgeLayerWeights:null};p.set(u,{toOddId:d.toOddId,thickness:(0,ae.getForceFieldThickness)(Math.abs(d.weight)),potentialGain:d.deltaTo,detail:v})}}}}catch(e){l.e(e)}finally{l.f()}};for(v.s();!(h=v.n()).done;)m()}catch(e){v.e(e)}finally{v.f()}var y=e.filter(function(e){return e.sourceComponentId===n});if(0===p.size)return 0!==y.length&&(this.applyProjectedGhostFromStackItems(y),!0);var b=(0,D.findSoleActiveAction)(e);b&&(this.persistentActionContext={sourceComponentId:b.sourceComponentId,sourceOddId:b.sourceOddId,sourceCuttingIndex:b.sourceCuttingIndex,actionId:b.actionId,actionLabel:null!==(r=b.label)&&void 0!==r?r:void 0,links:l(u)});var k=this.selectedSourceFocus;if(this.restoreIncomingForceFieldContext({type:"incoming",sourceComponentId:t,linksByOddId:p}),y.length>0){var S,_=null!==(a=this.state.forceField.orbitData)&&void 0!==a?a:this.buildChildrenOrbitData(),A=this.getCurrentComponentOrUndefined(),E=this.getAllComponents(),O=[],L=[],F=s(y);try{for(F.s();!(S=F.n()).done;){var T,P=S.value,B=s(this.buildForceFieldSourceIndicesFromStackItems([P]));try{for(B.s();!(T=B.n()).done;){var R=T.value,q=this.forceFieldComputationService.build({orbitData:_,sourceChildIndex:R,childOddMap:this.childOddMap,component:null!=A?A:null,allComponents:E,actionDelta:this.state.action.delta,actionPropagationFactor:this.state.action.propagationFactor,interconnectionGraph:x.default,propagationLayers:w.default});q&&(O.push.apply(O,l(q.links)),L.push.apply(L,l(q.allLinkDetails)))}}catch(e){B.e(e)}finally{B.f()}}}catch(e){F.e(e)}finally{F.f()}if(O.length>0){this.state.setIncomingForceFieldLinks([].concat(l(this.state.forceField.links),O),[].concat(l(this.state.forceField.allLinkDetails),L));var z=this.buildProjectionActionsFromStackItems(y);if(z.length>0&&A){var N=(0,G.projectGhostStateForActionSequence)({component:A,allComponents:E,actions:z,actionDelta:this.state.action.delta,actionPropagationFactor:this.state.action.propagationFactor});if(N){var j=this.state.ghost,H=new Map;A.odds.forEach(function(e){var t,n,i,r=null!==(n=null===(t=j.projectedGhostCuttingStatesByOddId)||void 0===t?void 0:t.get(e.id))&&void 0!==n?n:[],a=null!==(i=N.projectedGhostCuttingStatesByOddId.get(e.id))&&void 0!==i?i:[],o=r.map(function(e){var t=a.find(function(t){return t.cuttingId===e.cuttingId}),n=t?t.projectedState-t.originalState:0;return{cuttingId:e.cuttingId,state:(0,C.clampState)(e.projectedState+n)}});H.set(e.id,o)});var K=new Map(A.odds.map(function(e){var t,n=null!==(t=H.get(e.id))&&void 0!==t?t:[],i=new Map(n.map(function(e){return[e.cuttingId,e.state]}));return[e.id,i]})),V=new Map,Y=new Map,W=new Map;A.odds.forEach(function(e){var t,n=Array.isArray(e.cuttingIds)&&e.cuttingIds.length===e.cuttingScores.length?e.cuttingIds:e.cuttingScores.map(function(e,t){return t+1}),i=null!==(t=K.get(e.id))&&void 0!==t?t:new Map,r=e.cuttingScores.map(function(e,t){var r,a=n[t],o=(0,I.stateFromTension)(e),s=null!==(r=i.get(a))&&void 0!==r?r:o;return{cuttingId:a,originalTension:e,projectedTension:(0,C.tensionFromState)(s),originalState:o,projectedState:s}});V.set(e.id,r);var a=(0,I.weightedAverage)(r.map(function(e){return e.projectedState}),e.cuttingWeights);Y.set(e.id,a),W.set(e.id,(0,C.tensionFromState)(a))});var U=function(e){return e.cuttingWeights.reduce(function(e,t){return e+Math.max(0,t)},0)},X=A.odds.reduce(function(e,t){return e+U(t)},0),Z=A.odds.reduce(function(e,t){var n=W.get(t.id);return void 0===n?e:e+n*U(t)},0);X>0&&this.state.applyGhostProjection({projectedGhostTensionByOddId:W,projectedGhostStateByOddId:Y,projectedGhostComponentTension:Z/X,projectedGhostCuttingStatesByOddId:V})}}this.renderOppositeChildrenForceField()}}return this.selectedSourceFocus=k,this.renderChildScoresDeltas(null!==(o=this.state.forceField.orbitData)&&void 0!==o?o:this.buildChildrenOrbitData()),!0}},{key:"reactivatePersistentAction",value:function(){var e,t=this;if(this.actionStackManager.getActiveItems().length>=1)return this.focusBeforeComponentSwitch&&(this.selectedSourceFocus=Object.assign({},this.focusBeforeComponentSwitch),this.focusBeforeComponentSwitch=null),this.applyProjectedGhostFromStackItems(this.actionStackManager.getActiveItems()),void(this.selectedSourceFocus&&(this.state.setForceFieldSelectedLinkIndex(null),this.renderCumulativeDetailsForCutting(this.selectedSourceFocus.oddId,this.selectedSourceFocus.cuttingId),this.renderChildScoresDeltas(null!==(e=this.state.forceField.orbitData)&&void 0!==e?e:this.buildChildrenOrbitData())));if(this.persistentActionContext){var n,i=this.persistentActionContext,a=i.sourceOddId,o=i.sourceCuttingIndex,l=i.actionId,c=i.actionLabel,d=s(this.childOddMap.entries());try{var u,p=function(){var e=r(n.value,2),i=e[0],s=e[1];if(s.oddId===a&&s.cuttingIndex===o){var d=t.childControllers.find(function(e){return e.getKey()===i});if(d)return c&&(t.state.menu.activeActionLabel=c),t.activateActionFromChild(d,l),{v:void 0}}};for(d.s();!(n=d.n()).done;)if(u=p())return u.v}catch(e){d.e(e)}finally{d.f()}}}},{key:"setChildrenHiddenState",value:function(e){this.childInteractionController.setChildrenHiddenState(this.childControllers,e)}},{key:"attachChildToggleHandler",value:function(e){this.childInteractionController.attachChildToggleHandler(e,this.childOddMap)}},{key:"openActionMenuFromChild",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.childControllers.findIndex(function(t){return t.getKey()===e.getKey()});if(!(i<0)){var r=e.getKey();if(!n&&this.state.menu.activeChildKey===r)return this.childActionMenuController.animateClose(),this.clearProjectedActionState({deselect:!1}),this.reassertStackForceFieldAfterDeselect(),this.clearActiveChild(),this.state.clearMenuActiveSelection(),void(null===(t=this._onDiagramSatelliteDeselect)||void 0===t||t.call(this,this.view.viewInitializer.getCurrentComponentIndex()));if(this.closeKeyEventField(),this.state.menu.hasActiveChildAction){this.state.setMenuActiveChild(r),this.updateChildActionMenu(this.buildChildrenOrbitData());var a=this.childOddMap.get(r);if(a){var o=this.getCurrentComponent(),s=o?(0,M.resolveOddCuttingId)(o,a.oddId,a.cuttingIndex):void 0;this.onCuttingLabelClick(a.oddId,s)}}else{this.state.setForceFieldSourceChildIndices([i]),this.state.setMenuActiveChild(r),this.state.setMenuActiveAction(null),this.clearProjectedActionState({deselect:!1}),this.renderOppositeChildrenForceField();var l=this.childOddMap.get(e.getKey());if(l){var c=this.getCurrentComponent(),d=c?(0,M.resolveOddCuttingId)(c,l.oddId,l.cuttingIndex):void 0;this.onCuttingLabelClick(l.oddId,d)}}}}},{key:"focusChildByOddCutting",value:function(e,t){var n=this,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=this.childControllers.find(function(i){var r=n.childOddMap.get(i.getKey());return(null==r?void 0:r.oddId)===e&&(null==r?void 0:r.cuttingIndex)===t});r&&(this.openActionMenuFromChild(r,i),this.applyOddStateForCutting(e))}},{key:"focusChildByOddCuttingAndAction",value:function(e,t,n){var i=this,r=this.childControllers.find(function(n){var r=i.childOddMap.get(n.getKey());return(null==r?void 0:r.oddId)===e&&(null==r?void 0:r.cuttingIndex)===t});r&&(this._routeNextDirectActionBlockToPanelB||!this.state.menu.hasActiveChildAction||this.state.menu.activeActionId!==n||this.state.menu.activeChildKey!==r.getKey()?(this.openActionMenuFromChild(r,!0),this.applyOddStateForCutting(e),this.activateActionFromChild(r,n)):this._deactivateActionKeepMenu(e,t))}},{key:"applyOddStateForCutting",value:function(e){this.oddViewManager.applyOddStateForCutting(e)}},{key:"_deactivateActionKeepMenu",value:function(e,t){var n;if(this.clearProjectedActionState(),this.updateChildActionMenu(this.buildChildrenOrbitData()),e){var i=this.view.viewInitializer.getCurrentComponentIndex();null===(n=this.onDiagramNavChangeCb)||void 0===n||n.call(this,{type:"cutting",componentIndex:i,oddId:e,cuttingIndex:t})}}},{key:"applyOddHighlight",value:function(e){this.oddViewManager.applyOddHighlight(e)}},{key:"applyEnterOddView",value:function(e){this.oddViewManager.applyEnterOddView(e)}},{key:"searchHandleComposanteClick",value:function(e){this.searchPanelSynchronizer.searchHandleComposanteClick(e)}},{key:"searchNavigateToComponent",value:function(e){this.searchPanelSynchronizer.searchNavigateToComponent(e)}},{key:"searchNavigateToOdd",value:function(e,t){this.searchPanelSynchronizer.searchNavigateToOdd(e,t)}},{key:"searchActivateOdd",value:function(e,t,n){e===this.view.viewInitializer.getCurrentComponentIndex()&&this.view.yinYangDrawer.setActiveOddId(n?t:null)}},{key:"searchHandleOddArcClick",value:function(e,t){this.searchPanelSynchronizer.searchHandleOddArcClick(e,t)}},{key:"searchHighlightOdd",value:function(e,t){this.searchPanelSynchronizer.searchHighlightOdd(e,t)}},{key:"searchPreviewHover",value:function(e){this.searchPanelSynchronizer.searchPreviewHover(e)}},{key:"searchHandleCuttingClick",value:function(e,t,n){this.searchPanelSynchronizer.searchHandleCuttingClick(e,t,n)}},{key:"searchNavigateToCutting",value:function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];this.searchPanelSynchronizer.searchNavigateToCutting(e,t,n,i)}},{key:"searchNavigateToAction",value:function(e,t,n,i){this.searchPanelSynchronizer.searchNavigateToAction(e,t,n,i)}},{key:"restoreActionDiagramState",value:function(e,t,n,i){this.searchPanelSynchronizer.restoreActionDiagramState(e,t,n,i)}},{key:"activateForceFieldMultiSource",value:function(e){var t=this,n=e.map(function(e){var n=e.oddId,i=e.cuttingIndex;return t.childControllers.findIndex(function(e){var r=t.childOddMap.get(e.getKey());return(null==r?void 0:r.oddId)===n&&(null==r?void 0:r.cuttingIndex)===i})}).filter(function(e){return e>=0});0!==n.length&&(this.clearForceFieldComputationState(),this.state.setHasActiveChildAction(!0),this.state.setForceFieldSourceChildIndices(n),this.renderOppositeChildrenForceField())}},{key:"startSearchActionDrag",value:function(e,t,n,i,r,a,o,s){this.searchPanelSynchronizer.startSearchActionDrag(e,t,n,i,r,a,o,s)}},{key:"startSearchKeyEventDrag",value:function(e,t,n,i,r,a){this.searchPanelSynchronizer.startSearchKeyEventDrag(e,t,n,i,r,a)}},{key:"navigateToSource",value:function(e,t,n){var i,r,a=null===(i=this.getCurrentComponentOrUndefined())||void 0===i?void 0:i.id;if(n&&n!==a){var o=this.getAllComponents(),s=null!==(r=null==o?void 0:o.findIndex(function(e){return e.id===n}))&&void 0!==r?r:-1;s>=0&&(this._pendingCuttingFocusAfterSwitch={oddId:e,cuttingId:t},this.pendingComponentSwitchContext={type:"reactivate"},this.animateChildrenHide(),this.view.borderDrawer.activateSegment(s),this.view.viewInitializer.animateToComponent(s,b.animationConfig.componentSwitchDurationMs))}else this.state.setForceFieldSelectedLinkIndex(null),this.onCuttingLabelClick(e,t)}},{key:"navigateToPrereqAction",value:function(e){var t,n,i,r,a,o,l,c,d,u,p=this;if(this._onShowDirectActionBlockPanelB){this.state.setForceFieldSelectedLinkIndex(null);var h,f=this.getCurrentComponentOrUndefined(),g=this.getAllComponents(),v=s(S.yasuniCause);try{var m,y=function(){var v,m=h.value,y=s(m.odds);try{var b,C=function(){for(var s,h=v.value,y=function(s){if(!h.cuttings[s].actionIds.some(function(t){return t===e}))return 0;var v=null!==(t=g.find(function(e){return e.id===m.id}))&&void 0!==t?t:f;if(!v)return{v:{v:{v:void 0}}};var y=(0,M.resolveOddCuttingId)(v,h.id,s),b=null!==(i=null===(n=se.get(e))||void 0===n?void 0:n.baseDelta)&&void 0!==i?i:0,C=null;if(v.id!==(null==f?void 0:f.id))C=p.forceFieldComputationService.buildFromSource({sourceOddId:h.id,sourceCuttingId:y,component:v,allComponents:p.getAllComponents(),actionDelta:b,actionPropagationFactor:p.state.action.propagationFactor,interconnectionGraph:x.default,propagationLayers:w.default});else{var k=p.childControllers.map(function(e,t){return{ctrl:e,idx:t}}).find(function(e){var t=e.ctrl,n=p.childOddMap.get(t.getKey());return(null==n?void 0:n.oddId)===h.id&&(null==n?void 0:n.cuttingIndex)===s});if(k){var S=null!==(r=p.state.forceField.orbitData)&&void 0!==r?r:p.buildChildrenOrbitData();C=p.forceFieldComputationService.build({orbitData:S,sourceChildIndex:k.idx,childOddMap:p.childOddMap,component:v,allComponents:p.getAllComponents(),actionDelta:b,actionPropagationFactor:p.state.action.propagationFactor,interconnectionGraph:x.default,propagationLayers:w.default})}}var _=null===(a=se.get(e))||void 0===a?void 0:a.weightDelta,A=null!==(l=null===(o=v.odds.find(function(e){return e.id===h.id}))||void 0===o?void 0:o.cuttingWeights[s])&&void 0!==l?l:1,E=p.forceFieldDetailsPanel.buildDirectActionCardsHtml({oddId:h.id,cuttingId:y,actionDelta:b,actionBaseDelta:b,actionId:e,actionName:null===(c=se.get(e))||void 0===c?void 0:c.name,weightDelta:void 0!==_?(0,I.effectiveWeightDelta)(A,_):void 0,forceFieldLinks:null!==(d=null==C?void 0:C.links)&&void 0!==d?d:[],allForceFieldLinkDetails:null!==(u=null==C?void 0:C.allLinkDetails)&&void 0!==u?u:[],currentComponent:v,allComponents:g,comboResults:p._computeComboResultsForAction(e),onCardElementFlash:function(e){return p.flashChildCuttings(e,null==v?void 0:v.id)},onNavigateToCutting:function(e,t,n){return p.navigateToCutting(e,t,n)},onNavigateToAction:function(e){return p.navigateToPrereqAction(e)}}),O=E.html,D=E.attachHandlers;return p._onShowDirectActionBlockPanelB(v.id,h.id,s,e,O,D),{v:{v:{v:void 0}}}},b=0;b<h.cuttings.length;b++)if(0!==(s=y(b))&&s)return s.v};for(y.s();!(v=y.n()).done;)if(b=C())return b.v}catch(e){y.e(e)}finally{y.f()}};for(v.s();!(h=v.n()).done;)if(m=y())return m.v}catch(e){v.e(e)}finally{v.f()}}}},{key:"navigateToCutting",value:function(e,t,n){var i,r=this.getAllComponents(),a=this.getCurrentComponentOrUndefined(),o=null!=n?n:null==a?void 0:a.id,s=null!==(i=null==r?void 0:r.findIndex(function(e){return e.id===o}))&&void 0!==i?i:-1,l=this.view.viewInitializer.getCurrentComponentIndex();s>=0&&s!==l?(this._pendingCuttingFocusAfterSwitch={oddId:e,cuttingId:t},this.animateChildrenHide(),this.view.borderDrawer.activateSegment(s),this.view.viewInitializer.animateToComponent(s,b.animationConfig.componentSwitchDurationMs)):this.onCuttingLabelClick(e,t)}},{key:"buildProjectionActionsFromStackItems",value:function(e){return e.map(function(e){return e.sourceOddId?{sourceOddId:e.sourceOddId,sourceCuttingIndex:e.sourceCuttingIndex}:null}).filter(function(e){return null!==e})}},{key:"buildForceFieldSourceIndicesFromStackItems",value:function(e){var t=this,n=e.map(function(e){return t.childControllers.findIndex(function(n){var i=t.childOddMap.get(n.getKey());return(null==i?void 0:i.oddId)===e.sourceOddId&&(null==i?void 0:i.cuttingIndex)===e.sourceCuttingIndex})}).filter(function(e){return e>=0});return Array.from(new Set(n))}},{key:"applyProjectedGhostFromStackItems",value:function(e){this.actionStackManager.applyProjectedGhostFromStackItems(e)}},{key:"onStackItemVisibilityToggle",value:function(e){this.actionStackManager.onStackItemVisibilityToggle(e),this.eventFieldLifecycleController.updateEventField()}},{key:"activateActionFromChild",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default",n=arguments.length>2?arguments[2]:void 0,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];this.actionStackManager.activateActionFromChild(e,t,n,i)}},{key:"syncGhostTensionFromAction",value:function(){if(this.view.viewInitializer.isGhostDisplayAllowed()&&this.state.ghost.projectedGhostTensionByOddId)if(this.view.viewInitializer.isInOddMode()){var e=this.view.viewInitializer.getDisplayingOddId();if(e){var t=this.state.ghost.projectedGhostTensionByOddId.get(e);void 0!==t&&this.view.viewInitializer.updateGhostTension(t)}}else{if(null===this.state.ghost.projectedGhostComponentTension)return;this.view.viewInitializer.updateGhostTension(this.state.ghost.projectedGhostComponentTension)}}},{key:"attachChildHoverHandler",value:function(e){this.childInteractionController.attachChildHoverHandler(e,this.childOddMap)}},{key:"enterOddView",value:function(e){this.childInteractionController.enterOddView(e)}},{key:"cancelOddHighlight",value:function(){this.oddViewManager.cancelOddHighlight()}},{key:"isChildrenEnabled",value:function(){return this.state.children.enabled}},{key:"isActionActive",value:function(){return this.state.menu.hasActiveChildAction}},{key:"attachBackgroundClickHandler",value:function(){this.childInteractionController.attachBackgroundClickHandler(),this.view.viewInitializer.graphicContainer.node()}},{key:"exitOddView",value:function(){this.childInteractionController.exitOddView()}},{key:"showOddInfo",value:function(e){this.oddViewManager.showOddInfo(e)}},{key:"showComposanteInfo",value:function(){this.oddViewManager.showComposanteInfo()}},{key:"setActiveChild",value:function(e){this.childInteractionController.setActiveChild(this.childControllers,e)}},{key:"clearActiveChild",value:function(){this.childInteractionController.clearActiveChild(this.childControllers)}},{key:"animateChildren",value:function(e){var t=this;return this.childInteractionController.animateChildren(this.childControllers,e,function(){t.renderOppositeChildrenForceField()},function(){t.clearForceFieldVisualOnly()})}},{key:"clearChildren",value:function(){var e=this;this.state.setHasActiveChildAction(!1),this.clearChildActionMenu(),this.clearForceFieldVisualOnly(),this.contextLabelsRenderer.clear(),this.childControllers.forEach(function(t){var n=t.view.viewInitializer.yinYangGroup.node();(null==n?void 0:n.parentNode)&&n.parentNode.removeChild(n),e.factory.getInstances().delete(t.model.key)}),this.childControllers=[],this.childrenOrbitManager.invalidateCache(),this.model.resetChildCounter()}},{key:"setChildrenOrbitEnabled",value:function(e){this.childrenOrbitManager.setEnabled(e)}},{key:"setChildrenOrbitDuration",value:function(e){}},{key:"setChildrenOrbitSpeed",value:function(e){this.childrenOrbitManager.setSpeed(e)}},{key:"setChildrenOrbitRadiusScale",value:function(e){this.childrenOrbitManager.setRadiusScale(e)}},{key:"setRandomForceFieldCount",value:function(e){this.settingsApplier.setRandomForceFieldCount(e)}},{key:"setActionDeltaLabelsVisible",value:function(e){this.settingsApplier.setActionDeltaLabelsVisible(e)}},{key:"setChildrenContextLabelsVisible",value:function(e){this.settingsApplier.setChildrenContextLabelsVisible(e)}},{key:"setComboUncappedChainedPerformance",value:function(e){this.state.setComboUncappedChainedPerformance(e),this.recomputeActiveComboDisplays()}},{key:"setComboDangerousCanBecomeBonus",value:function(e){this.state.setComboDangerousCanBecomeBonus(e),this.recomputeActiveComboDisplays()}},{key:"recomputeActiveComboDisplays",value:function(){var e=this.actionStackManager.getActiveItems();e.length>0?this.actionStackManager.onStackItemVisibilityToggle(e):this.state.menu.hasActiveChildAction&&this.renderSourceActionDetailsForCurrentSource()}},{key:"setLabelsFontScale",value:function(e){this.settingsApplier.setLabelsFontScale(e)}},{key:"setLabelsTextShadowEnabled",value:function(e){this.settingsApplier.setLabelsTextShadowEnabled(e)}},{key:"setChildLabelPlacement",value:function(e){this.settingsApplier.setChildLabelPlacement(e)}},{key:"setActionStackLabelFontScale",value:function(e){this.actionStackController.setLabelFontScale(e)}},{key:"setActionStackHistoryButtonScale",value:function(e){this.actionStackController.setHistoryButtonScale(e)}},{key:"setComponentLabelFontScale",value:function(e){this.settingsApplier.setComponentLabelFontScale(e)}},{key:"setChildStateDeltaFontScale",value:function(e){this.settingsApplier.setChildStateDeltaFontScale(e)}},{key:"setChildStateDeltaOffset",value:function(e){this.settingsApplier.setChildStateDeltaOffset(e)}},{key:"setChildStateDeltaBoxScale",value:function(e){this.settingsApplier.setChildStateDeltaBoxScale(e)}},{key:"setOddLabelFontScale",value:function(e){this.settingsApplier.setOddLabelFontScale(e)}},{key:"setFacetteLabelFontScale",value:function(e){this.settingsApplier.setFacetteLabelFontScale(e)}},{key:"setFacetteLabelSuffixVisible",value:function(e){this.settingsApplier.setFacetteLabelSuffixVisible(e)}},{key:"setComponentLegendLabelFontScale",value:function(e){this.settingsApplier.setComponentLegendLabelFontScale(e)}},{key:"setLegendLabelsBgEnabled",value:function(e){this.settingsApplier.setLegendLabelsBgEnabled(e)}},{key:"setDisplayEllipsisForShortLabels",value:function(e){this.settingsApplier.setDisplayEllipsisForShortLabels(e)}},{key:"setOpenSearchWithQuery",value:function(e){this.openSearchWithQuery=e}},{key:"setOnDiagramActionDragIntent",value:function(e){this._onDiagramActionDragIntentCb=e}},{key:"setOnActiveChildChange",value:function(e){this._onActiveChildChange=e}},{key:"setOnOuterSparkAutoToggle",value:function(e){this._onOuterSparkAutoToggle=e}},{key:"disableOuterSpark",value:function(){var e;this.view.viewInitializer.outerSparkEnabled=!1,this.view.yinYangDrawer.refreshOuterSpark(),null===(e=this._onOuterSparkAutoToggle)||void 0===e||e.call(this,!1)}},{key:"initIdleDefault",value:function(){this.disableOuterSpark()}},{key:"cancelOuterSparkForActivation",value:function(){this.disableOuterSpark()}},{key:"triggerOuterSparkDev",value:function(){var e;this.view.viewInitializer.outerSparkEnabled?this.disableOuterSpark():(this.view.viewInitializer.outerSparkEnabled=!0,this.view.yinYangDrawer.refreshOuterSpark(),null===(e=this._onOuterSparkAutoToggle)||void 0===e||e.call(this,!0))}},{key:"triggerBalanceSparkDev",value:function(e){this.view.yinYangDrawer.triggerBalanceSpark(this.view.viewInitializer.getCurrentComponentOrientation(),e)}},{key:"getActiveChildMeta",value:function(){var e=this.state.children.activeChildKey;if(e){var t=this.childOddMap.get(e),n=this.getCurrentComponent();if(t&&n)return{oddId:t.oddId,cuttingIndex:t.cuttingIndex,componentId:n.id}}return this.getSelectedCuttingMeta()}},{key:"getSelectedCuttingMeta",value:function(){var e,t,n,i,r,a=this.state.forceField.selectedLinkIndex,o=null!==a?null===(e=this.state.forceField.links[a])||void 0===e?void 0:e.detail:void 0,s=null!==(t=null==o?void 0:o.toOddId)&&void 0!==t?t:null===(n=this.selectedSourceFocus)||void 0===n?void 0:n.oddId,l=null!==(i=null==o?void 0:o.toCuttingId)&&void 0!==i?i:null===(r=this.selectedSourceFocus)||void 0===r?void 0:r.cuttingId;if(void 0===s||void 0===l)return null;var c=this.getCurrentComponent(),d=null==c?void 0:c.odds.find(function(e){return e.id===s});if(!c||!d)return null;var u=(Array.isArray(d.cuttingIds)&&d.cuttingIds.length===d.cuttingScores.length?d.cuttingIds:d.cuttingScores.map(function(e,t){return t+1})).indexOf(l);return-1===u?null:{oddId:s,cuttingIndex:u,componentId:c.id}}},{key:"deactivateChildMenuFromHierarchy",value:function(){this.closeChildActionMenu()}},{key:"closeChildActionMenu",value:function(){(this.state.menu.activeChildKey||this.state.menu.hasActiveChildAction)&&(this.childActionMenuController.animateClose(),this.clearProjectedActionState({deselect:!1}),this.reassertStackForceFieldAfterDeselect(),this.clearActiveChild(),this.state.clearMenuActiveSelection())}},{key:"deactivateComposanteFromHierarchy",value:function(){this.state.children.enabled&&this.closeCurrentComposante()}},{key:"closeCurrentComposante",value:function(){var e;this.childActionMenuController.animateClose(),(this.state.menu.activeChildKey||this.state.menu.hasActiveChildAction)&&this.clearProjectedActionState({deselect:!1}),this.closeKeyEventField(),this.view.borderDrawer.deactivateSegment(),this.setChildrenEnabled(!1),null===(e=this._onDiagramComposanteDeselect)||void 0===e||e.call(this)}},{key:"clearForceFieldForModeSwitch",value:function(){this.forceFieldLifecycleController.removeOppositeChildrenForceField(),this.state.setHasActiveChildAction(!1),this.state.setForceFieldSourceChildIndices([])}},{key:"syncForceFieldToStackMode",value:function(){this.forceFieldLifecycleController.removeOppositeChildrenForceField(),this.state.setHasActiveChildAction(!1),this.state.setForceFieldSourceChildIndices([]),null!==this.activeKeyEventId&&(this.setActiveKeyEventId(null),this.updateCoreEventMenu());var e=this.actionStackManager.getActiveItems();e.length>0&&this.actionStackManager.onStackItemVisibilityToggle(e)}},{key:"syncEventFieldToCurrentMode",value:function(){this.eventFieldLifecycleController.updateEventField()}},{key:"reassertStackForceFieldAfterDeselect",value:function(){if((0,oe.isStackModeActive)()){var e=this.actionStackManager.getActiveItems();e.length>0&&this.actionStackManager.onStackItemVisibilityToggle(e)}}},{key:"setOnLocateStackItemInSearch",value:function(e){this.actionStackController.setOnLocateInSearch(e)}},{key:"setOnSelectStackItemSatellite",value:function(e){this.actionStackController.setOnSelectSatellite(e)}},{key:"requestScrollToStackItemBlock",value:function(e){this.forceFieldDetailsPanel.requestScrollToStackItemBlock(e)}},{key:"setOnDirectActionBlock",value:function(e,t){this._onShowDirectActionBlock=e,this._onClearDirectActionBlock=t}},{key:"setOnShowKeyEventBlock",value:function(e,t){this._onShowKeyEventBlock=e,this._onClearKeyEventBlock=t}},{key:"setOnKeyEventMenuStateChange",value:function(e){this._onKeyEventMenuStateChange=e}},{key:"setOnDirectActionBlockPanelB",value:function(e){this._onShowDirectActionBlockPanelB=e}},{key:"showPropagationForContextCutting",value:function(e,t,n){var i,r=this,a=this.getCurrentComponentOrUndefined();if(!a||e!==a.id)return!1;var o=(0,M.resolveOddCuttingId)(a,t,n),s=this.state.forceField.links.findIndex(function(e){return e.detail.toOddId===t&&e.detail.toCuttingId===o});if(-1===s)return!1;var l=this.childControllers.find(function(e){var i=r.childOddMap.get(e.getKey());return(null==i?void 0:i.oddId)===t&&(null==i?void 0:i.cuttingIndex)===n});if(l){var c=l.getKey();this.state.setMenuActiveChild(c),this.setActiveChild(c),this.updateChildActionMenu(this.buildChildrenOrbitData()),this.applyOddStateForCutting(t)}return this.state.setForceFieldSelectedLinkIndex(s),this.renderForceFieldDetails(s),this.renderChildScoresDeltas(null!==(i=this.state.forceField.orbitData)&&void 0!==i?i:this.buildChildrenOrbitData()),this.notifyCuttingNavigated(t,o),!0}},{key:"buildDirectActionBlockForContext",value:function(e,t,n,i,r){var a,o,s,l,c,d,u,p,h,f,g=this,v=this.getCurrentComponentOrUndefined(),m=this.getAllComponents(),y=null!==(a=m.find(function(t){return t.id===e}))&&void 0!==a?a:v;if(y){var b=(0,M.resolveOddCuttingId)(y,t,n),C=null!==(s=null===(o=se.get(i))||void 0===o?void 0:o.baseDelta)&&void 0!==s?s:0,k=null;if(y.id===(null==v?void 0:v.id)){var S=this.childControllers.map(function(e,t){return{ctrl:e,idx:t}}).find(function(e){var i=e.ctrl,r=g.childOddMap.get(i.getKey());return(null==r?void 0:r.oddId)===t&&(null==r?void 0:r.cuttingIndex)===n});if(S){var _=null!==(l=this.state.forceField.orbitData)&&void 0!==l?l:this.buildChildrenOrbitData();k=this.forceFieldComputationService.build({orbitData:_,sourceChildIndex:S.idx,childOddMap:this.childOddMap,component:y,allComponents:this.getAllComponents(),actionDelta:C,actionPropagationFactor:this.state.action.propagationFactor,interconnectionGraph:x.default,propagationLayers:w.default})}}var A=null===(c=se.get(i))||void 0===c?void 0:c.weightDelta,E=null!==(u=null===(d=y.odds.find(function(e){return e.id===t}))||void 0===d?void 0:d.cuttingWeights[n])&&void 0!==u?u:1,O=this.forceFieldDetailsPanel.buildDirectActionCardsHtml({oddId:t,cuttingId:b,actionDelta:C,actionBaseDelta:C,actionId:i,actionName:null===(p=se.get(i))||void 0===p?void 0:p.name,weightDelta:void 0!==A?(0,I.effectiveWeightDelta)(E,A):void 0,forceFieldLinks:null!==(h=null==k?void 0:k.links)&&void 0!==h?h:[],allForceFieldLinkDetails:null!==(f=null==k?void 0:k.allLinkDetails)&&void 0!==f?f:[],currentComponent:y,allComponents:m,comboResults:this._computeComboResultsForAction(i),onCardElementFlash:function(e){return g.flashChildCuttings(e,null==y?void 0:y.id)},onNavigateToCutting:function(e,t,n){return g.navigateToCutting(e,t,n)},onNavigateToAction:function(e){return g.navigateToPrereqAction(e)}}),D=O.html,L=O.attachHandlers;r(e,t,n,i,D,L)}}},{key:"setOnPropagationBlock",value:function(e,t){this._onShowPropagationBlock=e,this._onClearPropagationBlock=t}},{key:"setOnHeaderUpdate",value:function(e){this.forceFieldDetailsPanel.setOnHeaderUpdate(e)}},{key:"setOnCuttingNavigated",value:function(e){this._onCuttingNavigated=e}},{key:"notifyCuttingNavigated",value:function(e,t){if(this._onCuttingNavigated&&void 0!==t){var n=this.getCurrentComponent();if(n){var i=n.odds.find(function(t){return t.id===e});if(i){var r=(Array.isArray(i.cuttingIds)&&i.cuttingIds.length===i.cuttingScores.length?i.cuttingIds:i.cuttingScores.map(function(e,t){return t+1})).indexOf(t);r<0||this._onCuttingNavigated(n.id,e,r)}}}}},{key:"setOnDiagramOddChange",value:function(e){this.onDiagramOddChangeCb=e}},{key:"setOnDiagramNavChange",value:function(e){this.onDiagramNavChangeCb=e}},{key:"setOnDiagramSatelliteDeselect",value:function(e){this._onDiagramSatelliteDeselect=e}},{key:"setOnDiagramComposanteDeselect",value:function(e){this._onDiagramComposanteDeselect=e}},{key:"setOnDiagramChildHover",value:function(e){this._onDiagramChildHoverCb=e}},{key:"setOnDiagramComposanteHover",value:function(e){var t=this;this._onDiagramComposanteHoverCb=e,this.view.borderDrawer.setOnBorderHover(function(e){var n;null===(n=t._onDiagramComposanteHoverCb)||void 0===n||n.call(t,e)})}},{key:"setOnDiagramActionHover",value:function(e){var t=this;this._onDiagramActionHoverCb=e,this.childActionMenuController.setOnActionHover(function(e,n){var i,r,a,o;if(e){var s=t.childOddMap.get(n),l=t.view.viewInitializer.getCurrentComponentIndex();null===(i=t._onDiagramActionHoverCb)||void 0===i||i.call(t,l,null!==(r=null==s?void 0:s.oddId)&&void 0!==r?r:null,null!==(a=null==s?void 0:s.cuttingIndex)&&void 0!==a?a:null,e)}else null===(o=t._onDiagramActionHoverCb)||void 0===o||o.call(t,null,null,null,null)})}},{key:"setOnDiagramOddArcHover",value:function(e){this._onDiagramOddArcHoverCb=e}},{key:"onDiagramComposanteClicked",value:function(e){var t,n=this,i=this.view.viewInitializer.getCurrentComponentIndex();console.debug("[border-switch] onDiagramComposanteClicked",{componentIndex:e,currentIndex:i,isSameComponent:i===e}),this.updateComponentTitleLabelImmediate(e),this.view.borderDrawer.activateSegment(e),null===(t=this.onDiagramNavChangeCb)||void 0===t||t.call(this,{type:"composante",componentIndex:e});var r=S.yasuniCause[e];r&&this.forceFieldDetailsPanel.renderComposanteInfo(r,this.buildKeyEventBlocksForComponent(r),function(e){return n.navigateToPrereqAction(e)})}},{key:"toggleComposanteChildrenFromDiagram",value:function(e){var t,n=this;if(this.state.children.enabled)this.closeCurrentComposante();else{this.view.borderDrawer.activateSegment(e),this.view.borderDrawer.revealFacetteImage(e),this.setChildrenEnabled(!0),null===(t=this.onDiagramNavChangeCb)||void 0===t||t.call(this,{type:"composante",componentIndex:e});var i=S.yasuniCause[e];i&&this.forceFieldDetailsPanel.renderComposanteInfo(i,this.buildKeyEventBlocksForComponent(i),function(e){return n.navigateToPrereqAction(e)})}}},{key:"deselectActiveChildForOddInteraction",value:function(){var e,t=this;if(this.state.menu.activeChildKey||this.state.menu.hasActiveChildAction){this.childActionMenuController.animateClose(),this.clearProjectedActionState({deselect:!1}),this.clearActiveChild(),this.state.clearMenuActiveSelection();var n=this.view.viewInitializer.getCurrentComponentIndex();null===(e=this._onDiagramSatelliteDeselect)||void 0===e||e.call(this,n);var i=S.yasuniCause[n];i&&this.forceFieldDetailsPanel.renderComposanteInfo(i,this.buildKeyEventBlocksForComponent(i),function(e){return t.navigateToPrereqAction(e)})}}},{key:"onDiagramOddArcClicked",value:function(e){var t,n=this.view.viewInitializer.getCurrentComponentIndex();console.debug("[ODD-HL:click]",{oddId:e,componentIndex:n}),this.deselectActiveChildForOddInteraction();var i=this.forceFieldDetailsPanel.toggleOddLegendChipById(e);console.debug("[ODD-HL:click] toggleOddLegendChipById result",{oddId:e,isOpen:i}),null!==i&&(this.view.yinYangDrawer.setActiveOddId(i?e:null),this.highlightOddInChildren(i?e:null)),null===(t=this.onDiagramOddChangeCb)||void 0===t||t.call(this,n,e,"highlight")}},{key:"setOddContextLabelsVisible",value:function(e){this.settingsApplier.setOddContextLabelsVisible(e)}},{key:"setAllLabelsVisible",value:function(e){this.settingsApplier.setAllLabelsVisible(e)}},{key:"setOddLabelsCompact",value:function(e){this.settingsApplier.setOddLabelsCompact(e)}},{key:"setChildActionMenuItemDistance",value:function(e){this.settingsApplier.setChildActionMenuItemDistance(e)}},{key:"setChildActionMenuItemScale",value:function(e){this.settingsApplier.setChildActionMenuItemScale(e)}},{key:"setChildActionIconFontScale",value:function(e){this.settingsApplier.setChildActionIconFontScale(e)}},{key:"setCoreEventMenuDistanceOffset",value:function(e){this.settingsApplier.setCoreEventMenuDistanceOffset(e)}},{key:"setCoreEventMenuItemScale",value:function(e){this.settingsApplier.setCoreEventMenuItemScale(e)}},{key:"setCoreEventIconFontScale",value:function(e){this.settingsApplier.setCoreEventIconFontScale(e)}},{key:"setChildLabelMaxLines",value:function(e){this.settingsApplier.setChildLabelMaxLines(e)}},{key:"setLabelShortMaxChars",value:function(e){this.settingsApplier.setLabelShortMaxChars(e)}},{key:"setOddLabelMaxLines",value:function(e){this.settingsApplier.setOddLabelMaxLines(e)}},{key:"startChildrenOrbit",value:function(e){this.childrenOrbitManager.start(e)}},{key:"stopChildrenOrbit",value:function(){this.childrenOrbitManager.stop()}},{key:"buildChildrenOrbitData",value:function(){return this.childrenOrbitManager.buildOrbitData()}},{key:"applyChildrenOrbitTransforms",value:function(e,t){this.childrenOrbitManager.applyTransforms(e,t)}},{key:"clearForceFieldVisualState",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.removeOppositeChildrenForceField(),this.selectedSourceFocus=null,e&&this.clearForceFieldDetails()}},{key:"clearForceFieldVisualOnly",value:function(){this.clearForceFieldVisualState(!1)}},{key:"renderOppositeChildrenForceField",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.buildChildrenOrbitData();arguments.length>1&&void 0!==arguments[1]||this.state.children.orbitAngle,this.forceFieldLifecycleController.renderOppositeChildrenForceField(e)}},{key:"clearGhostDetails",value:function(){this.forceFieldDetailsPanel.clearGhostDetails()}},{key:"renderGhostDetailsForActiveAction",value:function(){var e;this.forceFieldDetailsPanel.renderGhostDetailsForActiveAction({isInOddMode:this.view.viewInitializer.isInOddMode(),displayingOddId:null!==(e=this.view.viewInitializer.getDisplayingOddId())&&void 0!==e?e:void 0,currentComponent:this.getCurrentComponentOrUndefined(),projectedGhostTensionByOddId:this.state.ghost.projectedGhostTensionByOddId,projectedGhostComponentTension:this.state.ghost.projectedGhostComponentTension,projectedGhostCuttingStatesByOddId:this.state.ghost.projectedGhostCuttingStatesByOddId})}},{key:"clearForceFieldDetails",value:function(){var e;this.forceFieldDetailsPanel.clearForceFieldDetails(),this.forceFieldDetailsPanel.invalidatePropagationIndex(),null===(e=this._onClearPropagationBlock)||void 0===e||e.call(this)}},{key:"renderActionPropagationTable",value:function(){this.selectedSourceFocus=null,this.forceFieldDetailsPanel.renderActionPropagationTable({forceFieldLinks:this.state.forceField.links,allForceFieldLinkDetails:this.state.forceField.allLinkDetails})}},{key:"_computeComboResultsForAction",value:function(e){return this.actionStackManager.computeComboResultsForAction(e)}},{key:"renderSourceActionDetailsForCurrentSource",value:function(e){var t,n,i,r,a,o,s,l,c,d,u,p,h,f,g,v=this,m=this.getCurrentComponent(),y=this.resolveActionSource(null!=m?m:void 0);if(m&&y){this.selectedSourceFocus=y;var b=this.getActiveActionMeta(),C=this.state.menu.activeActionId,w=C?se.get(C):void 0,x=null!==(t=b.name)&&void 0!==t?t:null==w?void 0:w.name,k=(null!==(n=b.description)&&void 0!==n||null==w||w.description,null!==(i=null==e?void 0:e.comboResults)&&void 0!==i?i:C?this._computeComboResultsForAction(C):void 0),_=C?this.actionStackManager.getActiveItems().find(function(e){return"action"===e.kind&&e.actionId===C}):void 0,O=null!==(l=null!==(o=null===(a=null===(r=null==_?void 0:_.comboResults)||void 0===r?void 0:r.find(function(e){return e.triggered}))||void 0===a?void 0:a.baseDelta)&&void 0!==o?o:C?null===(s=se.get(C))||void 0===s?void 0:s.baseDelta:void 0)&&void 0!==l?l:this.state.action.delta,M=k?(0,A.composeEffectiveDelta)(O,k):O,L=_?(0,D.evaluateAmplifiers)(_,this.actionStackController.getItemsInStackOrder(),new Set(this.actionStackManager.getActiveItems().map(function(e){return e.id})),E.yasuniKeyEventMap):[],F=(0,D.composeAmplifiedDelta)(M,L),T=this.state.action.delta;if(this._mergeAllComponentLinkDetails(),this._onShowDirectActionBlock){if(void 0!==this.pendingComponentSwitchContext||this._suppressDirectActionBlockRender||this.actionStackController.isDragging)return;this._routeNextDirectActionBlockToPanelB&&this._onShowDirectActionBlockPanelB;var P=this.state.forceField.sourceChildIndex,B=this.childControllers[P],G=B?null===(c=this.childOddMap.get(B.getKey()))||void 0===c?void 0:c.cuttingIndex:void 0;if(void 0!==G){var R=this._mergeAllComponentLinkDetails(),q=C?null===(d=se.get(C))||void 0===d?void 0:d.weightDelta:void 0,z=null!==(p=null===(u=m.odds.find(function(e){return e.id===y.oddId}))||void 0===u?void 0:u.cuttingWeights[G])&&void 0!==p?p:1,N=void 0!==q?(0,D.composeAmplifiedWeightDelta)(q,L):void 0,j=this.forceFieldDetailsPanel.buildDirectActionCardsHtml({oddId:y.oddId,cuttingId:y.cuttingId,actionDelta:null!==(h=null==e?void 0:e.deltaOverride)&&void 0!==h?h:F,actionBaseDelta:O,projectionDelta:null!==(f=null==e?void 0:e.deltaOverride)&&void 0!==f?f:T,actionId:null!=C?C:void 0,actionName:x,weightDelta:void 0!==N?(0,I.effectiveWeightDelta)(z,N):void 0,weightDeltaBase:void 0!==q?(0,I.effectiveWeightDelta)(z,q):void 0,amplifierResults:L,forceFieldLinks:this.state.forceField.links,allForceFieldLinkDetails:R,currentComponent:m,allComponents:this.getAllComponents(),comboResults:k,stackItemId:null==_?void 0:_.id,onCardElementFlash:function(e){return v.flashChildCuttings(e,null==m?void 0:m.id)},onNavigateToCutting:function(e,t,n){return v.navigateToCutting(e,t,n)},onNavigateToAction:function(e){return v.navigateToPrereqAction(e)}}),H=j.html,K=j.attachHandlers,V=this._routeNextDirectActionBlockToPanelB&&null!=this._onShowDirectActionBlockPanelB;this._routeNextDirectActionBlockToPanelB=!1;var Y=V?this._onShowDirectActionBlockPanelB:this._onShowDirectActionBlock,W=S.yasuniCause.findIndex(function(e){return e.id===m.id});return W>=0&&this.view.borderDrawer.flashSourceBeacon(W),null==Y||Y(m.id,y.oddId,G,null!==(g=this.state.menu.activeActionId)&&void 0!==g?g:"",H,K),void this.forceFieldDetailsPanel.clearForceFieldDetails()}}}else{if(this.state.forceField.incomingMode&&this.actionStackManager.getActiveItems().length>=1){var U=this.state.forceField.links[0];if(U&&this.renderCumulativeDetailsForCutting(U.detail.toOddId,U.detail.toCuttingId))return}this.renderActionPropagationTable()}}},{key:"_mergeAllComponentLinkDetails",value:function(){var e=this.state.forceField.allLinkDetails,t=this._computeCrossComponentCascadeRows();return t.length>0?[].concat(l(e),l(t)):e}},{key:"_computeCrossComponentCascadeRows",value:function(){var e,t,n,i,r,a,o,l=this.getCurrentComponentOrUndefined(),c=this.getAllComponents();if(!l||!c)return[];var d,u=null!==(e=w.default.localK)&&void 0!==e?e:.65,p=[],h=function(e,t,n,i,r,a,o,l){var c,d,u=Array.isArray(e.cuttingIds)&&e.cuttingIds.length===e.cuttingScores.length?e.cuttingIds:e.cuttingScores.map(function(e,t){return t+1}),h=Math.max(1,u.length),f=o/h,g=s(u);try{for(g.s();!(d=g.n()).done;){var v=d.value;p.push({fromComponentId:t,toComponentId:n,fromOddId:i,toOddId:i,fromCuttingId:void 0,toCuttingId:v,baseDelta:o,weight:1/h,strategicWeight:1/h,layerType:"intra",propagationFactor:1,absorption:1,gap:1,fromState:r,toState:null!==(c=a[v])&&void 0!==c?c:r,deltaTo:f,rationale:l,layersInvolved:["inter","intra"],localLayerWeights:null,bridgeLayerWeights:null})}}catch(e){g.e(e)}finally{g.f()}},f=s(this.state.forceField.allLinkDetails);try{var g=function(){var e=d.value;if(void 0!==e.toCuttingId)return 0;if(!e.toComponentId||e.toComponentId===l.id)return 0;if("inter"!==e.layerType&&"bridge"!==e.layerType)return 0;var f=c.find(function(t){return t.id===e.toComponentId});if(!f)return 0;var g=e.toOddId,v=f.odds.find(function(e){return e.id===g});if(!v)return 0;var m=null!==(i=null===(n=null===(t=w.default.intraOddByComponent)||void 0===t?void 0:t[f.id])||void 0===n?void 0:n[g])&&void 0!==i?i:[],y=(0,C.deriveOddStates)(f),b=(0,C.deriveCuttingStates)(f),I=null!==(r=b[g])&&void 0!==r?r:{},x=null!==(a=y[g])&&void 0!==a?a:0,k=e.deltaTo,S=e.targetedCutting,_=null!==(o=e.fromComponentId)&&void 0!==o?o:l.id;if(0===m.length)return h(v,_,e.toComponentId,g,x,I,k,e.rationale),0;if(void 0===S){var A,E=new Set,O=s(m);try{for(O.s();!(A=O.n()).done;){var D=A.value;if(!E.has(D.toCuttingId)){E.add(D.toCuttingId);var M=I[D.toCuttingId];if(void 0!==M){var L=(0,C.absorptionMultiplier)(M),F=(0,C.gapMultiplier)(x,M),T=k*D.w*u*L*F;Math.abs(T)<1e-9||p.push({fromComponentId:_,toComponentId:e.toComponentId,fromOddId:g,toOddId:g,fromCuttingId:void 0,toCuttingId:D.toCuttingId,baseDelta:k,weight:D.w,strategicWeight:D.w,layerType:"intra",propagationFactor:u,absorption:L,gap:F,fromState:x,toState:M,deltaTo:T,rationale:D.rationale,layersInvolved:["inter","intra"],localLayerWeights:null,bridgeLayerWeights:null})}}}}catch(e){O.e(e)}finally{O.f()}return 0}var P=(0,C.findNodeInTree)(m,S);if(!P)return"bridge"!==e.layerType&&h(v,_,e.toComponentId,g,x,I,k,e.rationale),0;var B=new Set,G=function(t,n,i){var r,a,o,l=s(t);try{for(l.s();!(o=l.n()).done;){var c=o.value,d=c.edge,h=c.rationale;if(!B.has(d.toCuttingId)){B.add(d.toCuttingId);var f=I[d.toCuttingId];if(void 0!==f){var v=void 0!==i&&null!==(r=I[i])&&void 0!==r?r:x,y=(0,C.absorptionMultiplier)(f),b=(0,C.gapMultiplier)(v,f),w=n*d.w*u*y*b;if(!(Math.abs(w)<1e-9)){p.push({fromComponentId:_,toComponentId:e.toComponentId,fromOddId:g,toOddId:g,fromCuttingId:i,toCuttingId:d.toCuttingId,baseDelta:n,weight:d.w,strategicWeight:d.w,layerType:"intra",propagationFactor:u,absorption:y,gap:b,fromState:v,toState:f,deltaTo:w,rationale:h,layersInvolved:["inter","intra"],localLayerWeights:null,bridgeLayerWeights:null});var k=(null!==(a=d.targetedCuttings)&&void 0!==a?a:[]).map(function(e){var t=m.find(function(t){return t.toCuttingId===e.cuttingId});return t?{edge:t,rationale:e.rationale}:null}).filter(function(e){return null!==e});k.length>0&&G(k,w,d.toCuttingId)}}}}}catch(e){l.e(e)}finally{l.f()}};G([{edge:P,rationale:e.rationale}],k,void 0)};for(f.s();!(d=f.n()).done;)g()}catch(e){f.e(e)}finally{f.f()}return p}},{key:"renderForceFieldDetails",value:function(e){var t,n,i,r,a,o,s,l,c,d,u,p,h,f,g,v,m,y,b=this;this.selectedSourceFocus=null;var I=this.state.forceField.links[e];if(I&&(this.actionStackManager.getActiveItems().length>=1?this.renderCumulativeDetailsForCutting(I.detail.toOddId,I.detail.toCuttingId):this.forceFieldDetailsPanel.clearForceFieldDetails(),this._onShowPropagationBlock)){var C,w,x=this.getCurrentComponent(),_=this.resolveActionSource(null!=x?x:void 0),A=this.getActiveActionMeta(),E=null!==(t=this.state.menu.activeActionId)&&void 0!==t?t:null===(n=this.persistentActionContext)||void 0===n?void 0:n.actionId,O=E?se.get(E):void 0,D=null!==(i=A.name)&&void 0!==i?i:null==O?void 0:O.name,M=null!==(r=A.description)&&void 0!==r?r:null==O?void 0:O.description;if(this.state.forceField.incomingMode&&this.persistentActionContext){var L=this.persistentActionContext,F=L.sourceComponentId,T=L.sourceOddId,P=L.sourceCuttingIndex,B=this.getAllComponents().find(function(e){return e.id===F}),G=null==B?void 0:B.odds.find(function(e){return e.id===T});C=(null===(s=null===(o=null===(a=null==G?void 0:G.cuttings)||void 0===a?void 0:a[P])||void 0===o?void 0:o.label)||void 0===s?void 0:s.trim())||void 0}if(this.state.forceField.incomingMode&&this.persistentActionContext){var R=this.getAllComponents().find(function(e){return e.id===b.persistentActionContext.sourceComponentId}),q=null==R?void 0:R.odds.find(function(e){return e.id===b.persistentActionContext.sourceOddId});w=null!==(c=null!==(l=null==q?void 0:q.shortLabel)&&void 0!==l?l:null==q?void 0:q.label)&&void 0!==c?c:null==q?void 0:q.id}else if(_&&x){var z=x.odds.find(function(e){return e.id===_.oddId});w=null!==(u=null!==(d=null==z?void 0:z.shortLabel)&&void 0!==d?d:null==z?void 0:z.label)&&void 0!==u?u:null==z?void 0:z.id}var N=null!==(p=null==_?void 0:_.oddId)&&void 0!==p?p:I.detail.fromOddId,j=null!==(h=null==_?void 0:_.cuttingId)&&void 0!==h?h:I.detail.fromCuttingId,H={linkIndex:e,forceFieldLinks:this.state.forceField.links,allForceFieldLinkDetails:this.state.forceField.allLinkDetails,onCardElementFlash:function(e){return b.flashChildCuttings(e,null==x?void 0:x.id)},onNavigateToCutting:function(e,t){var n;if(void 0!==t){var i=b.state.forceField.links.findIndex(function(n){return n.detail.toOddId===e&&n.detail.toCuttingId===t});-1!==i&&(b.state.setForceFieldSelectedLinkIndex(i),b.renderForceFieldDetails(i),b.renderChildScoresDeltas(null!==(n=b.state.forceField.orbitData)&&void 0!==n?n:b.buildChildrenOrbitData()))}},onNavigateToSatellite:function(e,t,n){return b.navigateToSource(e,t,n)},actionSource:_,incomingMode:this.state.forceField.incomingMode,incomingSourceName:C,currentComponent:null!=x?x:void 0,actionId:null!=E?E:void 0,actionName:D,actionDescription:M,sourceOddName:w},K=this.forceFieldDetailsPanel.buildPropagatedActionHtml(Object.assign({},H));if(K){var V=this.state.menu.activeActionId,Y=V?k.yasuniActions.find(function(e){return e.id===V}):void 0,W=this.state.forceField.incomingMode?null===(f=this.persistentActionContext)||void 0===f?void 0:f.sourceComponentId:null==x?void 0:x.id,U=W?S.yasuniCause.find(function(e){return e.id===W}):void 0,X=null==U?void 0:U.odds.find(function(e){return e.id===N}),Z=void 0!==j?null==X?void 0:X.cuttings.find(function(e){return e.id===j}):void 0,Q={breadcrumb:[null==U?void 0:U.name,null==X?void 0:X.name,null==Z?void 0:Z.name].filter(Boolean).join(" › "),title:null!==(v=null!==(g=null==Y?void 0:Y.name)&&void 0!==g?g:A.name)&&void 0!==v?v:"",description:null!==(y=null!==(m=null==Y?void 0:Y.description)&&void 0!==m?m:A.description)&&void 0!==y?y:""},$=I.detail.toOddId,J=I.detail.toCuttingId;if(x&&void 0!==J){var ee=x.odds.find(function(e){return e.id===$});if(ee){var te=(Array.isArray(ee.cuttingIds)&&ee.cuttingIds.length===ee.cuttingScores.length?ee.cuttingIds:ee.cuttingScores.map(function(e,t){return t+1})).indexOf(J);te>=0&&this._onShowPropagationBlock(x.id,$,te,K.html,K.attachHandlers,Q,I.detail.rationale)}}}}}},{key:"flashChildCuttings",value:function(e,t){var n=this,i=this.getCurrentComponent();if(i&&(void 0===t||i.id===t)){var r=this.view.viewInitializer.globalGroup.node();if(r){var a=function(e,t,n){setTimeout(function(){var n=L.select(r).append("g").attr("data-role","child-flash-ring").style("pointer-events","none");n.append("circle").attr("cx",e.x).attr("cy",e.y).attr("r",1.08*t).style("fill","none").style("stroke","#ffe566").style("stroke-width","4px").style("opacity","1").style("filter","drop-shadow(0 0 10px rgba(255,229,80,0.95))").transition().duration(1e3).ease(L.easeCubicOut).attr("r",2.1*t).style("stroke-width","0.5px").style("opacity","0").remove(),n.append("circle").attr("cx",e.x).attr("cy",e.y).attr("r",1.08*t).style("fill","none").style("stroke","rgba(255,200,40,0.85)").style("stroke-width","2px").style("opacity","0.75").transition().delay(120).duration(850).ease(L.easeCubicOut).attr("r",1.7*t).style("opacity","0").remove(),n.append("circle").attr("cx",e.x).attr("cy",e.y).attr("r",.98*t).style("fill","rgba(255,229,80,0.32)").style("stroke","none").style("opacity","1").transition().duration(600).ease(L.easeCubicOut).attr("r",1.25*t).style("fill","rgba(255,229,80,0)").style("opacity","0").on("end",function(){return n.remove()})},n)},o=function(e){if(void 0!==e.componentId){if(e.componentId===(null==i?void 0:i.id))return null;var t=n.getComponentBorderTargetPoint(e.componentId);if(!t)return null;var r=n.view.viewInitializer.borderOuterRadius-n.view.viewInitializer.borderInnerRadius;return{center:t,radius:Math.max(1.5*r,14)}}var a,o,l=s(n.childControllers);try{for(l.s();!(o=l.n()).done;){var c=o.value,d=n.childOddMap.get(c.getKey());if(d&&d.oddId===e.oddId){if(void 0===e.cuttingId){a=c;break}if((0,M.resolveOddCuttingId)(i,e.oddId,d.cuttingIndex)===e.cuttingId){a=c;break}}}}catch(e){l.e(e)}finally{l.f()}if(!a)return null;var u=n.getChildRenderedCenter(a);if(!u)return null;var p=a.view.viewInitializer.borderOuterRadius||n.view.viewInitializer.smallCircleRadius,h=n.childControllers.indexOf(a);return{center:u,radius:p,orbitIndex:h>=0?h:void 0}};if(e.length>=2){var l,c=[],d=s(e);try{for(d.s();!(l=d.n()).done;){var u=l.value,p=o(u);p&&c.push(p)}}catch(e){d.e(e)}finally{d.f()}if(0===c.length)return;for(var h=this.state.forceField.links,f=function(e,t){if(void 0!==e){var n=h.findIndex(function(n){return n.startIndex===e&&n.endIndex===t});if(n>=0)return n}return h.findIndex(function(e){return e.endIndex===t})},g=[],v=0;v<c.length-1;v++){var m=c[v+1].orbitIndex;if(void 0!==m){var y=f(c[v].orbitIndex,m);g.push(y>=0?y:void 0)}else g.push(void 0)}return a(c[0].center,c[0].radius,0),void(c.length>=2&&this._animatePropagationArc(c,r,function(e){return a(e.center,e.radius,0)},0,function(e){var t=g[e];void 0!==t&&n.forceFieldRenderer.pulseLink(t,700)}))}e.forEach(function(e,t){var n=o(e);n&&a(n.center,n.radius,100*t)})}}}},{key:"_animatePropagationArc",value:function(e,t,n){var i=this,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4?arguments[4]:void 0;if(!(r>=e.length-1)){var o=e[r].center,s=e[r+1].center,l=L.select(t).append("g").attr("data-role","propagation-arc").style("pointer-events","none");l.append("circle").attr("cx",o.x).attr("cy",o.y).attr("r",12).style("fill","rgba(255, 40, 0, 0.18)").style("pointer-events","none").attr("class","propagation-arc-halo");var c=l.append("line").attr("x1",o.x).attr("y1",o.y).attr("x2",o.x).attr("y2",o.y).style("stroke","#ff1a00").style("stroke-width","3").style("stroke-linecap","round").style("filter","drop-shadow(0 0 4px rgba(255,30,0,0.8))"),d=l.append("circle").attr("cx",o.x).attr("cy",o.y).attr("r",6).style("fill","#ff1a00").style("filter","drop-shadow(0 0 12px rgba(255,30,0,1)) drop-shadow(0 0 5px rgba(255,200,150,0.9)) drop-shadow(0 0 2px #fff)"),u=l.select(".propagation-arc-halo");null==a||a(r);var p=performance.now(),h=function(f){var g=Math.min((f-p)/600,1),v=L.easeCubicInOut(g),m=o.x+(s.x-o.x)*v,y=o.y+(s.y-o.y)*v;d.attr("cx",m).attr("cy",y),u.attr("cx",m).attr("cy",y),c.attr("x2",m).attr("y2",y).style("opacity",String(Math.min(1,.8*(1-Math.max(0,(g-.85)/.15))))),g<1?requestAnimationFrame(h):(l.remove(),n(e[r+1]),i._animatePropagationArc(e,t,n,r+1,a))};requestAnimationFrame(h)}}},{key:"getCurrentComponent",value:function(){var e,t=this.view.viewInitializer.getCurrentComponentIndex();return null!==(e=this.getAllComponents()[t])&&void 0!==e?e:null}},{key:"getCurrentComponentOrUndefined",value:function(){var e;return null!==(e=this.getCurrentComponent())&&void 0!==e?e:void 0}},{key:"getCurrentComponentTitle",value:function(){if(!this.state.children.enabled)return S.yasuniSphere.name;var e=this.getCurrentComponent();return(0,T.getComponentTitle)(e)}},{key:"getCurrentSatelliteTitle",value:function(){var e;if(!this.state.children.enabled)return null;var t=this.getCurrentComponent();if(!t)return null;if(null!==this.activeKeyEventId){var n=E.yasuniKeyEventMap.get(this.activeKeyEventId);if(n&&n.originComposanteId===t.id)return{label:n.name,oddColor:"#ffc870",actionLabel:null}}var i=this.getActiveChildMeta();return i?t.id!==i.componentId?null:{label:(0,T.getCuttingLabel)(t,i.oddId,i.cuttingIndex),oddColor:null!==(e=P.causeOddColors[i.oddId])&&void 0!==e?e:"#3a7abf",actionLabel:this.getCurrentActionTitle(i.oddId,i.cuttingIndex)}:null}},{key:"getCurrentActionTitle",value:function(e,t){var n,i;if(!this.state.menu.hasActiveChildAction)return null;var r=this.state.menu.actionSourceChildKey;if(!r)return null;var a=this.childOddMap.get(r);if(!a||a.oddId!==e||a.cuttingIndex!==t)return null;var o=this.state.menu.activeActionId;return o&&null!==(i=null===(n=k.yasuniActions.find(function(e){return e.id===o}))||void 0===n?void 0:n.name)&&void 0!==i?i:null}},{key:"refreshComponentTitle",value:function(){var e=this;this.contextLabelsRenderer.updateComponentTitleOnly(document.getElementById("component-title-container"),this.getCurrentComponentTitle(),this.getCurrentSatelliteTitle(),this.state.labels.componentFontScale*this.view.viewInitializer.labelsFontAutoScale,this.state.labels.textShadowEnabled,function(){return e.showComposanteInfo()})}},{key:"updateComponentTitleLabelImmediate",value:function(e){var t,n=this,i=null!==(t=this.getAllComponents()[e])&&void 0!==t?t:null;this.contextLabelsRenderer.updateComponentTitleOnly(document.getElementById("component-title-container"),(0,T.getComponentTitle)(i),null,this.state.labels.componentFontScale*this.view.viewInitializer.labelsFontAutoScale,this.state.labels.textShadowEnabled,function(){return n.showComposanteInfo()})}},{key:"updateContextLabels",value:function(e){var t,n=this;this.contextLabelsRenderer.render({globalGroupNode:this.view.viewInitializer.globalGroup.node(),orbitData:e,allComponents:this.getAllComponents(),borderSegments:null!==(t=this.view.viewInitializer.geometry.borderSegments)&&void 0!==t?t:[],containerTopY:this.view.viewInitializer.positionY-this.view.viewInitializer.viewData.minEdge/2,componentTitleContainer:document.getElementById("component-title-container"),component:this.getCurrentComponent(),componentTitle:this.getCurrentComponentTitle(),satelliteTitle:this.getCurrentSatelliteTitle(),parentCenterX:this.view.viewInitializer.positionX,parentCenterY:this.view.viewInitializer.positionY,childOddMap:this.childOddMap,getChildRenderedCenter:this.getChildRenderedCenter.bind(this),getChildRadius:function(e){return e.view.viewInitializer.borderOuterRadius||n.view.viewInitializer.smallCircleRadius},getComponentImagePosition:function(e){var t,i=n.getInternalModel().components.findIndex(function(t){return t.id===e});return i<0?null:null!==(t=n.view.borderDrawer.getFacetteImagePosition(i))&&void 0!==t?t:null},childrenContextLabelsVisible:this.state.children.enabled&&this.state.visibility.childrenContextLabels&&this.state.visibility.allLabelsVisible,labelsFontScale:this.state.labels.fontScale*this.view.viewInitializer.labelsFontAutoScale,componentLabelFontScale:this.state.labels.componentFontScale*this.view.viewInitializer.labelsFontAutoScale,componentLegendLabelFontScale:this.state.labels.componentLegendFontScale*this.view.viewInitializer.labelsFontAutoScale,legendLabelsBgEnabled:this.state.labels.legendLabelsBgEnabled,labelsTextShadowEnabled:this.state.labels.textShadowEnabled,childLabelMaxLines:this.state.labels.childMaxLines,childLabelShortMaxChars:this.state.labels.labelShortMaxChars,actionDeltaLabelsVisible:this.state.visibility.actionDeltaLabels,projectedGhostCuttingStatesByOddId:this.state.ghost.projectedGhostCuttingStatesByOddId,projectedGhostStateByOddId:this.state.ghost.projectedGhostStateByOddId,allLabelsVisible:this.state.visibility.allLabelsVisible,displayEllipsisForShortLabels:this.state.labels.displayEllipsisForShortLabels,isSphereStatus:!this.state.children.enabled,onComponentTitleClick:function(){return n.showComposanteInfo()},onComponentLegendSelect:function(e){var t=S.yasuniCause.find(function(t){return t.id===e});t&&n.forceFieldDetailsPanel.renderComposanteInfo(t,n.buildKeyEventBlocksForComponent(t),function(e){return n.navigateToPrereqAction(e)})}}),this.renderChildScoresDeltas(e)}},{key:"renderChildScoresDeltas",value:function(e){var t,n,i,r,a,o=this,s=this.view.viewInitializer.globalGroup.node(),l=this.state.forceField.selectedLinkIndex,c=null!==l?null===(t=this.state.forceField.links[l])||void 0===t?void 0:t.detail:void 0,d=null!==(n=null==c?void 0:c.toCuttingId)&&void 0!==n?n:null===(i=this.selectedSourceFocus)||void 0===i?void 0:i.cuttingId,u=null!==(r=null==c?void 0:c.toOddId)&&void 0!==r?r:null===(a=this.selectedSourceFocus)||void 0===a?void 0:a.oddId;this.childScoresDeltaRenderer.render({orbitData:e,globalGroupNode:s,parentCenterX:this.view.viewInitializer.positionX,parentCenterY:this.view.viewInitializer.positionY,component:this.getCurrentComponent(),childOddMap:this.childOddMap,getChildRenderedCenter:this.getChildRenderedCenter.bind(this),getChildRadius:function(e){return e.view.viewInitializer.borderInnerRadius||e.view.viewInitializer.borderOuterRadius||o.view.viewInitializer.smallCircleRadius},projectedGhostCuttingStatesByOddId:this.state.ghost.projectedGhostCuttingStatesByOddId,projectedGhostStateByOddId:this.state.ghost.projectedGhostStateByOddId,weightDeltaByChildKey:this.actionStackManager.getWeightDeltaByChildKey(),actionDeltaLabelsVisible:this.state.visibility.actionDeltaLabels,labelsTextShadowEnabled:this.state.labels.textShadowEnabled,childStateDeltaFontScale:this.state.labels.childStateDeltaFontScale*this.view.viewInitializer.labelsFontAutoScale,childStateDeltaOffset:this.state.labels.childStateDeltaOffset,childStateDeltaBoxScale:this.state.labels.childStateDeltaBoxScale,selectedCuttingId:d,selectedOddId:u}),this.applyWeightPreview(e,s),this.refreshComponentTitle()}},{key:"refreshWeightPreviewPulse",value:function(){this.applyWeightPreview(this.buildChildrenOrbitData(),this.view.viewInitializer.globalGroup.node())}},{key:"applyWeightPreview",value:function(e,t){var n,i=this,a=this.actionStackManager.getWeightDeltaByChildKey(),o=this.getCurrentComponent();this.view.viewInitializer.updateBorderSegmentGhost(this.actionStackManager.getWeightDeltaByComponentOddCutting());var l,c=new Map,d=s(a);try{for(d.s();!(l=d.n()).done;){var u=r(l.value,2),p=u[0],h=u[1],f=this.childOddMap.get(p);if(f){var g="".concat(f.oddId,"::").concat(f.cuttingIndex);c.set(g,(null!==(n=c.get(g))&&void 0!==n?n:0)+h)}}}catch(e){d.e(e)}finally{d.f()}this.view.viewInitializer.updateCategoryGhost(c),this.view.viewInitializer.updateSpikeGhost(c),this.view.viewInitializer.weightDeltaGhostTotal=Array.from(c.values()).reduce(function(e,t){return e+t},0),this.weightPreviewRingRenderer.render({orbitData:e,globalGroupNode:t,component:o,childOddMap:this.childOddMap,weightDeltaByChildKey:a,getChildRenderedCenter:this.getChildRenderedCenter.bind(this),getChildRadius:function(e){return e.view.viewInitializer.borderInnerRadius||e.view.viewInitializer.borderOuterRadius||i.view.viewInitializer.smallCircleRadius},basePulseEnabled:this.view.viewInitializer.basePulseEnabled,pulseDurationMs:1e3*this.view.viewInitializer.ghostPulseDurationSec,pulseMorphRatio:this.view.viewInitializer.pulseMorphRatio})}},{key:"clearChildActionMenu",value:function(){this.state.clearMenuActiveSelection(),this.childActionMenuController.clearImmediately()}},{key:"clearProjectedActionState",value:function(){var e,t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).deselect,n=void 0===t||t;this.persistentActionContext=null,this.pendingComponentSwitchContext=void 0,this.focusBeforeComponentSwitch=null,this.actionStackManager.resetLastComboResults(),this.state.setHasActiveChildAction(!1),this.state.setActionSourceChildKey(null),this.state.setMenuActiveAction(null),this.state.setForceFieldSourceChildIndices([]),this.applyEmptyGhostProjectionState(),this.view.borderDrawer.clearSourceBeacon(),this.clearForceFieldVisualState(!1),this.clearForceFieldDetails(),this._routeNextDirectActionBlockToPanelB||null===(e=this._onClearDirectActionBlock)||void 0===e||e.call(this),n&&this.actionStackController.deselectAllItems()}},{key:"applyEmptyGhostProjectionState",value:function(){this.state.resetGhostProjection(),this.actionStackManager.clearWeightPreview(),this.applyWeightPreview(this.buildChildrenOrbitData(),this.view.viewInitializer.globalGroup.node())}},{key:"updateChildActionMenu",value:function(e){var t=this.state.menu.activeChildKey,n=t?this.getActionsForChild(t):[],i=t===this.state.menu.actionSourceChildKey?this.state.menu.activeActionId:null;this.childActionMenuController.update({orbitData:e,activeActionMenuChildKey:t,activeActionMenuActionId:i,childActionMenuItemDistance:this.state.menu.itemDistance,childActionMenuItemScale:this.state.menu.itemScale,childActionIconFontScale:this.state.menu.iconFontScale,actionsForActiveChild:n})}},{key:"onCoreEventNucleusClicked",value:function(){this.toggleCoreEventMenu()}},{key:"notifyKeyEventMenuState",value:function(e){var t;null===(t=this._onKeyEventMenuStateChange)||void 0===t||t.call(this,this.view.viewInitializer.getCurrentComponentIndex(),e)}},{key:"toggleCoreEventMenu",value:function(){var e=!this.isCoreEventMenuOpen;e&&this.closeChildActionMenu(),this.isCoreEventMenuOpen=e,e||this.setActiveKeyEventId(null),this.updateCoreEventMenu(),this.notifyKeyEventMenuState(e)}},{key:"closeKeyEventField",value:function(){var e;(this.isCoreEventMenuOpen||null!==this.activeKeyEventId)&&(this.isCoreEventMenuOpen=!1,this.setActiveKeyEventId(null),this.eventFieldRenderer.hide(),this.updateCoreEventMenu(),null===(e=this._onClearKeyEventBlock)||void 0===e||e.call(this),this.notifyKeyEventMenuState(!1))}},{key:"updateCoreEventMenu",value:function(){var e,t=null===(e=this.getCurrentComponentOrUndefined())||void 0===e?void 0:e.id,n=t?E.yasuniKeyEvents.filter(function(e){return e.originComposanteId===t}):[],i=this.buildChildrenOrbitData().map(function(e){return e.radius}),r=i.length>0?i.reduce(function(e,t){return e+t},0)/i.length:this.view.viewInitializer.borderInnerRadius;this.coreEventMenuController.update({isOpen:this.isCoreEventMenuOpen,keyEventsForActiveFacette:n,activeKeyEventId:this.activeKeyEventId,childActionMenuItemDistance:this.state.menu.itemDistance,childrenOrbitRadius:r,coreEventMenuItemScale:this.state.menu.coreEventMenuItemScale,coreEventIconFontScale:this.state.menu.coreEventIconFontScale,coreEventMenuDistanceOffset:this.state.menu.coreEventMenuDistanceOffset}),this.eventFieldLifecycleController.updateEventField()}},{key:"getEventFieldKeyEvents",value:function(){var e;if(null!==this.activeKeyEventId){var t=E.yasuniKeyEventMap.get(this.activeKeyEventId);return t?[t]:[]}if(!(0,oe.isStackModeActive)())return[];if(!this.state.children.enabled)return[];var n=null===(e=this.getCurrentComponentOrUndefined())||void 0===e?void 0:e.id;if(!n)return[];var i=this.actionStackManager.getActiveItems().filter(function(e){return"keyEvent"===e.kind}).map(function(e){return E.yasuniKeyEventMap.get(e.actionId)}).filter(function(e){return void 0!==e}).filter(function(e){return!(0,E.isAdverseKeyEvent)(e)}),r=i.filter(function(e){return e.originComposanteId===n});if(r.length>0)return r;var a=i.filter(function(e){return(0,Q.keyEventReachesComponent)(e,n)});return a.length>0?[a[a.length-1]]:[]}},{key:"getEventFieldSource",value:function(){var e,t=null===(e=this.getCurrentComponentOrUndefined())||void 0===e?void 0:e.id,n=this.getEventFieldKeyEvents()[0];if(n&&t&&n.originComposanteId!==t)return{center:this.getComponentBorderTargetPoint(n.originComposanteId),radius:0};var i=this.view.viewInitializer,r=i.getCurrentComponentOrientation(),a=i.geometry,o="yang"===r?a.yang:a.yin,s="yang"===r?i.yinOrYangGroup.yang.graphElementGroup:i.yinOrYangGroup.yin.graphElementGroup;return{center:this.getLiveLobeCoreCenter(s,a.layout.positionX,o.centerY),radius:o.smallRadius}}},{key:"getLiveLobeCoreCenter",value:function(e,t,n){var i,r,a,o,s=e.node(),l=this.view.viewInitializer.globalGroup.node(),c=null!==(r=null===(i=null==s?void 0:s.getCTM)||void 0===i?void 0:i.call(s))&&void 0!==r?r:null,d=null!==(o=null===(a=null==l?void 0:l.getCTM)||void 0===a?void 0:a.call(l))&&void 0!==o?o:null;if(!c||!d)return{x:t,y:n};var u=d.inverse().multiply(c),p=new DOMPoint(t,n).matrixTransform(u);return{x:p.x,y:p.y}}},{key:"searchNavigateToKeyEvent",value:function(e){var t=E.yasuniKeyEventMap.get(e);t&&this.previewKeyEvent(t)}},{key:"restoreKeyEventDiagramState",value:function(e){var t,n=E.yasuniKeyEventMap.get(e);if(n&&!(0,E.isAdverseKeyEvent)(n)){if((null===(t=this.getCurrentComponentOrUndefined())||void 0===t?void 0:t.id)===n.originComposanteId){if(this.activeKeyEventId===n.id)return;return this.closeChildActionMenu(),this.setActiveKeyEventId(n.id),void this.updateCoreEventMenu()}if(!this.view.viewInitializer.isComponentSwitching()){var i=S.yasuniCause.findIndex(function(e){return e.id===n.originComposanteId});i<0||(this.closeChildActionMenu(),this.setActiveKeyEventId(n.id),this.prepareForComponentSwitch(n.originComposanteId),this._pendingKeyEventMenuAfterSwitch=!0,this.animateChildrenHide(),this.view.borderDrawer.activateSegment(i),this.view.viewInitializer.animateToComponent(i,b.animationConfig.componentSwitchDurationMs))}}}},{key:"searchSetKeyEventMenuOpen",value:function(e,t){var n;if(t)if(this.view.viewInitializer.getCurrentComponentIndex()!==e){if(!this.view.viewInitializer.isComponentSwitching()){var i=null===(n=S.yasuniCause[e])||void 0===n?void 0:n.id;i&&this.prepareForComponentSwitch(i),this._pendingKeyEventMenuAfterSwitch=!0,this.animateChildrenHide(),this.view.borderDrawer.activateSegment(e),this.view.viewInitializer.animateToComponent(e,b.animationConfig.componentSwitchDurationMs)}}else this.openCoreEventMenu();else this.closeKeyEventField()}},{key:"openCoreEventMenu",value:function(){this.isCoreEventMenuOpen||this.toggleCoreEventMenu()}},{key:"setActiveKeyEventId",value:function(e){this.activeKeyEventId=e,this.refreshComponentTitle()}},{key:"previewKeyEvent",value:function(e){var t,n,i=this;if(!(0,E.isAdverseKeyEvent)(e)){this.closeChildActionMenu(),this.setActiveKeyEventId(e.id),this.updateCoreEventMenu();var r=this.view.viewInitializer.getCurrentComponentIndex(),a=null===(t=this.getCurrentComponentOrUndefined())||void 0===t?void 0:t.id;if(null===(n=this.onDiagramNavChangeCb)||void 0===n||n.call(this,{type:"keyEvent",componentIndex:r,keyEventId:e.id}),a&&this._onShowKeyEventBlock){var o=le(e),s=this.actionStackController.getItemsInStackOrder(),l=s.find(function(t){return"keyEvent"===t.kind&&t.actionId===e.id}),c=l?(0,D.getAmplifierTargetBreakdown)(e,l,s):void 0,d=this.forceFieldDetailsPanel.buildKeyEventCardHtml({keyEvent:e,targetedActions:o,breakdowns:c,sourceItemId:null==l?void 0:l.id,onNavigateToAction:function(e){return i.navigateToPrereqAction(e)}}),u=d.html,p=d.attachHandlers;this._onShowKeyEventBlock(a,e.id,u,p)}}}},{key:"validateKeyEventSelection",value:function(e,t,n){var i,r,a=null!==(r=null===(i=this.getCurrentComponentOrUndefined())||void 0===i?void 0:i.id)&&void 0!==r?r:"";this.actionStackController.addItem({kind:"keyEvent",actionId:e.id,label:e.name,sourceChildKey:"",sourceOddId:"",sourceCuttingIndex:-1,sourceComponentId:a,color:"rgba(255, 200, 112, 0.9)",effectiveDelta:0},t,n),this.updateCoreEventMenu()}},{key:"validateActionSelection",value:function(e,t,n,i,r){this.actionStackManager.validateActionSelection(e,t,n,i,r)}},{key:"clientPointToGlobalGroup",value:function(e,t){var n=this.view.viewInitializer.globalGroup.node(),i=this.view.viewInitializer.graphicContainer.node();return(0,B.clientPointToGroupCoordinates)({clientX:e,clientY:t,group:n,svg:i})}},{key:"renderDragGhost",value:function(e,t,n){if(!this.htmlDragGhost){var i=document.createElement("div");i.style.cssText=["position:fixed","pointer-events:none","z-index:9999","width:36px","height:36px","border-radius:50%","background:rgba(36,82,108,0.92)","border:1.4px solid rgba(255,244,170,0.92)","box-shadow:0 0 10px rgba(255,227,116,0.75)","display:flex","align-items:center","justify-content:center","transform:translate(-50%,-50%)","transition:none","user-select:none"].join(";");var r=document.createElement("img");r.src=n,r.alt="",r.style.cssText="width:28px;height:28px;object-fit:contain;",i.appendChild(r),document.body.appendChild(i),this.htmlDragGhost=i}this.htmlDragGhost.style.left="".concat(e,"px"),this.htmlDragGhost.style.top="".concat(t,"px")}},{key:"removeDragGhost",value:function(){this.htmlDragGhost&&(this.htmlDragGhost.remove(),this.htmlDragGhost=null)}},{key:"onCuttingLabelClick",value:function(e,t){var n,i,r,a,o;try{if(this.renderCumulativeDetailsForCutting(e,t))return this.state.setForceFieldSelectedLinkIndex(null),this.selectedSourceFocus={oddId:e,cuttingId:t},void this.renderChildScoresDeltas(null!==(n=this.state.forceField.orbitData)&&void 0!==n?n:this.buildChildrenOrbitData());var s=this.getCurrentComponent(),l=this.resolveActionSource(null!=s?s:void 0);if(void 0!==l&&l.oddId===e&&(l.cuttingId===t||void 0===t)&&s&&this.state.menu.hasActiveChildAction)return this.state.setForceFieldSelectedLinkIndex(null),this.selectedSourceFocus={oddId:e,cuttingId:t},this.renderSourceActionDetailsForCurrentSource(),void this.renderChildScoresDeltas(null!==(i=this.state.forceField.orbitData)&&void 0!==i?i:this.buildChildrenOrbitData());var c=this.state.forceField.links.findIndex(function(n){return n.detail.toOddId===e&&n.detail.toCuttingId===t});if(-1!==c&&this.state.menu.hasActiveChildAction){if(this.state.forceField.selectedLinkIndex===c)return;this.state.toggleForceFieldSelection(c),this.selectedSourceFocus=null,this.renderForceFieldDetails(c)}else{this.state.setForceFieldSelectedLinkIndex(null),this.selectedSourceFocus={oddId:e,cuttingId:t},null===(r=this._onClearPropagationBlock)||void 0===r||r.call(this);var d=this.getCurrentComponent(),u=S.yasuniCause.find(function(e){return e.id===(null==d?void 0:d.id)}),p=null==u?void 0:u.odds.find(function(t){return t.id===e}),h=null==p?void 0:p.cuttings.find(function(e){return e.id===t});this.forceFieldDetailsPanel.renderCuttingInfo(null!==(a=null==h?void 0:h.name)&&void 0!==a?a:e,null==h?void 0:h.description,p,null==u?void 0:u.id)}this.renderChildScoresDeltas(null!==(o=this.state.forceField.orbitData)&&void 0!==o?o:this.buildChildrenOrbitData())}finally{this.notifyCuttingNavigated(e,t)}}},{key:"resolveActionSource",value:function(e){if(!this.state.forceField.incomingMode&&e){var t=this.state.forceField.sourceChildIndex,n=this.childControllers[t],i=n?this.childOddMap.get(n.getKey()):void 0;return i?{oddId:i.oddId,cuttingId:(0,M.resolveOddCuttingId)(e,i.oddId,i.cuttingIndex)}:void 0}}},{key:"getActiveActionMeta",value:function(){var e,t,n,i,r,a,o=null===(e=this.persistentActionContext)||void 0===e?void 0:e.actionLabel,s=this.state.menu.activeActionLabel,l=this.actionStackController.getActionLabel(null!==(t=this.state.menu.activeActionId)&&void 0!==t?t:""),c=null!==(i=null!==(n=null!=s?s:o)&&void 0!==n?n:l)&&void 0!==i?i:void 0,d=c&&null!==(a=null===(r=k.yasuniActions.find(function(e){return e.name===c}))||void 0===r?void 0:r.description)&&void 0!==a?a:void 0;return{name:c,description:d}}},{key:"computeSequentialStackContributionsAtFocus",value:function(e,t,n){var i=this,r=new Map;if(void 0===n)return r;var a=this.actionStackManager.getActiveItems(),o=a.filter(function(e){return e.sourceOddId}),s=this.buildProjectionActionsFromStackItems(a);if(s.length!==o.length)return r;var l=o.map(function(e){var t;return null!==(t=e.effectiveDelta)&&void 0!==t?t:i.state.action.delta}),c=this.getAllComponents();return(0,G.projectGhostStateForActionSequence)({component:e,allComponents:c,actions:s,actionDelta:this.state.action.delta,actionPropagationFactor:this.state.action.propagationFactor,actionDeltas:l,onStep:function(i){var a,s,l,c,d=i.actionIndex,u=i.statesBefore,p=i.statesAfter,h=i.edges,f=o[d];if(f){var g=null!==(s=null===(a=u.get(t))||void 0===a?void 0:a.get(n))&&void 0!==s?s:0,v=(null!==(c=null===(l=p.get(t))||void 0===l?void 0:l.get(n))&&void 0!==c?c:0)-g;r.set(f.id,{marginalDeltaAtFocus:Math.abs(v)<1e-9?0:v,detailPool:h.map(function(t){return(0,U.mapPropagatedEdgeToDetail)(t,e.id)})})}}}),r}},{key:"buildKeyEventBlocksForComponent",value:function(e){var t=this.actionStackManager.getActiveItems(),n=new Set(t.map(function(e){return e.id})),i=this.actionStackController.getItemsInStackOrder();return t.filter(function(e){return"keyEvent"===e.kind}).map(function(r){var a=E.yasuniKeyEventMap.get(r.actionId);if(a&&a.originComposanteId===e.id)return{type:"keyEvent",keyEventId:a.id,active:(0,D.isKeyEventCurrentlyActive)(r,t,n,E.yasuniKeyEventMap),totalDelta:0,slotIndex:r.slotIndex,stackItemId:r.id,color:r.color,targetedActions:le(a),breakdowns:(0,D.getAmplifierTargetBreakdown)(a,r,i)}}).filter(function(e){return!!e}).sort(function(e,t){var n,i;return(null!==(n=t.slotIndex)&&void 0!==n?n:0)-(null!==(i=e.slotIndex)&&void 0!==i?i:0)})}},{key:"renderCumulativeDetailsForCutting",value:function(e,t){var n,i,r,a,o,c,d,u,p,h,f,g,v,m,y,b,C=this,w=this.getCurrentComponent();if(!w)return!1;var x=this.buildKeyEventBlocksForComponent(w);if(0===this.actionStackManager.getActiveItems().length&&0===x.length)return!1;if(0===this.state.forceField.links.length&&0===x.length)return!1;var S,_=this.state.forceField.allLinkDetails.length>0?this.state.forceField.allLinkDetails:this.state.forceField.links.map(function(e){return e.detail}),A=l(this.actionStackManager.getActiveItems()).reverse(),O=this.computeSequentialStackContributionsAtFocus(w,e,t),L=new Set,F=[],T=s(A);try{var P=function(){var s,l,x=S.value;if("action"!==x.kind)return 0;if(x.sourceComponentId===w.id)s=x.sourceOddId,l=(0,M.resolveOddCuttingId)(w,x.sourceOddId,x.sourceCuttingIndex);else{s=x.sourceOddId;var T=C.getAllComponents().find(function(e){return e.id===x.sourceComponentId});l=T?(0,M.resolveOddCuttingId)(T,x.sourceOddId,x.sourceCuttingIndex):void 0}var P,B=x.sourceComponentId===w.id?w:C.getAllComponents().find(function(e){return e.id===x.sourceComponentId}),G=null!==(i=null===(n=null==B?void 0:B.odds.find(function(e){return e.id===x.sourceOddId}))||void 0===n?void 0:n.cuttingWeights[x.sourceCuttingIndex])&&void 0!==i?i:1,R=(0,D.evaluateAmplifiers)(x,A,new Set(A.map(function(e){return e.id})),E.yasuniKeyEventMap),q=null===(r=se.get(x.actionId))||void 0===r?void 0:r.weightDelta,z=void 0!==q?(0,D.composeAmplifiedWeightDelta)(q,R):void 0,N=void 0!==z?(0,I.effectiveWeightDelta)(G,z):void 0,j=void 0!==q?(0,I.effectiveWeightDelta)(G,q):void 0,H=null!==(o=null===(a=k.yasuniActions.find(function(e){return e.name===x.label}))||void 0===a?void 0:a.description)&&void 0!==o?o:"—",K=x.sourceComponentId===w.id?w:C.getAllComponents().find(function(e){return e.id===x.sourceComponentId}),V=null!==(d=null!==(c=null==K?void 0:K.shortLabel)&&void 0!==c?c:null==K?void 0:K.label)&&void 0!==d?d:null==K?void 0:K.id,Y=null==K?void 0:K.odds.find(function(e){return e.id===s}),W=null!==(p=null!==(u=null==Y?void 0:Y.shortLabel)&&void 0!==u?u:null==Y?void 0:Y.label)&&void 0!==p?p:null==Y?void 0:Y.id,U=_.filter(function(e){return!L.has(e)}),X=x.sourceComponentId===w.id,Z=s===e&&l===t,Q=X?O.get(x.id):void 0,$=void 0!==Q,J=$?Q.marginalDeltaAtFocus:void 0,ee=$?Q.detailPool:void 0;if(Z){var te;ee?te=ee.filter(function(e){return e.fromOddId===s&&e.fromCuttingId===l}):0===(te=U.filter(function(e){return e.fromOddId===s&&e.fromCuttingId===l})).length&&(te=_.filter(function(e){return e.fromOddId===s&&e.fromCuttingId===l}));var ne=null!==(v=null!==(g=null===(f=null===(h=x.comboResults)||void 0===h?void 0:h.find(function(e){return e.triggered}))||void 0===f?void 0:f.baseDelta)&&void 0!==g?g:x.effectiveDelta)&&void 0!==v?v:C.state.action.delta;P={type:"source",actionId:x.actionId,actionName:x.label,actionDescription:H,sourceComponentName:V,sourceOddName:W,sourceOddId:s,sourceCuttingId:l,totalDelta:null!=J?J:null!==(m=x.effectiveDelta)&&void 0!==m?m:C.state.action.delta,baseDelta:ne,weightDelta:N,weightDeltaBase:j,detailRows:te,sequentialDetailPool:ee,comboResults:(null===(y=x.comboResults)||void 0===y?void 0:y.length)?x.comboResults:void 0,amplifierResults:R.length?R:void 0,stackItemId:x.id,color:x.color,slotIndex:x.slotIndex}}else{var ie=C.collectDetailRowsForSourceTarget(null!=ee?ee:U,s,l,e,t),re=ie.lines,ae=ie.detailRows;if(0===re.length&&!ee){var oe=C.collectDetailRowsForSourceTarget(_,s,l,e,t);re=oe.lines,ae=oe.detailRows}var le=void 0!==J&&Math.abs(J)>1e-9;if(0===re.length&&!le)return 0;P={type:"propagation",actionId:x.actionId,actionName:x.label,actionDescription:H,sourceComponentName:V,sourceOddName:W,sourceOddId:s,sourceCuttingId:l,totalDelta:null!=J?J:re.reduce(function(e,t){return e+t.deltaTo},0),rawDelta:re.reduce(function(e,t){return e+(t.absorption>0&&t.gap>0?t.deltaTo/(t.absorption*t.gap):t.deltaTo)},0),detailRows:ae,sequentialDetailPool:ee,stackItemId:x.id,color:x.color,slotIndex:x.slotIndex}}(null!==(b=P.detailRows)&&void 0!==b?b:[]).forEach(function(e){return L.add(e)}),F.push(P)};for(T.s();!(S=T.n()).done;)P()}catch(e){T.e(e)}finally{T.f()}var B=[].concat(F,l(x)).sort(function(e,t){var n,i;return(null!==(n=t.slotIndex)&&void 0!==n?n:0)-(null!==(i=e.slotIndex)&&void 0!==i?i:0)});return 0!==B.length&&(this.forceFieldDetailsPanel.renderCumulativeActionDetails({focusOddId:e,focusCuttingId:t,currentComponent:w,allComponents:this.getAllComponents(),forceFieldLinks:this.state.forceField.links,allForceFieldLinkDetails:this.state.forceField.allLinkDetails,onCardElementFlash:function(e){return C.flashChildCuttings(e,null==w?void 0:w.id)},onNavigateToCutting:function(e,t,n){return C.navigateToCutting(e,t,n)},onNavigateToAction:function(e){return C.navigateToPrereqAction(e)},onNavigateToSatellite:function(e,t,n){return C.navigateToSource(e,t,n)},blocks:B}),this.notifyCuttingNavigated(e,t),!0)}},{key:"collectDetailRowsForSourceTarget",value:function(e,t,n,i,r){var a,o=new Set,c=e.filter(function(e){return e.fromOddId===t&&e.fromCuttingId===n});c.forEach(function(e){return o.add(e)});var d=[];c.forEach(function(e){if(void 0!==e.toCuttingId)d.push({oddId:e.toOddId,componentId:e.toComponentId,fromCuttingId:e.toCuttingId,expectedBase:e.deltaTo});else{var t=e.targetedCutting;void 0!==t?d.push({oddId:e.toOddId,componentId:e.toComponentId,fromCuttingId:t,expectedBase:e.deltaTo}):d.push({oddId:e.toOddId,componentId:e.toComponentId,fromCuttingId:void 0,expectedBase:e.deltaTo})}});for(var u=new Set,p=function(){var t=d.shift(),n="".concat(null!==(a=t.componentId)&&void 0!==a?a:"?","|").concat(t.oddId,"|").concat(t.fromCuttingId,"|").concat(t.expectedBase.toFixed(6));if(u.has(n))return 1;u.add(n);var i=e.filter(function(e){return"intra"===e.layerType&&e.toOddId===t.oddId&&e.toComponentId===t.componentId&&(e.fromCuttingId===t.fromCuttingId||void 0===e.fromCuttingId&&e.toCuttingId===t.fromCuttingId)&&void 0!==e.toCuttingId&&Math.abs(e.baseDelta-t.expectedBase)<1e-6}),r=new Map;i.forEach(function(e){var t,n,i="".concat(null!==(t=e.fromCuttingId)&&void 0!==t?t:"?","|").concat(null!==(n=e.toCuttingId)&&void 0!==n?n:"?");r.has(i)||r.set(i,e)}),r.forEach(function(e){o.has(e)||o.add(e),d.push({oddId:e.toOddId,componentId:e.toComponentId,fromCuttingId:e.toCuttingId,expectedBase:e.deltaTo})})};d.length>0;)p();for(var h=l(o),f=h.filter(function(e){return e.toOddId===i&&e.toCuttingId===r}),g=new Set(f),v=l(f),m=function(){var e,t=[],n=s(v);try{var i=function(){var n=e.value;h.filter(function(e){return!g.has(e)&&Math.abs(e.deltaTo-n.baseDelta)<1e-6&&e.toOddId===n.fromOddId}).forEach(function(e){g.add(e),t.push(e)})};for(n.s();!(e=n.n()).done;)i()}catch(e){n.e(e)}finally{n.f()}v=t};v.length>0;)m();return{lines:f,detailRows:l(g)}}},{key:"getChildRenderedCenter",value:function(e){var t=e.view.viewInitializer,n=t.globalGroup.node();if(!n)return null;var i=n.getAttribute("transform")||"",r=(0,F.parseTranslateTransform)(i),a=r.x,o=r.y;return{x:t.positionX+a,y:t.positionY+o}}},{key:"getComponentBorderTargetPoint",value:function(e){var t=this.view.viewInitializer.geometry.borderSegments;if(!t||0===t.length)return null;var n=t.find(function(t){return t.category===e});if(!n)return null;var i=this.view.viewInitializer.positionX,r=this.view.viewInitializer.positionY,a=n.endAngle<n.startAngle?n.endAngle+2*Math.PI:n.endAngle,o=(n.startAngle+a)/2,s=(this.view.viewInitializer.borderInnerRadius+this.view.viewInitializer.borderOuterRadius)/2;return{x:i+Math.sin(o)*s,y:r-Math.cos(o)*s}}},{key:"clearForceFieldComputationState",value:function(){this.state.clearForceFieldComputation(),this.forceFieldLifecycleController.invalidatePropagationCache()}},{key:"removeOppositeChildrenForceField",value:function(){this.forceFieldLifecycleController.removeOppositeChildrenForceField()}},{key:"InitializeAnimations",value:function(){try{this.factory.animator.subscribe(this)}catch(e){throw e}}},{key:"highlightOddInChildren",value:function(e){this.oddViewManager.highlightOddInChildren(e)}},{key:"highlightOddByStackItemId",value:function(e){this.oddViewManager.highlightOddByStackItemId(e)}},{key:"getActionsForChild",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"playable",i=this.childOddMap.get(e);if(!i)return[];var r,a=this.getCurrentComponentOrUndefined(),o=a&&null!==(t=(0,M.resolveOddCuttingId)(a,i.oddId,i.cuttingIndex))&&void 0!==t?t:i.cuttingIndex+1,l=s(S.yasuniCause);try{for(l.s();!(r=l.n()).done;){var c=r.value;if(!a||c.id===a.id){var d,u=s(c.odds);try{for(u.s();!(d=u.n()).done;){var p=d.value;if(p.id===i.oddId){var h=p.cuttings.find(function(e){return e.id===o});if(!h)break;return h.actionIds.map(function(e){return se.get(e)}).filter(function(e){return void 0!==e}).filter(function(e){return(0,k.isAdverseAction)(e)===("adverse"===n)})}}}catch(e){u.e(e)}finally{u.f()}}}}catch(e){l.e(e)}finally{l.f()}return[]}},{key:"debugInsertAdverseActions",value:function(e){var t;if(this.state.children.enabled||this.setChildrenEnabled(!0),!(e<=0)){var n,i=this.actionStackController.getItemsInStackOrder(),a=new Set(i.map(function(e){return e.actionId})),o=new Map,c=s(S.yasuniCause);try{var d=function(){var e,t=n.value,i=s(t.odds);try{var r=function(){var n=e.value;n.cuttings.forEach(function(e,i){var r,l=s(e.actionIds);try{for(l.s();!(r=l.n()).done;){var c=r.value;if(!a.has(c)){var d=se.get(c);d&&(0,k.isAdverseAction)(d)&&o.set(c,{componentId:t.id,oddId:n.id,cuttingIndex:i})}}}catch(e){l.e(e)}finally{l.f()}})};for(i.s();!(e=i.n()).done;)r()}catch(e){i.e(e)}finally{i.f()}};for(c.s();!(n=c.n()).done;)d()}catch(e){c.e(e)}finally{c.f()}var u=l(o.keys()).map(function(e){return se.get(e)}).filter(function(e){return void 0!==e}),p=O.yasuniAdverseKeyEvents.filter(function(e){return!a.has(e.id)}).map(function(e){return{id:e.id,delayedEffect:e}}),h=[].concat(l(u),l(p));if(0!==h.length){var f,g=s((0,_.planAdverseInsertions)({candidates:h,stack:i.map(function(e){return{actionId:e.actionId,slotIndex:e.slotIndex}}),count:e}));try{for(g.s();!(f=g.n()).done;){var v=f.value,m=v.actionId,y=v.slotIndex,b=E.yasuniKeyEventMap.get(m);if(b)this.actionStackController.addItemAtSlot({kind:"keyEvent",actionId:m,label:b.name,sourceChildKey:"",sourceOddId:"",sourceCuttingIndex:-1,sourceComponentId:b.originComposanteId,color:"rgba(242, 142, 142, 0.9)",effectiveDelta:0},y);else{var I=o.get(m),C=se.get(m);if(I&&C){var w,x=new Map,D=s(this.actionStackController.getEffectiveDeltaByActionId());try{for(D.s();!(w=D.n()).done;){var M=r(w.value,2),L=M[0],F=M[1],T=se.get(L);T&&0!==T.baseDelta&&x.set(L,F/T.baseDelta)}}catch(e){D.e(e)}finally{D.f()}var B=(0,A.evaluateCombo)(C,this.actionStackController.getSlotPaddedActionIds(y),x,this.state.combos);this.actionStackController.addItemAtSlot({kind:"action",actionId:m,label:C.name,sourceChildKey:"",sourceOddId:I.oddId,sourceCuttingIndex:I.cuttingIndex,sourceComponentId:I.componentId,color:null!==(t=P.causeOddColors[I.oddId])&&void 0!==t?t:"#9be8ff",effectiveDelta:(0,A.composeEffectiveDelta)(C.baseDelta,B),comboResults:B},y)}}}}catch(e){g.e(e)}finally{g.f()}}}}}],i=[{key:"weightToSizeRatio",value:function(t,n){var i=e.WEIGHT_SIZE_FLOOR_OFFSET;return(t+i)/(n+i)}}],n&&u(t.prototype,n),i&&u(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,n,i}();t.YinYangController=ce,ce.WEIGHT_SIZE_FLOOR_OFFSET=1},7578(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(e,t)||a(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function s(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,l(i.key),i)}}function l(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var c,d=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),u=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),p=this&&this.__importStar||(c=function(e){return c=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},c(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=c(e),i=0;i<n.length;i++)"default"!==n[i]&&d(t,e,n[i]);return u(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.ActionStackController=void 0;var h=p(n(600)),f=n(1123),g=n(5639),v=n(1204),m=n(2823),y=n(7519),b=n(8849),I=n(7233),C=n(9458),w=n(6982),x=n(5463),k=new Map(w.yasuniActions.map(function(e){return[e.id,e]})),S="#f28e8e";function _(e){if(e.isPlaceholder)return!1;if("keyEvent"===e.kind){var t=x.yasuniKeyEventMap.get(e.actionId);return!!t&&(0,x.isAdverseKeyEvent)(t)}if("action"!==e.kind)return!1;var n=k.get(e.actionId);return!!n&&(0,w.isAdverseAction)(n)}function A(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return _(e)?"".concat(S).concat(t):"".concat(e.color).concat(t)}function E(e){return _(e)?"".concat(S,"cc"):"#243047"}function O(e){return"keyEvent"===e.kind?(0,m.getKeyEventIconUrl)(e.actionId):(0,v.getActionIconUrl)(e.actionId)}var D=function(){return e=function e(t,n){var i=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.actionStackGroup=null,this.stackLayoutMetrics=null,this.actionStackLabelFontScale=1,this.historyButtonScale=1,this.fallingStackItemIds=new Set,this.keyboardListenersBound=!1,this._linkedHoverId=null,this.activeComboHighlight=null,this.flashComboHighlight=null,this.flashComboTimeout=null,this.resizeObserver=null,this._cachedNumVisibleSlots=-1,this.state=new I.ActionStackState(t,n);var r={updateVisual:function(){return i.updateVisual()},removeItem:function(e){i.state.removeItem(e),i.updateVisual()},toggleItemSelection:function(e,t){i.state.toggleItemSelection(e,t),i.updateVisual()},toggleRangeActivation:function(){i.state.toggleRangeActivation(),i.updateVisual()},setToolRange:function(e,t){i.state.setToolRange(e,t),i.updateVisual()},commitRangeMove:function(e,t,n){i.state.moveRangeTo(e,t,n),i.updateVisual()},expandRangeToBottom:function(){i.state.expandRangeToBottom(),i.updateVisual()},expandRangeToTop:function(){i.state.expandRangeToTop(),i.updateVisual()},selectAllRange:function(){i.state.selectAllRange(),i.updateVisual()},highlightByStackItemId:function(e){return i.highlightByStackItemId(e)},triggerBlockHighlight:function(e){var t;return null===(t=i._onBlockHighlightCb)||void 0===t?void 0:t.call(i,e)},triggerSatelliteHighlight:function(e){var t;return null===(t=i._onSatelliteHighlightCb)||void 0===t?void 0:t.call(i,e)},locateInSearch:function(e,t,n,r,a){var o;if("keyEvent"===a){var s=x.yasuniKeyEventMap.get(r);if(s&&(0,x.isAdverseKeyEvent)(s))return}null===(o=i.onLocateInSearch)||void 0===o||o.call(i,e,t,n,r,a)},selectSatelliteForItem:function(e,t,n,r){var a;return null===(a=i.onSelectSatellite)||void 0===a?void 0:a.call(i,e,t,n,r)}};this.drag=new C.ActionStackDragHandler(this.state,r)},(t=[{key:"setOnLocateInSearch",value:function(e){this.onLocateInSearch=e}},{key:"setOnSelectSatellite",value:function(e){this.onSelectSatellite=e}},{key:"setLabelFontScale",value:function(e){this.actionStackLabelFontScale=Math.max(.5,Math.min(3,e)),this.updateVisual()}},{key:"setHistoryButtonScale",value:function(e){this.historyButtonScale=Math.max(.5,Math.min(3,e)),this.updateVisual()}},{key:"highlightComboContext",value:function(e){null!==this.flashComboTimeout&&(clearTimeout(this.flashComboTimeout),this.flashComboTimeout=null),this.flashComboHighlight=null,this.activeComboHighlight=e,this.updateVisual()}},{key:"clearComboHighlight",value:function(){null!==this.flashComboTimeout&&(clearTimeout(this.flashComboTimeout),this.flashComboTimeout=null),this.flashComboHighlight=null,this.activeComboHighlight&&(this.activeComboHighlight=null,this.updateVisual())}},{key:"setBlockHighlightCallback",value:function(e){this._onBlockHighlightCb=e}},{key:"setSatelliteHighlightCallback",value:function(e){this._onSatelliteHighlightCb=e}},{key:"getItemById",value:function(e){return this.state.getItemById(e)}},{key:"highlightByStackItemId",value:function(e){this._linkedHoverId=e;var t=this;h.select(this.actionStackGroup).selectAll('g[data-role="action-stack-item"]').each(function(n){n.isPlaceholder||h.select(this).select('rect[data-role="action-stack-item-hitbox"]').style("stroke",e===n.id?A(n):t.state.activeItemIds.has(n.id)?A(n,"bb"):E(n)).style("stroke-width",e===n.id?"2":t.state.activeItemIds.has(n.id)?"1.5":_(n)?"1.2":"0.8").style("filter",e===n.id?"drop-shadow(0 0 7px ".concat(n.color,")"):t.state.activeItemIds.has(n.id)?"drop-shadow(0 0 5px ".concat(n.color,"55)"):"none")})}},{key:"flashComboContext",value:function(e){var t=this;this.activeComboHighlight||(null!==this.flashComboTimeout&&clearTimeout(this.flashComboTimeout),this.flashComboHighlight=e,this.updateVisual(),this.flashComboTimeout=setTimeout(function(){t.flashComboTimeout=null,t.flashComboHighlight=null,t.updateVisual()},1800))}},{key:"flashActionById",value:function(e){if(this.actionStackGroup){var t=h.select(this.actionStackGroup).selectAll('g[data-role="action-stack-item"]').filter(function(t){return t.actionId===e});t.empty()||t.interrupt("flash").style("filter",null).transition("flash").duration(180).ease(h.easeQuadOut).style("filter","drop-shadow(0 0 14px rgba(255, 240, 100, 0.98)) drop-shadow(0 0 22px rgba(255, 200, 40, 0.65))").transition().delay(380).duration(540).ease(h.easeCubicIn).style("filter",null)}}},{key:"canUndo",value:function(){return this.state.canUndo()}},{key:"canRedo",value:function(){return this.state.canRedo()}},{key:"undo",value:function(){this.state.undo(),this.updateVisual()}},{key:"redo",value:function(){this.state.redo(),this.updateVisual()}},{key:"clearAll",value:function(){this.state.clearAll(),this.updateVisual()}},{key:"clearToolRange",value:function(){this.state.clearToolRange(),this.updateVisual()}},{key:"deselectAllItems",value:function(){this.state.deselectAllItems(),this.updateVisual()}},{key:"getActionLabel",value:function(e){return this.state.getActionLabel(e)}},{key:"clickBookmark",value:function(e){this.state.clickBookmark(e),this.updateVisual()}},{key:"addItem",value:function(e,t,n){var i,r,a=null!==(r=null===(i=this.stackLayoutMetrics)||void 0===i?void 0:i.compactLength)&&void 0!==r?r:null;this.drag.stackInsertionPreviewIndex=null,this.drag.externalActionDragActive=!1,this.drag.dropZoneIsHot=!1;var o=this.state.addItem(e,null!=t?t:null,a);n&&this.drag.pendingStackItemEntryOrigins.set(o.id,n),this.updateVisual()}},{key:"addItemAtSlot",value:function(e,t){this.drag.stackInsertionPreviewIndex=null,this.drag.externalActionDragActive=!1,this.drag.dropZoneIsHot=!1;var n=this.state.addItemAtSlot(e,t);return this.updateVisual(),n}},{key:"syncActiveAction",value:function(e,t){this.state.syncActiveAction(e,t)&&this.updateVisual()}},{key:"setExternalDragActive",value:function(e){this.drag.setExternalDragActive(e)}},{key:"clearDropPreview",value:function(){this.drag.clearDropPreview()}},{key:"updateDropPreview",value:function(e,t,n){return this.drag.updateDropPreview(e,t,n)}},{key:"isDropZoneHit",value:function(e,t){return this.drag.isDropZoneHit(e,t)}},{key:"getInsertionPreviewIndex",value:function(){return this.drag.getInsertionPreviewIndex()}},{key:"isDragging",get:function(){return this.drag.isDragging}},{key:"getOrderedActionIds",value:function(){return this.state.getOrderedActionIds()}},{key:"getSlotPaddedActionIds",value:function(e,t){return this.state.getSlotPaddedActionIds(e,t)}},{key:"getNextTopSlot",value:function(){return this.state.getNextTopSlot()}},{key:"getItemsInStackOrder",value:function(){return this.state.getItemsInStackOrder()}},{key:"getEffectiveDeltaByActionId",value:function(){return this.state.getEffectiveDeltaByActionId()}},{key:"updateVisual",value:function(){var e=this._buildRenderContext();if(e){var t=null!==this.drag.draggingStackItemId;this._renderPanel(e),t||(this._renderFooterButtons(e),this._renderConfigBookmarks(e)),this._renderGhostSlots(e),t||this._renderTimeline(e);var n=this._renderItems(e).mergedItems;this._renderComboHighlight(e,n),this._renderUnifiedControl(e),this._renderDragGhost(e),t||this._bindItemInteractions(e,n)}}},{key:"_ensureWindowIndicatorDefs",value:function(e,t){var n="asw-core-".concat(e),i="asw-pulse",r="asw-blur",a=document.getElementById("action-stack-svg");if(!a)return{coreId:n,pulseId:i,blurId:r};var o=h.select(a),s=o.select("defs.asw-defs");if(s.empty()){var l=(s=o.insert("defs",":first-child").attr("class","asw-defs")).append("linearGradient").attr("id",i).attr("x1","0").attr("x2","1");l.append("stop").attr("offset","0").attr("stop-color","#fff").attr("stop-opacity","0"),l.append("stop").attr("offset","0.5").attr("stop-color","#fff").attr("stop-opacity","0.9"),l.append("stop").attr("offset","1").attr("stop-color","#fff").attr("stop-opacity","0"),s.append("filter").attr("id",r).attr("x","-20%").attr("y","-300%").attr("width","140%").attr("height","700%").append("feGaussianBlur").attr("stdDeviation","3")}if(s.select("#".concat(n)).empty()){var c=t.join(","),d=s.append("linearGradient").attr("id",n).attr("x1","0").attr("x2","1");d.append("stop").attr("offset","0").attr("stop-color","#fff").attr("stop-opacity","0.95"),d.append("stop").attr("offset","0.35").attr("stop-color","rgb(".concat(c,")")),d.append("stop").attr("offset","1").attr("stop-color","rgb(".concat(c,")")).attr("stop-opacity","0.55")}return{coreId:n,pulseId:i,blurId:r}}},{key:"_buildRenderContext",value:function(){var e=this,t=document.getElementById("action-stack-svg");if(!t)return null;if(this.ensureActionStackGroup(t),this.ensureResizeObserver(t),this.ensureKeyboardListeners(),!this.actionStackGroup)return null;var n=t.getBoundingClientRect();if(0===n.width||0===n.height)return null;var i=n.width,r=n.height,a=h.select(this.actionStackGroup);a.raise();var o=a.selectAll('g[data-role="action-stack-panel"]').data([1]),s=o.enter().append("g").attr("data-role","action-stack-panel");s.append("rect").attr("data-role","action-stack-bg").attr("rx",0).on("pointerdown",function(){return e.clearToolRange()}).style("fill","#090f1a").style("stroke","#1e2c45").style("stroke-width","1").style("filter","none"),s.append("line").attr("data-role","action-stack-separator").style("stroke","#1e2c45").style("stroke-width","1"),s.append("line").attr("data-role","action-stack-footer-separator").style("stroke","#1e2c45").style("stroke-width","1"),s.append("line").attr("data-role","action-stack-slot-separator").style("stroke","#1e2c45").style("stroke-width","1"),s.append("g").attr("data-role","stack-timeline-axis").style("pointer-events","none");var l=s.merge(o),c=this._computeLayout(n,i,r);return Object.assign({stackGroup:a,panelMerged:l},c)}},{key:"_computePreviewItems",value:function(){var e=this.drag.draggingRangeBlock;if(!e)return this.state.items;var t=e.ids,n=e.originalMinSlot,i=e.originalMaxSlot,r=i-n+1,a=this.state.toolRangeMin-n;if(0===a)return this.state.items;var o=a>0?i+1:n+a,s=a>0?i+a:n-1,l=a>0?-r:r;return this.state.items.map(function(e){return t.has(e.id)?Object.assign(Object.assign({},e),{slotIndex:e.slotIndex+a}):e.slotIndex>=o&&e.slotIndex<=s?Object.assign(Object.assign({},e),{slotIndex:e.slotIndex+l}):e})}},{key:"_computeLayout",value:function(e,t,n){var i,r,s=this,l=this.historyButtonScale,c=Math.round(28*l),d=Math.round(52*l),u=Math.round(30*l),p=Math.round(5*l),h=d+u+p,f=Math.round(8*l),g=Math.round(5*l),v=Math.floor((t-2*f-4*g)/5);this.state.ensureItemSlotIndices();var m=function(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(this._computePreviewItems()).reverse(),y=Math.round(30*this.actionStackLabelFontScale),b=0+n-h-Math.round(20*l),I=Math.max(40,t-80-10-18),C=40+I+9,w=0+c+2,x=Math.max(1,Math.min(this.state.ACTION_STACK_MAX_ITEMS,Math.floor((b-w)/y))),k=function(e){return b-e*y},S=this.drag.draggingStackItemId?m.filter(function(e){return e.id!==s.drag.draggingStackItemId}):m;this.stackLayoutMetrics={firstSlotCenterY:k(x-1),slotSpacing:y,compactLength:x},this.drag.setRenderGeometry({left:e.left,top:e.top,right:e.right,bottom:e.bottom},this.stackLayoutMetrics);var _,A=null!==this.drag.stackInsertionPreviewIndex&&(null!==this.drag.draggingStackItemId||this.drag.externalActionDragActive),E=A&&null!==this.drag.stackInsertionPreviewIndex?Math.max(0,x-1-this.drag.stackInsertionPreviewIndex):null,O=null!==E&&S.some(function(e){return e.slotIndex===E}),D=function(e){return{id:"__stack-placeholder__",kind:"action",actionId:"",label:"",sourceChildKey:"",sourceOddId:"",sourceCuttingIndex:0,sourceComponentId:"",color:"rgba(255, 228, 152, 0.35)",validatedAt:0,effectiveDelta:0,slotIndex:e,isPlaceholder:!0}};if(A&&O&&null!==E)if(null!==this.drag.draggingStackItemId){var M=null!==(r=null===(i=this.state.items.find(function(e){return e.id===s.drag.draggingStackItemId}))||void 0===i?void 0:i.slotIndex)&&void 0!==r?r:E,L=S.map(function(e){return Object.assign(Object.assign({},e),e.slotIndex===E?{isDisplacedPreview:!0,slotIndex:M}:{})});L.push(D(E)),_=L}else{var F=S.map(function(e){return e.slotIndex>=E?Object.assign(Object.assign({},e),{slotIndex:e.slotIndex+1}):e});F.push(D(E)),_=F}else _=S;return{x:0,y:0,panelWidthInGroup:t,panelHeightInGroup:n,s:l,headerH:c,btnZoneH:d,bookmarkBarH:u,bookmarkBarGap:p,footerHeight:h,bottomY:b,leftPad:10,labelXOffset:40,loupeZoneW:18,maxLabelWidth:I,loupeX:C,slotSpacing:y,numVisibleSlots:x,itemsZoneTop:w,getSlotY:k,visibleItems:m,compactVisibleItems:S,renderedItems:_,placeholderVisible:A,previewSlotIndex:E,isPreviewOnOccupied:O,occupiedSlots:new Set(S.map(function(e){return e.slotIndex})),N:_.length,footerBtnPadX:f,footerBtnW:v}}},{key:"_renderPanel",value:function(e){var t=e.panelMerged,n=e.x,i=e.y,r=e.panelWidthInGroup,a=e.panelHeightInGroup,o=e.s,s=e.headerH,l=e.btnZoneH,c=(e.bookmarkBarH,e.bookmarkBarGap,e.footerHeight);Math.round(5*o),t.select('rect[data-role="action-stack-bg"]').attr("x",n).attr("y",i).attr("width",r).attr("height",a).style("stroke",this.drag.dropZoneIsHot?"rgba(190, 155, 50, 0.80)":"#1e2c45").style("stroke-width",this.drag.dropZoneIsHot?"1.5":"1").style("filter",this.drag.dropZoneIsHot?"drop-shadow(0 0 8px rgba(190, 155, 50, 0.35))":"none"),t.select('line[data-role="action-stack-separator"]').attr("x1",n+10).attr("y1",i+s).attr("x2",n+r-10).attr("y2",i+s),t.select('line[data-role="action-stack-footer-separator"]').attr("x1",n+10).attr("y1",i+a-c).attr("x2",n+r-10).attr("y2",i+a-c),t.select('line[data-role="action-stack-slot-separator"]').attr("x1",n+10).attr("y1",i+a-l).attr("x2",n+r-10).attr("y2",i+a-l),t.selectAll('text[data-role="action-stack-title"]').data([1]).join("text").attr("data-role","action-stack-title").attr("x",n+r/2).attr("y",i+Math.round(.64*s)).attr("text-anchor","middle").style("font-size","".concat(Math.round(10*this.actionStackLabelFontScale),"px")).style("letter-spacing","0.10em").style("font-weight","700").style("fill","#7ab8d8").style("text-transform","uppercase").text("Actions")}},{key:"_renderFooterButtons",value:function(e){var t=this,n=e.stackGroup,i=e.x,r=e.y,a=(e.panelWidthInGroup,e.panelHeightInGroup),o=e.s,s=e.btnZoneH,l=e.footerBtnPadX,c=e.footerBtnW,d=Math.round(5*o),u=Math.round(30*o),p=r+a-s+Math.round((s-u)/2),f=[{key:"undo",icon:"↶",label:"Undo",x:i+l,y:p,onClick:function(){return t.undo()},enabled:this.canUndo(),title:"Undo (Ctrl+Z)",isDestructive:!1},{key:"redo",icon:"↷",label:"Redo",x:i+l+c+d,y:p,onClick:function(){return t.redo()},enabled:this.canRedo(),title:"Redo (Ctrl+Y)",isDestructive:!1},{key:"clear-all",icon:"⊗",label:"Clear",x:i+l+2*(c+d),y:p,onClick:function(){return t.clearAll()},enabled:this.state.items.length>0,title:"Clear all",isDestructive:!0},{key:"copy-range",icon:"⎘",label:"Copier",x:i+l+3*(c+d),y:p,onClick:function(){return t.copyRangeToClipboard()},enabled:null!==this.state.getToolBlock(),title:"Copier la plage sélectionnée",isDestructive:!1},{key:"paste-clipboard",icon:"⎗",label:"Coller",x:i+l+4*(c+d),y:p,onClick:function(){return t.pasteClipboard()},enabled:this.state.hasClipboard(),title:"Coller la plage copiée dans cette pile",isDestructive:!1}],g=n.selectAll('g[data-role="action-stack-history-button"]').data(f,function(e){return e.key}),v=g.enter().append("g").attr("data-role","action-stack-history-button").style("cursor","pointer");v.append("rect").attr("rx",5).attr("x",-c/2).attr("y",-u/2).style("stroke-width","1.2"),v.append("text").attr("data-role","hbtn-icon").attr("x",0).attr("y",0).attr("dy","0.36em").attr("text-anchor","middle").style("font-weight","700").style("pointer-events","none"),g.merge(v).attr("transform",function(e){return"translate(".concat(e.x+c/2,", ").concat(e.y+u/2,")")}).attr("aria-label",function(e){return e.title}).style("pointer-events",function(e){return e.enabled?"auto":"none"}).style("opacity",function(e){return e.enabled?1:.38}).on("click",function(e,t){t.onClick()}).each(function(e){var t=h.select(this),n=e.isDestructive?"#7a3a3a":"#3a5a8a",i=e.isDestructive?"rgba(26, 10, 10, 0.60)":"rgba(9, 18, 34, 0.80)",r=e.isDestructive&&e.enabled?"#c06060":e.enabled?"#7ab8d8":"#2a3a4c";t.select("rect").attr("x",-c/2).attr("y",-u/2).attr("width",c).attr("height",u).style("fill",e.enabled?i:"rgba(4, 12, 26, 0.40)").style("stroke",e.enabled?n:"#1e2c45").style("filter",(e.enabled,"none")),t.select('text[data-role="hbtn-icon"]').text(e.icon).style("font-size","".concat(Math.round(18*o),"px")).style("fill",r)})}},{key:"_renderConfigBookmarks",value:function(e){var t=this,n=e.stackGroup,i=e.x,r=e.y,a=e.panelWidthInGroup,o=e.panelHeightInGroup,s=e.s,l=e.btnZoneH,c=e.bookmarkBarH,d=e.bookmarkBarGap,u=e.footerBtnPadX,p=Math.round(4*s),h=Math.floor((a-2*u-p*(this.state.CONFIG_BOOKMARKS_MAX-1))/this.state.CONFIG_BOOKMARKS_MAX),f=Math.round(26*s),g=r+o-l-d-c/2,v=i+u,m=Array.from({length:this.state.CONFIG_BOOKMARKS_MAX},function(e,n){return{index:n,state:t.state.configBookmarks[n].state,dominantColor:t.state.configBookmarks[n].dominantColor,isActive:t.state.activeBookmarkIndex===n,btnX:v+n*(h+p),btnY:g-f/2}}),y=n.selectAll('g[data-role="config-bookmark-btn"]').data(m,function(e){return e.index}),b=y.enter().append("g").attr("data-role","config-bookmark-btn");b.append("rect").attr("rx",4),b.append("text").attr("data-role","config-bookmark-label").attr("text-anchor","middle").style("pointer-events","none"),b.append("text").attr("data-role","config-bookmark-icon").attr("text-anchor","middle").style("pointer-events","none");var I=b.merge(y);I.attr("transform",function(e){return"translate(".concat(e.btnX,", ").concat(e.btnY,")")}).style("cursor","pointer").style("pointer-events","auto").on("click",function(e,n){e.preventDefault(),e.stopPropagation(),t.clickBookmark(n.index)});var C=["A","B","C","D"];I.select("rect").attr("x",0).attr("y",0).attr("width",h).attr("height",f).style("fill",function(e){return"unlocked"===e.state?"rgba(24, 16, 4, 0.80)":"locked"===e.state&&e.isActive?"rgba(9, 18, 34, 0.85)":"locked"===e.state?"rgba(9, 18, 34, 0.65)":"empty"===e.state&&e.isActive?"rgba(9, 18, 34, 0.50)":"rgba(9, 15, 26, 0.25)"}).style("stroke",function(e){return"unlocked"===e.state?"#8a6020":"locked"===e.state&&e.isActive?"#3a7abf":"locked"===e.state?"#2a4a6a":"empty"===e.state&&e.isActive?"#3a7abf":"#1e2c45"}).style("stroke-width",function(e){return"unlocked"===e.state||"locked"===e.state&&e.isActive?"1.5":"locked"===e.state?"1":"empty"===e.state&&e.isActive?"1.5":"1"}).style("stroke-dasharray",function(e){return"empty"===e.state?"3 2":null}).style("filter",function(e){return"unlocked"===e.state?"drop-shadow(0 0 4px rgba(200, 154, 48, 0.40))":"locked"===e.state&&e.isActive?"drop-shadow(0 0 4px rgba(58, 122, 191, 0.40))":"empty"===e.state&&e.isActive?"drop-shadow(0 0 3px rgba(58, 122, 191, 0.25))":"none"}),I.select('text[data-role="config-bookmark-label"]').attr("x",h/2).attr("y",function(e){return"empty"===e.state?f/2:Math.round(.38*f)}).attr("dy","0.36em").text(function(e){return C[e.index]}).style("font-size","".concat(Math.round(12*s),"px")).style("font-weight","700").style("fill",function(e){return"unlocked"===e.state?"#c89a30":"locked"===e.state&&e.isActive?"#7ab8d8":"locked"===e.state?"#4a6888":"empty"===e.state&&e.isActive?"#4a7ab8":"#2a3a54"}),I.select('text[data-role="config-bookmark-icon"]').attr("x",h/2).attr("y",Math.round(.8*f)).attr("dy","0.36em").text(function(e){return"locked"===e.state?"🔒":""}).style("font-size","".concat(Math.round(8*s),"px")).style("display",function(e){return"locked"===e.state?"":"none"})}},{key:"_renderGhostSlots",value:function(e){var t=e.panelMerged,n=e.x,i=e.panelWidthInGroup,r=e.placeholderVisible,a=e.previewSlotIndex,o=e.isPreviewOnOccupied,s=e.occupiedSlots,l=e.numVisibleSlots,c=e.getSlotY,d=r&&null!==a&&!o?a:null,u=Array.from({length:l},function(e,t){return t});if(l!==this._cachedNumVisibleSlots){this._cachedNumVisibleSlots=l;var p=t.selectAll('rect[data-role="stack-ghost-slot"]').data(u,function(e){return e});p.exit().remove(),p.enter().append("rect").attr("data-role","stack-ghost-slot").style("pointer-events","none");var h=t.selectAll('text[data-role="stack-ghost-slot-dots"]').data(u,function(e){return e});h.exit().remove(),h.enter().append("text").attr("data-role","stack-ghost-slot-dots").attr("text-anchor","middle").attr("dominant-baseline","central").style("pointer-events","none").style("letter-spacing","0.30em").style("user-select","none");var f=t.selectAll('text[data-role="stack-ghost-slot-number"]').data(u,function(e){return e});f.exit().remove(),f.enter().append("text").attr("data-role","stack-ghost-slot-number").attr("text-anchor","end").attr("dominant-baseline","central").style("pointer-events","none").style("user-select","none")}t.selectAll('rect[data-role="stack-ghost-slot"]').attr("x",n+6).attr("y",function(e){return c(e)-11}).attr("width",i-12).attr("height",22).attr("rx",5).style("display",function(e){return s.has(e)?"none":""}).style("fill",function(e){return e===d?"rgba(255, 228, 152, 0.10)":"rgba(4, 10, 20, 0.75)"}).style("stroke",function(e){return e===d?"rgba(255, 228, 152, 0.70)":"none"}).style("stroke-dasharray",null).style("stroke-width",function(e){return e===d?"1.2":"0"}),t.selectAll('text[data-role="stack-ghost-slot-dots"]').attr("x",n+6+(i-12)/2).attr("y",function(e){return c(e)}).style("display",function(e){return s.has(e)?"none":""}).style("font-size",function(e){return e===d?"9px":"8px"}).style("fill",function(e){return e===d?"rgba(255, 228, 152, 0.60)":"rgba(38, 80, 120, 0.55)"}).text("· · ·"),t.selectAll('text[data-role="stack-ghost-slot-number"]').attr("x",n+6+i-12-5).attr("y",function(e){return c(e)}).style("display",function(e){return s.has(e)?"none":""}).style("font-size","8px").style("fill",function(e){return e===d?"rgba(255, 228, 152, 0.55)":"rgba(38, 72, 108, 0.50)"}).text(function(e){return"".concat(e+1)})}},{key:"_renderTimeline",value:function(e){var t=e.panelMerged,n=e.x,i=e.itemsZoneTop,r=e.bottomY,a=e.slotSpacing,o=e.numVisibleSlots,s=e.occupiedSlots,l=e.getSlotY,c=n+4,d=i+4,u=r+Math.round(a/2),p=c-6,h=t.select('g[data-role="stack-timeline-axis"]');h.selectAll('rect[data-role="stack-timeline-band"]').data([1]).join("rect").attr("data-role","stack-timeline-band").attr("x",p).attr("y",d).attr("width",22).attr("height",Math.max(0,u-d)).attr("rx",6).style("fill","rgba(60, 120, 170, 0.07)").style("stroke","rgba(80, 150, 200, 0.18)").style("stroke-width","1"),h.selectAll('text[data-role="stack-timeline-hourglass"]').data([1]).join("text").attr("data-role","stack-timeline-hourglass").attr("x",c).attr("y",d-8).attr("text-anchor","middle").attr("dominant-baseline","central").style("font-size","10px").style("opacity","0.55").text("⏳"),h.selectAll('line[data-role="stack-timeline-line"]').data([1]).join("line").attr("data-role","stack-timeline-line").attr("x1",c).attr("y1",u).attr("x2",c).attr("y2",d+8).style("stroke","rgba(80, 150, 200, 0.55)").style("stroke-width","1.3"),h.selectAll('path[data-role="stack-timeline-arrow"]').data([1]).join("path").attr("data-role","stack-timeline-arrow").attr("d","M ".concat(c," ").concat(d," L ").concat(c-3," ").concat(d+7," L ").concat(c+3," ").concat(d+7," Z")).style("fill","rgba(80, 150, 200, 0.70)").style("stroke","none");var f=Array.from({length:o},function(e,t){return t});h.selectAll('line[data-role="stack-timeline-tick"]').data(f,function(e){return e}).join("line").attr("data-role","stack-timeline-tick").attr("x1",c-2).attr("x2",c+2).attr("y1",function(e){return l(e)}).attr("y2",function(e){return l(e)}).style("stroke",function(e){return s.has(e)?"rgba(110, 190, 230, 0.75)":"rgba(80, 150, 200, 0.45)"}).style("stroke-width",function(e){return s.has(e)?"1.5":"1.1"})}},{key:"_renderItems",value:function(e){var t=this,n=e.stackGroup,i=e.x,a=e.y,o=e.panelWidthInGroup,s=e.leftPad,l=e.labelXOffset,c=e.maxLabelWidth,d=e.loupeX,u=e.renderedItems,p=e.placeholderVisible,v=e.getSlotY,m=this,y=n.selectAll('g[data-role="action-stack-item"]').data(u,function(e){return e.id});y.exit().remove();var I=y.enter().append("g").attr("data-role","action-stack-item").attr("data-stack-item-id",function(e){var t;return null!==(t=e.id)&&void 0!==t?t:""}).style("cursor","grab").style("opacity",0).attr("transform",function(e){return e.isPlaceholder?"translate(".concat(i+26+s,", ").concat(v(e.slotIndex),")"):t.drag.pendingSwapDropY.has(e.id)?"translate(".concat(i+26+s,", ").concat(t.drag.pendingSwapDropY.get(e.id),")"):"translate(".concat(i+26+s,", ").concat(a+22,")")});I.each(function(e){if(m.drag.pendingStackItemEntryOrigins.delete(e.id),e.isPlaceholder)h.select(this).style("opacity",1);else{var t=v(e.slotIndex),n=m.drag.pendingSwapDropY.get(e.id);m.drag.pendingSwapDropY.delete(e.id),void 0===n?(m.fallingStackItemIds.add(e.id),h.select(this).transition().duration(25).style("opacity",1).transition().duration(300).ease(h.easeCubicIn).attr("transform","translate(".concat(i+26+s,", ").concat(t+18,")")).transition().duration(120).ease(h.easeQuadOut).attr("transform","translate(".concat(i+26+s,", ").concat(t-9,")")).transition().duration(80).ease(h.easeQuadIn).attr("transform","translate(".concat(i+26+s,", ").concat(t+4,")")).transition().duration(60).ease(h.easeQuadOut).attr("transform","translate(".concat(i+26+s,", ").concat(t-1,")")).transition().duration(50).ease(h.easeLinear).attr("transform","translate(".concat(i+26+s,", ").concat(t,")")).on("end",function(){m.fallingStackItemIds.delete(e.id)})):h.select(this).style("opacity",1).transition("stack-reflow").duration(220).ease(h.easeCubicOut).attr("transform","translate(".concat(i+26+s,", ").concat(t,")"))}});var C=Math.round(22*this.actionStackLabelFontScale);I.append("rect").attr("data-role","action-stack-item-hitbox").attr("x",-(20+s)).attr("y",-Math.round(C/2)).attr("rx",5).attr("width",Math.max(58,o-12)).attr("height",C).style("fill",function(e){return e.isPlaceholder?"rgba(255, 228, 152, 0.10)":"rgba(5, 12, 24, 0.90)"}).style("stroke",function(e){return e.isPlaceholder?"rgba(255, 228, 152, 0.85)":"rgba(60, 205, 255, 0.45)"}).style("stroke-width",function(e){return e.isPlaceholder?"1.3":"1.1"}),I.append("text").attr("text-anchor","middle").attr("dominant-baseline","central").attr("x",0).attr("y",0).style("font-size",function(e){return"".concat(Math.round(12*t.actionStackLabelFontScale),"px")}).style("pointer-events","none").style("fill","#6a7a99").attr("data-role","action-stack-item-label"),I.append("circle").attr("data-role","action-stack-item-icon-medallion").attr("cx",0).attr("cy",0).attr("r",11).style("fill","#171009").style("stroke","#ffc870").style("stroke-width","1.6").style("pointer-events","none"),(0,b.appendYinYangWatermark)(I),(0,b.styleYinYangWatermark)(I,{radius:10}),I.append("image").attr("data-role","action-stack-item-icon-img").attr("x",-9).attr("y",-9).attr("width",18).attr("height",18).style("pointer-events","none").attr("href",function(e){return e.isPlaceholder?null:O(e)}),I.append("rect").attr("data-role","action-stack-item-checkbox-bg").attr("x",16).attr("y",-6).attr("width",12).attr("height",12).attr("rx",2.5).style("pointer-events","none"),I.append("path").attr("data-role","action-stack-item-tick").attr("d","M 17.5 0.5 L 20 3.5 L 26.5 -3.5").style("fill","none").style("stroke-linecap","round").style("stroke-linejoin","round").style("pointer-events","none").style("display","none"),I.append("text").attr("x",l).attr("y",4).attr("text-anchor","start").attr("data-role","action-stack-item-text-label").style("font-size",function(e){return"".concat(Math.round(10*t.actionStackLabelFontScale),"px")}).style("fill","#6a7a99").style("letter-spacing","0.02em").style("user-select","none").style("cursor","pointer").text(function(e){return e.isPlaceholder?"":(0,g.truncateStackLabel)(e.label,c,10*t.actionStackLabelFontScale)});var w=I.append("g").attr("data-role","action-stack-item-locate").style("cursor","pointer").style("pointer-events",function(e){return e.isPlaceholder?"none":"auto"});w.append("title").text("Naviguer vers le satellite de cette action"),w.append("rect").attr("x",-7).attr("y",-7).attr("width",14).attr("height",14).style("fill","rgba(0,0,0,0)").style("stroke","none").style("pointer-events","all"),w.append("circle").attr("cx",0).attr("cy",0).attr("r",3.8).style("fill","none").style("stroke-width","1.1").style("pointer-events","none");for(var x=0,k=[[0,-3.8,0,-6],[0,3.8,0,6],[-3.8,0,-6,0],[3.8,0,6,0]];x<k.length;x++){var D=r(k[x],4),M=D[0],L=D[1],F=D[2],T=D[3];w.append("line").attr("x1",M).attr("y1",L).attr("x2",F).attr("y2",T).style("stroke-linecap","round").style("stroke-width","1.1").style("pointer-events","none")}var P=I.merge(y);if(I.size()>0&&!p)y.each(function(e){m.fallingStackItemIds.has(e.id)||h.select(this).style("opacity",1).attr("transform","translate(".concat(i+26+s,", ").concat(v(e.slotIndex),")"))});else{var B=null!==this.drag.draggingStackItemId||this.drag.externalActionDragActive?160:f.animationConfig.stackItemReflowDurationMs;P.each(function(e){if(!m.fallingStackItemIds.has(e.id)){var t=e.isDisplacedPreview?.65:1,n="translate(".concat(i+26+s,", ").concat(v(e.slotIndex),")");h.select(this).transition("stack-reflow").duration(B).ease(h.easeCubicOut).style("opacity",t).attr("transform",n)}})}P.selectAll('circle[data-role="action-stack-item-icon-bubble"]').remove(),P.selectAll('g[data-role="action-stack-item-checkbox"]').remove(),P.select('rect[data-role="action-stack-item-hitbox"]').attr("x",-(20+s)).attr("y",-Math.round(C/2)).attr("height",C).attr("rx",5).attr("width",Math.max(58,o-12)).style("fill",function(e){return e.isPlaceholder?"rgba(255, 228, 152, 0.08)":t.state.activeItemIds.has(e.id)?"".concat(e.color,"1a"):"rgba(9, 15, 26, 0.60)"}).style("stroke",function(e){return e.isPlaceholder?"rgba(200, 180, 100, 0.70)":t._linkedHoverId===e.id?A(e):t.state.activeItemIds.has(e.id)?A(e,"bb"):E(e)}).style("stroke-width",function(e){return e.isPlaceholder?"1":t._linkedHoverId===e.id?"2":t.state.activeItemIds.has(e.id)?"1.5":_(e)?"1.2":"0.8"}).style("stroke-dasharray",function(e){return e.isPlaceholder?"4 3":e.isDisplacedPreview?"3 2":null}).style("filter",function(e){return e.isPlaceholder?"none":t._linkedHoverId===e.id?"drop-shadow(0 0 7px ".concat(e.color,")"):t.state.activeItemIds.has(e.id)?"drop-shadow(0 0 5px ".concat(e.color,"55)"):"none"}),P.each(function(e,n,i){var r=h.select(i[n]),a=e;r.selectAll('rect[data-role="action-stack-item-icon-bg"]').data([null]).join(function(e){return e.insert("rect",'text[data-role="action-stack-item-label"]').attr("data-role","action-stack-item-icon-bg").attr("rx",5).style("pointer-events","none")}).attr("x",-10).attr("y",-10).attr("width",20).attr("height",20).style("fill",function(){return a.isPlaceholder?"rgba(255, 228, 152, 0.10)":t.state.activeItemIds.has(a.id)?"".concat(a.color,"70"):"transparent"}),r.selectAll('rect[data-role="action-stack-item-checkbox-bg"]').data([null]).join(function(e){return e.append("rect").attr("data-role","action-stack-item-checkbox-bg").attr("x",16).attr("y",-6).attr("width",12).attr("height",12).attr("rx",2.5).style("pointer-events","none")}),r.selectAll('path[data-role="action-stack-item-tick"]').data([null]).join(function(e){return e.append("path").attr("data-role","action-stack-item-tick").attr("d","M 17.5 0.5 L 20 3.5 L 26.5 -3.5").style("fill","none").style("stroke-linecap","round").style("stroke-linejoin","round").style("pointer-events","none")})}),P.select('text[data-role="action-stack-item-label"]').attr("x",0).style("font-size",function(){return"".concat(Math.round(12*t.actionStackLabelFontScale),"px")}).style("fill",function(e){return e.isPlaceholder?"rgba(255, 228, 152, 0.80)":_(e)?S:t.state.activeItemIds.has(e.id)?"#c4daf5":"#6a7a99"}).style("filter",function(e){return!e.isPlaceholder&&t.state.activeItemIds.has(e.id)?"drop-shadow(0 0 2px rgba(0,0,0,0.8))":"none"});var G=function(e){return!e.isPlaceholder&&"keyEvent"===e.kind};return P.select('image[data-role="action-stack-item-icon-img"]').style("display",function(e){return e.isPlaceholder?"none":""}).attr("href",function(e){return e.isPlaceholder?null:O(e)}).attr("x",function(e){return G(e)?-7:-9}).attr("y",function(e){return G(e)?-7:-9}).attr("width",function(e){return G(e)?14:18}).attr("height",function(e){return G(e)?14:18}),P.select('circle[data-role="action-stack-item-icon-medallion"]').style("display",function(e){return G(e)?"":"none"}),P.select('g[data-role="yinyang-watermark"]').style("display",function(e){return G(e)?"":"none"}),P.select('path[data-role="action-stack-item-tick"]').style("display",function(e){return!e.isPlaceholder&&t.state.activeItemIds.has(e.id)?"":"none"}).style("stroke","rgba(255, 255, 255, 0.92)").style("stroke-width","".concat(Math.round(1.8*this.actionStackLabelFontScale),"px")),P.select('rect[data-role="action-stack-item-checkbox-bg"]').style("display",function(e){return e.isPlaceholder?"none":""}).style("fill",function(e){return t.state.activeItemIds.has(e.id)?"".concat(e.color,"70"):"rgba(10, 18, 32, 0.80)"}).style("stroke",function(e){return t.state.activeItemIds.has(e.id)?"".concat(e.color,"cc"):"rgba(80, 120, 160, 0.55)"}).style("stroke-width",function(e){return t.state.activeItemIds.has(e.id)?"1.5":"1.1"}),P.select('text[data-role="action-stack-item-text-label"]').text(function(e){return e.isPlaceholder?"":(0,g.truncateStackLabel)(e.label,c,10*t.actionStackLabelFontScale)}).style("font-size",function(){return"".concat(Math.round(10*t.actionStackLabelFontScale),"px")}).style("fill",function(e){return e.isPlaceholder?"rgba(200, 180, 100, 0.80)":_(e)?S:t.state.activeItemIds.has(e.id)?"#9fb3d8":"#6a7a99"}),P.select('g[data-role="action-stack-item-locate"]').attr("transform","translate(".concat(d,", 0)")).style("display",function(e){return e.isPlaceholder||"keyEvent"===e.kind&&_(e)?"none":""}).style("stroke",function(e){return t.state.activeItemIds.has(e.id)?"rgba(120,190,255,0.75)":"rgba(60,110,170,0.50)"}),{mergedItems:P}}},{key:"_renderComboHighlight",value:function(e,t){var n,i,r,a=e.stackGroup,o=e.panelMerged,s=e.x,l=e.renderedItems,c=e.previewSlotIndex,d=(e.placeholderVisible,e.slotSpacing,e.panelWidthInGroup),u=e.leftPad,p=e.getSlotY,f=e.N,g=e.numVisibleSlots,v=this;t.selectAll('[data-role="action-stack-window-indicator"]').remove(),o.selectAll('[data-role="action-stack-window-indicator"]').remove();var m=null!==(n=this.activeComboHighlight)&&void 0!==n?n:this.flashComboHighlight;if(m&&f>0){var b;if(m.sourceItemId&&this.drag.draggingStackItemId===m.sourceItemId)b=null!=c?c:-1;else{var I=m.sourceItemId?l.findIndex(function(e){return e.id===m.sourceItemId}):0,C=I>=0?l[I]:null;b=C?C.slotIndex:-1}var w=null!==(i=m.direction)&&void 0!==i?i:"backward",x="forward"===w?b>=0?b+1:0:b>=0&&void 0!==m.withinLastN?Math.max(0,b-m.withinLastN):b>=0?0:b+1,k="forward"===w?b>=0?Math.min(g-1,void 0!==m.withinLastN?b+m.withinLastN:g-1):-1:b>=0?b-1:-1,S=null!==(r={preparation:{stroke:"rgba(100, 255, 160, 0.95)",rgb:[100,255,160],filter:"drop-shadow(0 0 9px rgba(72, 240, 130, 0.75))",fillAlpha:"rgba(72, 222, 128, 0.30)",text:"rgba(130, 255, 175, 1)"},exploitation:{stroke:"rgba(100, 220, 255, 0.95)",rgb:[100,220,255],filter:"drop-shadow(0 0 9px rgba(80, 200, 255, 0.75))",fillAlpha:"rgba(80, 200, 255, 0.30)",text:"rgba(130, 230, 255, 1)"},stabilisation:{stroke:"rgba(255, 240, 100, 0.95)",rgb:[255,240,100],filter:"drop-shadow(0 0 9px rgba(255, 230, 70, 0.75))",fillAlpha:"rgba(255, 230, 80, 0.30)",text:"rgba(255, 245, 140, 1)"},dangereux:{stroke:"rgba(255, 120, 100, 0.95)",rgb:[255,120,100],filter:"drop-shadow(0 0 9px rgba(255, 90, 70, 0.75))",fillAlpha:"rgba(255, 100, 80, 0.30)",text:"rgba(255, 160, 140, 1)"},amplification:{stroke:"rgba(95, 216, 122, 0.95)",rgb:[95,216,122],filter:"drop-shadow(0 0 9px rgba(95, 216, 122, 0.75))",fillAlpha:"rgba(95, 216, 122, 0.30)",text:"rgba(140, 230, 160, 1)"}}[m.type])&&void 0!==r?r:{stroke:"rgba(200, 200, 220, 0.9)",filter:"drop-shadow(0 0 9px rgba(200, 200, 220, 0.6))",fillAlpha:"rgba(200, 200, 220, 0.25)",text:"rgba(220, 220, 235, 1)",rgb:[200,200,220]},_=this._ensureWindowIndicatorDefs(m.type,S.rgb),E=Math.max(58,d-12),O=-(20+u),D=Math.round(22*v.actionStackLabelFontScale),M=Math.round(D/2)-3-1,L=k-x,F=function(e,t,n,i){var r=function(e){return(0,y.occupiedSlotPositionalEfficiency)(e,x,L)}(t),a=r<=.005,o=a?3:Math.max(3,r*E),s=e.append("g").attr("data-role","action-stack-window-indicator").attr("class","asw-gauge").style("pointer-events","none");if(a)s.append("rect").attr("x",n).attr("y",i).attr("rx",1.5).attr("width",o).attr("height",3).style("fill","rgba(150, 150, 170, 0.35)");else{s.append("rect").attr("class","asw-gauge__halo").attr("x",n).attr("y",i-1.5).attr("rx",3).attr("width",o).attr("height",6).style("fill","rgba(".concat(S.rgb.join(","),", 0.6)")).style("filter","url(#".concat(_.blurId,")")),s.append("rect").attr("class","asw-gauge__core").attr("x",n).attr("y",i).attr("rx",1.5).attr("width",o).attr("height",3).style("fill","url(#".concat(_.coreId,")"));var l="asw-clip-".concat(t);s.append("clipPath").attr("id",l).append("rect").attr("x",n).attr("y",i-2).attr("width",o).attr("height",7),s.append("rect").attr("class","asw-gauge__pulse".concat("forward"===w?" asw-gauge__pulse--forward":"")).attr("clip-path","url(#".concat(l,")")).attr("x",n-40).attr("y",i).attr("width",40).attr("height",3).style("--asw-travel","".concat(o+40,"px")).style("fill","url(#".concat(_.pulseId,")"))}};t.each(function(e){if(!e.isPlaceholder){var t=h.select(this),n=e.slotIndex===b,i=e.slotIndex>=x&&e.slotIndex<=k,r=m.requires.includes(e.actionId);n?(t.style("opacity",1),t.select('rect[data-role="action-stack-item-hitbox"]').style("stroke",A(e,"cc")).style("stroke-width","1").style("filter",null)):i&&r?(t.style("opacity",1),t.select('rect[data-role="action-stack-item-hitbox"]').style("stroke",S.stroke).style("stroke-width","2.2").style("filter",S.filter)):i?(t.style("opacity",.42),t.select('rect[data-role="action-stack-item-hitbox"]').style("stroke",A(e,"cc")).style("stroke-width","1").style("filter",null)):(t.style("opacity",1),t.select('rect[data-role="action-stack-item-hitbox"]').style("stroke",A(e,"cc")).style("stroke-width","1").style("filter",null)),i&&F(t,e.slotIndex,O,M)}});for(var T=new Set(l.filter(function(e){return!e.isPlaceholder}).map(function(e){return e.slotIndex})),P=s+6,B=x;B<=k;B++)T.has(B)||F(o,B,P,p(B)+M)}else t.each(function(e){if(!e.isPlaceholder){var t=h.select(this);t.style("opacity",1);var n=t.select('rect[data-role="action-stack-item-hitbox"]');v._linkedHoverId===e.id?n.style("stroke",A(e)).style("stroke-width","2").style("filter","drop-shadow(0 0 7px ".concat(e.color,")")):n.style("stroke",A(e,"cc")).style("stroke-width","1").style("filter",null)}}),a.selectAll('g[data-role="action-stack-combo-window"]').remove()}},{key:"_renderUnifiedControl",value:function(e){var t,n=this,i=e.stackGroup,r=e.x,a=e.itemsZoneTop,o=e.bottomY,s=e.placeholderVisible,l=e.slotSpacing,c=e.numVisibleSlots,d=e.getSlotY,u=r+4,p=i.selectAll('rect[data-role="stack-timeline-gutter"]').data(s?[]:[1]).join("rect").attr("data-role","stack-timeline-gutter").attr("x",u-6).attr("y",a+4).attr("width",22).attr("height",Math.max(0,o+Math.round(l/2)-(a+4))).style("fill","transparent").style("cursor","ns-resize").style("pointer-events","auto").raise();this.drag.bindGutterSelectInteraction(p),i.selectAll('g[data-role="action-stack-cumulative-control"]').remove();var h=this.drag.draggingStackItemId||s?null:this.state.getToolBlock(),f=this.drag.draggingStackItemId||s?null:this.state.getToolRangeBounds(),g=null!==f,v=g&&null===h,m=i.selectAll('g[data-role="stack-unified-ctrl"]').data(g?[1]:[]);m.exit().remove();var y=m.enter().append("g").attr("data-role","stack-unified-ctrl"),b=y.append("g").attr("data-role","stack-ctrl-btn-mid").style("cursor","ns-resize");b.append("rect").attr("data-role","ctrl-body-rect").attr("rx",7),b.append("path").attr("data-role","ctrl-mid-check").style("fill","none").style("stroke-linecap","round").style("stroke-linejoin","round").style("pointer-events","none"),b.append("line").attr("data-role","ctrl-mid-mixed").style("stroke-linecap","round").style("pointer-events","none");var I=y.append("g").attr("data-role","stack-ctrl-btn-top").style("cursor","n-resize");I.append("rect").attr("rx",3),I.append("text").attr("text-anchor","middle").attr("dominant-baseline","central").style("pointer-events","none");var C=y.append("g").attr("data-role","stack-ctrl-btn-bot").style("cursor","s-resize");C.append("rect").attr("rx",3),C.append("text").attr("text-anchor","middle").attr("dominant-baseline","central").style("pointer-events","none");var w=y.merge(m);if(g&&f){var x=r+14,k=d(f.maxSlot),S=d(f.minSlot),_=(k+S)/2,A=(S-k)/2,E=Math.max(A,16),O=_-E,D=_+E,M=_,L=null!==(t=null==h?void 0:h.items)&&void 0!==t?t:[],F=L.length>0&&L.every(function(e){return n.state.activeItemIds.has(e.id)}),T=L.some(function(e){return n.state.activeItemIds.has(e.id)}),P="rgba(149, 231, 255, 0.98)";w.style("filter","drop-shadow(0 0 8px rgba(119, 222, 255, 0.45))"),w.select('g[data-role="stack-ctrl-btn-top"]').attr("transform","translate(".concat(x,", ").concat(O,")")).style("opacity",1).style("pointer-events","auto"),w.select('g[data-role="stack-ctrl-btn-top"] rect').attr("x",-7).attr("y",-7).attr("width",14).attr("height",14).style("fill","rgba(10, 20, 40, 0.90)").style("stroke",P).style("stroke-width","1.2"),w.select('g[data-role="stack-ctrl-btn-top"] text').text("▲").attr("x",0).attr("y",0).style("font-size","8px").style("fill",P),w.select('g[data-role="stack-ctrl-btn-bot"]').attr("transform","translate(".concat(x,", ").concat(D,")")).style("opacity",1).style("pointer-events","auto"),w.select('g[data-role="stack-ctrl-btn-bot"] rect').attr("x",-7).attr("y",-7).attr("width",14).attr("height",14).style("fill","rgba(10, 20, 40, 0.90)").style("stroke",P).style("stroke-width","1.2"),w.select('g[data-role="stack-ctrl-btn-bot"] text').text("▼").attr("x",0).attr("y",0).style("font-size","8px").style("fill",P);var B=D-M;w.select('g[data-role="stack-ctrl-btn-mid"]').attr("transform","translate(".concat(x,", ").concat(M,")")).style("opacity",1).style("pointer-events","auto"),w.select('g[data-role="stack-ctrl-btn-mid"] rect[data-role="ctrl-body-rect"]').attr("x",-7).attr("y",-B).attr("width",14).attr("height",2*B).style("fill",F?"rgba(94, 168, 109, 0.35)":"rgba(149, 231, 255, 0.10)").style("stroke","rgba(159, 234, 255, 1)").style("stroke-width","1.5").style("stroke-dasharray",v?"3 2":""),w.select('g[data-role="stack-ctrl-btn-mid"] path[data-role="ctrl-mid-check"]').attr("d","M -3 0.5 L -0.5 3 L 3.5 -3").style("display",F?"":"none").style("stroke","rgba(255, 244, 170, 0.98)").style("stroke-width","2.0"),w.select('g[data-role="stack-ctrl-btn-mid"] line[data-role="ctrl-mid-mixed"]').attr("x1",-3).attr("x2",3).attr("y1",0).attr("y2",0).style("display",!F&&T?"":"none").style("stroke","rgba(255, 244, 170, 0.98)").style("stroke-width","2.0"),w.raise(),this.drag.bindUnifiedControlInteractions(w,f,l,c)}}},{key:"_renderDragGhost",value:function(e){var t,n=this,i=e.stackGroup,r=(e.x,e.panelWidthInGroup),a=e.leftPad,o=e.labelXOffset,s=e.maxLabelWidth,l=e.visibleItems,c=this.drag.draggingStackItemId&&null!==(t=l.find(function(e){return e.id===n.drag.draggingStackItemId}))&&void 0!==t?t:null,d=i.selectAll('g[data-role="action-stack-item-dragging"]').data(c&&this.drag.draggingStackItemPosition?[c]:[],function(e){return e.id});d.exit().remove();var u=d.enter().append("g").attr("data-role","action-stack-item-dragging").style("pointer-events","none").style("opacity",0);u.append("rect").attr("x",-(20+a)).attr("y",-11).attr("rx",5).attr("width",Math.max(58,r-12)).attr("height",22).style("fill",function(e){return"".concat(e.color,"22")}).style("stroke",function(e){return"".concat(e.color,"cc")}).style("stroke-width","1.5").style("filter",function(e){return"drop-shadow(0 0 12px ".concat(e.color,"66) drop-shadow(0 0 5px ").concat(e.color,"44)")}),u.append("circle").attr("cx",0).attr("cy",0).attr("r",9).style("fill",function(e){return"".concat(e.color,"28")}).style("stroke",function(e){return"".concat(e.color,"99")}).style("stroke-width","1.2"),u.append("text").attr("text-anchor","middle").attr("dominant-baseline","central").attr("x",0).attr("y",-.5).style("font-size",function(e){return"".concat(Math.round(12*n.actionStackLabelFontScale),"px")}).style("fill","rgba(230, 250, 255, 0.97)").attr("data-role","action-stack-item-label"),u.append("image").attr("data-role","action-stack-item-icon-img").attr("x",-8).attr("y",-8).attr("width",16).attr("height",16).style("pointer-events","none").attr("href",function(e){return O(e)}),u.append("text").attr("x",o).attr("y",4).attr("text-anchor","start").attr("data-role","action-stack-item-label").style("font-size",function(e){return"".concat(Math.round(10*n.actionStackLabelFontScale),"px")}).style("fill","rgba(185, 235, 255, 0.90)").text(function(e){return(0,g.truncateStackLabel)(e.label,s,10*n.actionStackLabelFontScale)});var p=u.merge(d);this.drag.draggingStackItemPosition&&p.attr("transform","translate(".concat(this.drag.draggingStackItemPosition.x,", ").concat(this.drag.draggingStackItemPosition.y,")")).style("opacity",1),p.select("rect").attr("width",Math.max(58,r-12)),p.select('text[data-role="action-stack-item-label"]').style("font-size",function(){return"".concat(Math.round(12*n.actionStackLabelFontScale),"px")}),p.selectAll('text:not([data-role="action-stack-item-label"])').style("display",this.drag.draggingStackItemGhostWithLabel?"":"none").style("font-size",function(){return"".concat(Math.round(10*n.actionStackLabelFontScale),"px")})}},{key:"_bindItemInteractions",value:function(e,t){var n=e.stackGroup;this.drag.bindItemInteractions(t,{x:e.x,leftPad:e.leftPad,labelXOffset:e.labelXOffset,bottomY:e.bottomY},this.actionStackGroup,this.actionStackLabelFontScale),n.selectAll('g[data-role="action-stack-move-btn"]').remove()}},{key:"ensureActionStackGroup",value:function(e){this.actionStackGroup||(this.actionStackGroup=h.select(e).append("g").attr("data-role","action-stack").style("pointer-events","auto").node())}},{key:"ensureResizeObserver",value:function(e){var t=this;this.resizeObserver||(this.resizeObserver=new ResizeObserver(function(){t.updateVisual()}),this.resizeObserver.observe(e))}},{key:"copyRangeToClipboard",value:function(){this.state.copyRangeToClipboard(),this.updateVisual()}},{key:"pasteClipboard",value:function(){this.state.pasteClipboard(),this.updateVisual()}},{key:"ensureKeyboardListeners",value:function(){var e=this;this.keyboardListenersBound||(this.keyboardListenersBound=!0,window.addEventListener("keydown",function(t){var n,i,r=(t.ctrlKey||t.metaKey)&&!t.shiftKey&&"z"===t.key.toLowerCase(),a=(t.ctrlKey||t.metaKey)&&("y"===t.key.toLowerCase()||t.shiftKey&&"z"===t.key.toLowerCase());if(r||a){var o=null===(n=t.target)||void 0===n?void 0:n.tagName;"INPUT"===o||"TEXTAREA"===o||(null===(i=t.target)||void 0===i?void 0:i.isContentEditable)||(t.preventDefault(),r?e.undo():e.redo())}}))}}])&&s(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.ActionStackController=D},9458(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function a(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,o(i.key),i)}}function o(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var s,l=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),c=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),d=this&&this.__importStar||(s=function(e){return s=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},s(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=s(e),i=0;i<n.length;i++)"default"!==n[i]&&l(t,e,n[i]);return c(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.ActionStackDragHandler=void 0;var u=d(n(600)),p=n(2168),h=n(9692),f=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.state=t,this.host=n,this.draggingStackItemId=null,this.draggingStackItemPosition=null,this.draggingStackItemGhostWithLabel=!0,this.stackInsertionPreviewIndex=null,this.pendingStackItemEntryOrigins=new Map,this.pendingSwapDropY=new Map,this.stackControlDragInProgress=!1,this.draggingRangeBlock=null,this.externalActionDragActive=!1,this.dropZoneClient=null,this.dropZoneIsHot=!1,this.lastGutterClickTime=0,this.layoutMetrics=null}return t=e,(n=[{key:"isDragging",get:function(){return null!==this.draggingStackItemId}},{key:"setExternalDragActive",value:function(e){this.externalActionDragActive=e}},{key:"setRenderGeometry",value:function(e,t){this.dropZoneClient=e,this.layoutMetrics=t}},{key:"clearDropPreview",value:function(){this.stackInsertionPreviewIndex=null,this.dropZoneIsHot=!1,this.host.updateVisual()}},{key:"updateDropPreview",value:function(e,t,n){var i=(0,p.isPointInsideClientRect)(e,t,this.dropZoneClient),r=document.getElementById("action-stack-svg"),a=r?t-r.getBoundingClientRect().top:n,o=i?(0,p.getStackInsertionIndexFromGlobalY)(a,this.layoutMetrics):null,s=this.dropZoneIsHot!==i||this.stackInsertionPreviewIndex!==o;return this.dropZoneIsHot=i,this.stackInsertionPreviewIndex=o,s}},{key:"isDropZoneHit",value:function(e,t){return(0,p.isPointInsideClientRect)(e,t,this.dropZoneClient)}},{key:"getInsertionPreviewIndex",value:function(){return this.stackInsertionPreviewIndex}},{key:"emitDragPreviewChange",value:function(){var e=this;if(this.draggingStackItemId&&null!==this.stackInsertionPreviewIndex&&this.layoutMetrics){var t=this.layoutMetrics.compactLength,n=Math.max(0,Math.min(t-1-this.stackInsertionPreviewIndex,t-1)),i=this.state.items.find(function(t){return t.id===e.draggingStackItemId});if(i){var r=i.slotIndex;if(r!==n){var a=this.state.items.find(function(e){return e!==i&&e.slotIndex===n});i.slotIndex=n,a&&(a.slotIndex=r);try{this.state.emitActiveItemsChange()}finally{i.slotIndex=r,a&&(a.slotIndex=n)}}else this.state.emitActiveItemsChange()}}}},{key:"syncPosition",value:function(e){e&&this.draggingStackItemPosition&&u.select(e).select('g[data-role="action-stack-item-dragging"]').attr("transform","translate(".concat(this.draggingStackItemPosition.x,", ").concat(this.draggingStackItemPosition.y,")"))}},{key:"bindItemInteractions",value:function(t,n,i,a){var o=this,s=n.x,l=n.leftPad,c=n.labelXOffset,d=n.bottomY;t.on("pointerenter.linkedhover",function(e,t){t.isPlaceholder||(o.host.highlightByStackItemId(t.id),o.host.triggerBlockHighlight(t.id),o.host.triggerSatelliteHighlight(t.id))}).on("pointerleave.linkedhover",function(){o.host.highlightByStackItemId(null),o.host.triggerBlockHighlight(null),o.host.triggerSatelliteHighlight(null)}),t.on("pointerdown",function(t,n){var a,f,g;if(!n.isPlaceholder&&!o.draggingStackItemId){t.stopPropagation(),t.preventDefault();var v=t.currentTarget,m=t.pointerId;null===(a=null==v?void 0:v.setPointerCapture)||void 0===a||a.call(v,m);for(var y=t.clientX,b=t.clientY,I=o._svgLocalPoint(t.clientX,t.clientY),C=u.select(v).attr("transform")||"",w=(0,h.parseTranslateTransform)(C),x={x:w.found?w.x:s+26+l,y:w.found?w.y:d},k=!!I&&I.x-x.x>=c-4,S=I?{x:I.x-x.x,y:I.y-x.y}:{x:0,y:0},_=!1,A=!1,E=t.target,O=!1;E&&E!==v;){if("action-stack-item-locate"===(null!==(g=null===(f=E.getAttribute)||void 0===f?void 0:f.call(E,"data-role"))&&void 0!==g?g:null)){O=!0;break}E=E.parentElement}u.select(window).on("pointermove.stack-item-".concat(m),function(t){var r=t.clientX-y,a=t.clientY-b,c=Math.hypot(r,a);if(!_&&c>=e.ACTION_DRAG_THRESHOLD_PX&&(_||(_=!0,o.draggingStackItemId=n.id,o.draggingStackItemPosition=x,o.draggingStackItemGhostWithLabel=!k,o.stackInsertionPreviewIndex=null,o.state.activeItemIds.has(n.id)||(o.state.activeItemIds.add(n.id),o.state.emitActiveItemsChange()),o.host.updateVisual())),_){var d=o._svgLocalPoint(t.clientX,t.clientY);if(d){var u=(0,p.isPointInsideClientRect)(t.clientX,t.clientY,o.dropZoneClient),h=d.y-S.y,f=u?(0,p.getStackInsertionIndexFromGlobalY)(h,o.layoutMetrics):null;o.draggingStackItemPosition={x:u?s+26+l:d.x-S.x,y:h};var g=o.stackInsertionPreviewIndex,v=o.dropZoneIsHot!==u||g!==f;o.dropZoneIsHot=u,o.stackInsertionPreviewIndex=f,v?o.host.updateVisual():o.syncPosition(i),u&&g!==f&&o.emitDragPreviewChange()}}}),u.select(window).on("pointerup.stack-item-".concat(m),function(e){var t,i,a,s,l,c;if(null===(t=null==v?void 0:v.releasePointerCapture)||void 0===t||t.call(v,m),!A&&_){var d=o._svgLocalPoint(e.clientX,e.clientY);if(d&&(0,p.isPointInsideClientRect)(e.clientX,e.clientY,o.dropZoneClient)){var h=d.y-S.y;o.pendingSwapDropY.set(n.id,h);var f=(0,p.getStackInsertionIndexFromGlobalY)(h,o.layoutMetrics),g=null!==(a=null===(i=o.layoutMetrics)||void 0===i?void 0:i.compactLength)&&void 0!==a?a:1,y=Math.max(0,Math.min(g-1-f,g-1)),b=null!==(l=null===(s=o.state.items.find(function(e){return e.id===n.id}))||void 0===s?void 0:s.slotIndex)&&void 0!==l?l:-1;if(b!==y){var I=o.state.recordHistoryBeforeMutationAndReturnItems(),C=I.find(function(e){return e.id===n.id});if(C){var w=I.filter(function(e){return e.id!==n.id}),x=w.findIndex(function(e){return e.slotIndex===y});x>=0&&(w[x].slotIndex=b),C.slotIndex=y,o.state.items=[].concat(function(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(w),[C]).sort(function(e,t){return e.slotIndex-t.slotIndex})}}o.state.emitActiveItemsChange()}else A=!0,o.host.removeItem(n.id)}else A||_||(O?o.host.locateInSearch(n.sourceComponentId,n.sourceOddId,n.sourceCuttingIndex,n.actionId,n.kind):k?o.host.selectSatelliteForItem(n.sourceComponentId,n.sourceOddId,n.sourceCuttingIndex,n.id):o.host.toggleItemSelection(n.id,!0));c=null!==o.draggingStackItemId,o.draggingStackItemId=null,o.draggingStackItemPosition=null,o.draggingStackItemGhostWithLabel=!0,o.stackInsertionPreviewIndex=null,o.dropZoneIsHot=!1,c&&o.host.updateVisual(),u.select(window).on("pointermove.stack-item-".concat(m),null),u.select(window).on("pointerup.stack-item-".concat(m),null)})}})}},{key:"bindUnifiedControlInteractions",value:function(t,n,i,r){var a=this,o=i,s=r,l=function(t,n,i){return function(r){if(r.stopPropagation(),r.preventDefault(),"middle"===t&&Date.now()-a.lastGutterClickTime<e.DOUBLE_CLICK_MS)return a.lastGutterClickTime=0,void a.host.selectAllRange();var l=r.currentTarget,c=r.pointerId;l.setPointerCapture(c);var d=i-n+1,p=r.clientY,h=!1;a.stackControlDragInProgress=!0,u.select(window).on("pointermove.stack-ctrl-".concat(c),function(e){var r=p-e.clientY;if(h||!(Math.abs(r)<4)){if(!h&&(h=!0,"middle"===t)){var l=new Set(a.state.items.filter(function(e){return e.slotIndex>=n&&e.slotIndex<=i}).map(function(e){return e.id}));a.draggingRangeBlock={ids:l,originalMinSlot:n,originalMaxSlot:i}}var c=Math.round(r/o),u=n,f=i;if("top"===t)f=Math.max(n,Math.min(s-1,i+c));else if("bottom"===t)u=Math.max(0,Math.min(i,n+c));else{var g=Math.max(0,Math.min(s-d,n+c));u=g,f=g+d-1}u===a.state.toolRangeMin&&f===a.state.toolRangeMax||(a.state.toolRangeMin=u,a.state.toolRangeMax=f,a.host.updateVisual())}}),u.select(window).on("pointerup.stack-ctrl-".concat(c),function(){l.releasePointerCapture(c),u.select(window).on("pointermove.stack-ctrl-".concat(c),null),u.select(window).on("pointerup.stack-ctrl-".concat(c),null),a.stackControlDragInProgress=!1,a.draggingRangeBlock=null,h?"middle"!==t?a.host.updateVisual():a.host.commitRangeMove(n,i,a.state.toolRangeMin):"middle"===t?a.host.toggleRangeActivation():"top"===t?a.host.expandRangeToTop():a.host.expandRangeToBottom()})}};t.select('g[data-role="stack-ctrl-btn-top"]').on("pointerdown",l("top",n.minSlot,n.maxSlot)),t.select('g[data-role="stack-ctrl-btn-bot"]').on("pointerdown",l("bottom",n.minSlot,n.maxSlot)),t.select('g[data-role="stack-ctrl-btn-mid"]').on("pointerdown",l("middle",n.minSlot,n.maxSlot))}},{key:"bindGutterSelectInteraction",value:function(t){var n=this,i=function(e){var t,i,r=document.getElementById("action-stack-svg"),a=r?e-r.getBoundingClientRect().top:e,o=(0,p.getStackInsertionIndexFromGlobalY)(a,n.layoutMetrics),s=null!==(i=null===(t=n.layoutMetrics)||void 0===t?void 0:t.compactLength)&&void 0!==i?i:0;return 0===s?0:Math.max(0,Math.min(s-1,s-1-o))};t.on("pointerdown",function(t){t.stopPropagation(),t.preventDefault();var r=Date.now(),a=r-n.lastGutterClickTime<e.DOUBLE_CLICK_MS;if(n.lastGutterClickTime=a?0:r,a)n.host.selectAllRange();else{var o=t.currentTarget,s=t.pointerId;o.setPointerCapture(s);var l=i(t.clientY);n.stackControlDragInProgress=!0,n.host.setToolRange(l,l),u.select(window).on("pointermove.stack-gutter-".concat(s),function(e){var t=i(e.clientY);n.host.setToolRange(Math.min(l,t),Math.max(l,t))}),u.select(window).on("pointerup.stack-gutter-".concat(s),function(){o.releasePointerCapture(s),u.select(window).on("pointermove.stack-gutter-".concat(s),null),u.select(window).on("pointerup.stack-gutter-".concat(s),null),n.stackControlDragInProgress=!1})}})}},{key:"_svgLocalPoint",value:function(e,t){var n=document.getElementById("action-stack-svg");if(!n)return null;var i=n.getBoundingClientRect();return{x:e-i.left,y:t-i.top}}}])&&a(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,n}();t.ActionStackDragHandler=f,f.ACTION_DRAG_THRESHOLD_PX=12,f.DOUBLE_CLICK_MS=300},7871(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||s(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(e,t)||s(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=s(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){l=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(l)throw a}}}}function s(e,t){if(e){if("string"==typeof e)return l(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function c(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,d(i.key),i)}}function d(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.ActionStackManager=void 0;var u=n(6976),p=n(1830),h=n(6982),f=n(5463),g=n(9285),v=n(1123),m=n(996),y=new Map(h.yasuniActions.map(function(e){return[e.id,e]})),b=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.deps=t,this.activeStackItemsSnapshot=[],this.lastComboResults=[],this.lastFocusBeforeAllUnchecked=null,this.currentWeightDeltaByChildKey=new Map},t=[{key:"getActiveItems",value:function(){return this.activeStackItemsSnapshot}},{key:"getWeightDeltaByChildKey",value:function(){return this.currentWeightDeltaByChildKey}},{key:"getWeightDeltaByComponentOddCutting",value:function(){var e,t,n,i,r=this.activeStackItemsSnapshot;if(0===r.length)return new Map;var s=this.deps.getAllComponents();if(!s)return new Map;var l,c=new Set(r.map(function(e){return e.id})),d=new Map,u=o(r);try{for(u.s();!(l=u.n()).done;){var p=l.value,h=null===(e=y.get(p.actionId))||void 0===e?void 0:e.weightDelta;if(h){var v=(0,g.evaluateAmplifiers)(p,r,c,f.yasuniKeyEventMap),b=(0,g.composeAmplifiedWeightDelta)(h,v),I="".concat(p.sourceComponentId,"::").concat(p.sourceOddId,"::").concat(p.sourceCuttingIndex);d.set(I,(null!==(t=d.get(I))&&void 0!==t?t:0)+b)}}}catch(e){u.e(e)}finally{u.f()}var C,w=o(d);try{var x=function(){var e=a(C.value,2),t=e[0],r=e[1],o=a(t.split("::"),3),l=o[0],c=o[1],u=o[2],p=s.find(function(e){return e.id===l}),h=null!==(i=null===(n=null==p?void 0:p.odds.find(function(e){return e.id===c}))||void 0===n?void 0:n.cuttingWeights[Number(u)])&&void 0!==i?i:1,f=(0,m.effectiveWeightDelta)(h,r);0===f?d.delete(t):d.set(t,f)};for(w.s();!(C=w.n()).done;)x()}catch(e){w.e(e)}finally{w.f()}return d}},{key:"clearWeightPreview",value:function(){this.currentWeightDeltaByChildKey=new Map}},{key:"resetLastComboResults",value:function(){this.lastComboResults=[]}},{key:"computeComboResultsForAction",value:function(e){var t,n,i=this.activeStackItemsSnapshot.find(function(t){return t.actionId===e});if(null==i?void 0:i.comboResults)return i.comboResults;var r=y.get(e);if(r){var s,l=this.deps.actionStackController.getNextTopSlot(),c=new Map,d=o(this.deps.actionStackController.getEffectiveDeltaByActionId());try{for(d.s();!(s=d.n()).done;){var u=a(s.value,2),h=u[0],f=u[1],g=y.get(h);g&&0!==g.baseDelta&&c.set(h,f/g.baseDelta)}}catch(e){d.e(e)}finally{d.f()}var v,m=(0,p.evaluateCombo)(r,this.deps.actionStackController.getSlotPaddedActionIds(l),c,this.deps.state.combos),b=o(m);try{for(b.s();!(v=b.n()).done;){var I=v.value;if(I.prereqBreakdowns){var C,w=o(I.prereqBreakdowns);try{for(w.s();!(C=w.n()).done;){var x=C.value;x.label=null!==(n=null===(t=y.get(x.id))||void 0===t?void 0:t.name)&&void 0!==n?n:x.id}}catch(e){w.e(e)}finally{w.f()}}}}catch(e){b.e(e)}finally{b.f()}return m.length>0?m:void 0}}},{key:"validateActionSelection",value:function(e,t,n,i,r){var s,l,c,d=y.get(t),u=this.deps.actionStackController.getNextTopSlot(),h=new Map,f=o(this.deps.actionStackController.getEffectiveDeltaByActionId());try{for(f.s();!(c=f.n()).done;){var g=a(c.value,2),v=g[0],m=g[1],b=y.get(v);b&&0!==b.baseDelta&&h.set(v,m/b.baseDelta)}}catch(e){f.e(e)}finally{f.f()}var I,C=d?(0,p.evaluateCombo)(d,this.deps.actionStackController.getSlotPaddedActionIds(u),h,this.deps.state.combos):[],w=o(C);try{for(w.s();!(I=w.n()).done;){var x=I.value;if(x.prereqBreakdowns){var k,S=o(x.prereqBreakdowns);try{for(S.s();!(k=S.n()).done;){var _=k.value;_.label=null!==(l=null===(s=y.get(_.id))||void 0===s?void 0:s.name)&&void 0!==l?l:_.id}}catch(e){S.e(e)}finally{S.f()}}}}catch(e){w.e(e)}finally{w.f()}var A=d?(0,p.composeEffectiveDelta)(d.baseDelta,C):this.deps.state.action.delta;this.deps.state.action.delta=A,this.lastComboResults=C,this.deps.state.menu.activeActionLabel=n,this.activateActionFromChild(e,t);var E=this.buildActionStackItem(e,t,n,A,C);E&&this.deps.actionStackController.addItem(E,i,r)}},{key:"insertActionAtSlot",value:function(e,t,n,i){var r=y.get(t);if(r){var s,l=new Map,c=o(this.deps.actionStackController.getEffectiveDeltaByActionId());try{for(c.s();!(s=c.n()).done;){var d=a(s.value,2),u=d[0],h=d[1],f=y.get(u);f&&0!==f.baseDelta&&l.set(u,h/f.baseDelta)}}catch(e){c.e(e)}finally{c.f()}var g=(0,p.evaluateCombo)(r,this.deps.actionStackController.getSlotPaddedActionIds(i),l,this.deps.state.combos),v=this.buildActionStackItem(e,t,n,(0,p.composeEffectiveDelta)(r.baseDelta,g),g);v&&this.deps.actionStackController.addItemAtSlot(v,i)}}},{key:"buildActionStackItem",value:function(e,t,n,i,r){var a,o,s,l,c=this.deps.getChildOddMap().get(e.getKey()),d=null==c?void 0:c.oddId;if(!d)return null;var u=null!==(o=null===(a=this.deps.view.viewInitializer.categories.find(function(e){return e.category===d}))||void 0===a?void 0:a.color)&&void 0!==o?o:"#9be8ff";return{kind:"action",actionId:t,label:n,sourceChildKey:e.getKey(),sourceOddId:d,sourceCuttingIndex:c.cuttingIndex,sourceComponentId:null!==(l=null===(s=this.deps.getCurrentComponent())||void 0===s?void 0:s.id)&&void 0!==l?l:"",color:u,effectiveDelta:i,comboResults:r}}},{key:"activateActionFromChild",value:function(e){var t,n,i,a,o,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default",l=arguments.length>2?arguments[2]:void 0,c=arguments.length>3&&void 0!==arguments[3]&&arguments[3],d=this.deps.getChildControllers().findIndex(function(t){return t.getKey()===e.getKey()});if(!(d<0)){c&&this.activeStackItemsSnapshot.length>0&&(this.deps.actionStackController.deselectAllItems(),this.activeStackItemsSnapshot=[],this.lastComboResults=[]);var u=y.get(s);if(u&&0===this.lastComboResults.length){var h=this.computeComboResultsForAction(s);this.deps.state.action.delta=h?(0,p.composeEffectiveDelta)(u.baseDelta,h):u.baseDelta}var f=this.deps.getChildOddMap().get(e.getKey()),g=this.deps.getCurrentComponent(),v=f&&g&&null!==(n=null===(t=g.odds.find(function(e){return e.id===f.oddId}))||void 0===t?void 0:t.cuttingWeights[f.cuttingIndex])&&void 0!==n?n:1,b=void 0!==(null==u?void 0:u.weightDelta)?(0,m.effectiveWeightDelta)(v,u.weightDelta):void 0;this.currentWeightDeltaByChildKey=b?new Map([[e.getKey(),b]]):new Map;var I=null!==(i=null!=l?l:this.deps.state.menu.activeActionLabel)&&void 0!==i?i:void 0;void 0!==l?this.deps.state.menu.activeActionLabel=l:I&&!this.deps.state.menu.activeActionLabel&&(this.deps.state.menu.activeActionLabel=I),this.deps.state.setForceFieldSourceChildIndices([d]),this.deps.state.setMenuActiveChild(e.getKey()),this.deps.state.setActionSourceChildKey(e.getKey()),this.deps.state.setHasActiveChildAction(!0),this.deps.state.setMenuActiveAction(s),this.deps.state.setForceFieldSelectedLinkIndex(null),this.updateProjectedGhostTensions(d),this.deps.clearForceFieldComputationState(),this.deps.renderOppositeChildrenForceField();var C=this.deps.getChildOddMap().get(e.getKey()),w=null===(a=this.deps.getCurrentComponent())||void 0===a?void 0:a.id;C&&w&&this.deps.setPersistentActionContext({sourceComponentId:w,sourceOddId:C.oddId,sourceCuttingIndex:C.cuttingIndex,actionId:s,actionLabel:null!==(o=this.deps.state.menu.activeActionLabel)&&void 0!==o?o:void 0,links:r(this.deps.state.forceField.links)}),this.deps.syncGhostTensionFromAction(),this.deps.renderGhostDetailsForActiveAction(),this.deps.renderChildScoresDeltas(this.deps.buildChildrenOrbitData()),this.deps.refreshChildActionMenu()}}},{key:"applyProjectedGhostFromStackItems",value:function(e){var t,n,i,s,l,c,d,p,h=this;if(e.length>0){var b=null===(t=this.deps.getCurrentComponent())||void 0===t?void 0:t.id,I=b?e.find(function(e){return e.sourceComponentId!==b}):void 0,C=null==I?void 0:I.sourceComponentId;if(C&&b&&C!==b){if(!this.deps.recomputeIncomingForceFieldForItems(e,C,b)){var w=this.deps.getInternalModel().components.findIndex(function(e){return e.id===C});w>=0&&(this.deps.prepareForComponentSwitch(C),this.deps.animateChildrenHide(),this.deps.view.borderDrawer.activateSegment(w),this.deps.view.viewInitializer.animateToComponent(w,v.animationConfig.componentSwitchDurationMs))}return}}var x=this.deps.buildProjectionActionsFromStackItems(e);if(0===x.length)return this.currentWeightDeltaByChildKey=new Map,this.deps.clearProjectedActionState({deselect:0===e.length}),this.deps.clearActiveChild(),void(e.length>0&&this.deps.showComposanteInfo());this.deps.state.setHasActiveChildAction(!0);var k=this.deps.getCurrentComponentOrUndefined(),S=this.deps.getAllComponents(),_=e.filter(function(e){return e.sourceOddId}).map(function(e){var t;return null!==(t=e.effectiveDelta)&&void 0!==t?t:h.deps.state.action.delta}),A=(0,u.projectGhostStateForActionSequence)({component:k,allComponents:S,actions:x,actionDelta:this.deps.state.action.delta,actionPropagationFactor:this.deps.state.action.propagationFactor,actionDeltas:_});if(!A)return this.currentWeightDeltaByChildKey=new Map,this.deps.clearProjectedActionState({deselect:0===e.length}),void this.deps.clearActiveChild();var E,O=new Map,D=new Set(e.map(function(e){return e.id})),M=o(e);try{for(M.s();!(E=M.n()).done;){var L=E.value,F=null===(n=y.get(L.actionId))||void 0===n?void 0:n.weightDelta;if(F){var T=(0,g.evaluateAmplifiers)(L,e,D,f.yasuniKeyEventMap),P=(0,g.composeAmplifiedWeightDelta)(F,T);O.set(L.sourceChildKey,(null!==(i=O.get(L.sourceChildKey))&&void 0!==i?i:0)+P)}}}catch(e){M.e(e)}finally{M.f()}var B,G=new Map(e.map(function(e){return[e.sourceChildKey,e]})),R=o(O);try{var q=function(){var e=a(B.value,2),t=e[0],n=e[1],i=G.get(t),r=i&&k&&null!==(l=null===(s=k.odds.find(function(e){return e.id===i.sourceOddId}))||void 0===s?void 0:s.cuttingWeights[i.sourceCuttingIndex])&&void 0!==l?l:1,o=(0,m.effectiveWeightDelta)(r,n);0===o?O.delete(t):O.set(t,o)};for(R.s();!(B=R.n()).done;)q()}catch(e){R.e(e)}finally{R.f()}this.currentWeightDeltaByChildKey=O,this.deps.state.applyGhostProjection({projectedGhostTensionByOddId:A.projectedGhostTensionByOddId,projectedGhostStateByOddId:A.projectedGhostStateByOddId,projectedGhostComponentTension:A.projectedGhostComponentTension,projectedGhostCuttingStatesByOddId:A.projectedGhostCuttingStatesByOddId});var z=this.deps.buildForceFieldSourceIndicesFromStackItems(e);if(this.deps.state.setForceFieldSourceChildIndices(z),e.length>=1&&null!==this.deps.state.forceField.selectedLinkIndex){var N=this.deps.state.forceField.links[this.deps.state.forceField.selectedLinkIndex];N&&this.deps.setSelectedSourceFocus({oddId:N.detail.toOddId,cuttingId:N.detail.toCuttingId})}this.deps.clearForceFieldComputationState(),e.length>=1&&this.deps.state.setForceFieldSelectedLinkIndex(null);var j=this.deps.getSelectedSourceFocus();if(this.deps.renderOppositeChildrenForceField(),this.deps.setSelectedSourceFocus(j),j&&0===e.length&&!this.deps.actionStackController.isDragging){var H=this.deps.state.forceField.links.findIndex(function(e){return e.detail.toOddId===j.oddId&&e.detail.toCuttingId===j.cuttingId});H>=0&&(this.deps.renderForceFieldDetails(H),this.deps.setSelectedSourceFocus(j))}this.deps.renderChildScoresDeltas(null!==(c=this.deps.state.forceField.orbitData)&&void 0!==c?c:this.deps.buildChildrenOrbitData());var K=(0,g.findSoleActiveAction)(e);if(K){var V=this.deps.getChildOddMap().get(K.sourceChildKey),Y=null===(d=this.deps.getCurrentComponent())||void 0===d?void 0:d.id;V&&Y&&this.deps.setPersistentActionContext({sourceComponentId:Y,sourceOddId:V.oddId,sourceCuttingIndex:V.cuttingIndex,actionId:K.actionId,actionLabel:null!==(p=K.label)&&void 0!==p?p:void 0,links:r(this.deps.state.forceField.links)})}this.deps.syncGhostTensionFromAction(),this.deps.renderGhostDetailsForActiveAction()}},{key:"onStackItemVisibilityToggle",value:function(e){var t,n,i,s,l,c=0===this.activeStackItemsSnapshot.length,d=this.deps.getSelectedSourceFocus();if(0===e.length&&d&&(this.lastFocusBeforeAllUnchecked=Object.assign({},d)),this.activeStackItemsSnapshot=r(e),e.length>0){var u,h=this.deps.actionStackController.getItemsInStackOrder(),v=r(e).sort(function(e,t){return h.findIndex(function(t){return t.id===e.id})-h.findIndex(function(e){return e.id===t.id})}),m=this.deps.actionStackController.getEffectiveDeltaByActionId(),b=new Set(e.map(function(e){return e.id})),I=o(v);try{for(I.s();!(u=I.n()).done;){var C=u.value,w=this.deps.actionStackController.getSlotPaddedActionIds(C.slotIndex,b),x=y.get(C.actionId);if(x){var k,S=new Map,_=o(m);try{for(_.s();!(k=_.n()).done;){var A=a(k.value,2),E=A[0],O=A[1],D=y.get(E);D&&0!==D.baseDelta&&S.set(E,O/D.baseDelta)}}catch(e){_.e(e)}finally{_.f()}var M,L=(0,p.evaluateCombo)(x,w,S,this.deps.state.combos),F=o(L);try{for(F.s();!(M=F.n()).done;){var T=M.value;if(T.prereqBreakdowns){var P,B=o(T.prereqBreakdowns);try{for(B.s();!(P=B.n()).done;){var G=P.value;G.label=null!==(n=null===(t=y.get(G.id))||void 0===t?void 0:t.name)&&void 0!==n?n:G.id}}catch(e){B.e(e)}finally{B.f()}}}}catch(e){F.e(e)}finally{F.f()}var R=(0,p.composeEffectiveDelta)(x.baseDelta,L),q=(0,g.evaluateAmplifiers)(C,h,b,f.yasuniKeyEventMap);C.effectiveDelta=(0,g.composeAmplifiedDelta)(R,q),m.set(C.actionId,C.effectiveDelta),C.comboResults=L.length>0?L:void 0}}}catch(e){I.e(e)}finally{I.f()}}var z=(0,g.findSoleActiveAction)(e);z&&(this.deps.state.menu.activeActionLabel=null!==(i=z.label)&&void 0!==i?i:null),this.applyProjectedGhostFromStackItems(e),c&&e.length>0&&this.lastFocusBeforeAllUnchecked&&this.deps.setSelectedSourceFocus(Object.assign({},this.lastFocusBeforeAllUnchecked));var N=this.deps.getSelectedSourceFocus();if(N)if(e.length>1)this.deps.state.setForceFieldSelectedLinkIndex(null),this.deps.renderCumulativeDetailsForCutting(N.oddId,N.cuttingId),this.deps.renderChildScoresDeltas(null!==(s=this.deps.state.forceField.orbitData)&&void 0!==s?s:this.deps.buildChildrenOrbitData());else{var j=N;j&&!!this.deps.renderCumulativeDetailsForCutting(j.oddId,j.cuttingId)||this.deps.renderSourceActionDetailsForCurrentSource(),this.deps.setSelectedSourceFocus(j),this.deps.renderChildScoresDeltas(null!==(l=this.deps.state.forceField.orbitData)&&void 0!==l?l:this.deps.buildChildrenOrbitData())}}},{key:"updateProjectedGhostTensions",value:function(e){var t,n,i,r=this.deps.getChildControllers()[e],a=r?null===(t=this.deps.getChildOddMap().get(r.getKey()))||void 0===t?void 0:t.oddId:void 0,o=this.deps.getAllComponents(),s=this.deps.getCurrentComponentOrUndefined(),l=r&&null!==(i=null===(n=this.deps.getChildOddMap().get(r.getKey()))||void 0===n?void 0:n.cuttingIndex)&&void 0!==i?i:0,c=(0,u.projectGhostStateForComponent)({component:s,allComponents:o,sourceOddId:a,sourceCuttingIndex:l,actionDelta:this.deps.state.action.delta,actionPropagationFactor:this.deps.state.action.propagationFactor});if(!c)return this.applyEmptyGhostProjectionState(),void this.deps.clearGhostDetails();this.deps.state.applyGhostProjection({projectedGhostTensionByOddId:c.projectedGhostTensionByOddId,projectedGhostStateByOddId:c.projectedGhostStateByOddId,projectedGhostComponentTension:c.projectedGhostComponentTension,projectedGhostCuttingStatesByOddId:c.projectedGhostCuttingStatesByOddId})}},{key:"applyEmptyGhostProjectionState",value:function(){this.deps.state.applyGhostProjection({projectedGhostTensionByOddId:null,projectedGhostStateByOddId:null,projectedGhostComponentTension:null,projectedGhostCuttingStatesByOddId:null})}}],t&&c(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.ActionStackManager=b},7233(e,t){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function i(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=a(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){l=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(l)throw o}}}}function r(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function s(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,l(i.key),i)}}function l(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}var c=this&&this.__rest||function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(n[i[r]]=e[i[r]])}return n};Object.defineProperty(t,"__esModule",{value:!0}),t.ActionStackState=void 0;var d=function(){return e=function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.onActiveItemsChange=t,this.onClear=n,this.ACTION_STACK_MAX_ITEMS=30,this.HISTORY_LIMIT=120,this.CONFIG_BOOKMARKS_MAX=4,this.items=[],this.activeItemIds=new Set,this.historyPast=[],this.historyFuture=[],this.isApplyingHistory=!1,this.toolRangeMin=0,this.toolRangeMax=null,this.stackClipboard=null,this.configBookmarks=Array.from({length:4},function(){return{state:"empty",lockedSnapshot:null,dominantColor:"rgba(60, 205, 255, 0.8)"}}),this.activeBookmarkIndex=0},(t=[{key:"canUndo",value:function(){return this.historyPast.length>0}},{key:"canRedo",value:function(){return this.historyFuture.length>0}},{key:"getItemById",value:function(e){return this.items.find(function(t){return t.id===e})}},{key:"getActionLabel",value:function(e){var t,n=r(this.items).reverse().find(function(t){return t.actionId===e});return null!==(t=null==n?void 0:n.label)&&void 0!==t?t:null}},{key:"getOrderedActionIds",value:function(){return this.items.map(function(e){return e.actionId})}},{key:"getSlotPaddedActionIds",value:function(e,t){var n,r,a=new Map,o=i(this.items);try{for(o.s();!(r=o.n()).done;){var s=r.value;s.slotIndex>=e||t&&!t.has(s.id)||a.set(s.slotIndex,s.actionId)}}catch(e){o.e(e)}finally{o.f()}for(var l=[],c=0;c<e;c++)l.push(null!==(n=a.get(c))&&void 0!==n?n:"");return l}},{key:"getNextTopSlot",value:function(){return 0===this.items.length?0:Math.max.apply(Math,r(this.items.map(function(e){return e.slotIndex})))+1}},{key:"getItemsInStackOrder",value:function(){return r(this.items)}},{key:"getEffectiveDeltaByActionId",value:function(){var e,t=new Map,n=i(r(this.items).sort(function(e,t){return e.slotIndex-t.slotIndex}));try{for(n.s();!(e=n.n()).done;){var a=e.value;null!=a.effectiveDelta&&t.set(a.actionId,a.effectiveDelta)}}catch(e){n.e(e)}finally{n.f()}return t}},{key:"getToolRangeBounds",value:function(){return null===this.toolRangeMax?null:{minSlot:this.toolRangeMin,maxSlot:this.toolRangeMax}}},{key:"getToolBlock",value:function(){var e=this;if(null===this.toolRangeMax)return null;var t=this.items.filter(function(t){return t.slotIndex>=e.toolRangeMin&&t.slotIndex<=e.toolRangeMax});return 0===t.length?null:{items:t,minSlot:this.toolRangeMin,maxSlot:this.toolRangeMax}}},{key:"hasClipboard",value:function(){return null!==this.stackClipboard&&this.stackClipboard.length>0}},{key:"addItem",value:function(e,t,n){var a;if(this.recordHistoryBeforeMutation(),null!==t&&null!==n){var o=n,s=o-1-Math.max(0,Math.min(t,o-1));if(a=Math.max(0,s),this.items.findIndex(function(e){return e.slotIndex===a})>=0){var l,c=i(this.items);try{for(c.s();!(l=c.n()).done;){var d=l.value;d.slotIndex>=a&&(d.slotIndex+=1)}}catch(e){c.e(e)}finally{c.f()}}}else a=0===this.items.length?0:Math.max.apply(Math,r(this.items.map(function(e){return e.slotIndex})))+1;return this.pushItemAtSlot(e,a)}},{key:"addItemAtSlot",value:function(e,t){this.recordHistoryBeforeMutation();var n,r=Math.max(0,Math.floor(t)),a=i(this.items);try{for(a.s();!(n=a.n()).done;){var o=n.value;o.slotIndex>=r&&(o.slotIndex+=1)}}catch(e){a.e(e)}finally{a.f()}return this.pushItemAtSlot(e,r)}},{key:"pushItemAtSlot",value:function(e,t){var n=Object.assign(Object.assign({},e),{id:"".concat(e.actionId,"-").concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,8)),validatedAt:Date.now(),slotIndex:t});return this.items.push(n),this.items.sort(function(e,t){return e.slotIndex-t.slotIndex}),this.items.length>this.ACTION_STACK_MAX_ITEMS&&(this.items=this.items.slice(this.items.length-this.ACTION_STACK_MAX_ITEMS)),this.activeItemIds.add(n.id),this.emitActiveItemsChange(),n}},{key:"removeItem",value:function(e){var t,n=this;this.recordHistoryBeforeMutation();var i=this.activeItemIds.delete(e);if(this.items=this.items.filter(function(t){return t.id!==e}),null!==this.toolRangeMax){var a=this.items.find(function(t){return t.id===e});if(a&&a.slotIndex>=this.toolRangeMax){var o=r(this.items).filter(function(t){return t.id!==e&&t.slotIndex<n.toolRangeMax}).sort(function(e,t){return t.slotIndex-e.slotIndex})[0];this.toolRangeMax=null!==(t=null==o?void 0:o.slotIndex)&&void 0!==t?t:null}}i&&this.emitActiveItemsChange()}},{key:"clearAll",value:function(){var e;0!==this.items.length&&(this.recordHistoryBeforeMutation(),this.items=[],this.activeItemIds.clear(),this.toolRangeMax=null,null===(e=this.onClear)||void 0===e||e.call(this),this.emitActiveItemsChange())}},{key:"deselectAllItems",value:function(){0!==this.activeItemIds.size&&(this.activeItemIds.clear(),this.toolRangeMax=null)}},{key:"syncActiveAction",value:function(e,t){if(!e||!t)return!1;var n=r(this.items).reverse().find(function(n){return n.sourceChildKey===e&&n.actionId===t});return!!n&&(this.activeItemIds.add(n.id),this.emitActiveItemsChange(),!0)}},{key:"toggleItemSelection",value:function(e,t){this.isApplyingHistory||this.pushHistory(this.createSnapshot()),this.activeItemIds.has(e)?this.activeItemIds.delete(e):this.activeItemIds.add(e),t&&this.emitActiveItemsChange()}},{key:"setToolRange",value:function(e,t){this.toolRangeMin=Math.max(0,Math.min(e,t)),this.toolRangeMax=Math.max(e,t)}},{key:"clearToolRange",value:function(){this.toolRangeMin=0,this.toolRangeMax=null}},{key:"expandRangeToBottom",value:function(){null!==this.toolRangeMax&&(this.toolRangeMin=0)}},{key:"expandRangeToTop",value:function(){null!==this.toolRangeMax&&0!==this.items.length&&(this.toolRangeMax=this.getNextTopSlot()-1)}},{key:"selectAllRange",value:function(){if(0!==this.items.length){var e=this.items.map(function(e){return e.slotIndex});this.toolRangeMin=Math.min.apply(Math,r(e)),this.toolRangeMax=Math.max.apply(Math,r(e))}}},{key:"clickBookmark",value:function(e){var t,n,i=this.configBookmarks[e];if(this.activeBookmarkIndex===e&&"unlocked"===i.state)return this.pushHistory(this.createSnapshot()),i.lockedSnapshot=this.createStackState(),i.dominantColor=null!==(n=null===(t=this.items[this.items.length-1])||void 0===t?void 0:t.color)&&void 0!==n?n:i.dominantColor,void(i.state="locked");var r=this.createSnapshot();if(this.activeBookmarkIndex!==e){var a=this.configBookmarks[this.activeBookmarkIndex];"unlocked"===a.state&&(a.state=null!==a.lockedSnapshot?"locked":"empty")}this.activeBookmarkIndex=e,this.pushHistory(r),"empty"===i.state?(this.items=[],this.activeItemIds.clear(),this.toolRangeMax=null,this.emitActiveItemsChange()):this.applyStackState(i.lockedSnapshot)}},{key:"undo",value:function(){if(this.canUndo()){var e=this.historyPast.pop();e&&(this.historyFuture.push(this.createSnapshot()),this.applySnapshot(e))}}},{key:"redo",value:function(){if(this.canRedo()){var e=this.historyFuture.pop();e&&(this.historyPast.push(this.createSnapshot()),this.applySnapshot(e))}}},{key:"moveRangeTo",value:function(e,t,n){var r=this.items.filter(function(n){return n.slotIndex>=e&&n.slotIndex<=t});if(0!==r.length){var a=t-e+1,o=n-e;if(0!==o){var s=new Set(r.map(function(e){return e.id}));this.recordHistoryBeforeMutation();var l,c=o>0?t+1:e+o,d=o>0?t+o:e-1,u=o>0?-a:a,p=i(this.items);try{for(p.s();!(l=p.n()).done;){var h=l.value;!s.has(h.id)&&h.slotIndex>=c&&h.slotIndex<=d&&(h.slotIndex+=u)}}catch(e){p.e(e)}finally{p.f()}var f,g=i(r);try{for(g.s();!(f=g.n()).done;)f.value.slotIndex+=o}catch(e){g.e(e)}finally{g.f()}this.items.sort(function(e,t){return e.slotIndex-t.slotIndex}),this.toolRangeMin=n,this.toolRangeMax=n+a-1,this.emitActiveItemsChange()}}}},{key:"toggleRangeActivation",value:function(){var e=this,t=this.getToolBlock();if(t&&0!==t.items.length){var n=t.items.every(function(t){return e.activeItemIds.has(t.id)});this.recordHistoryBeforeMutation(),n?t.items.forEach(function(t){return e.activeItemIds.delete(t.id)}):t.items.forEach(function(t){return e.activeItemIds.add(t.id)}),this.emitActiveItemsChange()}}},{key:"copyRangeToClipboard",value:function(){var e=this.getToolBlock();if(e&&0!==e.items.length){var t=r(e.items).sort(function(e,t){return e.slotIndex-t.slotIndex});this.stackClipboard=t.map(function(e){e.id,e.validatedAt,e.slotIndex;var t=c(e,["id","validatedAt","slotIndex"]);return Object.assign({},t)})}}},{key:"pasteClipboard",value:function(){var e,t=this;if(this.stackClipboard&&0!==this.stackClipboard.length){this.recordHistoryBeforeMutation();var n=this.getNextTopSlot(),i=this.stackClipboard.map(function(e,t){return Object.assign(Object.assign({},e),{id:"".concat(e.actionId,"-").concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,8),"-").concat(t),validatedAt:Date.now(),slotIndex:n+t})});i.forEach(function(e){return t.activeItemIds.add(e.id)}),(e=this.items).push.apply(e,r(i)),this.items.sort(function(e,t){return e.slotIndex-t.slotIndex}),this.items.length>this.ACTION_STACK_MAX_ITEMS&&(this.items=this.items.slice(this.items.length-this.ACTION_STACK_MAX_ITEMS)),this.toolRangeMin=n,this.toolRangeMax=n+this.stackClipboard.length-1,this.emitActiveItemsChange()}}},{key:"createSnapshot",value:function(){return Object.assign(Object.assign({},this.createStackState()),{activeBookmarkIndex:this.activeBookmarkIndex,bookmarks:this.configBookmarks.map(function(e){return{state:e.state,lockedSnapshot:e.lockedSnapshot?{items:e.lockedSnapshot.items.map(function(e){return Object.assign({},e)}),activeItemIds:r(e.lockedSnapshot.activeItemIds)}:null,dominantColor:e.dominantColor}})})}},{key:"recordHistoryBeforeMutation",value:function(){this.isApplyingHistory||(this.pushHistory(this.createSnapshot()),this.markActiveBookmarkDirty())}},{key:"recordHistoryBeforeMutationAndReturnItems",value:function(){return this.recordHistoryBeforeMutation(),this.items}},{key:"markActiveBookmarkDirty",value:function(){var e=this.configBookmarks[this.activeBookmarkIndex];"unlocked"!==e.state&&(e.state="unlocked")}},{key:"ensureItemSlotIndices",value:function(){this.items.some(function(e){return"number"!=typeof e.slotIndex||null==e.kind})&&(this.items=this.items.map(function(e,t){var n;return Object.assign(Object.assign({},e),{slotIndex:"number"==typeof e.slotIndex?e.slotIndex:t,kind:null!==(n=e.kind)&&void 0!==n?n:"action"})})),this.items.sort(function(e,t){return e.slotIndex-t.slotIndex})}},{key:"emitActiveItemsChange",value:function(){var e=this,t=this.items.filter(function(t){return e.activeItemIds.has(t.id)});this.onActiveItemsChange(t)}},{key:"createStackState",value:function(){return{items:this.items.map(function(e){return Object.assign({},e)}),activeItemIds:r(this.activeItemIds)}}},{key:"pushHistory",value:function(e){this.historyPast.push(e),this.historyPast.length>this.HISTORY_LIMIT&&this.historyPast.splice(0,this.historyPast.length-this.HISTORY_LIMIT),this.historyFuture=[]}},{key:"applyStackState",value:function(e){this.isApplyingHistory=!0,this.items=e.items.map(function(e){return Object.assign({},e)}),this.ensureItemSlotIndices();var t=new Set(this.items.map(function(e){return e.id}));this.activeItemIds=new Set(e.activeItemIds.filter(function(e){return t.has(e)})),this.isApplyingHistory=!1,this.emitActiveItemsChange()}},{key:"applySnapshot",value:function(e){var t;this.isApplyingHistory=!0,this.items=e.items.map(function(e){return Object.assign({},e)}),this.ensureItemSlotIndices();var n=new Set(this.items.map(function(e){return e.id}));this.activeItemIds=new Set(e.activeItemIds.filter(function(e){return n.has(e)})),this.activeBookmarkIndex=null!==(t=e.activeBookmarkIndex)&&void 0!==t?t:0,this.configBookmarks=e.bookmarks.map(function(e){return{state:e.state,lockedSnapshot:e.lockedSnapshot?{items:e.lockedSnapshot.items.map(function(e){return Object.assign({},e)}),activeItemIds:r(e.lockedSnapshot.activeItemIds)}:null,dominantColor:e.dominantColor}}),this.isApplyingHistory=!1,this.emitActiveItemsChange()}}])&&s(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.ActionStackState=d},6976(e,t,n){function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(e,t)||r(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e,t){if(e){if("string"==typeof e)return a(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getEmptyGhostProjectionState=function(){return{projectedGhostTensionByOddId:null,projectedGhostStateByOddId:null,projectedGhostComponentTension:null,projectedGhostCuttingStatesByOddId:null}},t.projectGhostStateForIncomingLinks=function(e){var t=e.component,n=e.incomingLinks;if(!t||0===n.length)return null;var i=function(e){return new Map(e.odds.map(function(e){var t=p(e);return[e.id,new Map(e.cuttingScores.map(function(e,n){return[t[n],(0,c.stateFromTension)(e)]}))]}))}(t);return n.forEach(function(e){var t=e.detail.toOddId,n=e.detail.toCuttingId;if(t){var r=i.get(t);if(r)if(void 0!==n){var a=r.get(n);void 0!==a&&r.set(n,(0,d.clampState)(a+e.potentialGain))}else{var o=r.size;if(0===o)return;var s=e.potentialGain/o;r.forEach(function(e,t){r.set(t,(0,d.clampState)(e+s))})}}}),h(t,i)},t.projectGhostStateForActionSequence=function(e){var t,n=e.component,r=e.allComponents,a=e.actions,o=e.actionDelta,c=e.actionPropagationFactor,g=e.actionDeltas,v=e.onStep;if(!n||0===a.length)return null;var m=new Map;n.odds.forEach(function(e){var t=p(e),n=new Map;e.cuttingScores.forEach(function(e,i){n.set(t[i],(0,d.clampState)(100*(1-e)))}),m.set(e.id,n)});for(var y=n,b=function(){var e=a[I],n=null!==(t=null==g?void 0:g[I])&&void 0!==t?t:o,h=v?f(m):void 0,b=(0,u.resolveOddCuttingId)(y,e.sourceOddId,e.sourceCuttingIndex),C=(0,d.deriveCuttingStates)(y),w=(0,d.computeActionPropagationDetails)(y,s.default,e.sourceOddId,b,n,c,l.default,r);Object.entries(w.cuttingStates).forEach(function(e){var t,n=i(e,2),r=n[0],a=n[1],o=m.get(r);if(o){var s=null!==(t=C[r])&&void 0!==t?t:{};Object.entries(a).forEach(function(e){var t,n,r=i(e,2),a=r[0],l=r[1],c=Number(a),u=null!==(t=s[c])&&void 0!==t?t:0,p=Number(l)-u,h=null!==(n=o.get(c))&&void 0!==n?n:0;o.set(c,(0,d.clampState)(h+p))})}}),v&&h&&v({actionIndex:I,action:e,effectiveDelta:n,statesBefore:h,statesAfter:f(m),edges:w.edges});var x=new Map(Object.entries(w.cuttingStates).map(function(e){var t=i(e,2),n=t[0],r=t[1];return[n,new Map(Object.entries(r).map(function(e){var t=i(e,2),n=t[0],r=t[1];return[Number(n),Number(r)]}))]}));y=function(e,t){return Object.assign(Object.assign({},e),{odds:e.odds.map(function(e){var n=t.get(e.id),i=p(e);return Object.assign(Object.assign({},e),{cuttingScores:e.cuttingScores.map(function(e,t){var r=i[t],a=null==n?void 0:n.get(r);return void 0===a?e:(0,d.tensionFromState)(a)})})})})}(y,x)},I=0;I<a.length;I++)b();return h(n,m)},t.projectGhostStateForComponent=function(e){var t=e.component,n=e.allComponents,r=e.sourceOddId,a=e.sourceCuttingIndex,o=e.actionDelta,p=e.actionPropagationFactor;if(!t||!r)return null;var h=(0,u.resolveOddCuttingId)(t,r,a),f=(0,d.projectActionStateDetailsInComponent)(t,s.default,r,h,o,p,l.default,n),v=new Map(Object.entries(f.oddStates).map(function(e){var t=i(e,2),n=t[0],r=t[1];return[n,(0,d.tensionFromState)(r)]})),m=new Map(Object.entries(f.oddStates)),y=new Map(t.odds.map(function(e){var t,n=Array.isArray(e.cuttingIds)&&e.cuttingIds.length===e.cuttingScores.length?e.cuttingIds:e.cuttingScores.map(function(e,t){return t+1}),i=null!==(t=f.cuttingStates[e.id])&&void 0!==t?t:{};return[e.id,e.cuttingScores.map(function(e,t){var r,a=n[t],o=e,s=(0,c.stateFromTension)(o),l=null!==(r=i[a])&&void 0!==r?r:s;return{cuttingId:a,originalTension:o,projectedTension:(0,d.tensionFromState)(l),originalState:s,projectedState:l}})]})),b=t.odds.reduce(function(e,t){return e+g(t)},0);if(0===b)return null;var I=t.odds.reduce(function(e,t){var n=v.get(t.id);return void 0===n?e:e+n*g(t)},0);return{projectedGhostTensionByOddId:v,projectedGhostStateByOddId:m,projectedGhostComponentTension:I/b,projectedGhostCuttingStatesByOddId:y}},t.getOriginalComponentTension=function(e){if(!e||0===e.odds.length)return null;var t=e.odds.reduce(function(e,t){return e+g(t)},0);return 0===t?null:e.odds.reduce(function(e,t){return e+(0,c.oddTensionFromCuttings)(t.cuttingScores,t.cuttingWeights)*g(t)},0)/t},t.getOriginalOddTension=function(e,t){var n=null==e?void 0:e.odds.find(function(e){return e.id===t});return n?(0,c.oddTensionFromCuttings)(n.cuttingScores,n.cuttingWeights):null};var s=o(n(5465)),l=o(n(616)),c=n(996),d=n(8474),u=n(3669);function p(e){return Array.isArray(e.cuttingIds)&&e.cuttingIds.length===e.cuttingScores.length?e.cuttingIds:e.cuttingScores.map(function(e,t){return t+1})}function h(e,t){var n=new Map,i=new Map,r=new Map;e.odds.forEach(function(e){var a,o=p(e),s=null!==(a=t.get(e.id))&&void 0!==a?a:new Map,l=e.cuttingScores.map(function(e,t){var n,i=o[t],r=(0,c.stateFromTension)(e),a=null!==(n=s.get(i))&&void 0!==n?n:r;return{cuttingId:i,originalTension:e,projectedTension:(0,d.tensionFromState)(a),originalState:r,projectedState:a}}),u=(0,c.weightedAverage)(l.map(function(e){return e.projectedState}),e.cuttingWeights);n.set(e.id,u),i.set(e.id,(0,d.tensionFromState)(u)),r.set(e.id,l)});var a=e.odds.reduce(function(e,t){return e+g(t)},0);if(0===a)return null;var o=e.odds.reduce(function(e,t){var n=i.get(t.id);return void 0===n?e:e+n*g(t)},0);return{projectedGhostTensionByOddId:i,projectedGhostStateByOddId:n,projectedGhostComponentTension:o/a,projectedGhostCuttingStatesByOddId:r}}function f(e){return new Map((t=e,function(e){if(Array.isArray(e))return a(e)}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||r(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map(function(e){var t=i(e,2),n=t[0],r=t[1];return[n,new Map(r)]}));var t}function g(e){return e.cuttingWeights.reduce(function(e,t){return e+Math.max(0,t)},0)}},4105(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var o,s=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),c=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=o(e),i=0;i<n.length;i++)"default"!==n[i]&&s(t,e,n[i]);return l(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.ChildActionMenuController=void 0;var d=c(n(600)),u=n(1123),p=n(6982),h=n(1204),f=n(2051),g="child-action-item",v=function(){return e=function e(t,n,i,r,a,o){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.view=t,this.getChildRenderedCenter=n,this.refreshActionStackVisual=i,this.activateActionFromChild=r,this.validateActionSelection=a,this.startActionDrag=o,this.childActionMenuGroup=null,this.childActionLineLayer=null,this.lastChildActionMenuSourceCenter=null,this.activeDragCancel=null,this.hoveredActionId=null,this.linkStyleGetter=null},(t=[{key:"setOnActionHover",value:function(e){this._onActionHoverCb=e}},{key:"highlightActionById",value:function(e){if(this.childActionMenuGroup){var t=d.select(this.childActionMenuGroup);t.selectAll('g[data-role="'.concat(g,'"]')).style("filter",null),e&&t.select('g[data-item-id="'.concat(CSS.escape(e),'"]')).style("filter","brightness(1.6) drop-shadow(0 0 12px rgba(255,255,255,0.85))")}}},{key:"setHoveredAction",value:function(e){this.hoveredActionId!==e&&(this.hoveredActionId=e,this.linkStyleGetter&&(0,f.styleRadialItemLinks)(this.childActionLineLayer,g,this.linkStyleGetter))}},{key:"retractAndDispose",value:function(){this.hoveredActionId=null,this.linkStyleGetter=null,this.lastChildActionMenuSourceCenter=null;var e=this.childActionMenuGroup;this.childActionMenuGroup=null,e&&setTimeout(function(){return d.select(e).remove()},u.animationConfig.componentSwitchDurationMs);var t=this.childActionLineLayer;this.childActionLineLayer=null,t&&setTimeout(function(){return d.select(t).remove()},u.animationConfig.componentSwitchDurationMs)}},{key:"clearImmediately",value:function(){var e;null===(e=this.activeDragCancel)||void 0===e||e.call(this),this.activeDragCancel=null,this.childActionMenuGroup&&(d.select(this.childActionMenuGroup).remove(),this.childActionMenuGroup=null),this.childActionLineLayer&&(d.select(this.childActionLineLayer).remove(),this.childActionLineLayer=null),this.hoveredActionId=null,this.linkStyleGetter=null,this.lastChildActionMenuSourceCenter=null}},{key:"animateClose",value:function(){var e;if(null===(e=this.activeDragCancel)||void 0===e||e.call(this),this.activeDragCancel=null,this.hoveredActionId=null,this.linkStyleGetter=null,this.childActionLineLayer&&this.lastChildActionMenuSourceCenter&&(0,f.renderRadialItemLinks)({groupNode:this.childActionLineLayer,dataRole:g,positions:[],center:this.lastChildActionMenuSourceCenter}),this.childActionMenuGroup){var t=this.childActionMenuGroup;this.childActionMenuGroup=null,this.lastChildActionMenuSourceCenter=null,(0,f.closeAllRadialItems)(t,g,function(){return d.select(t).remove()})}}},{key:"update",value:function(e){var t=this,n=this.view.viewInitializer.globalGroup.node();if(n){if(this.ensureChildActionMenuGroup(n),this.ensureLineLayer(n),!e.activeActionMenuChildKey)return this.hoveredActionId=null,this.linkStyleGetter=null,this.childActionMenuGroup&&(0,f.closeAllRadialItems)(this.childActionMenuGroup,g),void(this.childActionLineLayer&&this.lastChildActionMenuSourceCenter&&(0,f.renderRadialItemLinks)({groupNode:this.childActionLineLayer,dataRole:g,positions:[],center:this.lastChildActionMenuSourceCenter}));if(this.childActionMenuGroup&&this.childActionLineLayer){var i=e.orbitData.find(function(t){return t.controller.getKey()===e.activeActionMenuChildKey});if(!i)return d.select(this.childActionMenuGroup).selectAll("g").remove(),void d.select(this.childActionLineLayer).selectAll("line").remove();var r=this.getChildRenderedCenter(i.controller);if(!r)return d.select(this.childActionMenuGroup).selectAll("g").remove(),void d.select(this.childActionLineLayer).selectAll("line").remove();var a=this.lastChildActionMenuSourceCenter||r;this.lastChildActionMenuSourceCenter=r;var o=this.view.viewInitializer,s=r.x-o.positionX,l=r.y-o.positionY,c=Math.atan2(l,s),u=this.view.viewInitializer.smallCircleRadius*e.childActionMenuItemDistance,v=Math.max(14,.32*this.view.viewInitializer.smallCircleRadius*e.childActionMenuItemScale),m=(0,f.computeFanPositions)(e.actionsForActiveChild,{mode:"arc",center:r,axis:c,offsetDistance:u,itemRadius:v,keyPrefix:e.activeActionMenuChildKey}),y=i.controller,b=e.activeActionMenuChildKey,I=(0,f.renderRadialItemsChoreography)({groupNode:this.childActionMenuGroup,dataRole:g,positions:m,exitAnimationCenter:a,enterCenter:r,getIconUrl:function(e){return(0,h.getActionIconUrl)(e)},onItemClick:function(n){var i=e.activeActionMenuActionId===n.id;(0,f.handleRadialItemClick)(i,function(){return t.activateActionFromChild(y,n.id,n.name)},function(){return t.validateActionSelection(y,n.id,n.name,void 0,m.find(function(e){return e.id===n.id}))})},onItemHoverEnter:function(e){var n;t.setHoveredAction(e.id),null===(n=t._onActionHoverCb)||void 0===n||n.call(t,e.id,b)},onItemHoverLeave:function(){var e;t.setHoveredAction(null),null===(e=t._onActionHoverCb)||void 0===e||e.call(t,null,b)}}),C=i.controller.view.viewInitializer.borderOuterRadius||i.controller.view.viewInitializer.borderInnerRadius||o.smallCircleRadius;this.linkStyleGetter=function(n){var i="unique"===n.item.targeting,r=e.activeActionMenuActionId===n.id;return{color:r?"rgba(255, 244, 170, 0.9)":i?"rgba(180, 255, 160, 0.8)":"rgba(112, 232, 255, 0.7)",isActive:r,pulse:r||t.hoveredActionId===n.id}},(0,f.renderRadialItemLinks)({groupNode:this.childActionLineLayer,dataRole:g,positions:m,center:r,startRadius:C,getStyle:this.linkStyleGetter}),I.each(function(t){var n,i=d.select(this),r=t.item,a="unique"===r.targeting,o=e.activeActionMenuActionId===t.id,s=(n={isActive:o,isAdverse:(0,p.isAdverseAction)(r),isPrimary:a}).isActive?{fill:n.isAdverse?"rgba(108, 40, 46, 0.95)":"rgba(36, 82, 108, 0.95)",stroke:"rgba(255, 244, 170, 0.98)",strokeWidth:"2.4",filter:"drop-shadow(0 0 12px rgba(255, 227, 116, 0.9))"}:n.isAdverse?{fill:"rgba(38, 16, 20, 0.92)",stroke:"rgba(242, 142, 142, 0.95)",strokeWidth:n.isPrimary?"2":"1.4",filter:"drop-shadow(0 0 8px rgba(242, 142, 142, 0.75))"}:n.isPrimary?{fill:"rgba(18, 26, 33, 0.9)",stroke:"rgba(160, 255, 140, 0.95)",strokeWidth:"2",filter:"drop-shadow(0 0 8px rgba(160, 255, 140, 0.75))"}:{fill:"rgba(18, 26, 33, 0.9)",stroke:"rgba(214, 244, 255, 0.9)",strokeWidth:"1.4",filter:"drop-shadow(0 0 7px rgba(112, 232, 255, 0.7))"};i.select("circle").attr("r",t.r).style("fill",s.fill).style("stroke",s.stroke).style("stroke-width",s.strokeWidth).style("filter",s.filter);var l=o?1.85*t.r*e.childActionIconFontScale:1.65*t.r*e.childActionIconFontScale;i.select("image").attr("width",l).attr("height",l).attr("x",-l/2).attr("y",-l/2)}),I.on("pointerdown.dragstart",function(e,n){var i=n.item;t.activeDragCancel=t.startActionDrag((0,h.getActionIconUrl)(i.id),e,e.currentTarget,function(e,n){return t.validateActionSelection(y,i.id,i.name,e,n)})}),this.refreshActionStackVisual()}}}},{key:"ensureChildActionMenuGroup",value:function(e){this.childActionMenuGroup||(this.childActionMenuGroup=d.select(e).append("g").attr("data-role","child-action-menu").style("pointer-events","auto").node())}},{key:"ensureLineLayer",value:function(e){this.childActionLineLayer||(this.childActionLineLayer=d.select(e).append("g").attr("data-role","child-action-line-layer").style("pointer-events","none").node());var t=e.querySelector('[data-role="children-group"]');t?e.insertBefore(this.childActionLineLayer,t):d.select(this.childActionLineLayer).lower()}}])&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.ChildActionMenuController=v},9656(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var o,s=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),c=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=o(e),i=0;i<n.length;i++)"default"!==n[i]&&s(t,e,n[i]);return l(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.CoreEventMenuController=void 0;var d=c(n(600)),u=n(2823),p=n(8849),h=n(2051),f="core-event-item",g=function(){return e=function e(t,n,i,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.view=t,this.previewKeyEvent=n,this.validateKeyEventSelection=i,this.startKeyEventDrag=r,this.coreEventMenuGroup=null,this.coreEventLineLayer=null,this.activeDragCancel=null,this.hoveredKeyEventId=null,this.linkStyleGetter=null},(t=[{key:"setOnHover",value:function(e){this._onHoverCb=e}},{key:"clearImmediately",value:function(){var e;null===(e=this.activeDragCancel)||void 0===e||e.call(this),this.activeDragCancel=null,this.hoveredKeyEventId=null,this.linkStyleGetter=null,this.coreEventMenuGroup&&(d.select(this.coreEventMenuGroup).remove(),this.coreEventMenuGroup=null),this.coreEventLineLayer&&(d.select(this.coreEventLineLayer).remove(),this.coreEventLineLayer=null)}},{key:"update",value:function(e){var t=this,n=this.view.viewInitializer.globalGroup.node();if(n){this.ensureGroup(n),this.ensureLineLayer(n);var i=this.view.viewInitializer,r={x:i.positionX,y:i.positionY};if(!e.isOpen||0===e.keyEventsForActiveFacette.length)return this.hoveredKeyEventId=null,this.linkStyleGetter=null,this.coreEventMenuGroup&&(0,h.closeAllRadialItems)(this.coreEventMenuGroup,f),void(this.coreEventLineLayer&&(0,h.renderRadialItemLinks)({groupNode:this.coreEventLineLayer,dataRole:f,positions:[],center:r}));if(this.coreEventMenuGroup&&this.coreEventLineLayer){var a=-Math.PI/2,o=Math.max(14,.32*i.smallCircleRadius*e.coreEventMenuItemScale),s=i.smallCircleRadius*e.childActionMenuItemDistance,l=e.childrenOrbitRadius+s+o+e.coreEventMenuDistanceOffset,c=(0,h.computeFanPositions)(e.keyEventsForActiveFacette,{mode:"full-circle",center:r,axis:a,offsetDistance:l,itemRadius:o,keyPrefix:"core-event"});this.linkStyleGetter=function(n){var i=e.activeKeyEventId===n.id,r=!(0,u.isKeyEventUnlocked)(n.id);return{color:r?"rgba(150, 148, 140, 0.5)":i?"rgba(255, 244, 170, 0.9)":"rgba(255, 200, 112, 0.75)",isActive:i,dashed:r,pulse:!r&&(i||t.hoveredKeyEventId===n.id)}},(0,h.renderRadialItemLinks)({groupNode:this.coreEventLineLayer,dataRole:f,positions:c,center:r,startRadius:i.borderOuterRadius||i.borderInnerRadius,getStyle:this.linkStyleGetter});var g=(0,h.renderRadialItemsChoreography)({groupNode:this.coreEventMenuGroup,dataRole:f,positions:c,exitAnimationCenter:r,enterCenter:r,getIconUrl:function(e){return(0,u.getKeyEventIconUrl)(e)},decorateItemEnter:function(e){return(0,p.appendYinYangWatermark)(e)},onItemClick:function(n){var i=e.activeKeyEventId===n.id;(0,h.handleRadialItemClick)(i,function(){return t.previewKeyEvent(n)},function(){return t.validateKeyEventSelection(n,void 0,c.find(function(e){return e.id===n.id}))})},onItemHoverEnter:function(e){var n;t.setHoveredKeyEvent(e.id),null===(n=t._onHoverCb)||void 0===n||n.call(t,e.id)},onItemHoverLeave:function(){var e;t.setHoveredKeyEvent(null),null===(e=t._onHoverCb)||void 0===e||e.call(t,null)}});g.each(function(t){var n=d.select(this),i=e.activeKeyEventId===t.id,r=!(0,u.isKeyEventUnlocked)(t.id);n.select('circle[data-role="'.concat(f,'-plate"]')).attr("r",t.r).style("fill",r?"rgba(22, 22, 24, 0.9)":i?"rgba(64, 42, 16, 0.95)":"rgba(33, 22, 12, 0.9)").style("stroke",r?i?"rgba(214, 212, 204, 0.95)":"rgba(150, 148, 140, 0.75)":i?"rgba(255, 244, 170, 0.98)":"rgba(255, 224, 168, 0.95)").style("stroke-width",i?"2.4":"1.6").style("stroke-dasharray",r?"4 3":"none").style("filter",r?i?"drop-shadow(0 0 8px rgba(190, 190, 190, 0.5))":"none":i?"drop-shadow(0 0 12px rgba(255, 227, 116, 0.9))":"drop-shadow(0 0 8px rgba(255, 190, 90, 0.75))"),(0,p.styleYinYangWatermark)(n,{radius:t.r,color:r?"#c8c6be":"#ffc870",intensity:r?.35:.5});var a=(i?1.85:1.65)*t.r*e.coreEventIconFontScale;n.select("image").attr("width",a).attr("height",a).attr("x",-a/2).attr("y",-a/2).style("filter",r?"grayscale(1)":"none").style("opacity",r?.5:1)}),g.on("pointerdown.dragstart",function(e,n){var i=n.item;t.activeDragCancel=t.startKeyEventDrag((0,u.getKeyEventIconUrl)(i.id),e,e.currentTarget,function(e,n){return t.validateKeyEventSelection(i,e,n)})})}}}},{key:"setHoveredKeyEvent",value:function(e){this.hoveredKeyEventId!==e&&(this.hoveredKeyEventId=e,this.linkStyleGetter&&(0,h.styleRadialItemLinks)(this.coreEventLineLayer,f,this.linkStyleGetter))}},{key:"ensureGroup",value:function(e){this.coreEventMenuGroup||(this.coreEventMenuGroup=d.select(e).append("g").attr("data-role","core-event-menu").style("pointer-events","auto").node())}},{key:"ensureLineLayer",value:function(e){this.coreEventLineLayer||(this.coreEventLineLayer=d.select(e).append("g").attr("data-role","core-event-line-layer").style("pointer-events","none").node());var t=e.querySelector('[data-role="children-group"]');t?e.insertBefore(this.coreEventLineLayer,t):d.select(this.coreEventLineLayer).lower()}}])&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.CoreEventMenuController=g},2051(e,t,n){var i,r=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&r(t,e,n[o]);return a(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.computeFanPositions=function(e,t){var n,i,r=e.length;if("arc"===t.mode){var a=null!==(n=t.maxAngularOffset)&&void 0!==n?n:Math.PI/4;i=r<=0?[]:1===r?[0]:e.map(function(e,t){return t/(r-1)*(2*a)-a})}else{var o=r>0?2*Math.PI/r:0;i=e.map(function(e,t){return t*o})}return e.map(function(e,n){var r,a=t.axis+(null!==(r=i[n])&&void 0!==r?r:0);return{uniqueKey:"".concat(t.keyPrefix,"_").concat(e.id),id:e.id,x:t.center.x+Math.cos(a)*t.offsetDistance,y:t.center.y+Math.sin(a)*t.offsetDistance,r:t.itemRadius,item:e}})},t.closeAllRadialItems=function(e,t,n){var i=l.animationConfig.childActionMenuCloseDurationMs,r=l.animationConfig.childActionMenuStaggerMs,a=s.select(e).selectAll('g[data-role="'.concat(t,'"]'));if(a.empty())null==n||n();else{var o=0,c=a.size();a.transition().delay(function(e,t,n){return(n.length-1-t)*r}).duration(i).ease(s.easeBackIn).style("opacity","0").attr("transform",function(){var e=s.select(this).attr("transform"),t=null==e?void 0:e.match(/translate\(([\d.-]+),\s*([\d.-]+)\)/),n=t?parseFloat(t[1]):0,i=t?parseFloat(t[2]):0;return"translate(".concat(n,", ").concat(i,") scale(0)")}).remove().on("end",function(){++o>=c&&(null==n||n())})}},t.renderRadialItemsChoreography=function(e){var t=e.groupNode,n=e.dataRole,i=e.positions,r=e.exitAnimationCenter,a=e.enterCenter,o=e.getIconUrl,c=e.decorateItemEnter,d=e.onItemClick,u=e.onItemHoverEnter,p=e.onItemHoverLeave,h=l.animationConfig.childActionMenuOpenDurationMs,f=l.animationConfig.childActionMenuCloseDurationMs,g=l.animationConfig.childActionMenuStaggerMs,v=s.select(t).selectAll('g[data-role="'.concat(n,'"]')).data(i,function(e){return e.uniqueKey});v.exit().transition().delay(function(e,t,n){return(n.length-1-t)*g}).duration(f).ease(s.easeBackIn).style("opacity","0").attr("transform","translate(".concat(r.x,", ").concat(r.y,") scale(0)")).remove();var m=v.enter().append("g").attr("data-role",n).attr("data-item-id",function(e){return e.id}).style("cursor","pointer").style("opacity","0").attr("transform",function(){return"translate(".concat(a.x,", ").concat(a.y,") scale(0)")});m.append("line").attr("data-role","".concat(n,"-link")).attr("x1",0).attr("y1",0).style("stroke-width","1.2").style("pointer-events","none"),m.append("circle").attr("data-role","".concat(n,"-plate")).style("stroke-width","1.4"),null==c||c(m),m.append("image").attr("data-role","".concat(n,"-icon")).attr("href",function(e){return o(e.id)}).attr("preserveAspectRatio","xMidYMid meet").style("pointer-events","none");var y=m.merge(v);return y.on("click.radialmenu",function(e,t){e.stopPropagation(),e.preventDefault(),d(t.item)}),(u||p)&&(y.on("mouseenter.radialmenuhover",function(e,t){null==u||u(t.item)}),y.on("mouseleave.radialmenuhover",function(e,t){null==p||p(t.item)})),m.transition().delay(function(e,t){return t*g}).duration(h).ease(s.easeBackOut).style("opacity","1").attr("transform",function(e){return"translate(".concat(e.x,", ").concat(e.y,") scale(1)")}),v.transition().duration(h).ease(s.easeBackOut).style("opacity","1").attr("transform",function(e){return"translate(".concat(e.x,", ").concat(e.y,") scale(1)")}),y},t.styleRadialItemLinks=h,t.renderRadialItemLinks=function(e){var t,n=e.groupNode,i=e.dataRole,r=e.positions,a=e.center,o=e.getStyle,d=null!==(t=e.startRadius)&&void 0!==t?t:0,p="".concat(i,"-beam"),f=l.animationConfig.childActionMenuOpenDurationMs,g=l.animationConfig.childActionMenuCloseDurationMs,v=l.animationConfig.childActionMenuStaggerMs,m=s.select(n),y=m.select("defs");y.empty()&&(y=m.append("defs"));var b=m.selectAll('g[data-role="'.concat(p,'"]')).data(r,function(e){return e.uniqueKey}),I=b.exit(),C=I.size();I.each(function(e,t){var n=this,i=(C-1-t)*v;s.select(this).selectAll("line").transition().delay(i).duration(g).ease(s.easeBackIn).attr("x2",function(){return this.getAttribute("x1")}).attr("y2",function(){return this.getAttribute("y1")}),s.select(this).transition().delay(i).duration(g).style("opacity","0").remove().on("end",function(){var e,t=n.dataset.gradientId;t&&(null===(e=document.getElementById(t))||void 0===e||e.remove())})});var w=b.enter().append("g").attr("data-role",p).style("opacity","0").style("pointer-events","none");w.each(function(){var e="radial-link-beam-".concat(c++);this.dataset.gradientId=e;var t=y.append("linearGradient").attr("id",e).attr("gradientUnits","userSpaceOnUse");t.append("stop").attr("offset","0%").attr("stop-opacity","0"),t.append("stop").attr("offset","45%").attr("stop-opacity","0.3"),t.append("stop").attr("offset","100%").attr("stop-opacity","1")});var x=function(e,t){var n=w.append("line").attr("data-role","".concat(p).concat(e)).style("stroke-linecap","round").style("pointer-events","none");return t&&n.style("mix-blend-mode","screen"),n};x("-aura",!0),x("-core",!1),x("-pulse",!0).style("display","none");var k=function(e,t,n){var i=s.select(e).selectAll("line").attr("x1",t.x1).attr("y1",t.y1).each(function(){this.dataset.linkLength=String(t.length)});n.fromStart&&i.attr("x2",t.x1).attr("y2",t.y1),i.transition().delay(n.delay).duration(f).ease(s.easeBackOut).attr("x2",t.x2).attr("y2",t.y2);var r=e.dataset.gradientId,a=r?document.getElementById(r):null;a&&(a.setAttribute("x1",String(t.x1)),a.setAttribute("y1",String(t.y1)),a.setAttribute("x2",String(t.x2)),a.setAttribute("y2",String(t.y2)))};w.each(function(e,t){k(this,u(a,e,d),{fromStart:!0,delay:t*v})}),w.transition().delay(function(e,t){return t*v}).duration(f).style("opacity","1"),b.each(function(e){k(this,u(a,e,d),{fromStart:!1,delay:0})}),b.transition().duration(f).style("opacity","1"),o&&h(n,i,o)},t.handleRadialItemClick=function(e,t,n){e?n():t()};var s=o(n(600)),l=n(1123),c=0,d=null;function u(e,t,n){var i=t.x-e.x,r=t.y-e.y,a=Math.hypot(i,r)||1,o=i/a,s=r/a,l=Math.min(Math.max(n,0),.5*a),c=Math.max(l+1,a-t.r);return{x1:e.x+o*l,y1:e.y+s*l,x2:e.x+o*c,y2:e.y+s*c,length:c-l}}function p(e,t){return s.select(e).select('line[data-role$="'.concat(t,'"]'))}function h(e,t,n){if(e){var i="".concat(t,"-beam"),r=!1;s.select(e).selectAll('g[data-role="'.concat(i,'"]')).each(function(e){var t,i=n(e),a=i.isActive?2.6:1.7,o=this.dataset.gradientId,s=o?document.getElementById(o):null;null==s||s.querySelectorAll("stop").forEach(function(e){return e.setAttribute("stop-color",i.color)}),p(this,"-aura").style("stroke",o?"url(#".concat(o,")"):i.color).style("stroke-width",String(3.6*a)).style("opacity",String(i.isActive?.34:.22)),p(this,"-core").style("stroke",o?"url(#".concat(o,")"):i.color).style("stroke-width",String(a)).style("stroke-dasharray",i.dashed?"3 4":"none");var l=p(this,"-pulse");if(i.pulse){r=!0;var c=l.node(),d=Number(null!==(t=null==c?void 0:c.dataset.linkLength)&&void 0!==t?t:0),u=Math.max(8,.14*d);c&&(c.dataset.pulseDash=String(u)),l.attr("data-radial-pulse","1").style("display",null).style("stroke","rgba(255, 255, 255, 0.85)").style("stroke-width",String(1.15*a)).style("stroke-dasharray","".concat(u," ").concat(d))}else l.attr("data-radial-pulse",null).style("display","none")}),r&&(d||(d=s.timer(function(e){var t=document.querySelectorAll('line[data-radial-pulse="1"]');if(0===t.length)return null==d||d.stop(),void(d=null);var n=e%1600/1600;t.forEach(function(e){var t,i,r=Number(null!==(t=e.dataset.linkLength)&&void 0!==t?t:0),a=Number(null!==(i=e.dataset.pulseDash)&&void 0!==i?i:0);e.setAttribute("stroke-dashoffset",String(a-n*(r+a)))})})))}}},8748(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var o,s=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),c=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=o(e),i=0;i<n.length;i++)"default"!==n[i]&&s(t,e,n[i]);return l(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.ChildInteractionController=void 0;var d=c(n(600)),u=n(1123),p=n(996),h=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.deps=t},(t=[{key:"setChildrenHiddenState",value:function(e,t){var n=this;e.forEach(function(e){var i=n.getChildOffset(e),r=e.view.viewInitializer,a=n.deps.getActiveChildKey()===e.getKey(),o=r.yinYangGroup.node();if(o){var s=d.select(o);s.interrupt(),t?s.style("pointer-events","none").style("opacity","0").attr("transform","translate(".concat(i.x,", ").concat(i.y,")")):s.style("pointer-events","auto").style("opacity","1").attr("transform","translate(0, 0)")}var l=r.yinOrYangGroup.yin.graphElementGroup.node();if(l){var c=d.select(l);c.interrupt(),t?c.style("opacity","0").attr("transform","translate(".concat(i.x,", ").concat(i.y,")")):c.style("opacity","1").attr("transform","translate(0, 0)")}var u=r.yinOrYangGroup.yang.graphElementGroup.node();if(u){var p=d.select(u);p.interrupt(),t?p.style("opacity","0").attr("transform","translate(".concat(i.x,", ").concat(i.y,")")):p.style("opacity","1").attr("transform","translate(0, 0)")}t||n.applyChildActiveStyle(e,a)})}},{key:"attachChildToggleHandler",value:function(e,t){var n=this,i=t.get(e.getKey());if(i){var r=function(){var t,r;if(n.deps.openActionMenuFromChild(e),null===(r=(t=n.deps).onUserCuttingClicked)||void 0===r||r.call(t,e),n.deps.view.viewInitializer.isInOddMode()){var a=n.deps.view.viewInitializer.getDisplayingOddId();i.oddId!==a?(n.enterOddView(i.oddId),n.deps.highlightOddInChildren(i.oddId)):n.deps.highlightOddInChildren(i.oddId)}else n.deps.view.yinYangDrawer.setActiveOddId(i.oddId),n.deps.highlightOddInChildren(i.oddId)},a=e.view.viewInitializer.yinYangGroup.node();a&&d.select(a).style("cursor","pointer"),e.view.viewInitializer.yinYangGroup.addEventListener("click.child-toggle",r),e.view.viewInitializer.yinOrYangGroup.yin.graphElementGroup.addEventListener("click.child-toggle",r),e.view.viewInitializer.yinOrYangGroup.yang.graphElementGroup.addEventListener("click.child-toggle",r)}}},{key:"attachChildHoverHandler",value:function(e,t){var n=this,i=t.get(e.getKey());if(i){var r=e.view.viewInitializer.yinYangGroup.node(),a=function(){var e,t;n.deps.view.spikeDrawer.highlightSpikeByCuttingIndex(i.oddId,i.cuttingIndex),r&&d.select(r).style("filter","brightness(1.3) drop-shadow(0 0 7px rgba(255,255,255,0.4))"),null===(t=(e=n.deps).onChildHover)||void 0===t||t.call(e,i.oddId,i.cuttingIndex)},o=function(){var e,t;n.deps.view.spikeDrawer.unhighlightSpikes(),r&&d.select(r).style("filter",null),null===(t=(e=n.deps).onChildHover)||void 0===t||t.call(e,null)};[e.view.viewInitializer.yinYangGroup,e.view.viewInitializer.yinOrYangGroup.yin.graphElementGroup,e.view.viewInitializer.yinOrYangGroup.yang.graphElementGroup].forEach(function(e){e.addEventListener("mouseenter.child-hover",a),e.addEventListener("mouseleave.child-hover",o)})}}},{key:"attachBackgroundClickHandler",value:function(){var e=this,t=this.deps.view.viewInitializer.graphicContainer.node();t&&t.addEventListener("click",function(t){var n=t.target;n&&(n.closest("[data-odd-id]")||n.closest("[data-role^='odd-interactive-layer']")||n.closest("[data-role='children-group']"))||e.deps.cancelOddHighlight()})}},{key:"enterOddView",value:function(e){var t=this.deps.getCurrentComponent();if(t){var n=t.odds.find(function(t){return t.id===e});n&&(this.deps.view.yinYangDrawer.setActiveOddId(null),this.deps.view.viewInitializer.animateToOdd(e,(0,p.oddTensionFromCuttings)(n.cuttingScores,n.cuttingWeights),u.animationConfig.componentSwitchDurationMs),this.deps.syncGhostTensionFromAction(),this.deps.renderGhostDetailsForActiveAction())}}},{key:"exitOddView",value:function(){this.deps.view.yinYangDrawer.setActiveOddId(null),this.deps.highlightOddInChildren(null),this.deps.view.viewInitializer.animateToComponentView(u.animationConfig.componentSwitchDurationMs),this.deps.syncGhostTensionFromAction(),this.deps.renderGhostDetailsForActiveAction()}},{key:"setActiveChild",value:function(e,t){var n=this;this.deps.setActiveChildKey(t),e.forEach(function(e){n.applyChildActiveStyle(e,e.getKey()===t)})}},{key:"clearActiveChild",value:function(e){var t=this;this.deps.setActiveChildKey(null),e.forEach(function(e){t.applyChildActiveStyle(e,!1)})}},{key:"animateChildren",value:function(e,t,n,i){var r=this;if(0===e.length)return null==i||i(),Promise.resolve();t?null==n||n():null==i||i();var a,o=u.animationConfig.componentSwitchDurationMs,s=0,l=3*e.length,c=function(){(s+=1)===l&&a()};return new Promise(function(n){a=n,e.forEach(function(e){var n=r.getChildOffset(e),i=e.view.viewInitializer,a=i.yinYangGroup.node();if(a){var s=d.select(a);s.interrupt(),t&&s.style("pointer-events","auto"),s.transition().duration(o).ease(d.easeBackOut).style("opacity",t?"1":"0").attr("transform",t?"translate(0, 0)":"translate(".concat(n.x,", ").concat(n.y,")")).on("end",function(){t||s.style("pointer-events","none"),c()})}else c();var l=i.yinOrYangGroup.yin.graphElementGroup.node();if(l){var u=d.select(l);u.interrupt(),u.transition().duration(o).ease(d.easeBackOut).style("opacity",t?"1":"0").attr("transform",t?"translate(0, 0)":"translate(".concat(n.x,", ").concat(n.y,")")).on("end",c)}else c();var p=i.yinOrYangGroup.yang.graphElementGroup.node();if(p){var h=d.select(p);h.interrupt(),h.transition().duration(o).ease(d.easeBackOut).style("opacity",t?"1":"0").attr("transform",t?"translate(0, 0)":"translate(".concat(n.x,", ").concat(n.y,")")).on("end",c)}else c()})})}},{key:"applyChildActiveStyle",value:function(e,t){var n=e.view.viewInitializer,i=n.yinYangGroup.node();i&&d.select(i).style("opacity","1").style("filter",t?"drop-shadow(0 0 12px rgba(255, 255, 255, 0.9)) brightness(1.1)":"brightness(0.85)");var r=n.yinOrYangGroup.yin.graphElementGroup.node();r&&d.select(r).style("opacity","1");var a=n.yinOrYangGroup.yang.graphElementGroup.node();a&&d.select(a).style("opacity","1")}},{key:"getChildOffset",value:function(e){var t=this.deps.view.viewInitializer,n=e.view.viewInitializer;return{x:t.positionX-n.positionX,y:t.positionY-n.positionY}}}])&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.ChildInteractionController=h},3014(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.ChildrenOrbitService=void 0;var o=n(9857),s=function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)},(t=[{key:"buildOrbitData",value:function(e){return(0,o.buildChildrenOrbitData)(e)}},{key:"computeTranslation",value:function(e,t){return(0,o.computeOrbitTranslation)(e,t)}}])&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.ChildrenOrbitService=s},2295(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=a(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){l=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(l)throw o}}}}function a(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function s(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,l(i.key),i)}}function l(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.EventFieldLifecycleController=void 0;var c=n(8906),d=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.deps=t,this._targetsCacheKey="",this._targetsCacheResult=[]},(t=[{key:"updateEventField",value:function(){if(this.refreshTargets()){var e=this.deps.getGlobalGroupNode();e&&(this.deps.eventFieldRenderer.ensureElements({globalGroupNode:e,requiredCount:this.deps.state.eventField.targets.length}),this.updateEventFieldVisual(),this.startEventFieldAnimation())}}},{key:"refreshTargets",value:function(){var e,t=this.deps.getActiveKeyEvents(),n=null===(e=this.deps.getCurrentComponentOrUndefined())||void 0===e?void 0:e.id;if(0===t.length||!n)return this.deps.state.setEventFieldTargets([]),this.deps.eventFieldRenderer.hide(),this.stopEventFieldAnimation(),!1;var i=this.getTargets(t,n),r=i.targets,a=i.changed;return this.deps.state.setEventFieldTargets(r),0===r.length?(this.deps.eventFieldRenderer.hide(),this.stopEventFieldAnimation(),!1):(a&&this.deps.state.setEventFieldRevealStartedAt(performance.now()),!0)}},{key:"getTargets",value:function(e,t){var n=this,i=this.deps.getActiveItems(),r=e.map(function(e){return n.buildTargetsCacheKey(e,i,t)}).join("§");if(r===this._targetsCacheKey)return{targets:this._targetsCacheResult,changed:!1};var a=this.mergeTargets(e,i,t);return this._targetsCacheKey=r,this._targetsCacheResult=a,{targets:a,changed:!0}}},{key:"mergeTargets",value:function(e,t,n){var i,s=new Map,l=r(e);try{for(l.s();!(i=l.n()).done;){var d,u=i.value,p=r((0,c.buildEventFieldTargets)({keyEvent:u,activeItems:t,currentComponentId:n,childControllers:this.deps.getChildControllers(),childOddMap:this.deps.childOddMap}));try{for(p.s();!(d=p.n()).done;){var h=d.value,f=void 0!==h.childIndex?"child:".concat(h.childIndex):"component:".concat(h.targetComponentId),g=s.get(f);(!g||h.scoreBonus>g.scoreBonus)&&s.set(f,h)}}catch(e){p.e(e)}finally{p.f()}}}catch(e){l.e(e)}finally{l.f()}return function(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(s.values())}},{key:"buildTargetsCacheKey",value:function(e,t,n){var i=new Set(e.targetedActionIds),r=t.filter(function(t){return"keyEvent"===t.kind&&t.actionId===e.id||"action"===t.kind&&i.has(t.actionId)}).map(function(e){return"".concat(e.actionId,":").concat(e.slotIndex)}).join(",");return"".concat(e.id,"|").concat(n,"|").concat(this.deps.childOddMap.size,"|").concat(r)}},{key:"updateEventFieldVisual",value:function(){var e=this,t=this.deps.getEventFieldSource(),n=this.deps.state.eventField.targets.map(function(t){var n=null;return void 0!==t.childIndex?n=e.deps.getChildRenderedCenter(e.deps.getChildControllers()[t.childIndex]):t.targetComponentId&&(n=e.deps.getComponentBorderTargetPoint(t.targetComponentId)),n?{end:n,scoreBonus:t.scoreBonus}:null}).filter(function(e){return null!==e});this.deps.eventFieldRenderer.updateVisual({sourceCenter:t.center,sourceRadius:t.radius,segments:n,phase:this.deps.state.eventField.phase,revealStartedAt:this.deps.state.eventField.revealStartedAt})}},{key:"startEventFieldAnimation",value:function(){var e=this;if(void 0===this.deps.state.eventField.frameId){this.deps.state.setEventFieldLastTimestamp(void 0);var t=function(n){var i;if(!e.deps.eventFieldRenderer.hasActiveGroup())return e.deps.state.setEventFieldFrameId(void 0),void e.deps.state.setEventFieldLastTimestamp(void 0);var r=n-(null!==(i=e.deps.state.eventField.lastTimestamp)&&void 0!==i?i:n);e.deps.state.setEventFieldLastTimestamp(n),e.deps.state.setEventFieldPhase(e.deps.state.eventField.phase+.001*r),e.refreshTargets()&&(e.updateEventFieldVisual(),e.deps.state.setEventFieldFrameId(requestAnimationFrame(t)))};this.deps.state.setEventFieldFrameId(requestAnimationFrame(t))}}},{key:"stopEventFieldAnimation",value:function(){void 0!==this.deps.state.eventField.frameId&&(cancelAnimationFrame(this.deps.state.eventField.frameId),this.deps.state.setEventFieldFrameId(void 0)),this.deps.state.setEventFieldLastTimestamp(void 0)}}])&&s(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.EventFieldLifecycleController=d},6016(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return a(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){l=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(l)throw o}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,s(i.key),i)}}function s(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var l,c=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),d=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),u=this&&this.__importStar||(l=function(e){return l=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},l(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=l(e),i=0;i<n.length;i++)"default"!==n[i]&&c(t,e,n[i]);return d(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.EventFieldRenderer=void 0;var p=u(n(600)),h=n(8625),f=n(1123),g=f.animationConfig.forceFieldRevealDurationMs,v=0;function m(e){var t=Math.min(1,Math.max(0,e));return t*t*(3-2*t)}var y=function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.group=null,this.rings=[],this.layers=[],this.coreHalo=null,this._hideTimeoutId=null,this._retractFrameId=null},t=[{key:"hasActiveGroup",value:function(){return null!==this.group}},{key:"ensureElements",value:function(e){var t=(0,h.getEventFieldColors)();if(null!==this._hideTimeoutId&&(clearTimeout(this._hideTimeoutId),this._hideTimeoutId=null),null!==this._retractFrameId&&(cancelAnimationFrame(this._retractFrameId),this._retractFrameId=null),this.group&&(this.group.style.transition="",this.group.style.opacity="1"),!this.group){var n=p.select(e.globalGroupNode).append("g").attr("data-role","event-field").style("pointer-events","none").style("opacity","1");this.group=n.node();for(var i=0;i<3;i++)this.rings.push(n.append("circle").style("fill","none").style("stroke",t.ring).style("stroke-width","5").style("pointer-events","none").node());this.coreHalo=n.append("circle").style("fill","none").style("stroke",t.core).style("stroke-width","5").style("pointer-events","none").node()}for(p.select(this.group).raise();this.layers.length<e.requiredCount;){for(var r=p.select(this.group).append("g").style("pointer-events","none").style("filter","drop-shadow(0 0 12px ".concat(t.glow,")")),a=r.node(),o=r.append("line").style("stroke",t.glow).style("stroke-width","9").style("stroke-linecap","round").style("stroke-opacity","0.16").style("pointer-events","none").node(),s=r.append("line").style("stroke",t.cord).style("stroke-width","4").style("stroke-linecap","round").style("pointer-events","none").node(),l=[],c=[],d=0;d<3;d++){var u="event-field-capsule-grad-".concat(v++),f=r.append("defs").append("linearGradient").attr("id",u).attr("gradientUnits","userSpaceOnUse");f.append("stop").attr("offset","0%").attr("stop-color",t.capsule).attr("stop-opacity",0),f.append("stop").attr("offset","20%").attr("stop-color",t.capsule).attr("stop-opacity",1),f.append("stop").attr("offset","80%").attr("stop-color",t.capsule).attr("stop-opacity",1),f.append("stop").attr("offset","100%").attr("stop-color",t.capsule).attr("stop-opacity",0),c.push(f.node()),l.push(r.append("line").style("stroke","url(#".concat(u,")")).style("stroke-linecap","round").style("pointer-events","none").style("filter","drop-shadow(0 0 8px ".concat(t.capsule,")")).node())}var g=r.append("circle").style("fill","none").style("stroke",t.capsule).style("stroke-width","5").style("pointer-events","none").node(),m=r.append("circle").style("fill",t.glow).style("pointer-events","none").node(),y=r.append("circle").style("fill",t.core).style("pointer-events","none").node();this.layers.push({layerGroup:a,cordHalo:o,cord:s,capsules:l,capsuleGradients:c,shock:g,headAura:m,headCore:y,_capsuleWidth:null,_hidden:!1,_prevCord:null})}for(;this.layers.length>e.requiredCount;){var b=this.layers.pop();b&&p.select(b.layerGroup).remove()}}},{key:"hide",value:function(){var e=this;if(this.group&&null===this._hideTimeoutId){var t=this.group;t.style.transition="opacity ".concat(f.animationConfig.fieldFadeOutDurationMs,"ms ease"),t.getBoundingClientRect(),t.style.opacity="0",this._hideTimeoutId=setTimeout(function(){e._hideTimeoutId=null,e.clear()},f.animationConfig.fieldFadeOutDurationMs),this.retractGeometry()}}},{key:"retractGeometry",value:function(){var e=this;if(null===this._retractFrameId){var t=this.layers.map(function(e){return e._prevCord});if(!t.every(function(e){return null===e})){var n=f.animationConfig.fieldFadeOutDurationMs,i=performance.now(),r=function(){var a=Math.min(1,(performance.now()-i)/n),o=p.easeCubicOut(1-a);e.layers.forEach(function(e,n){var i=t[n];if(i){var r=String(i.sx+(i.ex-i.sx)*o),a=String(i.sy+(i.ey-i.sy)*o);e.cord.setAttribute("x2",r),e.cord.setAttribute("y2",a),e.cordHalo.setAttribute("x2",r),e.cordHalo.setAttribute("y2",a),e.shock.setAttribute("cx",r),e.shock.setAttribute("cy",a),e.headAura.setAttribute("cx",r),e.headAura.setAttribute("cy",a),e.headCore.setAttribute("cx",r),e.headCore.setAttribute("cy",a)}}),e._retractFrameId=a<1?requestAnimationFrame(r):null};this._retractFrameId=requestAnimationFrame(r)}}}},{key:"clear",value:function(){null!==this._hideTimeoutId&&(clearTimeout(this._hideTimeoutId),this._hideTimeoutId=null),null!==this._retractFrameId&&(cancelAnimationFrame(this._retractFrameId),this._retractFrameId=null),this.group&&(p.select(this.group).remove(),this.group=null),this.rings=[],this.layers=[],this.coreHalo=null}},{key:"updateVisual",value:function(e){var t=this;if(this.group){var n=e.sourceCenter,i=e.sourceRadius,a=e.segments,o=e.phase,s=e.revealStartedAt;if(n&&0!==a.length){this.group.style.display="";var l,c=void 0===s?1:Math.max(0,Math.min(1,(performance.now()-s)/g)),d=p.easeCubicOut(c),u=i+1,f=r(a);try{for(f.s();!(l=f.n()).done;){var v=l.value;u=Math.max(u,Math.hypot(v.end.x-n.x,v.end.y-n.y))}}catch(e){f.e(e)}finally{f.f()}for(var y=u-i,b=new Array(3),I=new Array(3),C=0;C<3;C++){var w=(.3*o+C/3)%1;I[C]=w,b[C]=i+w*y;var x=this.rings[C];x&&(x.setAttribute("cx",String(n.x)),x.setAttribute("cy",String(n.y)),x.setAttribute("r",String(b[C])),x.style.opacity=String(.8*Math.pow(1-w,1.4)*Math.min(1,14*w)*d))}if(this.coreHalo){var k=.3*o*3%1;this.coreHalo.setAttribute("cx",String(n.x)),this.coreHalo.setAttribute("cy",String(n.y)),this.coreHalo.setAttribute("r",String(i+2+6*k)),this.coreHalo.style.opacity=String((.15+.55*k)*d)}a.forEach(function(e,a){var o=t.layers[a];if(o){var s=e.end.x-n.x,l=e.end.y-n.y,c=Math.hypot(s,l);if(c<=i+1)o._hidden||(o.layerGroup.style.display="none",o._hidden=!0);else{o._hidden&&(o.layerGroup.style.display="",o._hidden=!1);var u=s/c,p=l/c,f=n.x+u*i,g=n.y+p*i,v=i+(c-i)*d,C=n.x+u*v,w=n.y+p*v;o.cord.setAttribute("x1",String(f)),o.cord.setAttribute("y1",String(g)),o.cord.setAttribute("x2",String(C)),o.cord.setAttribute("y2",String(w)),o.cord.style.opacity=String(d),o.cordHalo.setAttribute("x1",String(f)),o.cordHalo.setAttribute("y1",String(g)),o.cordHalo.setAttribute("x2",String(C)),o.cordHalo.setAttribute("y2",String(w)),o.cordHalo.style.opacity=String(d),o._prevCord={sx:f,sy:g,ex:C,ey:w};var x=(0,h.getEventFieldCapsuleWidth)(e.scoreBonus);if(o._capsuleWidth!==x){o._capsuleWidth=x;var k,S=r(o.capsules);try{for(S.s();!(k=S.n()).done;)k.value.style.strokeWidth=String(x)}catch(e){S.e(e)}finally{S.f()}}for(var _=.35*y,A=.12*y,E=(c-i)/y,O=0,D=0;D<3;D++){var M=o.capsules[D],L=o.capsuleGradients[D];if(M&&L){var F=b[D];if(F>=i&&F<v){var T=Math.max(i,F-110),P=n.x+u*T,B=n.y+p*T,G=n.x+u*F,R=n.y+p*F;M.setAttribute("x1",String(P)),M.setAttribute("y1",String(B)),M.setAttribute("x2",String(G)),M.setAttribute("y2",String(R)),L.setAttribute("x1",String(P)),L.setAttribute("y1",String(B)),L.setAttribute("x2",String(G)),L.setAttribute("y2",String(R));var q=(F-i)/y,z=.98-.18*q*q,N=F-i,j=c-F,H=1;N<110&&(H=Math.min(H,m(N/110))),j<A&&(H=Math.min(H,m(j/A))),M.style.opacity=String(H*z*d)}else M.style.opacity="0";var K=I[D]-E,V=(K-=Math.round(K))*y;V>=-A&&V<0?O=Math.max(O,m((V+A)/A)):V>=0&&V<_&&(O=Math.max(O,m(1-V/_)))}}o.shock.setAttribute("cx",String(C)),o.shock.setAttribute("cy",String(w)),o.shock.setAttribute("r",String(10+48*(1-O))),o.shock.style.opacity=String(.9*O*d),o.headAura.setAttribute("cx",String(C)),o.headAura.setAttribute("cy",String(w)),o.headAura.setAttribute("r",String(9+18*O)),o.headAura.style.opacity=String((.3+.65*O)*d),o.headCore.setAttribute("cx",String(C)),o.headCore.setAttribute("cy",String(w)),o.headCore.setAttribute("r",String(5+4*O)),o.headCore.style.opacity=String((.6+.4*O)*d)}}})}else this.group.style.display="none"}}}],t&&o(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.EventFieldRenderer=y},6664(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.ForceFieldComputationService=void 0,t.mapPropagatedEdgeToDetail=p;var o=n(8474),s=n(1123),l=n(754),c=n(6659),d=n(7290),u=n(3669);function p(e,t){var n,i;return Object.assign(Object.assign({fromComponentId:e.fromComponentId,toComponentId:e.toComponentId,fromOddId:e.fromOddId,toOddId:e.toOddId,fromCuttingId:e.fromCuttingId,toCuttingId:e.toCuttingId,baseDelta:e.baseDelta,weight:e.weight,strategicWeight:e.weight,layerType:e.layerType,propagationFactor:e.propagationFactor,absorption:e.absorption,gap:e.gap,fromState:e.fromState,toState:e.toState,deltaTo:e.deltaTo,rationale:null!==(i=null!==(n=e.rationale)&&void 0!==n?n:(0,l.getInterOddRationale)(t,e.fromOddId,e.toOddId))&&void 0!==i?i:void 0},void 0!==e.targetedCutting?{targetedCutting:e.targetedCutting}:{}),{layersInvolved:(0,l.getLayersInvolved)(t,e.fromOddId,e.toOddId),localLayerWeights:(0,l.getLocalLayerWeightSummary)(t,e.fromOddId,e.toOddId),bridgeLayerWeights:(0,l.getBridgeLayerWeightSummary)(t,e.fromOddId,e.toOddId)})}var h=function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)},(t=[{key:"build",value:function(e){var t,n,i=e.orbitData.length,r=Math.min(e.sourceChildIndex,i-1),a=null===(t=e.orbitData[r])||void 0===t?void 0:t.controller;if(!a||!e.component)return null;var l=e.childOddMap.get(a.getKey()),h=null==l?void 0:l.oddId;if(!h)return null;var f=(0,u.resolveOddCuttingId)(e.component,h,null!==(n=null==l?void 0:l.cuttingIndex)&&void 0!==n?n:0),g=(0,o.propagateForceFieldActionInComponent)(e.component,e.interconnectionGraph,h,f,e.actionDelta,e.actionPropagationFactor,e.propagationLayers,e.allComponents);if(0===g.length)return null;var v=new Map;e.orbitData.forEach(function(t,n){if(n!==r){var i=e.childOddMap.get(t.controller.getKey());if(i){var a=(0,u.resolveOddCuttingId)(e.component,i.oddId,i.cuttingIndex);void 0!==a&&v.set("".concat(e.component.id,"::").concat(i.oddId,"::").concat(a),n)}}});var m=g.map(function(t){return{edge:t,detail:p(t,e.component.id)}}),y=new Set(m.filter(function(t){var n=t.edge;return"inter"===n.layerType&&n.toComponentId===e.component.id&&void 0!==n.targetedCutting}).map(function(e){var t=e.edge;return"".concat(t.toComponentId,"::").concat(t.toOddId,"::").concat(t.targetedCutting)})),b=new Map,I=new Map,C=function(e,t,n,i,r,a){I.has(e)||I.set(e,{startIndex:t,endIndex:n,targetComponentId:i,totalWeight:0,totalDelta:0,revealDelayMs:r,details:[]});var o=I.get(e);o.totalWeight+=Math.abs(a.weight),o.revealDelayMs=Math.max(o.revealDelayMs,r),o.details.push(a)};return m.forEach(function(t){var n,i,a=t.edge,o=t.detail,l=void 0===a.toCuttingId?void 0:"".concat(a.toComponentId,"::").concat(a.toOddId,"::").concat(a.toCuttingId),c=void 0===a.fromCuttingId?void 0:"".concat(a.fromComponentId,"::").concat(a.fromOddId,"::").concat(a.fromCuttingId),d="intra"===a.layerType&&void 0!==l&&(void 0!==a.fromCuttingId||y.has(l)),u=d&&void 0!==c?(null!==(n=b.get(c))&&void 0!==n?n:-1)+1:0;d&&void 0!==l&&b.set(l,u),"bridge"===a.layerType&&a.toComponentId===e.component.id&&void 0!==a.toCuttingId&&b.set("".concat(a.toComponentId,"::").concat(a.toOddId,"::").concat(a.toCuttingId),0);var p=d?u*s.animationConfig.forceFieldRevealChainStepMs:0;if(void 0!==a.toCuttingId){var h=v.get("".concat(a.toComponentId,"::").concat(a.toOddId,"::").concat(a.toCuttingId));if(void 0!==h){var f="intra"===a.layerType&&void 0!==a.fromCuttingId?v.get("".concat(e.component.id,"::").concat(a.fromOddId,"::").concat(a.fromCuttingId)):void 0,g=null!=f?f:r;return void C("".concat(g,"::").concat(a.toComponentId,"::").concat(a.toOddId,"::").concat(a.toCuttingId),g,h,void 0,p,o)}}if(a.toComponentId!==e.component.id){var m=null!==(i=a.toCuttingId)&&void 0!==i?i:-1;C("".concat(r,"::").concat(a.toComponentId,"::").concat(a.toOddId,"::").concat(m),r,void 0,a.toComponentId,p,o)}}),I.forEach(function(e){e.totalDelta=(0,c.calculateDisplayedDelta)(e.details)}),{links:Array.from(I.values()).map(function(e){return{startIndex:e.startIndex,endIndex:e.endIndex,targetComponentId:e.targetComponentId,thickness:(0,d.getForceFieldThickness)(e.totalWeight),potentialGain:e.totalDelta,revealDelayMs:e.revealDelayMs,detail:e.details[0]}}),allLinkDetails:m.map(function(e){return e.detail})}}},{key:"buildFromSource",value:function(e){var t=(0,o.propagateForceFieldActionInComponent)(e.component,e.interconnectionGraph,e.sourceOddId,e.sourceCuttingId,e.actionDelta,e.actionPropagationFactor,e.propagationLayers,e.allComponents);if(0===t.length)return null;var n=t.map(function(t){return{edge:t,detail:p(t,e.component.id)}});return{links:n.map(function(e){var t=e.detail;return{startIndex:0,endIndex:void 0,targetComponentId:t.toComponentId,thickness:(0,d.getForceFieldThickness)(Math.abs(t.weight)),potentialGain:t.deltaTo,revealDelayMs:0,detail:t}}),allLinkDetails:n.map(function(e){return e.detail})}}}])&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.ForceFieldComputationService=h},3026(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(e,t)||s(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=s(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){l=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(l)throw a}}}}function o(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||s(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(e,t){if(e){if("string"==typeof e)return l(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function c(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,d(i.key),i)}}function d(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.ForceFieldDetailsPanel=void 0;var u=n(8474),p=n(6659),h=n(6976),f=n(5463),g=n(6982),v=new Map(g.yasuniActions.map(function(e){return[e.id,e]})),m=n(1204),y=n(2823),b=n(8214),I=n(6049),C=n(9366),w=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.activeComboCardKey=null,this.resolveActionName=function(e){return e},this._cachedPropagationIndex=null,this._frozenHtml=null,this._expandedComboKeys=new Set,this._seenCardKeys=new Set,this._userInteractingTimer=null,this._suppressAutoFitContainer=null,this._suppressAutoFitTimer=null,this._sphereName="",this._sourceNavCallbacks=new Map,this._sourceNavCounter=0,this._sphereDescription="",this._pendingBlockScrollStackItemId=null,this._pendingBlockScrollTimeout=null,this._onOddLegendHoverCb=null,this._onOddLegendActiveChangeCb=null}return t=e,n=[{key:"setOnHeaderUpdate",value:function(e){this._onHeaderUpdate=e}},{key:"setSphereInfo",value:function(e,t){this._sphereName=e,this._sphereDescription=t}},{key:"setActionNameResolver",value:function(e){this.resolveActionName=e}},{key:"setActionTagClickCallback",value:function(e){this.onActionTagClick=e}},{key:"setOnDiagramElementHover",value:function(e){this._onDiagramElementHover=e}},{key:"setComboHighlightCallbacks",value:function(e,t){this.onComboHighlight=e,this.onComboClear=t}},{key:"_getCardKey",value:function(e){return void 0!==e.dataset.keyeventItemId?"keyevent:".concat(e.dataset.keyeventName,"|").concat(e.dataset.keyeventItemId):"".concat(e.dataset.comboType,"|").concat(e.dataset.comboRequires,"|").concat(e.dataset.comboWithinLastN)}},{key:"_hasStableCardKey",value:function(e){return e.classList.contains("ff-chain-combo")&&void 0!==e.dataset.comboType||void 0!==e.dataset.keyeventItemId}},{key:"_isCardCollapseTrigger",value:function(e,t){var n=e.target;return!!n.closest(".ff-card-collapse-btn, .ff-card-weight-chip")||t.classList.contains("ff-chain-keyevent-detail")&&!!n.closest(".ff-card-header")}},{key:"_attachComboHighlightHandlers",value:function(e){var t,n=this;if(this.onComboHighlight||this.onComboClear){var i=e.querySelectorAll(".ff-chain-combo[data-combo-type]"),r=e.querySelectorAll(".ff-chain-keyevent-detail[data-keyevent-item-id], .ff-chain-keyevent-targets[data-keyevent-item-id]");if(0===i.length&&0===r.length)return this.activeComboCardKey=null,void(null===(t=this.onComboClear)||void 0===t||t.call(this));var a=[].concat(o(Array.from(i)),o(Array.from(r)));if(a.forEach(function(e){var t=n._getCardKey(e);t===n.activeComboCardKey&&(e.classList.add("ff-combo-card-active"),n._triggerHighlightFromCard(e)),e.addEventListener("click",function(i){n._handleCardRailClick(i),n._isCardCollapseTrigger(i,e)?i.stopPropagation():(i.stopPropagation(),n.activeComboCardKey!==t&&(a.forEach(function(e){return e.classList.remove("ff-combo-card-active")}),n.activeComboCardKey=t,e.classList.add("ff-combo-card-active"),n._triggerHighlightFromCard(e)))})}),this.onActionTagClick){var s=this.onActionTagClick;e.querySelectorAll(".ff-rule-tag[data-action-id], td.ff-pt-name[data-action-id]").forEach(function(e){e.style.cursor="pointer",e.addEventListener("click",function(t){t.stopPropagation();var i=e.dataset.actionId;i&&s(i,n._extractTagComboContext(e))})})}}}},{key:"_extractTagComboContext",value:function(e){var t,n,i,r=e.closest(".ff-chain-combo[data-combo-type]");if(r){var a=[];try{a=JSON.parse(null!==(t=r.dataset.comboRequires)&&void 0!==t?t:"[]")}catch(e){}var o=r.dataset.comboWithinLastN,s=void 0!==o&&""!==o?parseInt(o,10):void 0,l=r.dataset.comboDeltaMultiplier,c=r.dataset.comboMaxDeltaMultiplier;return{requires:a,withinLastN:s,type:null!==(n=r.dataset.comboType)&&void 0!==n?n:"preparation",comboName:r.dataset.comboName,sourceItemId:r.dataset.comboItemId||void 0,deltaMultiplier:l?parseFloat(l):void 0,maxDeltaMultiplier:c?parseFloat(c):void 0}}var d=e.closest(".ff-chain-keyevent-detail[data-keyevent-item-id], .ff-chain-keyevent-targets[data-keyevent-item-id]"),u=null==d?void 0:d.dataset.keyeventItemId;if(d&&u){var p=[];try{p=JSON.parse(null!==(i=d.dataset.keyeventRequires)&&void 0!==i?i:"[]")}catch(e){}var h=d.dataset.keyeventWithinNextN;return{requires:p,withinLastN:void 0!==h&&""!==h?parseInt(h,10):void 0,type:"amplification",comboName:d.dataset.keyeventName,sourceItemId:u,direction:"forward"}}}},{key:"_buildComboSectionHtml",value:function(e,t){var n=this;if(!(null==e?void 0:e.length))return'<div class="ff-chain-separator"></div>';var i=e.map(function(e){var i,r,a,o,s,l="preparation"===e.type?"🟢":"exploitation"===e.type?"🔵":"stabilisation"===e.type?"🟡":"dangereux"===e.type?"🔴":"⚪",c="preparation"===e.type?"Préparation":"exploitation"===e.type?"Exploitation":"stabilisation"===e.type?"Stabilisation":"dangereux"===e.type?"Risque":"Combo",d=e.requires&&e.requires.length>0?e.requires:[],u=JSON.stringify(d).replace(/"/g,"""),p=void 0!==e.withinLastN?"".concat(e.withinLastN):"",h=(null!==(i=e.name)&&void 0!==i?i:"").replace(/"/g,"""),f=(null!=t?t:"").replace(/"/g,"""),g="".concat(l," ").concat(c," — ").concat(null!==(a=null!==(r=e.name)&&void 0!==r?r:e.comboId)&&void 0!==a?a:""),v=n._buildPrereqBreakdownHtml(e),m=e.triggered?e.baseDelta*(e.deltaMultiplier-1):0,y=!e.triggered||Math.abs(m)<.005,b=y?0:m,I=b>=0?"+":"",C=y?"ff-delta-neu":b>0?"ff-delta-pos":"ff-delta-neg";return'<div class="ff-chain-card ff-chain-combo '.concat(y?"ff-combo-val-neu":b>0?"ff-combo-val-pos":"ff-combo-val-neg",'" data-combo-type="').concat(null!==(o=e.type)&&void 0!==o?o:"",'" data-combo-requires="').concat(u,'" data-combo-within-last-n="').concat(p,'" data-combo-name="').concat(h,'" data-combo-item-id="').concat(f,'" data-combo-triggered="').concat(e.triggered,'" data-combo-delta-multiplier="').concat(e.deltaMultiplier,'" data-combo-max-delta-multiplier="').concat(e.maxDeltaMultiplier,'">\n <button class="ff-card-collapse-btn ').concat(C,'" title="Replier" tabindex="-1">').concat(I).concat(b.toFixed(2),'</button>\n <div class="ff-card-inner">\n <div class="ff-card-header">\n <div class="ff-card-title">').concat(g,'</div>\n </div>\n <div class="ff-card-body">\n <div class="ff-card-steps">\n <div class="ff-combo-label">').concat(null!==(s=e.description)&&void 0!==s?s:"","</div>\n ").concat(v,"\n </div>\n </div>\n </div>\n </div>")}).join("");return'<div class="ff-chain-separator ff-chain-separator-combo-start"></div><div class="ff-combo-group">'.concat(i,'</div><div class="ff-chain-separator"></div>')}},{key:"_buildKeyEventMediaHtml",value:function(e,t,n){var i=f.yasuniKeyEventMap.get(e),r=!!i&&(0,f.isAdverseKeyEvent)(i);if(!r&&!(0,y.isKeyEventUnlocked)(e))return'<div class="ff-card-locked" role="img" aria-label="Événement Clé verrouillé">\n '.concat((0,y.buildLockGlyphHtml)("ff-card-locked-glyph"),'\n <span class="ff-card-locked-label">Verrouillé</span>\n </div>');var a=n?' data-full-src="'.concat((0,y.getKeyEventImageUrl)(e,"full"),'" data-caption="').concat(t.replace(/"/g,"""),'"'):"",o=r?' onerror="this.remove()"':"";return'<img class="ff-card-thumb'.concat(n?" ff-zoom-thumb":"",'" src="').concat((0,y.getKeyEventImageUrl)(e,"thumb"),'"').concat(a,' alt="" loading="lazy" decoding="async"').concat(o,">")}},{key:"_buildAmplifierSectionHtml",value:function(e,t){var n=this;if(!(null==e?void 0:e.length))return"";var i=(null!=t?t:"").replace(/"/g,"""),r=e.map(function(e){var t,r=e.name.replace(/"/g,"""),a=f.yasuniKeyEventMap.get(e.sourceId),o=!!a&&(0,f.isAdverseKeyEvent)(a),s=null!==(t=null==a?void 0:a.shortDescription)&&void 0!==t?t:"",l=o||(0,y.isKeyEventUnlocked)(e.sourceId)?"":" ff-keyevent-locked",c=o?" ff-chain-amplifier--adverse":"",d=e.scoreBonus<0?"ff-delta-neg":"ff-delta-pos",u=n._buildKeyEventMediaHtml(e.sourceId,e.name,!0);return'<div class="ff-chain-card ff-chain-amplifier'.concat(c).concat(l,'" data-amplifier-key-event-id="').concat(e.sourceId,'" data-amplifier-name="').concat(r,'" data-amplifier-item-id="').concat(i,'">\n <button class="ff-card-collapse-btn ').concat(d,'" title="').concat(o?"Malus":"Bonus",' effectif (réduit selon la position) — replier" tabindex="-1">').concat((0,I.formatSignedDelta)(e.scoreBonus),'</button>\n <div class="ff-card-inner">\n <div class="ff-card-header">\n <div class="ff-card-title">').concat(e.name,'</div>\n </div>\n <div class="ff-card-body">\n <div class="ff-card-media">\n ').concat(u,'\n <div class="ff-card-steps-overlay"><div class="ff-card-steps">\n <div class="ff-combo-label">').concat(s,'</div>\n <div class="ff-amplifier-coeffs">\n <span class="ff-amplifier-coeff">Score ').concat((0,I.formatSignedDelta)(e.scoreBonus),'</span>\n <span class="ff-amplifier-coeff">Poids ').concat((0,I.formatSignedDelta)(e.weightBonus),"</span>\n </div>\n </div></div>\n </div>\n </div>\n </div>\n </div>")}).join("");return'<div class="ff-chain-separator ff-chain-separator-amplifier-start"></div><div class="ff-combo-group">'.concat(r,'</div><div class="ff-chain-separator"></div>')}},{key:"buildKeyEventCardHtml",value:function(e){var t=this,n=e.keyEvent,i=e.targetedActions,r=e.sourceItemId,a=e.breakdowns,o=(0,f.isAdverseKeyEvent)(n),s=o?" ff-chain-keyevent-detail--adverse":"",l=o||(0,y.isKeyEventUnlocked)(n.id)?"":" ff-keyevent-locked",c=JSON.stringify(i.map(function(e){return e.id})).replace(/"/g,"""),d=void 0!==n.withinNextN?"".concat(n.withinNextN):"",u=n.name.replace(/"/g,"""),p=(null!=r?r:"").replace(/"/g,"""),h='<div class="ff-chain-card ff-chain-keyevent-detail'.concat(s).concat(l,'" data-keyevent-requires="').concat(c,'" data-keyevent-within-next-n="').concat(d,'" data-keyevent-name="').concat(u,'" data-keyevent-item-id="').concat(p,'">\n <div class="ff-card-inner">\n <div class="ff-card-header" title="Replier/déplier">\n <div class="ff-card-title">').concat(n.name,'</div>\n </div>\n <div class="ff-card-body">\n <div class="ff-card-media">\n ').concat(this._buildKeyEventMediaHtml(n.id,n.name,!0),"\n </div>\n </div>\n </div>\n </div>"),g=this._buildDelayedTargetsCardHtml({effect:n.effect,targetedActions:i,breakdowns:a,requiresAttr:c,withinNextNAttr:d,nameAttr:u,itemIdAttr:p,adverse:o});return{html:this._wrapChainGrid(h+g),attachHandlers:function(n){t._attachPrereqNavHandlers(n,e.onNavigateToAction),t._attachComboHighlightHandlers(n),t._initCardRailState(n)}}}},{key:"_buildDelayedTargetsCardHtml",value:function(e){var t=e.effect,n=e.targetedActions,i=e.breakdowns,r=e.adverse;if(0===n.length)return"";var a=new Map((null!=i?i:[]).map(function(e){return[e.id,e]})),o=n.map(function(e){var n,r=a.get(e.id),o=(null==r?void 0:r.played)?{scoreBonus:r.effectiveScoreBonus,weightBonus:r.effectiveWeightBonus}:t,s=(0,I.buildKeyEventChipsHtml)(o),l="";return i&&(l=(null==r?void 0:r.played)?'<td class="ff-pt-val '.concat((n=r.positional,n>=.7?"ff-pt-val--high":n<=.3?"ff-pt-val--low":"ff-pt-val--mid"),'" title="Efficacité positionnelle — pic optimal ≈68% de la fenêtre">').concat(Math.round(100*r.positional),"%</td>"):'<td class="ff-pt-val ff-pt-val--unplayed" title="Pas encore jouée dans la fenêtre d\'effet">—</td>'),'<tr><td class="ff-pt-name" data-action-id="'.concat(e.id,'" title="').concat(e.name,'">').concat(e.name,"</td>")+"".concat(l,'<td class="ff-pt-val">').concat(s,"</td></tr>")}).join(""),s=r?" ff-chain-keyevent-targets--adverse":"",l=r?"Actions entravées":"Actions amplifiées",c=i?"Le % indique la position dans la fenêtre d'effet — pic optimal ≈68%, ".concat(r?"malus":"bonus"," réduit vers les bords"):"",d=i?'<th class="ff-pt-head-val">Pos.</th>':"",u=t.scoreBonus<0?"ff-delta-neg":"ff-delta-pos",p=0!==t.weightBonus?'<span class="ff-card-weight-chip" title="Bonus de poids (au pic de la fenêtre)">\n <span class="ff-weight-value">'.concat((0,I.formatSignedDelta)(t.weightBonus),"</span>\n </span>"):"";return'<div class="ff-chain-separator"></div><div class="ff-chain-card ff-chain-keyevent-targets'.concat(s,'" data-keyevent-requires="').concat(e.requiresAttr,'" data-keyevent-within-next-n="').concat(e.withinNextNAttr,'" data-keyevent-name="').concat(e.nameAttr,'" data-keyevent-item-id="').concat(e.itemIdAttr,'">\n <button class="ff-card-collapse-btn ').concat(u,'" title="Replier" tabindex="-1">').concat((0,I.formatSignedDelta)(t.scoreBonus),"</button>\n ").concat(p,'\n <div class="ff-card-inner">\n <div class="ff-card-header" title="').concat(c,'">\n <div class="ff-card-title">').concat(l," · ").concat(n.length,'</div>\n </div>\n <div class="ff-card-body">\n <table class="ff-combo-prereq-table ff-keyevent-targets-table">\n <thead>\n <tr>\n <th class="ff-pt-head-name">Action</th>\n ').concat(d,'\n <th class="ff-pt-head-val">Résultat</th>\n </tr>\n </thead>\n <tbody>').concat(o,"</tbody>\n </table>\n </div>\n </div>\n </div>")}},{key:"_pickActionBlockBadge",value:function(e){if("propagation"===e.type)return{cssClass:"ff-hier-badge--action-prop",label:"Action propagée",rationale:"depuis ".concat(e.sourceOddName||"—")};var t=e.actionId?v.get(e.actionId):void 0;return t&&(0,g.isAdverseAction)(t)?{cssClass:"ff-hier-badge--action-adverse",label:"Action adverse",rationale:t.origin}:{cssClass:"ff-hier-badge--action-direct",label:"Action directe"}}},{key:"_buildBlockHeaderHtml",value:function(e){var t,n,i=e.rationale?'<span class="ff-block-header-rationale">'.concat(e.rationale,"</span>"):"";return'<div class="ff-block-header">\n '.concat(null!==(t=e.iconHtml)&&void 0!==t?t:"",'<span class="ff-hier-badge ').concat(e.badgeClass,'">').concat(e.badgeLabel,'</span>\n <span class="ff-block-header-name">').concat(e.name,"</span>\n ").concat(i,"\n ").concat(null!==(n=e.valueHtml)&&void 0!==n?n:"","\n </div>")}},{key:"_buildKeyEventBlockHtml",value:function(e,t){if("keyEvent"!==e.type)return"";var n=f.yasuniKeyEventMap.get(e.keyEventId);if(!n)return"";var i=this.buildKeyEventCardHtml({keyEvent:n,targetedActions:e.targetedActions,breakdowns:e.breakdowns,sourceItemId:e.stackItemId,onNavigateToAction:t}).html,r=(0,f.isAdverseKeyEvent)(n),a=this._buildBlockHeaderHtml({iconHtml:'<span class="ff-block-header-icon"><img src="'.concat((0,y.getKeyEventIconUrl)(n.id),'" alt="" onerror="this.remove()" /></span>'),badgeClass:r?"ff-hier-badge--keyevent-adverse":"ff-hier-badge--keyevent",badgeLabel:r?"Événement adverse":"Événement Clé",name:n.name,rationale:r?n.origin:void 0,valueHtml:'<span class="ff-block-header-delta '.concat(e.active?r?"ff-delta-neg":"ff-delta-pos":"ff-delta-neu",'">').concat((0,I.formatSignedDelta)(n.effect.scoreBonus),"</span>")});return'<section class="ff-cumulative-block ff-cumulative-block--keyevent'.concat(r?" ff-cumulative-block--keyevent-adverse":""," ff-cumulative-block--keyevent-").concat(e.active?"active":"inactive",' ff-action-expanded"').concat(e.stackItemId?' data-stack-item-id="'.concat(e.stackItemId,'"'):"",">\n ").concat(a,'\n <div class="ff-action-body">\n ').concat(n.shortDescription?'<p class="ff-hier-desc ff-action-desc">'.concat(n.shortDescription,"</p>"):"","\n ").concat(i,"\n </div>\n </section>")}},{key:"_buildPrereqBreakdownHtml",value:function(e){var t,n,i=e.prereqBreakdowns,r="dangereux"===e.type,a=r&&(null!==(t=e.deltaMultiplier)&&void 0!==t?t:0)>1,s=r&&!a?"Atténuation active":a?"Bonus net (risque neutralisé)":"Bonus actif",l=function(e){var t=Math.round(100*(e-1));return 0===t?"±0%":(t>0?"+":"−")+Math.abs(t)+"%"},c=l(e.maxDeltaMultiplier);if(!i||0===i.length)return'<div class="ff-prop-mod-state-row">\n <span class="ff-prop-mod-state-label">'.concat(s,'</span>\n <span class="ff-prop-mod-state-value">').concat(c,' <span class="ff-pt-max-hint">max</span></span>\n </div>');var d=r?"Protecteur":"Prérequis",u=o(i).sort(function(e,t){return t.factor-e.factor}).map(function(e){var t,n=null!==(t=e.label)&&void 0!==t?t:e.id;if(!e.played)return'<tr class="ff-pt-row--unplayed">\n <td class="ff-pt-name" data-action-id="'.concat(e.id,'" title="').concat(n,'">').concat(n,'</td>\n <td class="ff-pt-val ff-pt-val--unplayed">—</td>\n <td class="ff-pt-val ff-pt-val--unplayed">—</td>\n <td class="ff-pt-val-score">\n <span class="ff-pt-score-text ff-pt-val--unplayed">—</span>\n </td>\n </tr>');var i=Math.round(100*e.ratio),r=Math.round(100*e.positional),a=Math.round(100*e.factor),o=e.ratio>1.05?"ff-pt-val--high":e.ratio<.85?"ff-pt-val--low":"ff-pt-val--mid",s=e.factor>.7?"ff-pt-val--high":e.factor<.3?"ff-pt-val--low":"ff-pt-val--mid",l=Math.max(0,Math.min(100,a));return'<tr>\n <td class="ff-pt-name" data-action-id="'.concat(e.id,'" title="').concat(n,'">').concat(n,'</td>\n <td class="ff-pt-val ').concat(o,'">').concat(i,'%</td>\n <td class="ff-pt-val">').concat(r,'%</td>\n <td class="ff-pt-val-score">\n <div class="ff-pt-score-fill ').concat(s,'" style="width:').concat(l,'%"></div>\n <span class="ff-pt-score-text ').concat(s,'">').concat(a,"%</span>\n </td>\n </tr>")}).join(""),p=null!==(n=e.prereqAvgRatio)&&void 0!==n?n:0,h=p>=.7?"ff-pt-val--high":p<=.3?"ff-pt-val--low":"ff-pt-val--mid",f=a?"Le risque est surcompensé : les protecteurs rapportent plus qu'ils n'atténuent (réglage \"Un combo dangereux peut devenir un bonus\" actif)":r?"Atténuation effective actuellement appliquée / atténuation maximale si tous les protecteurs sont joués au pic":"Bonus effectif actuellement appliqué / bonus maximum si tous les prérequis sont joués au pic",g=a?"":' <span class="ff-pt-max-hint">/ '.concat(c," max</span>"),v='<div class="ff-prop-mod-state-row">\n <span class="ff-prop-mod-state-label">'.concat(s,'</span>\n <span class="ff-prop-mod-state-value ').concat(h,'" title="').concat(f,'">').concat(l(e.deltaMultiplier)).concat(g,"</span>\n </div>"),m='<table class="ff-combo-prereq-table">\n <thead>\n <tr>\n <th class="ff-pt-head-name">'.concat(d,'</th>\n <th class="ff-pt-head-val" title="Delta effectif / delta de base (100% = résultat nominal)">Perf.</th>\n <th class="ff-pt-head-val" title="Efficacité positionnelle — pic optimal ≈ 68% de la fenêtre temporelle">Pos.</th>\n <th class="ff-pt-head-val" title="Contribution = Perf × Position">Score</th>\n </tr>\n </thead>\n <tbody>').concat(u,"</tbody>\n </table>"),y=i.filter(function(e){return!e.played}),b="";if(y.length>0){var I=y.length>1?"ces actions":"cette action",C=r?"atténuer ce risque":"activer ce combo",w=void 0!==e.withinLastN?", placez-la dans la stack pour voir slots et fenêtre":"";b='<div class="ff-prop-mod-tip">↑ Jouer '.concat(I," pour ").concat(C).concat(w,"</div>")}var x='<details class="ff-prop-mod-why">\n <summary>Comprendre Perf. / Pos. / Score</summary>\n <div class="ff-prop-mod-why-body">'.concat(r?"Perf. indique si l'action protectrice a atteint son plein delta (100 % = nominal). Pos. indique si elle a été jouée au bon moment dans la fenêtre temporelle (100 % = position optimale). Le Score est le produit des deux — une protection forte (score élevé) réduit l'atténuation appliquée au delta.":"Perf. indique si l'action a atteint son plein delta (100 % = delta nominal obtenu). Pos. indique si elle a été jouée au bon moment dans la fenêtre temporelle (100 % = position optimale). Le Score est le produit des deux et mesure la contribution de ce prérequis au multiplicateur effectif.","</div>\n </details>");return"".concat(v).concat(m).concat(b).concat(x)}},{key:"_computeBlockOptimizationRatio",value:function(e){var t="source"===e.type?e.baseDelta:e.rawDelta;return void 0!==t&&0!==t?e.totalDelta/t*100:void 0}},{key:"_buildTotalCardHtml",value:function(e,t,n,i,r,a){var o,s,l,c=e>=0?"+":"",d=Math.abs(e)<.005?"ff-delta-neu":e>0?"ff-delta-pos":"ff-delta-neg",u="".concat(t," source").concat(t>1?"s":""),p=Number.isFinite(n)?(s=(o=n-100)>=0?"+":"",l=Math.abs(o)<.5?"ff-delta-neu":o>0?"ff-delta-pos":"ff-delta-neg",'<div class="ff-total-optimization" title="'.concat(null!=r?r:"Écart par rapport au delta de base de l'action — 0% = résultat nominal sans combo, négatif = combos pénalisants, positif = combos amplificateurs",'">Perf: <strong class="ff-total-optimization-value ').concat(l,'">').concat(s).concat(Math.round(o),'</strong><span class="ff-total-optimization-unit">%</span></div>')):"",h="number"==typeof a&&0!==a?'<div class="ff-total-weight" title="Variation de poids du satellite ciblé — jamais propagée">Poids <strong class="ff-total-weight-value">'.concat(a>0?"▲ +":"▼ ").concat(a,"</strong></div>"):"",f='<div class="ff-total-body">\n <div class="ff-total-delta '.concat(d,'">').concat(c).concat(e.toFixed(1),"</div>\n ").concat(p,"\n ").concat(h,'\n <div class="ff-total-sources">').concat(u,"</div>\n </div>").concat(null!=i?i:"");return this._renderChainCardHtml({cardClass:"ff-chain-total ff-card-expanded",badgeDelta:e,headerAttrs:"",headerTitle:"Bilan",stepsHtml:f,weightDelta:a})}},{key:"_rawDeltaForRow",value:function(e){return e.absorption>0&&e.gap>0?e.deltaTo/(e.absorption*e.gap):e.deltaTo}},{key:"_buildZoneBarHtml",value:function(e,t){var n=e.map(function(e){return'<div class="ff-zone '.concat(e,'"></div>')}).join("");return'<div class="ff-zone-bar">\n <div class="ff-zone-track">'.concat(n,'</div>\n <div class="ff-zone-marker" style="left:').concat(t,'%"></div>\n </div>')}},{key:"_buildPropagationModifiersSectionHtml",value:function(e){var t=e.filter(function(e){return Number.isFinite(e.absorption)&&Number.isFinite(e.gap)&&0!==e.absorption&&0!==e.gap});if(0===t.length)return'<div class="ff-chain-separator"></div>';var n=t.reduce(function(e,t){return e+Math.max(1e-9,Math.abs(t.deltaTo))},0),i=t.reduce(function(e,t){return e+t.absorption*Math.max(1e-9,Math.abs(t.deltaTo))},0)/n,r=t.reduce(function(e,t){return e+t.gap*Math.max(1e-9,Math.abs(t.deltaTo))},0)/n,a=t.reduce(function(e,t){return e+t.toState*Math.max(1e-9,Math.abs(t.deltaTo))},0)/n,o=t.reduce(function(e,t){return e+t.fromState*Math.max(1e-9,Math.abs(t.deltaTo))},0)/n,s=this._rawDeltaForRow,l=t.reduce(function(e,t){return e+t.deltaTo/t.gap-s(t)},0),c=t.reduce(function(e,t){return e+t.deltaTo-t.deltaTo/t.gap},0),d=(t[0],t.reduce(function(e,t){return Math.abs(t.deltaTo)>Math.abs(e.deltaTo)?t:e},t[0]),a<=39?"Fragilisée":a<=45?"Nominale":a<=55?"Optimale":a<=69?"Stable":"Saturée"),u=function(){if(a<45){var e=Math.ceil(45-a);return'<div class="ff-prop-mod-tip">↑ '.concat(e," pt").concat(e>1?"s":""," pour atteindre la zone optimale (×1.2)</div>")}return a>69?'<div class="ff-prop-mod-tip">Saturation — l\'absorption est atténuée au-delà de 69</div>':""}(),p=o-a,h=p>10?"Amplifié":p<-10?"Atténué":"Neutre",f=function(){if(p>10)return"";if(p<-10){var e=Math.ceil(-10-p);return'<div class="ff-prop-mod-tip">↑ '.concat(e," pt").concat(e>1?"s":""," d'écart pour sortir de la zone atténuée (×1.0 mini)</div>")}var t=Math.ceil(10-p);return'<div class="ff-prop-mod-tip">↑ '.concat(t," pt").concat(t>1?"s":""," d'écart pour amplifier la propagation (×1.2)</div>")}(),g=Math.abs(l)<.005,v=Math.abs(c)<.005,m=g?"ff-prop-mod-neutral":l>0?"ff-prop-mod-bonus":"ff-prop-mod-malus",y=v?"ff-prop-mod-neutral":c>0?"ff-prop-mod-bonus":"ff-prop-mod-malus",b=g||l>=0?"+":"",I=v||c>=0?"+":"",C=g?"ff-delta-neu":l>0?"ff-delta-pos":"ff-delta-neg",w=v?"ff-delta-neu":c>0?"ff-delta-pos":"ff-delta-neg",x=Math.max(0,Math.min(100,a)),k=Math.max(0,Math.min(100,p+50)),S=this._buildZoneBarHtml(["ff-zone-fragile","ff-zone-nom","ff-zone-optimal","ff-zone-stable","ff-zone-sature"],x),_=this._buildZoneBarHtml(["ff-zone-atten","ff-zone-neutral","ff-zone-amp"],k),A='<div class="ff-chain-card ff-chain-combo ff-prop-mod-abs '.concat(m,'">\n <button class="ff-card-collapse-btn ').concat(C,'" title="Replier" tabindex="-1">').concat(b).concat(l.toFixed(2),'</button>\n <div class="ff-card-inner">\n <div class="ff-card-header">\n <div class="ff-card-title">Absorption : ').concat(d,'</div>\n </div>\n <div class="ff-card-body">\n <div class="ff-card-steps">\n <div class="ff-prop-mod-state-row">\n <span class="ff-prop-mod-state-label">État cible</span>\n <span class="ff-prop-mod-state-value">').concat(a.toFixed(1),"</span>\n </div>\n ").concat(S,'\n <div class="ff-prop-mod-mult" title="Coefficient multiplicateur appliqué par l\'Absorption selon l\'état de la cible — zone optimale (45–55) : +20%, fragilisée (<39) ou saturée (>69) : réduit">').concat(i>=1?"+":"−").concat(Math.abs(Math.round(100*(i-1))),"% · ").concat(d,"</div>\n ").concat(u,'\n <details class="ff-prop-mod-why">\n <summary>Comprendre la règle</summary>\n <div class="ff-prop-mod-why-body">L\'état de la cible détermine son coefficient d\'absorption : zone optimale (45–55) → +20% (plein effet) ; fragilisée (<39) ou saturée (>69) → absorption réduite.</div>\n </details>\n </div>\n </div>\n </div>\n </div>'),E='<div class="ff-chain-card ff-chain-combo ff-prop-mod-gap '.concat(y,'">\n <button class="ff-card-collapse-btn ').concat(w,'" title="Replier" tabindex="-1">').concat(I).concat(c.toFixed(2),'</button>\n <div class="ff-card-inner">\n <div class="ff-card-header">\n <div class="ff-card-title">Écart (Gap) : ').concat(h,'</div>\n </div>\n <div class="ff-card-body">\n <div class="ff-card-steps">\n <div class="ff-prop-mod-state-row">\n <span class="ff-prop-mod-state-label">Écart</span>\n <span class="ff-prop-mod-state-value">').concat(p>=0?"+":"").concat(p.toFixed(1),"</span>\n </div>\n ").concat(_,'\n <div class="ff-prop-mod-mult" title="Coefficient multiplicateur appliqué par le Gap selon l\'écart d\'état source–cible — écart >10 pts : +20% (amplifié), écart <−10 pts : atténuation, entre −10 et +10 : neutre">').concat(r>=1?"+":"−").concat(Math.abs(Math.round(100*(r-1))),"% · ").concat(h,'</div>\n <div class="ff-prop-mod-detail">Source ').concat(o.toFixed(1)," · Cible ").concat(a.toFixed(1),"</div>\n ").concat(f,'\n <details class="ff-prop-mod-why">\n <summary>Comprendre la règle</summary>\n <div class="ff-prop-mod-why-body">L\'écart entre l\'état source et l\'état cible module la propagation : source > cible de plus de 10 pts → amplification (+20%) ; source < cible de plus de 10 pts → atténuation.</div>\n </details>\n </div>\n </div>\n </div>\n </div>');return'<div class="ff-chain-separator ff-chain-separator-combo-start"></div><div class="ff-combo-group">'.concat(A).concat(E,'</div><div class="ff-chain-separator"></div>')}},{key:"_buildWeightInfluenceHint",value:function(e,t){var n=e.weight,i=n>1?"amplifie":n<1?"atténue":"neutre";if(!t||t.length<=1)return"Influence structurelle: w=".concat(n.toFixed(2)," (").concat(i," l'effet propagé).");var r=t.reduce(function(e,t){return e+Math.max(1e-9,Math.abs(t.deltaTo))},0),a=t.reduce(function(e,t){return e+t.weight*Math.max(1e-9,Math.abs(t.deltaTo))},0)/r,o=a>1?"plutôt amplifiante":a<1?"plutôt atténuante":"globalement neutre";return"Influence structurelle: w local=".concat(n.toFixed(2)," ; chaîne≈").concat(a.toFixed(2)," (").concat(o,").")}},{key:"_animateContainerCounters",value:function(e){var t=[];if(e.querySelectorAll(".ff-cumulative-total-value, .ff-total-delta, .ff-card-collapse-btn, .ff-step-delta, .ff-total-optimization-value, .ff-cumulative-total-optimization-value").forEach(function(e){var n,i,r=null!==(i=null===(n=e.textContent)||void 0===n?void 0:n.trim())&&void 0!==i?i:"",a=parseFloat(r.replace("+",""));if(!isNaN(a)){var o=a>=0?"+":"",s=e.classList.contains("ff-total-optimization-value")||e.classList.contains("ff-cumulative-total-optimization-value"),l=e.classList.contains("ff-total-delta")||e.classList.contains("ff-cumulative-total-value");t.push({el:e,target:a,fmt:function(e){return s?"".concat(o).concat(Math.round(e)):l?"".concat(o).concat(e.toFixed(1)):"".concat(o).concat(e.toFixed(2))}})}}),0!==t.length){var n=performance.now(),i=function(e){for(var r=Math.min((e-n)/600,1),a=1-Math.pow(1-r,3),o=0,s=t;o<s.length;o++){var l=s[o],c=l.el,d=l.target,u=l.fmt;c.textContent=u(d*a)}if(r<1)requestAnimationFrame(i);else for(var p=0,h=t;p<h.length;p++){var f=h[p],g=f.el,v=f.target,m=f.fmt;g.textContent=m(v)}};requestAnimationFrame(i)}}},{key:"_wrapChainGrid",value:function(e){return'<div class="ff-chain-rail"><div class="ff-chain-grid">'.concat(e,"</div></div>")}},{key:"_buildNavTargetIconHtml",value:function(e){return'<span class="ff-step-nav-target"'.concat(e,' title="Naviguer vers ce satellite"><svg viewBox="-7 -7 14 14" width="14" height="14" aria-hidden="true"><circle cx="0" cy="0" r="3.8" fill="none"/><line x1="0" y1="-3.8" x2="0" y2="-6"/><line x1="0" y1="3.8" x2="0" y2="6"/><line x1="-3.8" y1="0" x2="-6" y2="0"/><line x1="3.8" y1="0" x2="6" y2="0"/></svg></span>')}},{key:"_buildPropSourceStepsHtml",value:function(e,t,n,i,o){var s=this,l=e.filter(function(e){return void 0!==e.toCuttingId});if(0===l.length)return"";var c,d=new Map,u=function(e){return"inter"===e?" (Inter)":""},h=a(l);try{for(h.s();!(c=h.n()).done;){var f=c.value,g=void 0!==f.fromCuttingId,v=!g&&!!i,m=g||v,y=u(f.layerType),b=void 0,I=void 0;g?(null==i?void 0:i.actionName)&&f.fromOddId===i.oddId&&f.fromCuttingId===i.cuttingId?(b="".concat(i.actionName).concat(y),I="".concat(f.layerType,"_action")):(b="".concat(this.getTargetName(t,f.fromOddId,f.fromCuttingId)).concat(y),I="".concat(f.layerType,"_").concat(f.fromCuttingId)):v?(b=i.actionName?"".concat(i.actionName).concat(y):(0,p.getLayerDisplayName)(f.layerType),I=f.layerType):(b=(0,p.getLayerDisplayName)(f.layerType),I=f.layerType);var C=f.absorption>0&&f.gap>0?f.deltaTo/(f.absorption*f.gap):f.deltaTo,w=d.get(I);w?(w.rawDelta+=C,w.rows.push(f)):d.set(I,{label:b,rawDelta:C,fromOddId:v?i.oddId:f.fromOddId,fromCuttingId:v?i.cuttingId:f.fromCuttingId,fromComponentId:v?i.componentId:f.fromComponentId,canNavigate:m,rows:[f]})}}catch(e){h.e(e)}finally{h.f()}var x=n?"ps-".concat(++this._sourceNavCounter):void 0;return Array.from(d.entries()).map(function(e){var t,i=r(e,2),a=i[0],l=i[1],c=l.label,d=l.rawDelta,u=l.fromOddId,p=l.fromCuttingId,h=l.fromComponentId,f=l.canNavigate,g=l.rows,v="";if(n&&x&&f){var m="".concat(x,"_").concat(a),y=u,b=p,I=h;s._sourceNavCallbacks.set(m,function(){return n(y,b,I)});var C=' data-nav-source-key="'.concat(m,'" data-nav-oddid="').concat(u,'"').concat(void 0!==p?' data-nav-cuttingid="'.concat(p,'"'):"").concat(h?' data-nav-componentid="'.concat(h,'"'):"");v=s._buildNavTargetIconHtml(C)}var w=null==o?void 0:o(g),k=void 0!==w?' data-row-idx="'.concat(w,'"'):"",S=d>=0?"+":"",_=d>=0?"ff-delta-pos":"ff-delta-neg",A="bridge"===(null===(t=g[0])||void 0===t?void 0:t.layerType);return'<div class="ff-card-step ff-prop-source-step'.concat(A?" ff-step-bridge":"",'"').concat(k,'><div class="ff-step-cutting">').concat(c,' <span class="ff-step-delta ').concat(_,'">').concat(S).concat(d.toFixed(2),"</span>").concat(v,"</div></div>")}).join("")}},{key:"_buildCascadeFlashPath",value:function(e,t,n,i){var r,a,o=new Map;e.forEach(function(e){if(void 0!==e.toCuttingId){var t=o.get(e.toCuttingId);t?t.push(e):o.set(e.toCuttingId,[e])}});for(var s=[],l=new Set,c=i,d=n,u=new Set;void 0!==c&&!u.has(c);){u.add(c);var p="".concat(d,"|").concat(c);l.has(p)||(l.add(p),s.unshift({oddId:d,cuttingId:c}));var h=null===(r=o.get(c))||void 0===r?void 0:r[0];if(!h)break;c=h.fromCuttingId,d=h.fromOddId}var f="".concat(t.oddId,"|").concat(null!==(a=t.cuttingId)&&void 0!==a?a:"");return l.has(f)||s.unshift(t),s}},{key:"_buildCascadeListHtml",value:function(e,t,n,i,r){var s,l=this,c=void 0!==r?e.filter(function(e){return e.fromCuttingId===r}):e,d=new Map,u=a(c);try{for(u.s();!(s=u.n()).done;){var p=s.value;if(void 0!==p.toCuttingId){var h="".concat(p.toOddId,"|").concat(p.toCuttingId),f=p.absorption>0&&p.gap>0?p.deltaTo/(p.absorption*p.gap):p.deltaTo,g=d.get(h);g?g.rawDelta+=f:d.set(h,{toOddId:p.toOddId,toCuttingId:p.toCuttingId,rawDelta:f})}}}catch(e){u.e(e)}finally{u.f()}if(0===d.size)return{subtitleHtml:"",listHtml:"",targetCount:0};var v=o(d.values()).map(function(e){var r=e.toOddId,a=e.toCuttingId,o=e.rawDelta,s=o>=0?"+":"",c=o>=0?"ff-delta-pos":"ff-delta-neg",d=l.getTargetName(t,r,a),u=n?l._buildNavTargetIconHtml(' data-nav-oddid="'.concat(r,'" data-nav-cuttingid="').concat(a,'"').concat(t?' data-nav-componentid="'.concat(t.id,'"'):"")):"",p=null==i?void 0:i(r,a),h=void 0!==p?' data-row-idx="'.concat(p,'"'):"";return'<div class="ff-card-step"'.concat(h,'><div class="ff-step-cutting">').concat(d,' <span class="ff-step-delta ').concat(c,'">').concat(s).concat(o.toFixed(2),"</span>").concat(u,"</div></div>")}).join(""),m=d.size;return{subtitleHtml:'<div class="ff-total-subtitle">'.concat(m," Satellite").concat(m>1?"s":""," touché").concat(m>1?"s":"","</div>"),listHtml:v,targetCount:m}}},{key:"_buildPropChainStepsHtml",value:function(e,t){var n=this;return e.chainCards.map(function(e){var i,r,a,o="inter"===e.trigger.layerType,s=o&&0===e.steps.length&&void 0!==e.trigger.toCuttingId,l=o&&!s||void 0===e.trigger.toCuttingId?"":(r=(i=e.trigger).deltaTo>=0?"+":"",a=i.deltaTo>=0?"ff-delta-pos":"ff-delta-neg",'<div class="ff-card-step ff-step-pseudo"><div class="ff-step-cutting">'.concat(n.getTargetName(t,i.toOddId,i.toCuttingId),' <span class="ff-step-delta ').concat(a,'">').concat(r).concat(i.deltaTo.toFixed(2),"</span></div></div>")),c=e.steps.map(function(e){var i=e.deltaTo>=0?"+":"",r=e.deltaTo>=0?"ff-delta-pos":"ff-delta-neg",a=void 0!==e.toCuttingId?n.getTargetName(t,e.toOddId,e.toCuttingId):"?";return'<div class="ff-card-step"><div class="ff-step-cutting">'.concat(a,' <span class="ff-step-delta ').concat(r,'">').concat(i).concat(e.deltaTo.toFixed(2),"</span></div></div>")}).join("");return l+c}).join("")}},{key:"_buildDetailDisclosureHtml",value:function(e){var t=e.map(function(e){var t,n=e.deltaTo>=0?"+":"";return"<tr>\n <td>".concat((0,p.getLayerDisplayName)(e.layerType),"</td>\n <td>").concat(e.propagationFactor.toFixed(2),"</td>\n <td>").concat((0,p.getForceFieldWeightLabel)(e.layerType)," = ").concat(e.strategicWeight.toFixed(2),"</td>\n <td>").concat(e.baseDelta.toFixed(2),"</td>\n <td>").concat(n).concat(e.deltaTo.toFixed(2),"</td>\n <td>").concat(e.absorption.toFixed(2)," — ").concat((0,u.absorptionRuleExplanation)(e.toState),"</td>\n <td>").concat(e.gap.toFixed(2)," — ").concat((0,u.gapRuleExplanation)(e.fromState,e.toState),"</td>\n <td>").concat(null!==(t=e.rationale)&&void 0!==t?t:"","</td>\n </tr>")}).join("");return'<details class="ff-detail-disclosure">\n <summary>Détail complet du calcul</summary>\n <table class="force-field-detail-table">\n <thead>\n <tr>\n <th>Couche</th><th>k</th><th>w</th><th>Base Δ</th><th>Δ appliqué</th><th>abs + justification</th><th>gap + justification</th><th>Justification propagation</th>\n </tr>\n </thead>\n <tbody>'.concat(t||'<tr><td colspan="8">(Aucun détail disponible)</td></tr>',"</tbody>\n </table>\n </details>")}},{key:"_snapshotCardExpansion",value:function(e){var t=this,n=new Set;e.querySelectorAll(".ff-chain-grid").forEach(function(e,i){e.querySelectorAll(".ff-chain-card:not(.ff-chain-total)").forEach(function(e,r){if(e.classList.contains("ff-card-expanded")){var a=t._hasStableCardKey(e)?"combo:".concat(t._getCardKey(e)):"pos:".concat(i,":").concat(r);n.add(a)}});var r=e.querySelector(".ff-chain-total");(null==r?void 0:r.classList.contains("ff-card-expanded"))&&n.add("total:".concat(i))}),e.querySelectorAll(".ff-hier-level").forEach(function(e){var t,i,r,a,o,s;if(e.classList.contains("ff-hier-open")){var l=null!==(r=null===(i=null===(t=e.querySelector(".ff-hier-badge"))||void 0===t?void 0:t.textContent)||void 0===i?void 0:i.trim())&&void 0!==r?r:"",c=null!==(s=null===(o=null===(a=e.querySelector(".ff-hier-label"))||void 0===a?void 0:a.textContent)||void 0===o?void 0:o.trim())&&void 0!==s?s:"";n.add("hier:".concat(l,":").concat(c))}});var i=e.querySelectorAll(".ff-cumulative-block");return i.length>0&&(n.add("viewType:cumulative"),i.forEach(function(e,t){e.classList.contains("ff-action-expanded")&&n.add("cblock:".concat(t))})),n}},{key:"_applyAutoFitToGrids",value:function(e){var t=this;e!==this._suppressAutoFitContainer&&e.querySelectorAll(".ff-chain-grid").forEach(function(e){var n,i,r=Array.from(e.querySelectorAll(".ff-chain-card:not(.ff-chain-total)"));if(0!==r.length){var a=function(e){return e.classList.contains("ff-chain-combo")&&void 0!==e.dataset.comboType||e.classList.contains("ff-chain-amplifier")},s=r.filter(function(e){return!a(e)}),l=r.filter(function(e){return a(e)}),c=null!==(n=s[0])&&void 0!==n?n:r[0],d=e.querySelector(".ff-chain-total"),u=d?[].concat(r,[d]):r,p=e.closest(".ff-chain-rail"),h=null!==(i=null==p?void 0:p.clientWidth)&&void 0!==i?i:e.clientWidth,f=function(e){var t=new Set(e);u.forEach(function(e){e.style.transition="none",e.style.flexShrink="0",t.has(e)?e.classList.add("ff-card-expanded"):e.classList.remove("ff-card-expanded")})},g=function(){u.forEach(function(e){e.style.flexShrink="",t._hasStableCardKey(e)&&t._seenCardKeys.add(t._getCardKey(e))}),requestAnimationFrame(function(){return u.forEach(function(e){return e.style.transition=""})})},v=function(){l.forEach(function(e){var n=t._getCardKey(e);n&&t._expandedComboKeys.has(n)&&e.classList.add("ff-card-expanded")})};if(f(u),e.scrollWidth<=h)g();else{if(l.length>0&&s.length>1&&(f(d?[].concat(o(s),[d]):s),e.scrollWidth<=h))return g(),void v();if(d&&u.length>2&&(f([c,d]),e.scrollWidth<=h))return g(),void v();f([c]),g(),v()}}})}},{key:"_ensureResizeObserver",value:function(e){var t=this;if(!e.__ffResizeObserver){var n=new ResizeObserver(function(){if(!e.isConnected)return n.disconnect(),void(e.__ffResizeObserver=null);null===t._userInteractingTimer&&requestAnimationFrame(function(){return t._applyAutoFitToGrids(e)})});n.observe(e),e.__ffResizeObserver=n}}},{key:"_initCardRailState",value:function(e,t){var n=this;void 0!==t?(null!==this._suppressAutoFitTimer&&clearTimeout(this._suppressAutoFitTimer),this._suppressAutoFitContainer=e,this._suppressAutoFitTimer=setTimeout(function(){n._suppressAutoFitContainer=null,n._suppressAutoFitTimer=null},700),e.querySelectorAll(".ff-chain-grid").forEach(function(e,i){return function(e,i){var r=e.querySelectorAll(".ff-chain-card:not(.ff-chain-total)");if(0!==r.length){r.forEach(function(e){return e.style.transition="none"}),r.forEach(function(e,r){var a=n._hasStableCardKey(e)?n._getCardKey(e):null,o=a?"combo:".concat(a):"pos:".concat(i,":").concat(r),s=a?n._expandedComboKeys.has(a)||t.has(o)||!n._seenCardKeys.has(a):t.has(o);a&&n._seenCardKeys.add(a),s?e.classList.add("ff-card-expanded"):e.classList.remove("ff-card-expanded")});var a=e.querySelector(".ff-chain-total");a&&(a.style.transition="none",t.has("total:".concat(i))?a.classList.add("ff-card-expanded"):a.classList.remove("ff-card-expanded"),requestAnimationFrame(function(){a.style.transition=""})),requestAnimationFrame(function(){r.forEach(function(e){return e.style.transition=""})})}}(e,i)}),e.querySelectorAll(".ff-hier-level").forEach(function(e){var n,i,r,a,o,s,l=null!==(r=null===(i=null===(n=e.querySelector(".ff-hier-badge"))||void 0===n?void 0:n.textContent)||void 0===i?void 0:i.trim())&&void 0!==r?r:"",c=null!==(s=null===(o=null===(a=e.querySelector(".ff-hier-label"))||void 0===a?void 0:a.textContent)||void 0===o?void 0:o.trim())&&void 0!==s?s:"",d="hier:".concat(l,":").concat(c);t.has(d)?e.classList.add("ff-hier-open"):e.classList.remove("ff-hier-open")}),t.has("viewType:cumulative")&&e.querySelectorAll(".ff-cumulative-block").forEach(function(e,n){var i="cblock:".concat(n);t.has(i)?e.classList.add("ff-action-expanded"):e.classList.remove("ff-action-expanded")})):requestAnimationFrame(function(){return n._applyAutoFitToGrids(e)}),this._ensureResizeObserver(e)}},{key:"_handleCardRailClick",value:function(e){var t=this,n=e.target.closest(".ff-chain-card");if(n){var i=n.classList.contains("ff-card-expanded"),r=this._hasStableCardKey(n)?this._getCardKey(n):null;r&&this._seenCardKeys.add(r),null!==this._userInteractingTimer&&clearTimeout(this._userInteractingTimer),this._userInteractingTimer=setTimeout(function(){t._userInteractingTimer=null},350);var o=this._isCardCollapseTrigger(e,n);if(i)o&&(n.classList.remove("ff-card-expanded"),r&&this._expandedComboKeys.delete(r));else{var s=n.closest(".ff-chain-grid"),l=n.closest(".ff-chain-rail");if(s&&l){var c=n.classList.contains("ff-chain-combo")||n.classList.contains("ff-chain-amplifier")?260:200,d=Array.from(s.querySelectorAll(".ff-chain-card")),u=d.reduce(function(e,t){return t===n?e+28:e+(t.classList.contains("ff-card-expanded")?t.classList.contains("ff-chain-combo")||t.classList.contains("ff-chain-amplifier")?260:200:28)},0)+(c-28)+3*Math.max(0,d.length-1)-l.clientWidth;if(u>0){var p,h=d,f=h.indexOf(n),g=0,v=a(h.filter(function(e){return e!==n&&e.classList.contains("ff-card-expanded")}).sort(function(e,t){var n=e.classList.contains("ff-chain-total")?1:0,i=t.classList.contains("ff-chain-total")?1:0;return n!==i?n-i:Math.abs(h.indexOf(t)-f)-Math.abs(h.indexOf(e)-f)}));try{for(v.s();!(p=v.n()).done;){var m=p.value;if(g>=u)break;g+=(m.classList.contains("ff-chain-combo")||m.classList.contains("ff-chain-amplifier")?260:200)-28,m.classList.remove("ff-card-expanded"),m.classList.contains("ff-chain-combo")&&void 0!==m.dataset.comboType&&this._expandedComboKeys.delete(this._getCardKey(m))}}catch(e){v.e(e)}finally{v.f()}}}n.classList.add("ff-card-expanded"),r&&this._expandedComboKeys.add(r)}if(!o){var y=n.closest(".ff-chain-rail");if(y){var b=function(){var e=n.getBoundingClientRect(),t=y.getBoundingClientRect(),i=e.left-t.left+y.scrollLeft+e.width/2-y.clientWidth/2;y.scrollTo({left:Math.max(0,i),behavior:"smooth"})};if(i)b();else{var I=function(e){"width"===e.propertyName&&e.target===n&&(n.removeEventListener("transitionend",I),b())};n.addEventListener("transitionend",I)}}}}}},{key:"_triggerHighlightFromCard",value:function(e){if(this.onComboHighlight){var t=this._extractTagComboContext(e);t&&(0===t.requires.length&&"dangereux"!==t.type||this.onComboHighlight(t))}}},{key:"_computeChainCardFlashes",value:function(e){var t=new Map;return e.forEach(function(e){var n="inter"===e.trigger.layerType,i=[];n?(e.steps.forEach(function(e){return i.push({oddId:e.toOddId,cuttingId:e.toCuttingId})}),void 0!==e.trigger.toCuttingId&&i.push({oddId:e.trigger.toOddId,cuttingId:e.trigger.toCuttingId})):(i.push({oddId:e.trigger.toOddId,cuttingId:e.trigger.toCuttingId}),e.steps.forEach(function(e){return i.push({oddId:e.toOddId,cuttingId:e.toCuttingId})})),t.set(e.trigger,i),e.steps.forEach(function(e){return t.set(e,i)})}),t}},{key:"_finalizeFlashSequence",value:function(e,t,n){var i=new Set,r=function(e){var t,n;return"".concat(e.oddId,"|").concat(null!==(t=e.cuttingId)&&void 0!==t?t:"","|").concat(null!==(n=e.componentId)&&void 0!==n?n:"")},a=[],o=function(e){var t=r(e);i.has(t)||(i.add(t),a.push(e))};o(t);var s=n?r(n):void 0,l=void 0!==s&&e.some(function(e){return r(e)===s});return n&&!l&&o(n),e.forEach(o),a}},{key:"_buildBranchFlashSequence",value:function(t,n){var i,r,s=[t],l=new Set(["".concat(t.oddId,"|").concat(null!==(i=t.cuttingId)&&void 0!==i?i:"")]),c=a(e._chainHasDirectBridgeEdge(n)?[].concat(o(n.directRows.filter(function(e){return"bridge"===e.layerType})),o(n.cascadeRows)):n.allDisplayRows);try{for(c.s();!(r=c.n()).done;){var d=r.value;if(void 0!==d.toCuttingId){var u="".concat(d.toOddId,"|").concat(d.toCuttingId);l.has(u)||(l.add(u),s.push({oddId:d.toOddId,cuttingId:d.toCuttingId}))}else{var p=d.targetedCutting;if(void 0!==p){var h="".concat(d.toOddId,"|").concat(p);l.has(h)||(l.add(h),s.push({oddId:d.toOddId,cuttingId:p}))}}}}catch(e){c.e(e)}finally{c.f()}return void 0!==n.toComponentId&&s.push({oddId:n.toOddId,cuttingId:void 0,componentId:n.toComponentId}),s}},{key:"_getBranchLabel",value:function(e,t,n){var i,r,a,o,s=null!==(i=null==n?void 0:n.find(function(e){return e.id===t.toComponentId}))&&void 0!==i?i:e;if(void 0!==t.toCuttingId)return this.getTargetName(s,t.toOddId,t.toCuttingId);var l=t.cascadeRows.find(function(e){return void 0!==e.toCuttingId});if(l){var c=null!==(r=null==n?void 0:n.find(function(e){var n;return e.id===(null!==(n=l.toComponentId)&&void 0!==n?n:t.toComponentId)}))&&void 0!==r?r:s;return this.getTargetName(c,l.toOddId,l.toCuttingId)}var d=t.sortedDirect.find(function(e){return"inter"===e.layerType});if(void 0!==(null==d?void 0:d.targetedCutting))return this.getTargetName(s,t.toOddId,d.targetedCutting);var u=null==s?void 0:s.odds.find(function(e){return e.id===t.toOddId});return null!==(o=null!==(a=null==u?void 0:u.shortLabel)&&void 0!==a?a:null==u?void 0:u.label)&&void 0!==o?o:t.toOddId}},{key:"_handleCardRailClickPrelude",value:function(e){this._handleCardRailClick(e);var t=e.target.closest(".ff-chain-card");return!(t&&this._isCardCollapseTrigger(e,t))}},{key:"_resolveDetailPool",value:function(e){return e.allForceFieldLinkDetails.length>0?e.allForceFieldLinkDetails:e.forceFieldLinks.map(function(e){return e.detail})}},{key:"_ensurePropagationIndex",value:function(t,n){var i=this._cachedPropagationIndex;if(i&&i._links===t&&i._allDetails===n)return i;var o,s=this._resolveDetailPool({allForceFieldLinkDetails:n,forceFieldLinks:t}),l=this._selectPropagationTableViewModel({forceFieldLinks:t,detailPool:s}),c=new Map,d=a(t);try{for(d.s();!(o=d.n()).done;){var u=o.value.detail,p=e._buildTargetChainKey(u.toOddId,u.toComponentId,u.toCuttingId);c.has(p)||c.set(p,this._buildTargetChainData(s,u.toOddId,u.toComponentId,u.toCuttingId))}}catch(e){d.e(e)}finally{d.f()}var h,f=new Map,g=function(e,t){var n=f.get(e);n?-1===n.indexOf(t)&&n.push(t):f.set(e,[t])},v=a(t);try{for(v.s();!(h=v.n()).done;){var m=h.value.detail,y=e._buildTargetChainKey(m.toOddId,m.toComponentId,m.toCuttingId),b=c.get(y);b&&g(e._buildSourceChainKey(m.fromOddId,m.fromCuttingId),b)}}catch(e){v.e(e)}finally{v.f()}var I,C=a(c);try{for(C.s();!(I=C.n()).done;){var w=r(I.value,2)[1];if(void 0!==w.toCuttingId){var x,k=a(w.sortedAncestors);try{for(k.s();!(x=k.n()).done;){var S=x.value;"inter"!==S.layerType&&"bridge"!==S.layerType||(S.toCuttingId===w.toCuttingId||void 0===S.toCuttingId&&S.targetedCutting===w.toCuttingId)&&g(e._buildSourceChainKey(S.fromOddId,S.fromCuttingId),w)}}catch(e){k.e(e)}finally{k.f()}}}}catch(e){C.e(e)}finally{C.f()}var _={detailPool:s,tableViewModel:l,targetChains:c,sourceToTargetChains:f,_links:t,_allDetails:n};return this._cachedPropagationIndex=_,_}},{key:"invalidatePropagationIndex",value:function(){this._cachedPropagationIndex=null}},{key:"_buildTargetChainData",value:function(e,t,n,i){var r=e.filter(function(e){return e.toOddId===t&&e.toComponentId===n&&Math.abs(e.deltaTo)>=1e-9}),a=r.filter(function(e){return e.toCuttingId===i}),s=new Set,l=new Set;l.add(i);for(var c=a.filter(function(e){return"intra"===e.layerType}),d=function(){var e=c.shift();void 0!==e.fromCuttingId?l.has(e.fromCuttingId)||(l.add(e.fromCuttingId),r.filter(function(t){return t.toCuttingId===e.fromCuttingId&&!a.includes(t)}).forEach(function(e){s.has(e)||(s.add(e),"intra"===e.layerType&&c.push(e))})):r.filter(function(e){return"inter"===e.layerType}).forEach(function(e){return s.add(e)})};c.length>0;)d();var u=o(s),h=[],f=u.filter(function(e){return"intra"!==e.layerType}),g=u.filter(function(e){return"intra"===e.layerType}),v=new Set(g.map(function(e){return e.toCuttingId}).filter(function(e){return void 0!==e})),m=g.filter(function(e){return void 0===e.fromCuttingId||!v.has(e.fromCuttingId)}),y=new Set,b=function(e){y.has(e)||(y.add(e),h.push(e),g.filter(function(t){return t!==e&&t.fromCuttingId===e.toCuttingId}).forEach(b))};f.forEach(function(e){return h.push(e)}),m.forEach(b),g.forEach(function(e){y.has(e)||h.push(e)});var I=new Set(h.filter(function(e){return"intra"===e.layerType}).map(function(e){return e.toCuttingId}).filter(function(e){return void 0!==e})),C=o(a).sort(function(e,t){var n=void 0!==e.fromCuttingId&&I.has(e.fromCuttingId),i=void 0!==t.fromCuttingId&&I.has(t.fromCuttingId);return n&&!i?-1:!n&&i?1:0}),w=function(e){return(0,p.getLayerDisplayName)(e.layerType)},x=new Map;[].concat(h,o(C)).forEach(function(e){void 0!==e.toCuttingId&&x.set(e.toCuttingId,w(e))});var k=void 0!==n?e.filter(function(e){return e.toOddId===t&&(e.toComponentId===n||void 0===e.toComponentId)&&Math.abs(e.deltaTo)>=1e-9}):r,S=new Set([].concat(o(a),o(s))),_=[],A=new Set,E=C.filter(function(e){return void 0!==e.toCuttingId}).map(function(e){return{fromId:e.toCuttingId,expectedBase:e.deltaTo}});C.filter(function(e){return void 0===e.toCuttingId}).forEach(function(e){var t=e.targetedCutting;if(void 0!==t){var n=k.filter(function(e){return"intra"===e.layerType&&e.toCuttingId===t&&!S.has(e)&&!A.has(e)});n.length>0?n.forEach(function(e){_.push(e),A.add(e),E.push({fromId:t,expectedBase:e.deltaTo})}):E.push({fromId:t,expectedBase:e.deltaTo})}else k.filter(function(e){return"intra"===e.layerType&&void 0!==e.toCuttingId&&!S.has(e)&&!A.has(e)}).forEach(function(e){_.push(e),A.add(e),E.push({fromId:e.toCuttingId,expectedBase:e.deltaTo})})});for(var O=new Set,D=function(){var e=E.shift(),t=e.fromId,n=e.expectedBase,i="".concat(t,":").concat(n.toFixed(6));if(O.has(i))return 1;O.add(i),k.filter(function(e){return"intra"===e.layerType&&e.fromCuttingId===t&&!S.has(e)&&!A.has(e)&&Math.abs(e.baseDelta-n)<1e-6}).forEach(function(e){_.push(e),A.add(e),void 0!==e.toCuttingId&&E.push({fromId:e.toCuttingId,expectedBase:e.deltaTo})})};E.length>0;)D();_.forEach(function(e){void 0!==e.toCuttingId&&x.set(e.toCuttingId,w(e))});var M=[].concat(h,o(C),_),L=new Map;M.forEach(function(e,t){return L.set(e,t)});var F=this._selectTargetChainCards(M),T=new Map,P=M.length;F.forEach(function(e){var t="inter"===e.trigger.layerType&&0===e.steps.length&&void 0!==e.trigger.toCuttingId;("inter"!==e.trigger.layerType||t)&&T.set(e,P++)});var B=C.reduce(function(e,t){return e+t.deltaTo},0),G=C.filter(function(e){return void 0!==e.toCuttingId}).reduce(function(e,t){return e+t.deltaTo},0)+_.reduce(function(e,t){return e+t.deltaTo},0),R=C.filter(function(e){return void 0!==e.toCuttingId}).reduce(function(e,t){return e+(t.absorption>0&&t.gap>0?t.deltaTo/(t.absorption*t.gap):t.deltaTo)},0);return{toOddId:t,toComponentId:n,toCuttingId:i,sameTargetPool:r,directRows:a,sortedAncestors:h,sortedDirect:C,cascadeRows:_,allDisplayRows:M,rowToIdx:L,chainCards:F,pseudoStepIdxMap:T,directDelta:B,totalDelta:G,rawDelta:R,rowLabelByToCuttingId:x}}},{key:"_buildBranchesFromPool",value:function(t){var n,i=new Set,r=[],o=a(t);try{for(o.s();!(n=o.n()).done;){var s=n.value;if(!(void 0===s.toCuttingId||Math.abs(s.deltaTo)<1e-9)){var l=e._buildTargetChainKey(s.toOddId,s.toComponentId,s.toCuttingId);i.has(l)||(i.add(l),r.push(this._buildTargetChainData(t,s.toOddId,s.toComponentId,s.toCuttingId)))}}}catch(e){o.e(e)}finally{o.f()}return r}},{key:"_buildDetailRowKey",value:function(e){var t,n;return[e.layerType,e.fromOddId,null!==(t=e.fromCuttingId)&&void 0!==t?t:"x",e.toOddId,null!==(n=e.toCuttingId)&&void 0!==n?n:"x",e.deltaTo.toFixed(6)].join("|")}},{key:"_buildTargetGroupKey",value:function(e){return"".concat(e.toOddId,"|").concat(e.toComponentId)}},{key:"_renderChainCardHtml",value:function(e){var t,n,i=Math.abs(e.badgeDelta)<.005,r=i?"ff-delta-neu":e.badgeDelta>0?"ff-delta-pos":"ff-delta-neg",a=i||e.badgeDelta>=0?"+":"",o=e.isSourceCard?" ff-chain-source-card":"",s="".concat(a).concat(e.badgeDelta.toFixed(2)),l=e.isSourceCard?" ff-collapse-btn--labeled":"",c='<button class="ff-card-collapse-btn '.concat(r).concat(l,'" title="Replier" tabindex="-1">').concat(s,"</button>"),d="number"==typeof e.weightDelta&&0!==e.weightDelta?'<span class="ff-card-weight-chip" title="Variation de poids du satellite ciblé (importance dans sa facette) — jamais propagée">\n <span class="ff-weight-arrow">'.concat(e.weightDelta>0?"▲":"▼",'</span>\n <span class="ff-weight-value">').concat(e.weightDelta>0?"+":"").concat(e.weightDelta,"</span>\n </span>"):"",u=function(e){var t=f.yasuniKeyEventMap.get(e.sourceId);return!!t&&(0,f.isAdverseKeyEvent)(t)},p=e.isSourceCard?(null!==(t=e.amplifierResults)&&void 0!==t?t:[]).filter(function(e){return!u(e)}):[],h=e.isSourceCard?(null!==(n=e.amplifierResults)&&void 0!==n?n:[]).filter(function(e){return u(e)}):[],g=(p.length?'<span class="ff-card-amplified-chip" title="Amplifiée par : '.concat(p.map(function(e){return e.name}).join(", "),'">⚡</span>'):"")+(h.length?'<span class="ff-card-amplified-chip ff-card-hindered-chip" title="Entravée par : '.concat(h.map(function(e){return e.name}).join(", "),'">⛓</span>'):""),v="".concat(c).concat(d).concat(g),y=e.isSourceCard&&e.actionId?'<img class="action-thumb ff-card-thumb" data-action-id="'.concat(e.actionId,'" src="').concat((0,m.getActionImageUrl)(e.actionId,"thumb"),'" alt="" loading="lazy" decoding="async" onerror="this.remove()">'):"",b=y?'<div class="ff-card-media">'.concat(y).concat(e.stepsHtml?'<div class="ff-card-steps-overlay"><div class="ff-card-steps">'.concat(e.stepsHtml,"</div></div>"):"","</div>"):e.stepsHtml?'<div class="ff-card-steps">'.concat(e.stepsHtml,"</div>"):"";return'<div class="ff-chain-card '.concat(e.cardClass).concat(o,'">\n ').concat(v,'\n <div class="ff-card-inner">\n <div class="ff-card-header"').concat(e.headerAttrs?" ".concat(e.headerAttrs):"",'>\n <div class="ff-card-title">').concat(e.headerTitle,"</div>\n </div>\n ").concat(b?'<div class="ff-card-body">'.concat(b,"</div>"):"","\n </div>\n </div>")}},{key:"_selectPropagationTableViewModel",value:function(e){var t=this;if(0===e.forceFieldLinks.length)return{sourceStr:"",groups:[]};var n=e.forceFieldLinks[0].detail,i=void 0!==n.fromCuttingId?"".concat(n.fromOddId,"::cutting ").concat(n.fromCuttingId):n.fromOddId,r=new Set,a=[];return e.forceFieldLinks.forEach(function(n){var i=n.detail,o=t._buildTargetGroupKey(i);if(!r.has(o)){r.add(o);var s=e.detailPool.filter(function(e){return e.toOddId===i.toOddId&&e.toComponentId===i.toComponentId}),l=s.filter(function(e){return"inter"===e.layerType}),c=l.length>0?l.reduce(function(e,t){return e+t.deltaTo},0):(0,p.calculateDisplayedDelta)(s);a.push({selected:i,relatedRows:s,displayedDelta:c})}}),{sourceStr:i,groups:a}}},{key:"_selectCumulativeViewModel",value:function(e){return{blocks:e.blocks,grandTotal:e.blocks.reduce(function(e,t){return e+t.totalDelta},0)}}},{key:"_selectTargetChainCards",value:function(e){var t=[],n=new Set,i=e.filter(function(e){return"inter"===e.layerType});if(i.length>0){i.forEach(function(e){return n.add(e)});for(var r={trigger:i.reduce(function(e,t){return Math.abs(t.deltaTo)>=Math.abs(e.deltaTo)?t:e}),steps:[]},a=[{fromId:void 0,expectedBase:void 0}],o=function(){var t=a.shift(),i=t.fromId,o=t.expectedBase;e.filter(function(e){return"intra"===e.layerType&&e.fromCuttingId===i&&!n.has(e)&&(void 0===o||Math.abs(e.baseDelta-o)<1e-6)}).forEach(function(e){r.steps.push(e),n.add(e),void 0!==e.toCuttingId&&a.push({fromId:e.toCuttingId,expectedBase:e.deltaTo})})};a.length>0;)o();t.push(r)}e.filter(function(e){return"bridge"===e.layerType}).forEach(function(i){n.add(i);var r={trigger:i,steps:[]};if(void 0!==i.toCuttingId)for(var a=[{fromId:i.toCuttingId,expectedBase:i.deltaTo}],o=function(){var t=a.shift(),i=t.fromId,o=t.expectedBase;e.filter(function(e){return"intra"===e.layerType&&e.fromCuttingId===i&&!n.has(e)&&Math.abs(e.baseDelta-o)<1e-6}).forEach(function(e){r.steps.push(e),n.add(e),void 0!==e.toCuttingId&&a.push({fromId:e.toCuttingId,expectedBase:e.deltaTo})})};a.length>0;)o();t.push(r)});var s=new Set(e.filter(function(e){return"intra"===e.layerType&&!n.has(e)}).map(function(e){return e.toCuttingId}).filter(function(e){return void 0!==e}));return e.filter(function(e){return!("intra"!==e.layerType||n.has(e)||void 0!==e.fromCuttingId&&s.has(e.fromCuttingId))}).forEach(function(i){n.add(i);var r={trigger:i,steps:[]},a=[];void 0!==i.toCuttingId&&a.push({fromId:i.toCuttingId,expectedBase:i.deltaTo});for(var o=function(){var t=a.shift(),i=t.fromId,o=t.expectedBase;e.filter(function(e){return"intra"===e.layerType&&e.fromCuttingId===i&&!n.has(e)&&Math.abs(e.baseDelta-o)<1e-6}).forEach(function(e){r.steps.push(e),n.add(e),void 0!==e.toCuttingId&&a.push({fromId:e.toCuttingId,expectedBase:e.deltaTo})})};a.length>0;)o();t.push(r)}),e.filter(function(e){return"intra"===e.layerType&&!n.has(e)}).forEach(function(e){n.add(e),t.push({trigger:e,steps:[]})}),t}},{key:"renderCumulativeActionDetails",value:function(t){var n=this,i=this.getForceFieldDetailsContainer();if(i){var r,a,s,l,c=this._ensurePropagationIndex(t.forceFieldLinks,t.allForceFieldLinkDetails),d=0,u=new Map,p=this._selectCumulativeViewModel({blocks:t.blocks}),h=p.blocks.map(function(i){var r,a,s,l,p,h,f,g,v,y,b,I,C,w,x,k;if("keyEvent"===i.type)return n._buildKeyEventBlockHtml(i,t.onNavigateToAction);var S=[];if("source"===i.type){var _,A={oddId:i.sourceOddId,cuttingId:i.sourceCuttingId};if(i.sequentialDetailPool)_=n._buildBranchesFromPool(i.sequentialDetailPool);else{var E=e._buildSourceChainKey(i.sourceOddId,i.sourceCuttingId),O=e._buildSourceChainKey(i.sourceOddId,void 0),D=new Set;(null!==(r=c.sourceToTargetChains.get(E))&&void 0!==r?r:[]).forEach(function(e){return D.add(e)}),E!==O&&(null!==(a=c.sourceToTargetChains.get(O))&&void 0!==a?a:[]).forEach(function(e){return D.add(e)}),_=o(D)}var M=d++,L=_.map(function(e){return n._buildBranchFlashSequence(A,e)});if(u.set(M,L.length>0?L:[[A]]),w=Math.max(1,_.length),_.length>0){var F=void 0!==i.baseDelta&&0!==i.baseDelta?i.totalDelta/i.baseDelta:1,T=d;_.forEach(function(e,t){u.set(T+t,[n._buildBranchFlashSequence(A,e)])}),d+=_.length;var P='<div class="ff-total-subtitle" data-row-idx="'.concat(M,'">').concat(_.length," Satellite").concat(_.length>1?"s":""," touché").concat(_.length>1?"s":"","</div>"),B=_.map(function(i,r){var a,o,s,l,c,d,u=T+r,p=i.rawDelta*F,h=p>=0?"+":"",f=p>=0?"ff-delta-pos":"ff-delta-neg",g=n._getBranchLabel(t.currentComponent,i,t.allComponents),v=null!==(s=null!==(a=i.toCuttingId)&&void 0!==a?a:null===(o=i.cascadeRows.find(function(e){return void 0!==e.toCuttingId}))||void 0===o?void 0:o.toCuttingId)&&void 0!==s?s:null===(l=i.sortedDirect.find(function(e){return void 0!==e.targetedCutting}))||void 0===l?void 0:l.targetedCutting,m=null!==(c=i.toComponentId)&&void 0!==c?c:null===(d=t.currentComponent)||void 0===d?void 0:d.id,y=['data-nav-oddid="'.concat(i.toOddId,'"'),void 0!==v?'data-nav-cuttingid="'.concat(v,'"'):"",m?'data-nav-componentid="'.concat(m,'"'):""].filter(Boolean).join(" "),b=t.onNavigateToCutting?n._buildNavTargetIconHtml(" ".concat(y)):"",I=e._chainHasDirectBridgeEdge(i);return'<div class="ff-card-step'.concat(I?" ff-step-bridge":"",'" data-row-idx="').concat(u,'">\n <div class="ff-step-cutting"><span class="ff-step-label-group">').concat(g,' <span class="ff-step-delta ').concat(f,'">').concat(h).concat(p.toFixed(2),"</span></span>").concat(b,"</div>\n </div>")}).join("");k=P+B}C=n._renderChainCardHtml({cardClass:"ff-chain-intra",badgeDelta:null!==(s=i.baseDelta)&&void 0!==s?s:i.totalDelta,headerAttrs:'data-row-idx="'.concat(M,'"'),headerTitle:i.actionName||"—",stepsHtml:"",isSourceCard:!0,actionId:i.actionId,weightDelta:null!==(l=i.weightDeltaBase)&&void 0!==l?l:i.weightDelta,amplifierResults:i.amplifierResults})}else{var G=d++,R=i.sequentialDetailPool?n._buildTargetChainData(i.sequentialDetailPool,t.focusOddId,null===(p=t.currentComponent)||void 0===p?void 0:p.id,t.focusCuttingId):c.targetChains.get(e._buildTargetChainKey(t.focusOddId,null===(h=t.currentComponent)||void 0===h?void 0:h.id,t.focusCuttingId));S=null!==(f=null==R?void 0:R.sortedDirect)&&void 0!==f?f:i.detailRows;var q={oddId:i.sourceOddId,cuttingId:i.sourceCuttingId},z={oddId:t.focusOddId,cuttingId:t.focusCuttingId},N=null!==(g=null==R?void 0:R.chainCards)&&void 0!==g?g:[],j=n._computeChainCardFlashes(N),H=new Map;N.forEach(function(e){var t=j.get(e.trigger);t&&H.set(e,n._finalizeFlashSequence(t,q,z))}),u.set(G,N.length>0?N.map(function(e){var t;return null!==(t=H.get(e))&&void 0!==t?t:[q,z]}):[[q,z]]);var K=new Map;N.forEach(function(e){var t=H.get(e);if(t){var n=d++;u.set(n,[t]),K.set(e.trigger,n),e.steps.forEach(function(e){return K.set(e,n)})}}),w=1;var V=n._buildPropSourceStepsHtml(null!==(v=null==R?void 0:R.sortedDirect)&&void 0!==v?v:[],t.currentComponent,t.onNavigateToSatellite,{oddId:i.sourceOddId,cuttingId:i.sourceCuttingId,componentId:null===(y=t.currentComponent)||void 0===y?void 0:y.id,actionName:i.actionName},function(e){var t=1===e.length?K.get(e[0]):void 0;if(void 0!==t)return t;var n=[],i=new Set;if(e.forEach(function(e){var t=K.get(e),r=void 0!==t?u.get(t):void 0;null==r||r.forEach(function(e){return e.forEach(function(e){var t,r,a="".concat(e.oddId,"|").concat(null!==(t=e.cuttingId)&&void 0!==t?t:"","|").concat(null!==(r=e.componentId)&&void 0!==r?r:"");i.has(a)||(i.add(a),n.push(e))})})}),0!==n.length){var r=d++;return u.set(r,[n]),r}});C=n._renderChainCardHtml({cardClass:"ff-chain-intra",badgeDelta:null!==(b=i.rawDelta)&&void 0!==b?b:i.totalDelta,headerAttrs:'data-row-idx="'.concat(G,'"'),headerTitle:i.actionName||"—",stepsHtml:V,isSourceCard:!0,actionId:i.actionId});var Y=n._buildCascadeListHtml(null!==(I=null==R?void 0:R.cascadeRows)&&void 0!==I?I:[],t.currentComponent,t.onNavigateToCutting,function(e,t){var i,r=n._buildCascadeFlashPath(null!==(i=null==R?void 0:R.cascadeRows)&&void 0!==i?i:[],z,e,t);if(0!==r.length){var a=d++;return u.set(a,[r]),a}},t.focusCuttingId),W=Y.subtitleHtml,U=Y.listHtml,X=R?n._buildPropChainStepsHtml(R,t.currentComponent):"";x=W+U+(X?'<details class="ff-propagation-chain-details"><summary class="ff-propagation-chain-summary">Chaîne de propagation</summary>'.concat(X,"</details>"):"")||void 0}var Z,Q,$=i.totalDelta>=0?"+":"",J=i.totalDelta>=0?"ff-delta-pos":"ff-delta-neg",ee=i.actionId?'<span class="ff-block-header-icon"><img src="'.concat((0,m.getActionIconUrl)(i.actionId),'" alt="" /></span>'):"",te=n._computeBlockOptimizationRatio(i),ne=void 0!==te?(Z=Math.round(te-100),Q=Math.abs(Z)<1?"ff-delta-neu":Z>0?"ff-delta-pos":"ff-delta-neg",'<span class="ff-block-header-perf '.concat(Q,'">(').concat(Z>=0?"+":"").concat(Z,"%)</span>")):"",ie=n._pickActionBlockBadge(i),re=n._buildBlockHeaderHtml({iconHtml:ee,badgeClass:ie.cssClass,badgeLabel:ie.label,name:i.actionName||"—",rationale:ie.rationale,valueHtml:'<span class="ff-block-header-delta '.concat(J,'">').concat($).concat(i.totalDelta.toFixed(2),"</span>").concat(ne)});return'<section class="ff-cumulative-block ff-cumulative-block--'.concat("source"===i.type?"direct":"prop",' ff-action-expanded"').concat(i.stackItemId?' data-stack-item-id="'.concat(i.stackItemId,'"'):"").concat(i.color?' style="--item-color:'.concat(i.color,'"'):"",">\n ").concat(re,'\n <div class="ff-action-body">\n ').concat(i.actionDescription?'<p class="ff-hier-desc ff-action-desc">'.concat(i.actionDescription,"</p>"):"","\n ").concat(n._wrapChainGrid("\n ".concat(C,"\n ").concat("source"===i.type?n._buildComboSectionHtml(i.comboResults,i.stackItemId)+n._buildAmplifierSectionHtml(i.amplifierResults,i.stackItemId):n._buildPropagationModifiersSectionHtml(S),"\n ").concat(n._buildTotalCardHtml(i.totalDelta,w,n._computeBlockOptimizationRatio(i),"propagation"===i.type?x:k,"propagation"===i.type?"Écart par rapport au delta brut avant Absorption et Gap — 0% = modificateurs neutres, négatif = atténuation, positif = amplification":"Écart par rapport au delta de base de l'action — 0% = résultat nominal sans combo, négatif = combos pénalisants, positif = combos amplificateurs","source"===i.type?i.weightDelta:void 0),"\n ")),"\n ").concat(n._buildDetailDisclosureHtml(i.detailRows),"\n </div>\n </section>")}).join(""),f=p.grandTotal,g=f>=0?"+":"",v=f>=0?"ff-delta-pos":"ff-delta-neg",y=p.blocks.filter(function(e){return"keyEvent"!==e.type}),I=y.filter(function(e){var t="source"===e.type?e.baseDelta:e.rawDelta;return void 0!==t&&0!==t}),C=I.reduce(function(e,t){return e+("source"===t.type?t.baseDelta:t.rawDelta)},0),w=I.reduce(function(e,t){return e+t.totalDelta},0),x=I.length>0&&0!==C?w/C*100-100:void 0,k=Number.isFinite(x)?(a=(r=x)>=0?"+":"",s=Math.abs(r)<.05?"ff-delta-neu":r>0?"ff-delta-pos":"ff-delta-neg",'<div class="ff-cumulative-total-optimization" title="(Σ deltas effectifs) / (Σ deltas nominaux) − 100%. Moyenne pondérée par le poids de chaque bloc : un gros bloc dilue l\'impact d\'un petit. 0% = aucun modificateur sur l\'ensemble.">Optimisation globale (tous les blocs): <strong class="ff-cumulative-total-optimization-value '.concat(s,'">').concat(a).concat(r.toFixed(1),'</strong><span class="ff-cumulative-total-optimization-unit">%</span></div>')):"",S=y.filter(function(e){return"number"==typeof e.weightDelta&&0!==e.weightDelta}),_=S.reduce(function(e,t){return e+t.weightDelta},0),A=S.length>0?(l=_>0?"+":_<0?"":"±",'<div class="ff-cumulative-weight-row" title="Somme nette des variations de poids des actions directes de la pile touchant ce satellite">\n <span class="ff-cumulative-weight-label">Σ poids</span>\n <span class="ff-cumulative-weight-value">'.concat(_>0?"▲ ":_<0?"▼ ":"").concat(l).concat(_,"</span>\n </div>")):"",E=this._snapshotCardExpansion(i);i.classList.remove("ff-action-expanded"),i.innerHTML="\n ".concat(h,'\n <div class="ff-cumulative-total-wrap">\n <div class="ff-cumulative-total-label">Σ des impacts affichés (delta cumulé)</div>\n <div class="ff-cumulative-total-bar"></div>\n <div class="ff-cumulative-total-value ').concat(v,'">').concat(g).concat(f.toFixed(2),"</div>\n ").concat(k,"\n ").concat(A,"\n </div>\n "),this._animateContainerCounters(i),this._installClickHandler(i,this._buildMultiFlashClickHandler(i,u,t.onCardElementFlash)),this._attachNavBtnHandlers(i,t.onNavigateToCutting),this._attachPrereqNavHandlers(i,t.onNavigateToAction),this._initCardRailState(i,E.size>0?E:void 0),this._attachComboHighlightHandlers(i),this._attachBlockLinkedHoverHandlers(i),(0,b.watchChainCardHeight)(i),this._consumePendingBlockScroll()}}},{key:"_attachBlockLinkedHoverHandlers",value:function(e){var t=this;e.querySelectorAll(".ff-cumulative-block[data-stack-item-id]").forEach(function(e){var n=e.dataset.stackItemId;e.addEventListener("mouseenter",function(){var e;t.highlightBlockByStackItemId(n),null===(e=t._onStackItemHighlightCb)||void 0===e||e.call(t,n)}),e.addEventListener("mouseleave",function(){var e;t.highlightBlockByStackItemId(null),null===(e=t._onStackItemHighlightCb)||void 0===e||e.call(t,null)})})}},{key:"setStackItemHighlightCallback",value:function(e){this._onStackItemHighlightCb=e}},{key:"highlightBlockByStackItemId",value:function(e){var t=this.getForceFieldDetailsContainer();t&&t.querySelectorAll(".ff-cumulative-block").forEach(function(t){t.classList.toggle("ff-block--linked-hover",!!e&&t.dataset.stackItemId===e)})}},{key:"requestScrollToStackItemBlock",value:function(e){var t=this;this._pendingBlockScrollStackItemId=e,null!==this._pendingBlockScrollTimeout&&clearTimeout(this._pendingBlockScrollTimeout),this._pendingBlockScrollTimeout=setTimeout(function(){t._pendingBlockScrollStackItemId=null,t._pendingBlockScrollTimeout=null},1e3),this._consumePendingBlockScroll()}},{key:"_consumePendingBlockScroll",value:function(){var e=this._pendingBlockScrollStackItemId;if(e){var t=this.getForceFieldDetailsContainer(),n=null==t?void 0:t.querySelector('.ff-cumulative-block[data-stack-item-id="'.concat(CSS.escape(e),'"]'));n&&(this._pendingBlockScrollStackItemId=null,null!==this._pendingBlockScrollTimeout&&(clearTimeout(this._pendingBlockScrollTimeout),this._pendingBlockScrollTimeout=null),n.scrollIntoView({behavior:"smooth",block:"center"}))}}},{key:"getTargetName",value:function(e,t,n){var i,r;if(!e||void 0===n)return"cible inconnue";var a=e.odds.find(function(e){return e.id===t});if(!a)return"cible ".concat(n);var o=(Array.isArray(a.cuttingIds)&&a.cuttingIds.length===a.cuttingScores.length?a.cuttingIds:a.cuttingScores.map(function(e,t){return t+1})).findIndex(function(e){return e===n}),s=o>=0?null===(r=null===(i=a.cuttings)||void 0===i?void 0:i[o])||void 0===r?void 0:r.label:void 0;return s&&s.trim().length>0?s:"cible ".concat(n)}},{key:"getGhostDetailsContainer",value:function(){return document.getElementById("ghost-details-cause")}},{key:"getForceFieldDetailsContainer",value:function(){var e=this,t=document.getElementById("force-field-details-cause");return t&&!t.__ffBlockDelegate&&(t.__ffBlockDelegate=!0,t.addEventListener("click",function(t){var n,i=t.target,r=i.closest(".ff-block-header");if(r){var a=r.closest(".ff-cumulative-block");a&&a.classList.toggle("ff-action-expanded")}else{var o=i.closest("[data-odd-legend-chip]");if(o){var s=(0,C.toggleOddLegendChip)(o),l=o.dataset.oddLegendChip;l&&(null===(n=e._onOddLegendActiveChangeCb)||void 0===n||n.call(e,l,s))}}})),t}},{key:"toggleOddLegendChipById",value:function(e){var t=this.getForceFieldDetailsContainer();if(!t||null!==this._frozenHtml)return null;var n=t.querySelector('[data-odd-legend-chip="'.concat(e,'"]'));return n?(0,C.toggleOddLegendChip)(n):null}},{key:"clearGhostDetails",value:function(){var e=this.getGhostDetailsContainer();e&&(e.innerHTML='<div class="force-field-detail-empty">Activez une action pour afficher le détail de la tension ghost.</div>')}},{key:"freezeForSwitch",value:function(e){this._frozenHtml=e}},{key:"unfreezeForSwitch",value:function(){var e=this._frozenHtml;this._frozenHtml=null,null!==e&&this.restorePanelHtml(e)}},{key:"clearForceFieldDetails",value:function(){var e=this.getForceFieldDetailsContainer();e&&null===this._frozenHtml&&this._renderSphereIntroOrClear(e)}},{key:"_renderSphereIntroOrClear",value:function(e){var t,n,i,r=this;this._sphereName?(null===(t=this._onHeaderUpdate)||void 0===t||t.call(this,{label:"Sphère",cssClass:"d0"},this._sphereName),e.innerHTML='\n <div class="ff-sphere-intro">\n <p class="ff-sphere-intro-desc">'.concat(this._sphereDescription,'</p>\n <p class="ff-panel-hint">Cliquez sur un satellite du diagramme, puis activez des actions dans la STACK pour en visualiser l\'impact.</p>\n </div>\n ').concat((0,C.buildOddLegendHtml)(),"\n "),(0,C.attachOddLegendHoverHandlers)(e,function(e){var t;return null===(t=r._onOddLegendHoverCb)||void 0===t?void 0:t.call(r,e)})):(null===(n=this._onHeaderUpdate)||void 0===n||n.call(this,void 0,void 0),e.innerHTML=""),null===(i=this.onComboClear)||void 0===i||i.call(this)}},{key:"setOddLegendHoverCallback",value:function(e){this._onOddLegendHoverCb=e}},{key:"setOddLegendActiveChangeCallback",value:function(e){this._onOddLegendActiveChangeCb=e}},{key:"highlightOddLegendChip",value:function(e){var t=this.getForceFieldDetailsContainer();t&&(0,C.setOddLegendHoverState)(t,e)}},{key:"renderOddInfo",value:function(e,t){var n,i,r=this.getForceFieldDetailsContainer();if(r&&null===this._frozenHtml){null===(n=this._onHeaderUpdate)||void 0===n||n.call(this,{label:"ODD",cssClass:"d2"},e);var a=t?'<p class="ff-element-intro-desc">'.concat(t,"</p>"):"";r.innerHTML='\n <div class="ff-element-intro ff-element-intro--odd">\n '.concat(a,'\n <p class="ff-panel-hint">Cliquez sur un satellite du diagramme, puis activez des actions dans la STACK pour en visualiser l\'impact.</p>\n </div>\n '),null===(i=this.onComboClear)||void 0===i||i.call(this)}}},{key:"renderComposanteInfo",value:function(e){var t,n,i=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],a=arguments.length>2?arguments[2]:void 0,o=this.getForceFieldDetailsContainer();if(o&&null===this._frozenHtml){null===(t=this._onHeaderUpdate)||void 0===t||t.call(this,{label:"Facette",cssClass:"d1"},e.name);var s=e.description?'<p class="ff-element-intro-desc">'.concat(e.description,"</p>"):"",l=r.map(function(e){return i._buildKeyEventBlockHtml(e,a)}).join(""),c=this._snapshotCardExpansion(o);o.innerHTML='\n <div class="ff-element-intro ff-element-intro--facette">\n '.concat(s,'\n <p class="ff-panel-hint">Cliquez sur un satellite du diagramme, puis activez des actions dans la STACK pour en visualiser l\'impact.</p>\n </div>\n ').concat(l,"\n ").concat((0,C.buildOddLegendHtmlForComposante)(e),"\n "),(0,C.attachOddLegendHoverHandlers)(o,function(e){var t;return null===(t=i._onOddLegendHoverCb)||void 0===t?void 0:t.call(i,e)}),r.length>0&&(this._attachPrereqNavHandlers(o,a),this._attachComboHighlightHandlers(o),this._initCardRailState(o,c.size>0?c:void 0)),null===(n=this.onComboClear)||void 0===n||n.call(this),this._consumePendingBlockScroll()}}},{key:"renderCuttingInfo",value:function(e,t,n,i){var r,a=this,o=this.getForceFieldDetailsContainer();if(o&&null===this._frozenHtml){var s=t?'<p class="ff-element-intro-desc">'.concat(t,"</p>"):"";o.innerHTML='\n <div class="ff-element-intro ff-element-intro--satellite">\n '.concat(s,'\n <p class="ff-panel-hint">Activez une ou plusieurs actions dans la STACK pour révéler leur impact sur ce satellite.</p>\n </div>\n ').concat(n&&i?(0,C.buildOddLegendHtmlForOdd)(n,i):"","\n "),n&&i&&(0,C.attachOddLegendHoverHandlers)(o,function(e){var t;return null===(t=a._onOddLegendHoverCb)||void 0===t?void 0:t.call(a,e)}),null===(r=this.onComboClear)||void 0===r||r.call(this)}}},{key:"snapshotPanelHtml",value:function(){var e=this.getForceFieldDetailsContainer();return e?e.querySelector(".force-field-detail-empty")?null:e.innerHTML||null:null}},{key:"restorePanelHtml",value:function(e){var t=this.getForceFieldDetailsContainer();t&&t.innerHTML!==e&&(t.innerHTML=e)}},{key:"renderGhostDetailsForActiveAction",value:function(e){var t,n,i,r;if(e.projectedGhostTensionByOddId){var a=this.getGhostDetailsContainer();if(a)if(e.isInOddMode){var o=e.displayingOddId;if(!o)return;var s=(0,h.getOriginalOddTension)(e.currentComponent,o),l=e.projectedGhostTensionByOddId.get(o),c=null!==(n=null===(t=e.projectedGhostCuttingStatesByOddId)||void 0===t?void 0:t.get(o))&&void 0!==n?n:[];if(null===s||void 0===l)return;var d=l-s,u=d>=0?"+":"",p=c.map(function(e){var t=e.projectedTension-e.originalTension,n=t>=0?"+":"";return'<div class="force-field-detail-line">• cutting '.concat(e.cuttingId,": ").concat(e.originalTension.toFixed(3)," → ").concat(e.projectedTension.toFixed(3)," (Δ ").concat(n).concat(t.toFixed(3),")</div>")}).join("");a.innerHTML='\n <h4>Tension Ghost active (mode ODD)</h4>\n <div class="force-field-detail-line"><strong>ODD:</strong> '.concat(o,'</div>\n <div class="force-field-detail-line"><strong>Original ODD (moyenne cuttings):</strong> ').concat(s.toFixed(3),'</div>\n <div class="force-field-detail-line"><strong>Projeté ODD (moyenne cuttings projetés):</strong> ').concat(l.toFixed(3),'</div>\n <div class="force-field-detail-line"><strong>Détail cuttings (niveau COMPOSANT::ODD::oddCutting):</strong></div>\n ').concat(p||'<div class="force-field-detail-line">(aucun détail cutting disponible)</div>','\n <div class="force-field-detail-line"><strong>Formule Δ ghost:</strong> tension projetée - tension originale</div>\n <div class="force-field-detail-line force-field-detail-result"><strong>Δ ghost:</strong> ').concat(u).concat(d.toFixed(3),"</div>\n ")}else{var f=(0,h.getOriginalComponentTension)(e.currentComponent),g=e.projectedGhostComponentTension;if(null!==f&&null!==g){var v=g-f,m=v>=0?"+":"",y=(null!==(r=null===(i=e.currentComponent)||void 0===i?void 0:i.odds)&&void 0!==r?r:[]).map(function(t){var n,i,r,a,o,s=null!==(n=(0,h.getOriginalOddTension)(e.currentComponent,t.id))&&void 0!==n?n:0,l=null!==(r=null===(i=e.projectedGhostTensionByOddId)||void 0===i?void 0:i.get(t.id))&&void 0!==r?r:s,c=(null!==(o=null===(a=e.projectedGhostCuttingStatesByOddId)||void 0===a?void 0:a.get(t.id))&&void 0!==o?o:[]).map(function(e){var t=e.projectedTension-e.originalTension,n=t>=0?"+":"";return"c".concat(e.cuttingId,": ").concat(e.originalTension.toFixed(3),"→").concat(e.projectedTension.toFixed(3)," (Δ ").concat(n).concat(t.toFixed(3),")")}).join("; ");return'<div class="force-field-detail-line">• '.concat(t.id," (n=").concat(t.satelliteCount,") : ODD ").concat(s.toFixed(3)," → ").concat(l.toFixed(3)," | cuttings: ").concat(c||"n/a","</div>")}).join("");a.innerHTML='\n <h4>Tension Ghost active (mode Composante)</h4>\n <div class="force-field-detail-line"><strong>Original composante:</strong> '.concat(f.toFixed(3),'</div>\n <div class="force-field-detail-line"><strong>Projeté ghost composante:</strong> ').concat(g.toFixed(3),'</div>\n <div class="force-field-detail-line"><strong>Formule composante:</strong> Σ(tension ODD × poids) / Σ(poids)</div>\n <div class="force-field-detail-line"><strong>Détail bas niveau COMPOSANT::ODD::oddCutting + poids:</strong></div>\n ').concat(y||'<div class="force-field-detail-line">(pas de détail composante disponible)</div>','\n <div class="force-field-detail-line"><strong>Formule Δ ghost:</strong> tension projetée - tension originale</div>\n <div class="force-field-detail-line force-field-detail-result"><strong>Δ composante ghost:</strong> ').concat(m).concat(v.toFixed(3),"</div>\n ")}}}else this.clearGhostDetails()}},{key:"renderActionPropagationTable",value:function(e){var t,n=this.getForceFieldDetailsContainer();if(n){var i=e.forceFieldLinks,r=e.allForceFieldLinkDetails;if(0!==i.length){var a=this._ensurePropagationIndex(i,r).tableViewModel,o=a.groups.map(function(e,t){var n=e.selected,i=e.relatedRows,r=e.displayedDelta,a=r>=0?"+":"",o=new Set(i.map(function(e){return e.toCuttingId}).filter(function(e){return void 0!==e})),s=i.some(function(e){return"inter"===e.layerType})||o.size>1?n.toOddId:void 0!==n.toCuttingId?"".concat(n.toOddId,"::cutting ").concat(n.toCuttingId):n.toOddId,l=n.toComponentId!==n.fromComponentId?" — composante : ".concat(n.toComponentId):"",c=i.map(function(e){var t,n=e.deltaTo>=0?"+":"";return"<tr>\n <td>".concat((0,p.getLayerDisplayName)(e.layerType),"</td>\n <td>").concat(e.propagationFactor.toFixed(2),"</td>\n <td>").concat((0,p.getForceFieldWeightLabel)(e.layerType)," = ").concat(e.strategicWeight.toFixed(2),"</td>\n <td>").concat(e.baseDelta.toFixed(2),"</td>\n <td>").concat(n).concat(e.deltaTo.toFixed(2),"</td>\n <td>").concat(e.absorption.toFixed(2)," — ").concat((0,u.absorptionRuleExplanation)(e.toState),"</td>\n <td>").concat(e.gap.toFixed(2)," — ").concat((0,u.gapRuleExplanation)(e.fromState,e.toState),"</td>\n <td>").concat(null!==(t=e.rationale)&&void 0!==t?t:"","</td>\n </tr>")}).join("");return'<tr class="force-field-group-header">\n <td colspan="8"><strong>'.concat(t+1,". → ").concat(s).concat(l,"</strong>\n  Δ affiché : <strong>").concat(a).concat(r.toFixed(2),"</strong></td>\n </tr>\n ").concat(c)}).join("");n.innerHTML="\n <h4>Propagations depuis ".concat(a.sourceStr," — ").concat(a.groups.length," cible").concat(a.groups.length>1?"s":"",'</h4>\n <table class="force-field-detail-table">\n <thead>\n <tr>\n <th>Couche</th>\n <th>k</th>\n <th>w</th>\n <th>Base Δ</th>\n <th>Δ appliqué</th>\n <th>abs + justification</th>\n <th>gap + justification</th>\n <th>Justification propagation</th>\n </tr>\n </thead>\n <tbody>\n ').concat(o,"\n </tbody>\n </table>\n "),null===(t=this.onComboClear)||void 0===t||t.call(this)}else this.clearForceFieldDetails()}}},{key:"buildDirectActionCardsHtml",value:function(t){var n,i,r,a,s=this,l=this._ensurePropagationIndex(t.forceFieldLinks,t.allForceFieldLinkDetails).sourceToTargetChains,c=e._buildSourceChainKey(t.oddId,t.cuttingId),d=e._buildSourceChainKey(t.oddId,void 0),u=new Set;(null!==(n=l.get(c))&&void 0!==n?n:[]).forEach(function(e){return u.add(e)}),c!==d&&(null!==(i=l.get(d))&&void 0!==i?i:[]).forEach(function(e){return u.add(e)});var p=o(u),h=new Map,f={oddId:t.oddId,cuttingId:t.cuttingId},g=p.map(function(e){return s._buildBranchFlashSequence(f,e)});h.set(0,g.length>0?g:[[f]]),p.forEach(function(e,t){h.set(t+1,[s._buildBranchFlashSequence(f,e)])});var v=this._renderChainCardHtml({cardClass:"ff-chain-intra",badgeDelta:null!==(r=t.actionBaseDelta)&&void 0!==r?r:t.actionDelta,headerAttrs:'data-row-idx="'.concat(0,'"'),headerTitle:t.actionName||"—",actionId:t.actionId,stepsHtml:"",isSourceCard:!0,weightDelta:null!==(a=t.weightDeltaBase)&&void 0!==a?a:t.weightDelta,amplifierResults:t.amplifierResults}),m=void 0!==t.actionBaseDelta&&0!==t.actionBaseDelta?t.actionDelta/t.actionBaseDelta*100:void 0,y=void 0!==t.projectionDelta&&0!==t.projectionDelta?t.actionDelta/t.projectionDelta:1,b=p.map(function(n,i){var r,a,o,l,c,d,u=i+1,p=n.rawDelta*y,h=p>=0?"+":"",f=p>=0?"ff-delta-pos":"ff-delta-neg",g=s._getBranchLabel(t.currentComponent,n,t.allComponents),v=null!==(o=null!==(r=n.toCuttingId)&&void 0!==r?r:null===(a=n.cascadeRows.find(function(e){return void 0!==e.toCuttingId}))||void 0===a?void 0:a.toCuttingId)&&void 0!==o?o:null===(l=n.sortedDirect.find(function(e){return void 0!==e.targetedCutting}))||void 0===l?void 0:l.targetedCutting,m=null!==(c=n.toComponentId)&&void 0!==c?c:null===(d=t.currentComponent)||void 0===d?void 0:d.id,b=['data-nav-oddid="'.concat(n.toOddId,'"'),void 0!==v?'data-nav-cuttingid="'.concat(v,'"'):"",m?'data-nav-componentid="'.concat(m,'"'):""].filter(Boolean).join(" "),I=t.onNavigateToCutting?s._buildNavTargetIconHtml(" ".concat(b)):"",C=e._chainHasDirectBridgeEdge(n);return'<div class="ff-card-step'.concat(C?" ff-step-bridge":"",'" data-row-idx="').concat(u,'">\n <div class="ff-step-cutting"><span class="ff-step-label-group">').concat(g,' <span class="ff-step-delta ').concat(f,'">').concat(h).concat(p.toFixed(2),"</span></span>").concat(I,"</div>\n </div>")}).join(""),I=p.length>0?'<div class="ff-total-subtitle" data-row-idx="'.concat(0,'">').concat(p.length," Satellite").concat(p.length>1?"s":""," touché").concat(p.length>1?"s":"","</div>"):"";return{html:this._wrapChainGrid("".concat(v).concat(this._buildComboSectionHtml(t.comboResults,t.stackItemId)).concat(this._buildAmplifierSectionHtml(t.amplifierResults,t.stackItemId)).concat(this._buildTotalCardHtml(t.actionDelta,Math.max(1,p.length),m,I+b,"Écart par rapport au delta de base de l'action — 0% = résultat nominal sans combo, négatif = combos pénalisants, positif = combos amplificateurs",t.weightDelta))),attachHandlers:function(e){s._installClickHandler(e,s._buildMultiFlashClickHandler(e,h,t.onCardElementFlash,{skipNavStep:!0})),s._attachNavBtnHandlers(e,t.onNavigateToCutting),s._attachPrereqNavHandlers(e,t.onNavigateToAction),s._attachComboHighlightHandlers(e),s._initCardRailState(e)}}}},{key:"buildPropagatedActionHtml",value:function(t){var n,i,r,a,o,s=this,l=t.forceFieldLinks[t.linkIndex];if(!l)return null;var c=l.detail,d=this._ensurePropagationIndex(t.forceFieldLinks,t.allForceFieldLinkDetails).targetChains,h=e._buildTargetChainKey(c.toOddId,c.toComponentId,c.toCuttingId),f=d.get(h);if(!f||0===f.directRows.length&&0===f.sortedAncestors.length)return null;var g=f.directRows,v=f.sortedAncestors,m=f.sortedDirect,y=f.cascadeRows,b=f.allDisplayRows,I=f.rowToIdx,C=f.chainCards,w=f.pseudoStepIdxMap,x=f.directDelta,k=f.rowLabelByToCuttingId,S=x>=0?"+":"",_=function(e){var t,n,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2?arguments[2]:void 0,a=e.deltaTo>=0?"+":"",o=void 0!==r?' data-row-idx="'.concat(r,'"'):"",s=i?'class="force-field-ancestor-row"'.concat(o):void 0!==r?'data-row-idx="'.concat(r,'"'):"",l=e.baseDelta.toFixed(2);if("intra"===e.layerType)if(void 0!==e.fromCuttingId){var c=k.get(e.fromCuttingId);void 0!==c&&(l+=' <span class="base-delta-source">(↑ '.concat(c,")</span>"))}else{var d=v.find(function(e){return"intra"!==e.layerType});void 0!==d&&(l+=' <span class="base-delta-source">(↑ '.concat((n=d,(0,p.getLayerDisplayName)(n.layerType)),")</span>"))}return"<tr ".concat(s,">\n <td>").concat((0,p.getLayerDisplayName)(e.layerType),"</td>\n <td>").concat(e.propagationFactor.toFixed(2),"</td>\n <td>").concat((0,p.getForceFieldWeightLabel)(e.layerType)," = ").concat(e.strategicWeight.toFixed(2),"</td>\n <td>").concat(l,"</td>\n <td>").concat(a).concat(e.deltaTo.toFixed(2),"</td>\n <td>").concat(e.absorption.toFixed(2)," — ").concat((0,u.absorptionRuleExplanation)(e.toState),"</td>\n <td>").concat(e.gap.toFixed(2)," — ").concat((0,u.gapRuleExplanation)(e.fromState,e.toState),"</td>\n <td>").concat(null!==(t=e.rationale)&&void 0!==t?t:"","</td>\n </tr>")},A=v.length>0?'<tr class="force-field-section-header">\n <td colspan="8">⟳ Contexte de propagation amont ('.concat(v.length," étape").concat(v.length>1?"s":"",")</td>\n </tr>\n ").concat(v.map(function(e){return _(e,!0,I.get(e))}).join("")):"",E='<tr class="force-field-section-impact">\n <td colspan="8">⚡ Impact direct sur cette cible — Σ Δ = <strong>'.concat(S).concat(x.toFixed(2),"</strong></td>\n </tr>\n ").concat(m.map(function(e){return _(e,!1,I.get(e))}).join("")),O=y.length>0?'<tr class="force-field-section-cascade">\n <td colspan="8">⤵ Propagation en cascade ('.concat(y.length," étape").concat(y.length>1?"s":""," suivante").concat(y.length>1?"s":"",")</td>\n </tr>\n ").concat(y.map(function(e){return _(e,!0,I.get(e))}).join("")):"",D=new Map,M=this._computeChainCardFlashes(C),L=t.incomingMode?{oddId:"",cuttingId:void 0,componentId:l.detail.fromComponentId}:null!==(n=t.actionSource)&&void 0!==n?n:{oddId:l.detail.fromOddId,cuttingId:l.detail.fromCuttingId},F=void 0!==c.toCuttingId?{oddId:c.toOddId,cuttingId:c.toCuttingId}:void 0;C.forEach(function(e){var t=I.get(e.trigger),n=M.get(e.trigger);void 0!==t&&n&&D.set(t,[s._finalizeFlashSequence(n,L,F)]),e.steps.forEach(function(e){var t=I.get(e);void 0!==t&&D.set(t,[[{oddId:e.toOddId,cuttingId:e.toCuttingId}]])});var i=w.get(e);void 0!==i&&D.set(i,[[{oddId:e.trigger.toOddId,cuttingId:e.trigger.toCuttingId}]])});var T=C.length>0?I.get(C[0].trigger):void 0,P=new Map,B=b.length,G=[];C.forEach(function(e){var t,n=I.get(e.trigger),i=void 0!==n?null===(t=D.get(n))||void 0===t?void 0:t[0]:void 0;if(i){var r=B++;D.set(r,[i]),P.set(e.trigger,r),e.steps.forEach(function(e){P.set(e,r)}),G.push(i)}}),void 0!==T&&D.set(T,G);var R=void 0!==T?' data-row-idx="'.concat(T,'" title="Voir dans le tableau"'):"",q=this._buildPropSourceStepsHtml(m,t.currentComponent,t.onNavigateToSatellite,{oddId:null!==(r=null===(i=t.actionSource)||void 0===i?void 0:i.oddId)&&void 0!==r?r:c.fromOddId,cuttingId:null!==(o=null===(a=t.actionSource)||void 0===a?void 0:a.cuttingId)&&void 0!==o?o:c.fromCuttingId,componentId:c.fromComponentId,actionName:t.actionName},function(e){var t=1===e.length?P.get(e[0]):void 0;if(void 0!==t)return t;var n=[],i=new Set;if(e.forEach(function(e){var t=P.get(e),r=void 0!==t?D.get(t):void 0;null==r||r.forEach(function(e){var t=e.map(function(e){var t,n;return"".concat(e.oddId,"|").concat(null!==(t=e.cuttingId)&&void 0!==t?t:"","|").concat(null!==(n=e.componentId)&&void 0!==n?n:"")}).join(">");i.has(t)||(i.add(t),n.push(e))})}),0!==n.length){var r=B++;return D.set(r,n),r}}),z=this._renderChainCardHtml({cardClass:"ff-chain-intra",badgeDelta:f.rawDelta,headerAttrs:R,headerTitle:t.actionName||"—",actionId:t.actionId,stepsHtml:q,isSourceCard:!0}),N=m.reduce(function(e,t){return e+t.deltaTo},0),j=this._buildCascadeListHtml(y,t.currentComponent,t.onNavigateToCutting,function(e,t){var n=s._buildCascadeFlashPath(y,{oddId:c.toOddId,cuttingId:c.toCuttingId},e,t);if(0!==n.length){var i=B++;return D.set(i,[n]),i}},c.toCuttingId),H=j.subtitleHtml,K=j.listHtml,V=C.map(function(e){var n="inter"===e.trigger.layerType,i=n&&0===e.steps.length&&void 0!==e.trigger.toCuttingId,r=!n||i,a=w.get(e),o=void 0!==a?' data-row-idx="'.concat(a,'"'):"",l=e.trigger.toCuttingId===c.toCuttingId&&e.trigger.toOddId===c.toOddId,d=t.onNavigateToCutting&&void 0!==e.trigger.toCuttingId?" ff-step-nav":"",u=t.onNavigateToCutting&&void 0!==e.trigger.toCuttingId?' data-nav-oddid="'.concat(e.trigger.toOddId,'" data-nav-cuttingid="').concat(e.trigger.toCuttingId,'"').concat(t.currentComponent?' data-nav-componentid="'.concat(t.currentComponent.id,'"'):""):"";return(r&&void 0!==a?'<div class="ff-card-step ff-step-pseudo'.concat(l?" ff-step-target":"",'"').concat(o,'>\n <div class="ff-step-cutting').concat(d,'"').concat(u,">").concat(s.getTargetName(t.currentComponent,e.trigger.toOddId,e.trigger.toCuttingId)).concat(l?" ★":"",' <span class="ff-step-delta ').concat(e.trigger.deltaTo>=0?"ff-delta-pos":"ff-delta-neg",'">').concat(e.trigger.deltaTo>=0?"+":"").concat(e.trigger.deltaTo.toFixed(2),"</span></div>\n </div>"):"")+e.steps.map(function(e){var n=g.includes(e)&&e.toCuttingId===c.toCuttingId,i=["ff-card-step",n?"ff-step-target":"",v.includes(e)?"ff-step-ancestor":"",y.includes(e)?"ff-step-cascade":""].filter(Boolean).join(" "),r=I.get(e),a=void 0!==r?' data-row-idx="'.concat(r,'"'):"",o=n?" ★":"",l=e.deltaTo>=0?"+":"",d=e.deltaTo>=0?"ff-delta-pos":"ff-delta-neg",u=t.onNavigateToCutting&&void 0!==e.toCuttingId?" ff-step-nav":"",p=t.onNavigateToCutting&&void 0!==e.toCuttingId?' data-nav-oddid="'.concat(e.toOddId,'" data-nav-cuttingid="').concat(e.toCuttingId,'"').concat(t.currentComponent?' data-nav-componentid="'.concat(t.currentComponent.id,'"'):""):"",h=void 0!==e.toCuttingId?"".concat(s.getTargetName(t.currentComponent,e.toOddId,e.toCuttingId)).concat(o,' <span class="ff-step-delta ').concat(d,'">').concat(l).concat(e.deltaTo.toFixed(2),"</span>"):"?";return'<div class="'.concat(i,'"').concat(a,'>\n <div class="ff-step-cutting').concat(u,'"').concat(p,">").concat(h,"</div>\n </div>")}).join("")}).join(""),Y=H+K+(V?'<details class="ff-propagation-chain-details"><summary class="ff-propagation-chain-summary">Chaîne de propagation</summary>'.concat(V,"</details>"):"")||void 0,W=m.reduce(function(e,t){return e+s._rawDeltaForRow(t)},0),U=0!==W?N/W*100:void 0,X=this._buildTotalCardHtml(N,C.length,U,Y||void 0,"Écart par rapport au delta brut avant Absorption et Gap — 0% = modificateurs neutres, négatif = atténuation, positif = amplification"),Z=C.length>0?this._wrapChainGrid("".concat(z,"\n ").concat(this._buildPropagationModifiersSectionHtml(m),"\n ").concat(X,"\n ")):"";return{html:'\n <div class="ff-action-body">\n'.concat(Z,'\n <details class="ff-detail-disclosure">\n <summary>Détail complet du calcul</summary>\n <table class="force-field-detail-table">\n <thead>\n <tr>\n <th>Couche</th>\n <th>k</th>\n <th>w</th>\n <th>Base Δ</th>\n <th>Δ appliqué</th>\n <th>abs + justification</th>\n <th>gap + justification</th>\n <th>Justification propagation</th>\n </tr>\n </thead>\n <tbody>\n ').concat(A,"\n ").concat(E,"\n ").concat(O,"\n </tbody>\n </table>\n </details>\n </div>\n "),attachHandlers:function(e){e.classList.remove("ff-action-expanded"),e.classList.add("ff-action-expanded"),s._attachDetailPanelClickHandler(e,D,t.onCardElementFlash),s._attachNavBtnHandlers(e,t.onNavigateToCutting),s._animateContainerCounters(e),s._initCardRailState(e,void 0)}}}},{key:"_attachDetailPanelClickHandler",value:function(e,t,n){var i=this;this._installClickHandler(e,function(r){if(i._handleCardRailClickPrelude(r)){if(r.target.closest(".ff-why-link")){r.preventDefault();var a=e.querySelector(".ff-detail-disclosure");a&&(a.open=!0)}var o=r.target.closest("[data-row-idx]");if(o){var s=o.dataset.rowIdx;if(void 0!==s){if(n){var l=t.get(parseInt(s,10));null==l||l.forEach(function(e){e.length>0&&n(e)})}e.querySelectorAll(".ff-card-focused").forEach(function(e){return e.classList.remove("ff-card-focused")}),e.querySelectorAll(".ff-row-focused").forEach(function(e){return e.classList.remove("ff-row-focused")});var c=e.querySelector('tr[data-row-idx="'.concat(s,'"]'));c&&(c.classList.add("ff-row-focused"),"TR"===o.tagName&&c.scrollIntoView({behavior:"smooth",block:"nearest"}));var d=e.querySelector('.ff-card-header[data-row-idx="'.concat(s,'"], .ff-card-step[data-row-idx="').concat(s,'"]'));d&&(d.classList.add("ff-card-focused"),"TR"===o.tagName&&d.scrollIntoView({behavior:"smooth",block:"nearest"}))}}}})}},{key:"_installClickHandler",value:function(e,t){var n=e.__ffCardClickListener;n&&e.removeEventListener("click",n),e.addEventListener("click",t),e.__ffCardClickListener=t}},{key:"_buildMultiFlashClickHandler",value:function(e,t,n,i){var r=this;return function(a){var o;if((!(null==i?void 0:i.skipNavStep)||!a.target.closest(".ff-step-nav"))&&r._handleCardRailClickPrelude(a)){var s=a.target.closest("[data-row-idx]");if(s){var l=parseInt(null!==(o=s.dataset.rowIdx)&&void 0!==o?o:"",10);if(!isNaN(l)){if(n){var c=t.get(l);c&&c.forEach(function(e){e.length>0&&n(e)})}e.querySelectorAll(".ff-card-focused").forEach(function(e){return e.classList.remove("ff-card-focused")}),s.classList.add("ff-card-focused")}}}}}},{key:"_attachNavBtnHandlers",value:function(e,t){var n=e.__ffNavBtnListener;n&&e.removeEventListener("click",n,!0);var i=this;e.querySelectorAll(".ff-step-nav, .ff-step-nav-target, .ff-prop-mod-link").forEach(function(e){e.addEventListener("mouseenter",function(){var t,n=e.dataset.navOddid;if(n){var r=e.dataset.navCuttingid,a=void 0!==r&&""!==r?parseInt(r,10):void 0,o=e.dataset.navComponentid||void 0;null===(t=i._onDiagramElementHover)||void 0===t||t.call(i,{oddId:n,cuttingId:a,componentId:o})}}),e.addEventListener("mouseleave",function(){var e;null===(e=i._onDiagramElementHover)||void 0===e||e.call(i,null)})});var r=function(n){var r,a=n.target.closest(".ff-step-nav, .ff-step-nav-target");if(a){n.preventDefault(),n.stopPropagation();var o=a.dataset.navSourceKey;if(o){var s=i._sourceNavCallbacks.get(o);s&&(s(),e.querySelectorAll(".ff-nav-item-active").forEach(function(e){return e.classList.remove("ff-nav-item-active")}),a.classList.add("ff-nav-item-active"))}else if(t){var l=null!==(r=a.dataset.navOddid)&&void 0!==r?r:"",c=a.dataset.navCuttingid,d=void 0!==c&&""!==c?parseInt(c,10):void 0,u=a.dataset.navComponentid||void 0;t(l,d,u),e.querySelectorAll(".ff-nav-item-active").forEach(function(e){return e.classList.remove("ff-nav-item-active")}),a.classList.add("ff-nav-item-active")}}};e.addEventListener("click",r,!0),e.__ffNavBtnListener=r}},{key:"_attachPrereqNavHandlers",value:function(e,t){var n=e.__ffPrereqNavListener;if(n&&e.removeEventListener("click",n,!0),t){var i=function(n){var i=n.target.closest(".ff-pt-name[data-action-id]");if(i&&!i.closest(".ff-chain-combo[data-combo-type]")){var r=i.closest(".ff-chain-keyevent-detail[data-keyevent-item-id], .ff-chain-keyevent-targets[data-keyevent-item-id]");if(!(null==r?void 0:r.dataset.keyeventItemId)){n.preventDefault(),n.stopPropagation();var a=i.dataset.actionId;a&&(t(a),e.querySelectorAll(".ff-nav-item-active").forEach(function(e){return e.classList.remove("ff-nav-item-active")}),i.classList.add("ff-nav-item-active"))}}};e.addEventListener("click",i,!0),e.__ffPrereqNavListener=i}}}],i=[{key:"_buildTargetChainKey",value:function(e,t,n){return"".concat(e,"|").concat(null!=t?t:"","|").concat(null!=n?n:"")}},{key:"_buildSourceChainKey",value:function(e,t){return"".concat(e,"|").concat(null!=t?t:"")}},{key:"_chainHasDirectBridgeEdge",value:function(e){return e.directRows.some(function(e){return"bridge"===e.layerType})}}],n&&c(t.prototype,n),i&&c(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,n,i}();t.ForceFieldDetailsPanel=w},920(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return a(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,s(i.key),i)}}function s(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ForceFieldLifecycleController=void 0;var c=l(n(5465)),d=l(n(616)),u=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.deps=t,this._propCacheKey="",this._propCacheResult=null},t=[{key:"invalidatePropagationCache",value:function(){this._propCacheKey="",this._propCacheResult=null}},{key:"_buildPropCacheKey",value:function(e){var t,n=this.deps.getCurrentComponent();return"".concat(e.join(","),"|").concat(this.deps.state.action.delta,"|").concat(this.deps.state.action.propagationFactor,"|").concat(null!==(t=null==n?void 0:n.id)&&void 0!==t?t:"","|").concat(this.deps.childOddMap.size)}},{key:"renderOppositeChildrenForceField",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.deps.buildChildrenOrbitData();if(this.deps.updateChildActionMenu(e),!this.deps.state.children.enabled||e.length<2)return this.deps.updateContextLabels(e),this.removeOppositeChildrenForceField(),void this.deps.clearForceFieldDetails();if(this.deps.state.setForceFieldOrbitData(e),!this.deps.state.menu.hasActiveChildAction)return this.deps.updateContextLabels(e),this.removeOppositeChildrenForceField(),void this.deps.clearForceFieldDetails();if(this.ensureForceFieldLinks(e),this.deps.updateContextLabels(e),0===this.deps.state.forceField.links.length)return this.removeOppositeChildrenForceField(),void this.deps.clearForceFieldDetails();var t=this.deps.getGlobalGroupNode();t?(this.deps.forceFieldRenderer.ensureElements({globalGroupNode:t,requiredCount:this.deps.state.forceField.links.length}),this.updateForceFieldVisual(),this.startForceFieldAnimation()):this.removeOppositeChildrenForceField()}},{key:"removeOppositeChildrenForceField",value:function(){void 0!==this.deps.state.forceField.frameId&&(cancelAnimationFrame(this.deps.state.forceField.frameId),this.deps.state.setForceFieldFrameId(void 0)),this.deps.state.setForceFieldLastTimestamp(void 0),this.deps.state.setForceFieldOrbitData(null),this.deps.clearForceFieldComputationState(),this.deps.state.setForceFieldSelectedLinkIndex(null),this.deps.state.setForceFieldRevealStartedAt(void 0),this.invalidatePropagationCache(),this.deps.forceFieldRenderer.hide(),this.deps.setContextLabelsVisibilityOpacity(this.deps.state.visibility.childrenContextLabels?1:0),this.deps.updateContextLabels(this.deps.buildChildrenOrbitData()),this.deps.clearForceFieldDetails(),this.deps.clearGhostDetails()}},{key:"ensureForceFieldLinks",value:function(e){var t=this;if(this.deps.state.forceField.incomingMode)null!==this.deps.state.forceField.selectedLinkIndex&&this.deps.renderForceFieldDetails(this.deps.state.forceField.selectedLinkIndex);else{var n=this.deps.state.forceField.sourceChildIndices.length>0?this.deps.state.forceField.sourceChildIndices:[this.deps.state.forceField.sourceChildIndex],i=this._buildPropCacheKey(n);if(i!==this._propCacheKey||null===this._propCacheResult){var a=[],o=[];if(n.forEach(function(n){var i=t.deps.forceFieldComputationService.build({orbitData:e,sourceChildIndex:n,childOddMap:t.deps.childOddMap,component:t.deps.getCurrentComponent(),allComponents:t.deps.getAllComponents(),actionDelta:t.deps.state.action.delta,actionPropagationFactor:t.deps.state.action.propagationFactor,interconnectionGraph:c.default,propagationLayers:d.default});i&&(a.push.apply(a,r(i.links)),o.push.apply(o,r(i.allLinkDetails)))}),0===a.length)return this._propCacheKey="",this._propCacheResult=null,void this.deps.clearForceFieldComputationState();var s=a.length!==this.deps.state.forceField.links.length||a.some(function(e,n){var i=t.deps.state.forceField.links[n];return!i||i.startIndex!==e.startIndex||i.endIndex!==e.endIndex||i.thickness!==e.thickness||i.potentialGain!==e.potentialGain||i.revealDelayMs!==e.revealDelayMs});this._propCacheKey=i,this._propCacheResult={links:a,allLinkDetails:o},this.deps.state.setForceFieldLinksAndDetails(a,o),null!==this.deps.state.forceField.selectedLinkIndex&&this.deps.state.forceField.selectedLinkIndex>=this.deps.state.forceField.links.length&&(this.deps.state.setForceFieldSelectedLinkIndex(null),this.deps.clearForceFieldDetails()),s&&(null!==this.deps.state.forceField.selectedLinkIndex?this.deps.renderForceFieldDetails(this.deps.state.forceField.selectedLinkIndex):this.deps.renderSourceActionDetailsForCurrentSource(),this.deps.state.forceField.links.length>0&&this.deps.state.setForceFieldRevealStartedAt(performance.now()))}}}},{key:"updateForceFieldVisual",value:function(){this.deps.forceFieldRenderer.updateVisual({forceFieldOrbitData:this.deps.state.forceField.orbitData,forceFieldLinks:this.deps.state.forceField.links,forceFieldRevealStartedAt:this.deps.state.forceField.revealStartedAt,forceFieldPhase:this.deps.state.forceField.phase,getChildRenderedCenter:this.deps.getChildRenderedCenter,getComponentBorderTargetPoint:this.deps.getComponentBorderTargetPoint})}},{key:"startForceFieldAnimation",value:function(){var e=this;if(void 0===this.deps.state.forceField.frameId){this.deps.state.setForceFieldLastTimestamp(void 0);var t=function(n){var i;if(!e.deps.forceFieldRenderer.hasActiveGroup())return e.deps.state.setForceFieldFrameId(void 0),void e.deps.state.setForceFieldLastTimestamp(void 0);var r=n-(null!==(i=e.deps.state.forceField.lastTimestamp)&&void 0!==i?i:n);e.deps.state.setForceFieldLastTimestamp(n),e.deps.state.forceField.phase+=.008*r,e.updateForceFieldVisual(),e.deps.state.setForceFieldFrameId(requestAnimationFrame(t))};this.deps.state.setForceFieldFrameId(requestAnimationFrame(t))}}}],t&&o(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.ForceFieldLifecycleController=u},3613(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var o,s=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),c=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=o(e),i=0;i<n.length;i++)"default"!==n[i]&&s(t,e,n[i]);return l(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.ForceFieldRenderer=void 0;var d=c(n(600)),u=n(1123),p=n(7290),h=["0%","18%","62%","88%","100%"];function f(e,t,n,i,r,a){var o=-i,s=n;return"".concat(e.x+o*r,",").concat(e.y+s*r," ")+"".concat(t.x+o*a,",").concat(t.y+s*a," ")+"".concat(t.x-o*a,",").concat(t.y-s*a," ")+"".concat(e.x-o*r,",").concat(e.y-s*r)}var g=function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.forceFieldGroup=null,this.forceFieldDefs=null,this.forceFieldLayers=[],this.gradientPrefix="force-field-".concat(Math.random().toString(36).slice(2,10)),this._pulsedLinks=new Map,this._hideTimeoutId=null,this._retractFrameId=null},t=[{key:"pulseLink",value:function(e,t){this._pulsedLinks.set(e,{startMs:performance.now(),durationMs:t})}},{key:"hasActiveGroup",value:function(){return null!==this.forceFieldGroup}},{key:"ensureElements",value:function(e){var t=this;if(null!==this._hideTimeoutId&&(clearTimeout(this._hideTimeoutId),this._hideTimeoutId=null),null!==this._retractFrameId&&(cancelAnimationFrame(this._retractFrameId),this._retractFrameId=null),this.forceFieldGroup&&(this.forceFieldGroup.style.transition="",this.forceFieldGroup.style.opacity="1"),!this.forceFieldGroup){var n=d.select(e.globalGroupNode).append("g").attr("data-role","children-force-field").style("pointer-events","none").style("mix-blend-mode","screen").style("opacity","1");this.forceFieldGroup=n.node(),this.forceFieldDefs=n.append("defs").node()}var i=d.select(this.forceFieldGroup);i.raise();for(var r=function(){var e=t.forceFieldLayers.length,n=d.select(t.forceFieldDefs),r="".concat(t.gradientPrefix,"-energy-").concat(e),a="".concat(t.gradientPrefix,"-core-").concat(e),o=function(e){return n.append("linearGradient").attr("id",e).attr("gradientUnits","userSpaceOnUse").node()},s=o(r),l=o(a),c=function(e){return h.map(function(t){var n=document.createElementNS("http://www.w3.org/2000/svg","stop");return n.setAttribute("offset",t),e.appendChild(n),n})},u=c(s),p=c(l),f=i.append("g").style("pointer-events","none"),g=f.node(),v=f.append("polygon").style("fill","rgba(80, 240, 255, 0.32)").style("stroke","none").style("stroke-linejoin","round").style("pointer-events","none").node(),m=f.append("line").style("stroke","url(#".concat(r,")")).style("stroke-linecap","round").style("stroke-dasharray","12 14 30 12").style("pointer-events","none").node(),y=f.append("line").style("stroke","url(#".concat(a,")")).style("stroke-linecap","round").style("stroke-dasharray","2 3 4 3 8 3 16 45").style("pointer-events","none").node(),b=f.append("line").style("stroke","url(#".concat(a,")")).style("stroke-linecap","round").style("pointer-events","none").node(),I=f.append("circle").style("pointer-events","none").style("mix-blend-mode","screen").style("fill","none").node(),C=f.append("circle").style("pointer-events","none").style("mix-blend-mode","screen").node(),w=f.append("circle").style("pointer-events","none").style("mix-blend-mode","screen").style("fill","#fffdf2").node();t.forceFieldLayers.push({layerGroup:g,aura:v,energy:m,flow:y,core:b,sourcePort:I,headAura:C,headCore:w,energyGradient:s,coreGradient:l,energyStops:u,coreStops:p,_filterCache:null,_layerHidden:!1,_prevEndpoint:null,_lastConeWidth:0})};this.forceFieldLayers.length<e.requiredCount;)r();for(;this.forceFieldLayers.length>e.requiredCount;){var a=this.forceFieldLayers.pop();a&&(d.select(a.energyGradient).remove(),d.select(a.coreGradient).remove(),d.select(a.layerGroup).remove())}}},{key:"updateVisual",value:function(e){var t=this;if(e.forceFieldOrbitData&&0!==this.forceFieldLayers.length){var n=e.forceFieldRevealStartedAt,i=u.animationConfig.forceFieldRevealDurationMs,r=performance.now();e.forceFieldLinks.forEach(function(a,o){var s,l,c,u=void 0===n?1:Math.max(0,Math.min(1,(r-n-(null!==(s=a.revealDelayMs)&&void 0!==s?s:0))/i)),h=d.easeCubicOut(u),g=t.forceFieldLayers[o];if(g){var v=void 0!==a.sourceComponentId?e.getComponentBorderTargetPoint(a.sourceComponentId):function(){var t,n,i=void 0!==a.startIndex?null===(n=null===(t=e.forceFieldOrbitData)||void 0===t?void 0:t[a.startIndex])||void 0===n?void 0:n.controller:null;return i?e.getChildRenderedCenter(i):null}(),m=void 0!==a.endIndex?null===(c=null===(l=e.forceFieldOrbitData)||void 0===l?void 0:l[a.endIndex])||void 0===c?void 0:c.controller:null,y=m?e.getChildRenderedCenter(m):a.targetComponentId?e.getComponentBorderTargetPoint(a.targetComponentId):null;if(!v||!y||h<.005)g._layerHidden||(g.layerGroup.style.display="none",g._layerHidden=!0);else{g._layerHidden&&(g.layerGroup.style.display="",g._layerHidden=!1);var b=(Math.sin(e.forceFieldPhase+1.25*o)+1)/2,I=(Math.sin(1.65*e.forceFieldPhase+.9*o)+1)/2,C=(10+5*b)*a.thickness,w=(4+2*(1-b))*a.thickness,x=(1.4+1.4*I)*a.thickness,k=(2.3+1.4*b)*a.thickness,S=t._pulsedLinks.get(o),_=1;if(void 0!==S){var A=r-S.startMs;if(A<S.durationMs){var E=A/S.durationMs;_=1+.85*Math.sin(E*Math.PI)}else t._pulsedLinks.delete(o)}var O=null!==g._filterCache&&g._filterCache.potentialGain===a.potentialGain,D=null,M=null;if(!O){var L=(0,p.getForceFieldColors)(a.potentialGain);g._filterCache={potentialGain:a.potentialGain,groupFilter:"drop-shadow(0 0 12px ".concat(L.auraGlow,")"),auraStroke:L.aura,energyFill:L.energy,energyGlow:L.energyGlow},D=[{color:L.energy,opacity:.1},{color:L.energy,opacity:.35},{color:L.energy,opacity:.92},{color:"#fff6b3",opacity:1}],M=[{color:L.core,opacity:.08},{color:L.core,opacity:.28},{color:L.core,opacity:.98},{color:"#ffffff",opacity:1}]}var F=g._filterCache,T={x:v.x+(y.x-v.x)*h,y:v.y+(y.y-v.y)*h},P=T.x-v.x,B=T.y-v.y,G=Math.hypot(P,B),R=G>0?P/G:0,q=G>0?B/G:0,z=g._prevEndpoint,N=null===z||z.sx!==v.x||z.sy!==v.y||z.ex!==T.x||z.ey!==T.y;N&&(g._prevEndpoint={sx:v.x,sy:v.y,ex:T.x,ey:T.y});var j={x:v.x+.18*P,y:v.y+.18*B},H={x:T.x-R*Math.min(.08*G,12),y:T.y-q*Math.min(.08*G,12)};if(t.updateGradient(g.energyGradient,g.energyStops,j,H,D,N),t.updateGradient(g.coreGradient,g.coreStops,j,H,M,N),N)for(var K=String(v.x),V=String(v.y),Y=String(T.x),W=String(T.y),U=0,X=[g.energy,g.flow,g.core];U<X.length;U++){var Z=X[U];Z.setAttribute("x1",K),Z.setAttribute("y1",V),Z.setAttribute("x2",Y),Z.setAttribute("y2",W)}O||(g.aura.style.setProperty("fill",F.auraStroke),g.layerGroup.style.setProperty("filter",F.groupFilter),g.headAura.style.setProperty("fill",F.energyFill),g.sourcePort.style.setProperty("stroke",F.energyGlow));var Q=C*(_>1?.7*_:1);g._lastConeWidth=Q,g.aura.setAttribute("points",f(v,T,R,q,.3*Q/2,1.7*Q/2)),g.aura.style.setProperty("opacity",String(Math.min(1,(.14+.34*b)*h*_))),g.energy.style.setProperty("opacity",String(Math.min(1,(.48+.34*(1-b))*h*_))),g.energy.style.setProperty("stroke-width",String(w)),g.energy.style.setProperty("stroke-dashoffset",String(-e.forceFieldPhase*(20+7*o)%360)),g.flow.style.setProperty("opacity",String((.42+.34*I)*h)),g.flow.style.setProperty("stroke-width",String(x));var $=48+10*o,J=e.forceFieldPhase*$;g.flow.style.setProperty("stroke-dashoffset",String(-J%84));var ee=J%84/84;g.core.style.setProperty("opacity",String(Math.min(1,(.62+.28*b)*h*_))),g.core.style.setProperty("stroke-width",String(k));var te=1-ee;g.sourcePort.setAttribute("cx",String(v.x)),g.sourcePort.setAttribute("cy",String(v.y)),g.sourcePort.setAttribute("r",String((2.5+7*te)*a.thickness)),g.sourcePort.style.setProperty("stroke-width",String((.6+1.2*ee)*a.thickness)),g.sourcePort.style.setProperty("opacity",String((.08+.55*ee)*h));var ne=String(T.x),ie=String(T.y);g.headAura.setAttribute("cx",ne),g.headAura.setAttribute("cy",ie),g.headAura.setAttribute("r",String((3.5+8*ee)*a.thickness)),g.headAura.style.setProperty("opacity",String((.06+.42*(1-ee))*h*_)),g.headCore.setAttribute("cx",ne),g.headCore.setAttribute("cy",ie),g.headCore.setAttribute("r",String((2.2+2.4*I)*a.thickness)),g.headCore.style.setProperty("opacity",String((.54+.24*b)*h))}}})}}},{key:"hide",value:function(){var e=this;if(this.forceFieldGroup&&null===this._hideTimeoutId){var t=this.forceFieldGroup;t.style.transition="opacity ".concat(u.animationConfig.fieldFadeOutDurationMs,"ms ease"),t.getBoundingClientRect(),t.style.opacity="0",this._hideTimeoutId=setTimeout(function(){e._hideTimeoutId=null,e.clear()},u.animationConfig.fieldFadeOutDurationMs),this.retractGeometry()}}},{key:"retractGeometry",value:function(){var e=this;if(null===this._retractFrameId){var t=this.forceFieldLayers.map(function(e){return e._prevEndpoint});if(!t.every(function(e){return null===e})){var n=u.animationConfig.fieldFadeOutDurationMs,i=performance.now(),r=function(){var a=Math.min(1,(performance.now()-i)/n),o=d.easeCubicOut(1-a);e.forceFieldLayers.forEach(function(e,n){var i=t[n];if(i){for(var r=i.sx+(i.ex-i.sx)*o,a=i.sy+(i.ey-i.sy)*o,s=String(r),l=String(a),c=0,d=[e.energy,e.flow,e.core];c<d.length;c++){var u=d[c];u.setAttribute("x2",s),u.setAttribute("y2",l)}var p=i.ex-i.sx,h=i.ey-i.sy,g=Math.hypot(p,h),v=e._lastConeWidth;e.aura.setAttribute("points",f({x:i.sx,y:i.sy},{x:r,y:a},g>0?p/g:0,g>0?h/g:0,.3*v/2,1.7*v*o/2)),e.headAura.setAttribute("cx",s),e.headAura.setAttribute("cy",l),e.headCore.setAttribute("cx",s),e.headCore.setAttribute("cy",l)}}),e._retractFrameId=a<1?requestAnimationFrame(r):null};this._retractFrameId=requestAnimationFrame(r)}}}},{key:"clear",value:function(){null!==this._hideTimeoutId&&(clearTimeout(this._hideTimeoutId),this._hideTimeoutId=null),null!==this._retractFrameId&&(cancelAnimationFrame(this._retractFrameId),this._retractFrameId=null),this.forceFieldGroup&&d.select(this.forceFieldGroup).remove(),this.forceFieldGroup=null,this.forceFieldDefs=null,this.forceFieldLayers=[],this._pulsedLinks.clear()}},{key:"updateGradient",value:function(e,t,n,i,r,a){if(null!==r)for(var o=0;o<t.length;o++){var s=t[o];if(s){var l=r[Math.min(o,r.length-1)],c=1===o?.75*l.opacity:o===t.length-1?1:l.opacity;s.setAttribute("stop-color",l.color),s.setAttribute("stop-opacity",String(c))}}a&&(e.setAttribute("x1",String(n.x)),e.setAttribute("y1",String(n.y)),e.setAttribute("x2",String(i.x)),e.setAttribute("y2",String(i.y)))}}],t&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.ForceFieldRenderer=g},3664(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var o,s=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),c=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=o(e),i=0;i<n.length;i++)"default"!==n[i]&&s(t,e,n[i]);return l(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.ChildScoresDeltaRenderer=void 0;var d=c(n(600)),u=n(996),p=n(3669),h=n(6255),f='circle[data-role="child-selection-border"]',g=function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)},(t=[{key:"render",value:function(e){if(void 0===e.selectedCuttingId||void 0===e.selectedOddId)return e.globalGroupNode&&d.select(e.globalGroupNode).selectAll('g[data-role="child-score-delta-external"]').remove(),void e.orbitData.forEach(function(e){var t=e.controller.view.viewInitializer.yinYangGroup.node();null==t||t.querySelectorAll(f).forEach(function(e){return e.remove()})});if(e.globalGroupNode&&e.component){var t=e.component,n=e.orbitData.map(function(n){var i,r,a,o,s,l=n.controller,c=e.childOddMap.get(l.getKey());if(!c)return null;var d=e.getChildRenderedCenter(l);if(!d)return null;var h=(0,p.resolveOddCuttingId)(t,c.oddId,c.cuttingIndex),f=void 0===h||null===(r=null===(i=e.projectedGhostCuttingStatesByOddId)||void 0===i?void 0:i.get(c.oddId))||void 0===r?void 0:r.find(function(e){return e.cuttingId===h}),g=f?f.originalState:(0,u.stateFromTension)(c.score),v=f?f.projectedState:null===(a=e.projectedGhostStateByOddId)||void 0===a?void 0:a.get(c.oddId),m=void 0===v?void 0:v-g,y=void 0!==m&&e.actionDeltaLabelsVisible?m:null;return{id:l.getKey(),controller:l,oddId:c.oddId,cuttingId:h,centerX:d.x,centerY:d.y,childRadius:e.getChildRadius(l),scoreDelta:y,weightDelta:null!==(s=null===(o=e.weightDeltaByChildKey)||void 0===o?void 0:o.get(l.getKey()))&&void 0!==s?s:null}}).filter(function(e){return null!==e}),i=d.select(e.globalGroupNode).selectAll('g[data-role="child-score-delta-external"]').data(n,function(e){return e.id});i.exit().remove();var r=i.enter().append("g").attr("data-role","child-score-delta-external").merge(i);r.style("pointer-events","none").style("cursor","default"),r.on("click",null),r.each(function(t){var n,i=d.select(this);i.selectAll("text").remove(),i.selectAll('rect[data-role="delta-scrim"]').remove(),function(e,t){var n=e.controller.view.viewInitializer.yinYangGroup.node();if(n){var i=d.select(n).selectAll(f);if(t){var r=e.controller.view.viewInitializer.labelsFontAutoScale,a=Math.max(5,Math.round(7*r));(i.empty()?d.select(n).append("circle").attr("data-role","child-selection-border"):i).attr("cx",e.controller.view.viewInitializer.positionX).attr("cy",e.controller.view.viewInitializer.positionY).attr("r",e.childRadius).style("pointer-events","none").style("fill","none").style("stroke","#ff7a1a").style("stroke-width","".concat(a,"px")).style("filter","drop-shadow(0 0 8px rgba(255, 122, 26, 0.95)) drop-shadow(0 0 20px rgba(255, 122, 26, 0.7))")}else i.remove()}}(t,void 0!==e.selectedCuttingId&&void 0!==e.selectedOddId&&t.cuttingId===e.selectedCuttingId&&t.oddId===e.selectedOddId);var r=Math.atan2(t.centerY-e.parentCenterY,t.centerX-e.parentCenterX),a=t.childRadius+(null!==(n=e.childStateDeltaOffset)&&void 0!==n?n:20),o=t.centerX+Math.cos(r)*a,s=t.centerY+Math.sin(r)*a,l=e.childStateDeltaFontScale,c=Math.round(24*l*.68),u=Math.round(25*l),p=(0,h.buildScoreDeltaRow)(t.scoreDelta),g=(0,h.buildWeightDeltaRow)(t.weightDelta),v=[];if(p&&v.push({role:"child-delta-external",row:p}),g&&v.push({role:"child-weight-delta-external",row:g}),0!==v.length){var m=(v.length-1)*u,y=s-m/2,b=y-Math.round(17*l),I=y+m+Math.round(8*l);(0,h.appendDeltaScrim)(i,{centerX:o,centerY:(b+I)/2,halfWidth:Math.round(46*l),halfHeight:Math.round((I-b)/2+5*l),cornerRadius:Math.round(14*l),blur:Math.max(3,Math.round(4*l))}),v.forEach(function(t,n){var r=t.role,a=t.row;(0,h.appendDeltaRow)(i,o,y+n*u,c,r,a,e.labelsTextShadowEnabled)})}})}}}])&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.ChildScoresDeltaRenderer=g},9523(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var o,s=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),c=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=o(e),i=0;i<n.length;i++)"default"!==n[i]&&s(t,e,n[i]);return l(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.ContextLabelsRenderer=void 0;var d=c(n(600)),u=n(1123),p=n(996),h=n(7290),f=n(5639),g=n(8262),v=n(3669),m=n(819),y=new Map,b=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.contextLabelGroup=null,this.componentLegendGroup=null,this.lastParams=null,this._childLabelCache=new Map,this._titleCrossfadeTimers=new Map,this._typewriterTimers=new Map}return t=e,n=[{key:"render",value:function(e){var t=this;if(this.lastParams=e,e.globalGroupNode&&e.component&&(this.ensureContextLabelGroup(e.globalGroupNode),this.contextLabelGroup)){var n=d.select(this.contextLabelGroup);(e.childrenContextLabelsVisible||e.allLabelsVisible&&e.component&&e.isSphereStatus)&&n.style("opacity",1);var i=e.component,r=Math.max(180,Math.min(u.animationConfig.componentSwitchDurationMs,u.animationConfig.forceFieldRevealDurationMs));this.renderComponentTitleInDOM(e.componentTitleContainer,e.componentTitle,e.satelliteTitle,e.componentLabelFontScale,r,e.labelsTextShadowEnabled,e.onComponentTitleClick),this.updateTitleObstruction(e),e.allLabelsVisible&&e.component&&e.isSphereStatus?this.renderComponentLegend(n,e,r,i):this.hideComponentLegend(n,r);var a=e.childrenContextLabelsVisible,o=e.orbitData.map(function(t){var n,r,o,s=t.controller;if(!a)return null;var l=e.childOddMap.get(s.getKey());if(!l)return null;var c=e.getChildRenderedCenter(s);if(!c)return null;var d=(0,m.getCuttingLabel)(i,l.oddId,l.cuttingIndex),u=(0,m.getCuttingShortLabel)({component:i,oddId:l.oddId,cuttingIndex:l.cuttingIndex,maxChars:e.childLabelShortMaxChars}),f=(0,v.resolveOddCuttingId)(i,l.oddId,l.cuttingIndex),g=void 0===f||null===(r=null===(n=e.projectedGhostCuttingStatesByOddId)||void 0===n?void 0:n.get(l.oddId))||void 0===r?void 0:r.find(function(e){return e.cuttingId===f}),y=g?g.originalState:(0,p.stateFromTension)(l.score),b=g?g.projectedState:null===(o=e.projectedGhostStateByOddId)||void 0===o?void 0:o.get(l.oddId),I=void 0===b?void 0:b-y,C="".concat(Math.round(y)),w=void 0!==I&&e.actionDeltaLabelsVisible&&Math.abs(I)>=1e-9,x=w?"".concat(I>=0?"+":"").concat(I.toFixed(1)):null,k=w?(0,h.getForceFieldColors)(I).core:"#9be8ff",S=e.getChildRadius(s);return{id:s.getKey(),centerX:c.x,centerY:c.y,childRadius:S,shortLabel:u,fullLabel:d,stateLine:C,deltaLine:x,deltaColor:k}}).filter(function(e){return null!==e}),s=n.selectAll('g[data-role="child-context-label"]').data(o,function(e){return e.id});s.exit().each(function(e){return t._childLabelCache.delete(e.id)}).interrupt().transition().duration(r).style("opacity",0).remove();var l=s.enter().append("g").attr("data-role","child-context-label").style("pointer-events","none").style("opacity",0),c=l.append("g").attr("data-role","child-context-label-content");c.append("defs").append("radialGradient").attr("id",function(e,t){return"child-label-gradient-".concat(t)}).attr("cx","50%").attr("cy","50%").attr("r","50%").selectAll("stop").data([{offset:"0%",opacity:.52},{offset:"100%",opacity:0}]).enter().append("stop").attr("offset",function(e){return e.offset}).attr("stop-color","rgb(0, 0, 0)").attr("stop-opacity",function(e){return e.opacity}),c.append("circle").attr("data-role","child-label-bg").attr("cx",0).attr("cy",0).attr("r",35).style("fill",function(e,t){return"url(#child-label-gradient-".concat(t,")")}).style("pointer-events","none"),l.append("text").attr("data-role","child-short-label").attr("text-anchor","middle").style("fill","#ffa868").style("font-size","".concat(Math.round(16*e.labelsFontScale),"px")).style("font-weight","600").style("paint-order","stroke").style("stroke","rgba(0, 0, 0, 0.85)").style("stroke-width","2px").style("stroke-linejoin","round").style("text-shadow",e.labelsTextShadowEnabled?"0 2px 8px rgba(0,0,0,0.9)":"none").style("overflow","visible").style("pointer-events","auto"),l.transition().duration(r).style("opacity",1),l.merge(s).attr("transform",function(e){return"translate(".concat(e.centerX,", ").concat(e.centerY,")")}).each(function(n,i,r){var a,o,s,l,c,d=r[i],u=t._childLabelCache.get(n.id),p=null!==(a=null==u?void 0:u.textEl)&&void 0!==a?a:d.querySelector('text[data-role="child-short-label"]');if(p){var h,v,m,b,I=!u||u.centerX!==n.centerX||u.centerY!==n.centerY||u.childRadius!==n.childRadius||u.parentCenterX!==e.parentCenterX||u.parentCenterY!==e.parentCenterY,C=null!==(o=null==u?void 0:u.labelX)&&void 0!==o?o:0,w=null!==(s=null==u?void 0:u.labelY)&&void 0!==s?s:0;if(I){var x=(0,g.calculateBestShortLabelPosition)(n.centerX,n.centerY,n.childRadius,e.parentCenterX,e.parentCenterY);C=x.x,w=x.y,p.setAttribute("x",String(C)),p.setAttribute("y",String(w));for(var k=p.children,S=0;S<k.length;S++){var _=k[S];_.hasAttribute("dy")&&_.setAttribute("x",String(C))}}if(!u||u.shortLabel!==n.shortLabel||u.fullLabel!==n.fullLabel||u.fontScale!==e.labelsFontScale||u.textShadow!==e.labelsTextShadowEnabled||u.maxLines!==e.childLabelMaxLines){for(;p.firstChild;)p.removeChild(p.firstChild);p.style.fontSize="".concat(Math.round(16*e.labelsFontScale),"px"),p.style.textShadow=e.labelsTextShadowEnabled?"0 2px 8px rgba(0,0,0,0.9)":"none";var A=(h=n.shortLabel,v=e.childLabelMaxLines,m="".concat(v,"\0").concat(h),(b=y.get(m))||(b=(0,f.wrapText)(h,v),y.set(m,b)),b),E="http://www.w3.org/2000/svg",O=document.createElementNS(E,"tspan");O.textContent=null!==(l=A[0])&&void 0!==l?l:"",p.appendChild(O);for(var D=1;D<A.length;D++){var M=document.createElementNS(E,"tspan");M.setAttribute("dy","1em"),M.setAttribute("x",String(C)),M.textContent=null!==(c=A[D])&&void 0!==c?c:"",p.appendChild(M)}var L=document.createElementNS(E,"title");L.textContent=n.fullLabel,p.appendChild(L)}t._childLabelCache.set(n.id,{shortLabel:n.shortLabel,fullLabel:n.fullLabel,fontScale:e.labelsFontScale,textShadow:e.labelsTextShadowEnabled,maxLines:e.childLabelMaxLines,centerX:n.centerX,centerY:n.centerY,childRadius:n.childRadius,parentCenterX:e.parentCenterX,parentCenterY:e.parentCenterY,labelX:C,labelY:w,textEl:p})}})}}},{key:"clear",value:function(){this.contextLabelGroup&&(d.select(this.contextLabelGroup).remove(),this.contextLabelGroup=null,this.lastParams=null,this._childLabelCache.clear())}},{key:"setVisibilityOpacity",value:function(e){this.contextLabelGroup&&d.select(this.contextLabelGroup).interrupt().style("opacity",e)}},{key:"updateComponentTitleOnly",value:function(e,t,n,i,r,a){this.renderComponentTitleInDOM(e,t,n,i,u.animationConfig.forceFieldRevealDurationMs,r,a)}},{key:"renderComponentTitleInDOM",value:function(e,t,n,i,r,a,o){if(e){var s=e.querySelector('div[data-role="component-title"]');s?this.updateTitleElement(s,t,n,i,a,o):this.createTitleElement(e,t,n,i,r,a,o)}}},{key:"updateTitleObstruction",value:function(e){var t,n,i=e.componentTitleContainer;if(i)if(e.childrenContextLabelsVisible&&0!==e.orbitData.length){var r=null!==(n=null===(t=e.globalGroupNode)||void 0===t?void 0:t.ownerSVGElement)&&void 0!==n?n:null;if(r){var a=r.getBoundingClientRect(),o=i.getBoundingClientRect(),s=e.orbitData.some(function(t){var n=e.getChildRenderedCenter(t.controller);if(!n)return!1;var i=e.getChildRadius(t.controller),r=a.left+n.x,s=a.top+n.y,l=r-Math.max(o.left-20,Math.min(r,o.right+20)),c=s-Math.max(o.top-20,Math.min(s,o.bottom+20));return l*l+c*c<=i*i});i.classList.toggle("is-obstructed",s)}else i.classList.remove("is-obstructed")}else i.classList.remove("is-obstructed")}},{key:"createTitleElement",value:function(t,n,i,r,a,o,s){var l,c,d,u,p=document.createElement("div");p.setAttribute("data-role","component-title"),p.style.cssText="\n display: flex;\n flex-direction: column;\n gap: 1px;\n user-select: none;\n transition: opacity ".concat(a,"ms ease-out;\n opacity: 0;\n ").concat(s?"cursor: pointer;":"","\n ");var h=document.createElement("div");h.setAttribute("data-role","component-title-facette"),h.style.cssText="\n font-size: ".concat(Math.round(15*r),"px;\n font-weight: 600;\n letter-spacing: 0.07em;\n text-transform: uppercase;\n color: rgba(215, 242, 255, 0.88);\n text-shadow: ").concat(o?e.TITLE_GLOW:"none",";\n white-space: nowrap;\n padding: 2px 2px 0;\n "),this.typewriterReveal(h,n,"facette"),p.appendChild(h),p.appendChild(this.createTreeRow(e.SATELLITE_ROW_SPEC,null!==(l=null==i?void 0:i.label)&&void 0!==l?l:"",null!==i,null!==(c=null==i?void 0:i.oddColor)&&void 0!==c?c:null,r,o)),p.appendChild(this.createTreeRow(e.ACTION_ROW_SPEC,null!==(d=null==i?void 0:i.actionLabel)&&void 0!==d?d:"",!!(null==i?void 0:i.actionLabel),null!==(u=null==i?void 0:i.oddColor)&&void 0!==u?u:null,r,o)),s&&p.addEventListener("click",s),t.appendChild(p),requestAnimationFrame(function(){p.style.opacity="1"})}},{key:"createTreeRow",value:function(e,t,n,i,r,a){var o=document.createElement("div");o.setAttribute("data-role",e.role);var s=document.createElement("span");s.setAttribute("data-role",e.branchRole);var l=document.createElement("span");return l.setAttribute("data-role",e.labelRole),this.typewriterReveal(l,t,e.crossfadeKey),o.appendChild(s),o.appendChild(l),this.applyTreeRowStyle({row:o,branch:s,label:l},e,n,i,r,a),o}},{key:"applyTreeRowStyle",value:function(t,n,i,r,a,o){var s=Math.round(n.baseFontPx*a),l=s+6;t.row.style.cssText="\n position: relative;\n padding-left: ".concat(n.indentPx+12+4,"px;\n line-height: ").concat(l,"px;\n max-height: ").concat(i?"".concat(l,"px"):"0",";\n overflow: hidden;\n opacity: ").concat(i?"1":"0",";\n transition: opacity 200ms ease, max-height 200ms ease;\n ");var c=l/2,d=Math.ceil(c+1.5),u=null!=r?r:"rgba(160, 200, 220, 0.9)";t.branch.style.cssText="\n position: absolute;\n left: ".concat(n.indentPx,"px;\n top: 0;\n pointer-events: none;\n "),t.branch.innerHTML='<svg width="'.concat(12,'" height="').concat(d,'" viewBox="0 0 ').concat(12," ").concat(d,'"')+' style="display:block" aria-hidden="true">'+'<path d="M1.5 0 V'.concat((c-3.5).toFixed(1)," Q1.5 ").concat(c.toFixed(1)," 5 ").concat(c.toFixed(1)," H").concat(11,'"')+' fill="none" stroke="'.concat(u,'" stroke-opacity="').concat(n.branchOpacity,'"')+' stroke-width="1.5" stroke-linecap="round"/></svg>',t.label.style.cssText="\n display: block;\n font-size: ".concat(s,"px;\n font-weight: ").concat(n.fontWeight,";\n color: ").concat(n.labelColor,";\n text-shadow: ").concat(o?e.SUB_ROW_SHADOW:"none",";\n white-space: nowrap;\n max-width: ").concat(n.maxWidthPx,"px;\n overflow: hidden;\n text-overflow: ellipsis;\n transition: opacity 160ms ease-out;\n ")}},{key:"typewriterReveal",value:function(t,n,i){var r=this._typewriterTimers.get(i);r&&r.forEach(function(e){return clearTimeout(e)}),t.textContent="",t.style.opacity="1";var a=e.TITLE_TYPEWRITER_STEP_MS,o=Array.from(n).map(function(e,n){var i=document.createElement("span");return i.style.cssText="opacity: 0; transition: opacity 90ms ease-out;",i.textContent=" "===e?" ":e,t.appendChild(i),setTimeout(function(){i.style.opacity="1"},n*a)});this._typewriterTimers.set(i,o)}},{key:"scheduleTextCrossfade",value:function(e,t,n){var i=this,r=this._titleCrossfadeTimers.get(n);void 0!==r&&clearTimeout(r);var a=u.animationConfig.componentTitleCrossfadeMs;e.style.transition="opacity ".concat(a,"ms ease-out"),e.style.opacity="0";var o=setTimeout(function(){i.typewriterReveal(e,t,n),i._titleCrossfadeTimers.delete(n)},a);this._titleCrossfadeTimers.set(n,o)}},{key:"updateTitleElement",value:function(t,n,i,r,a,o){var s,l,c,d,u=t.querySelector('[data-role="component-title-facette"]');u&&(u.textContent!==n&&this.scheduleTextCrossfade(u,n,"facette"),u.style.fontSize="".concat(Math.round(15*r),"px"),u.style.textShadow=a?e.TITLE_GLOW:"none"),this.updateTreeRow(t,e.SATELLITE_ROW_SPEC,null!==(s=null==i?void 0:i.label)&&void 0!==s?s:null,null!==(l=null==i?void 0:i.oddColor)&&void 0!==l?l:null,r,a),this.updateTreeRow(t,e.ACTION_ROW_SPEC,null!==(c=null==i?void 0:i.actionLabel)&&void 0!==c?c:null,null!==(d=null==i?void 0:i.oddColor)&&void 0!==d?d:null,r,a),t.style.cursor=o?"pointer":"";var p=t.__titleClickHandler;p&&t.removeEventListener("click",p),o&&(t.addEventListener("click",o),t.__titleClickHandler=o)}},{key:"updateTreeRow",value:function(e,t,n,i,r,a){var o=e.querySelector('[data-role="'.concat(t.role,'"]')),s=e.querySelector('[data-role="'.concat(t.labelRole,'"]')),l=e.querySelector('[data-role="'.concat(t.branchRole,'"]'));if(o&&s&&l){var c=null!==n;this.applyTreeRowStyle({row:o,branch:l,label:s},t,c,i,r,a),c&&s.textContent!==n?this.scheduleTextCrossfade(s,n,t.crossfadeKey):c||(s.textContent="")}}},{key:"renderComponentLegend",value:function(e,t,n,i){var r=t.borderSegments.map(function(e){var n=t.allComponents.find(function(t){return t.id===e.category});if(!n)return null;var r=t.getComponentImagePosition(e.category);return r?{id:e.category,x:r.x,y:r.y+.62*r.radius,label:n.shortLabel||n.label||n.id,title:n.label||n.id,isActive:n.id===i.id}:null}).filter(function(e){return null!==e}),a=e.selectAll('g[data-role="component-border-legend"]').data(r,function(e){return e.id});a.exit().interrupt().transition().duration(n).style("opacity",0).remove();var o=a.enter().append("g").attr("data-role","component-border-legend").style("pointer-events","none").style("opacity",0);o.append("text").attr("data-role","component-border-legend-text").attr("text-anchor","middle").attr("dominant-baseline","middle").style("fill","#dff8ff").style("font-weight","700").style("paint-order","stroke").style("stroke","rgba(0, 0, 0, 0.82)").style("stroke-width","3px").style("stroke-linejoin","round"),o.transition().duration(n).style("opacity",1);var s=o.merge(a);s.style("cursor",t.onComponentLegendSelect?"pointer":"default").style("pointer-events",t.onComponentLegendSelect?"all":"none").interrupt().transition().duration(n).style("opacity",1).attr("transform",function(e){return"translate(".concat(e.x,", ").concat(e.y,") scale(").concat(e.isActive?1:.96,")")}),s.each(function(e,n,i){var r=d.select(i[n]),a=i[n],o=a.__legendClickHandler;if(o&&a.removeEventListener("click",o),t.onComponentLegendSelect){var s=function(n){n.stopPropagation(),t.onComponentLegendSelect(e.id)};a.addEventListener("click",s),a.__legendClickHandler=s}var l=r.select('text[data-role="component-border-legend-text"]');l.selectAll("title").remove(),l.selectAll("tspan").remove(),l.attr("dominant-baseline","middle").style("font-size","".concat(Math.round(22*t.componentLegendLabelFontScale),"px")).style("fill",e.isActive?"#ffffff":"#dff8ff").style("text-shadow",t.labelsTextShadowEnabled?e.isActive?"0 0 14px rgba(114, 245, 255, 0.6), 0 2px 8px rgba(0,0,0,0.92)":"0 2px 8px rgba(0,0,0,0.92)":"none"),l.append("title").text(e.title),l.append("tspan").text(e.label)})}},{key:"hideComponentLegend",value:function(e,t){e.selectAll('g[data-role="component-border-legend"]').interrupt().transition().duration(t).style("opacity",0).remove()}},{key:"ensureContextLabelGroup",value:function(e){this.contextLabelGroup||(this.contextLabelGroup=d.select(e).append("g").attr("data-role","children-context-labels").style("pointer-events","none").style("overflow","visible").node())}}],n&&r(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,n}();t.ContextLabelsRenderer=b,b.TITLE_GLOW="0 0 6px rgba(114,245,255,0.4), 0 1px 3px rgba(0,0,0,0.9), 0 -1px 3px rgba(0,0,0,0.9), 1px 0 3px rgba(0,0,0,0.9), -1px 0 3px rgba(0,0,0,0.9)",b.SUB_ROW_SHADOW="0 1px 2px rgba(0,0,0,0.95), 0 0 6px rgba(0,0,0,0.75)",b.TITLE_TYPEWRITER_STEP_MS=16,b.SATELLITE_ROW_SPEC={role:"component-title-satellite-row",labelRole:"component-title-satellite-label",branchRole:"component-title-branch",crossfadeKey:"satellite",indentPx:3,baseFontPx:12.5,fontWeight:500,labelColor:"rgba(226, 241, 251, 0.95)",branchOpacity:.9,maxWidthPx:340},b.ACTION_ROW_SPEC={role:"component-title-action-row",labelRole:"component-title-action-label",branchRole:"component-title-action-branch",crossfadeKey:"action",indentPx:19,baseFontPx:11,fontWeight:400,labelColor:"rgba(186, 209, 224, 0.82)",branchOpacity:.6,maxWidthPx:320}},7745(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return a(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){l=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(l)throw o}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,s(i.key),i)}}function s(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var l,c=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),d=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),u=this&&this.__importStar||(l=function(e){return l=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},l(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=l(e),i=0;i<n.length;i++)"default"!==n[i]&&c(t,e,n[i]);return d(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.WeightPreviewRingRenderer=void 0;var p=u(n(600)),h=n(133),f=h.WEIGHT_DELTA_COLOR,g=function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.entries=[],this.groupNode=null,this.pulseStates=new Map,this.basePulseEnabled=!1,this.pulseDurationMs=1500,this.pulseMorphRatio=.85},t=[{key:"render",value:function(e){this.groupNode=e.globalGroupNode,this.basePulseEnabled=e.basePulseEnabled,this.pulseDurationMs=e.pulseDurationMs,this.pulseMorphRatio=e.pulseMorphRatio;var t=this.entries;if(!e.globalGroupNode||0===e.weightDeltaByChildKey.size)return this.entries=[],this.resetPulseTransforms(t),e.globalGroupNode&&this.clear(e.globalGroupNode),void this.stopLoop();var n=e.component;if(n){var i=n.odds.flatMap(function(e){return e.cuttingWeights}),r=i.length>0?i.reduce(function(e,t){return e+t},0)/i.length:1;this.entries=e.orbitData.map(function(t){var i,a=t.controller,o=e.weightDeltaByChildKey.get(a.getKey());if(!o)return null;var s=e.childOddMap.get(a.getKey()),l=s?n.odds.find(function(e){return e.id===s.oddId}):void 0,c=null!==(i=s&&(null==l?void 0:l.cuttingWeights[s.cuttingIndex]))&&void 0!==i?i:r,d=Math.max(h.MIN_PROJECTED_WEIGHT,c+o)/c,u=e.getChildRenderedCenter(a);if(!u)return null;var p=e.getChildRadius(a);return{id:a.getKey(),controller:a,centerX:u.x,centerY:u.y,baseRadius:p,targetRadius:p*d,scaleFactor:d}}).filter(function(e){return null!==e}),this.syncPulseStates(t),this.drawGhostCircles(e.globalGroupNode),this.ensureLoop()}}},{key:"syncPulseStates",value:function(e){var t,n=this,i=new Set(this.entries.map(function(e){return e.id})),a=r(e);try{for(a.s();!(t=a.n()).done;){var o=t.value;!i.has(o.id)&&this.pulseStates.delete(o.id)&&this.resetEntryTransform(o)}}catch(e){a.e(e)}finally{a.f()}if(this.basePulseEnabled){var s,l=performance.now(),c=r(this.entries);try{for(c.s();!(s=c.n()).done;){var d=s.value;this.pulseStates.has(d.id)||this.pulseStates.set(d.id,{startTimeMs:l})}}catch(e){c.e(e)}finally{c.f()}}else this.pulseStates.size>0&&(this.pulseStates.clear(),this.entries.forEach(function(e){return n.resetEntryTransform(e)}))}},{key:"resetPulseTransforms",value:function(e){var t=this;e.forEach(function(e){return t.resetEntryTransform(e)}),this.pulseStates.clear()}},{key:"resetEntryTransform",value:function(e){e.controller.view.viewInitializer.globalGroup.setAttribute("transform","translate(0, 0)")}},{key:"drawGhostCircles",value:function(e){var t=p.select(e).selectAll('circle[data-role="weight-preview-ghost"]').data(this.entries,function(e){return e.id});t.exit().remove(),t.enter().append("circle").attr("data-role","weight-preview-ghost").style("pointer-events","none").style("stroke",f).style("stroke-width","2px").merge(t).attr("cx",function(e){return e.centerX}).attr("cy",function(e){return e.centerY}).attr("r",function(e){return e.targetRadius}).style("fill",f).style("fill-opacity",function(e){return e.targetRadius>e.baseRadius?.18:0}).style("stroke-dasharray",function(e){return e.targetRadius<e.baseRadius?"4 3":"6 4"})}},{key:"ensureLoop",value:function(){var e=this;if(void 0===this.frameId){var t=function(n){0!==e.entries.length&&e.groupNode?(e.updateWaves(e.groupNode,n),e.updateBasePulse(n),e.frameId=requestAnimationFrame(t)):e.frameId=void 0};this.frameId=requestAnimationFrame(t)}}},{key:"stopLoop",value:function(){void 0!==this.frameId&&(cancelAnimationFrame(this.frameId),this.frameId=void 0)}},{key:"updateBasePulse",value:function(e){if(this.basePulseEnabled&&0!==this.pulseStates.size){var t,n=this.pulseDurationMs+1e3,i=this.pulseMorphRatio*this.pulseDurationMs/n,a=this.pulseDurationMs/n,o=r(this.entries);try{for(o.s();!(t=o.n()).done;){var s=t.value,l=this.pulseStates.get(s.id);if(l){var c=Math.max(0,e-l.startTimeMs)%n/n,d=void 0;if(c<=i){var u=c/Math.max(i,1e-4);d=1+(s.scaleFactor-1)*u}else if(c<a){var p=Math.min(1,(c-i)/Math.max(a-i,1e-4));d=s.scaleFactor+(1-s.scaleFactor)*p}else d=1;var h=s.controller.view.viewInitializer,f=h.positionX,g=h.positionY;h.globalGroup.setAttribute("transform",1===d?"translate(0, 0)":"translate(0, 0) translate(".concat(f,", ").concat(g,") scale(").concat(d,") translate(").concat(-f,", ").concat(-g,")"))}}}catch(e){o.e(e)}finally{o.f()}}}},{key:"updateWaves",value:function(e,t){var n=t/1200%1,i=p.easeSinInOut(n),r=Math.sin(n*Math.PI),a=p.select(e).selectAll('circle[data-role="weight-preview-wave"]').data(this.entries,function(e){return e.id});a.exit().remove(),a.enter().append("circle").attr("data-role","weight-preview-wave").style("pointer-events","none").style("fill","none").style("stroke",f).style("stroke-width","2px").merge(a).attr("cx",function(e){return e.centerX}).attr("cy",function(e){return e.centerY}).attr("r",function(e){return e.baseRadius+(e.targetRadius-e.baseRadius)*i}).style("stroke-opacity",r.toString())}},{key:"clear",value:function(e){p.select(e).selectAll('circle[data-role="weight-preview-ghost"], circle[data-role="weight-preview-wave"]').remove()}}],t&&o(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.WeightPreviewRingRenderer=g},7766(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.ChildrenOrbitManager=void 0;var o=n(3014),s=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.deps=t,this.orbitService=new o.ChildrenOrbitService,this.cachedOrbitData=null},t=[{key:"invalidateCache",value:function(){this.cachedOrbitData=null}},{key:"buildOrbitData",value:function(){if(null!==this.cachedOrbitData)return this.cachedOrbitData;var e=this.deps.view.viewInitializer;return this.cachedOrbitData=this.orbitService.buildOrbitData({parentX:e.positionX,parentY:e.positionY,childControllers:this.deps.getChildControllers(),radiusScale:this.deps.state.children.orbitRadiusScale}),this.cachedOrbitData}},{key:"applyTransforms",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.buildOrbitData();n.forEach(function(n){var i=t.orbitService.computeTranslation(n,e);n.controller.view.viewInitializer.globalGroup.setAttribute("transform","translate(".concat(i.x,", ").concat(i.y,")"))}),this.deps.renderOppositeChildrenForceField(n)}},{key:"setEnabled",value:function(e){this.deps.state.setOrbitEnabled(e),e?this.start(this.deps.state.children.orbitSpeed):this.stop()}},{key:"setSpeed",value:function(e){this.deps.state.setOrbitSpeed(e),this.deps.state.children.orbitEnabled&&this.start(this.deps.state.children.orbitSpeed)}},{key:"setRadiusScale",value:function(e){this.deps.state.setOrbitRadiusScale(Math.max(.4,Math.min(2,e))),this.deps.state.children.orbitEnabled?this.start(this.deps.state.children.orbitSpeed):this.applyTransforms(0)}},{key:"start",value:function(e){var t=this;if(0!==this.deps.getChildControllers().length){void 0!==this.deps.state.children.orbitFrameId&&cancelAnimationFrame(this.deps.state.children.orbitFrameId);var n,i=this.buildOrbitData(),r=function(e){void 0===n&&(n=e);var a=(e-n)/1e3;n=e,t.deps.state.children.orbitAngle+=t.deps.state.children.orbitSpeed*a,t.applyTransforms(t.deps.state.children.orbitAngle,i),t.deps.state.setOrbitFrameId(requestAnimationFrame(r))};this.deps.state.setOrbitFrameId(requestAnimationFrame(r))}}},{key:"stop",value:function(){void 0!==this.deps.state.children.orbitFrameId&&(cancelAnimationFrame(this.deps.state.children.orbitFrameId),this.deps.state.setOrbitFrameId(void 0)),this.deps.state.resetOrbitAngle(),this.applyTransforms(0)}}],t&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.ChildrenOrbitManager=s},6313(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var o,s=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),c=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=o(e),i=0;i<n.length;i++)"default"!==n[i]&&s(t,e,n[i]);return l(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.OddViewManager=void 0;var d=c(n(600)),u=n(14),p=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.deps=t},(t=[{key:"highlightOddInChildren",value:function(e){var t=this,n=this.deps.getChildControllers(),i=n.filter(function(n){var i;return(null===(i=t.deps.getChildOddMap().get(n.getKey()))||void 0===i?void 0:i.oddId)===e}).length;console.debug("[ODD-HL:highlight]",{oddId:e,childCount:n.length,matchCount:i}),n.forEach(function(n){var i=t.deps.getChildOddMap().get(n.getKey()),r=null!==e&&(null==i?void 0:i.oddId)===e;t.applyChildOddHighlight(n,r)})}},{key:"highlightOddByStackItemId",value:function(e){var t,n,i,r=this;if(!e)return this.highlightOddInChildren(null),void this.deps.view.borderDrawer.setHoverSegment(null);var a=this.deps.actionStackController.getItemById(e);if(a){var o=null===(t=this.deps.getCurrentComponent())||void 0===t?void 0:t.id;if(a.sourceComponentId===o)this.deps.getChildControllers().forEach(function(e){var t=r.deps.getChildOddMap().get(e.getKey()),n=(null==t?void 0:t.oddId)===a.sourceOddId&&(null==t?void 0:t.cuttingIndex)===a.sourceCuttingIndex;r.applyChildOddHighlight(e,n)}),this.deps.view.borderDrawer.setHoverSegment(null);else{var s=null!==(i=null===(n=this.deps.getAllComponents())||void 0===n?void 0:n.findIndex(function(e){return e.id===a.sourceComponentId}))&&void 0!==i?i:-1;this.highlightOddInChildren(null),s>=0&&this.deps.view.borderDrawer.setHoverSegment(s)}}}},{key:"cancelOddHighlight",value:function(){this.deps.view.yinYangDrawer.setActiveOddId(null),this.highlightOddInChildren(null)}},{key:"showOddInfo",value:function(e){var t=this.deps.getCurrentComponent(),n=u.yasuniCause.find(function(e){return e.id===(null==t?void 0:t.id)}),i=null==n?void 0:n.odds.find(function(t){return t.id===e});i&&this.deps.forceFieldDetailsPanel.renderOddInfo(i.name,i.description)}},{key:"showComposanteInfo",value:function(){var e=this.deps.getCurrentComponent(),t=u.yasuniCause.find(function(t){return t.id===(null==e?void 0:e.id)});if(t){var n=this.deps.buildKeyEventBlocksForComponent(t);this.deps.forceFieldDetailsPanel.renderComposanteInfo(t,n,this.deps.onNavigateToAction)}}},{key:"applyOddHighlight",value:function(e){this.deps.view.viewInitializer.isInOddMode()&&this.deps.exitOddView(),this.deps.view.yinYangDrawer.setActiveOddId(e),this.highlightOddInChildren(e),this.showOddInfo(e)}},{key:"applyEnterOddView",value:function(e){this.deps.enterOddView(e),this.showOddInfo(e)}},{key:"applyOddStateForCutting",value:function(e){this.deps.view.viewInitializer.isInOddMode()?(e!==this.deps.view.viewInitializer.getDisplayingOddId()&&this.deps.enterOddView(e),this.highlightOddInChildren(e)):(this.deps.view.yinYangDrawer.setActiveOddId(e),this.highlightOddInChildren(e))}},{key:"applyChildOddHighlight",value:function(e,t){var n=e.view.viewInitializer.yinYangGroup.node();if(console.debug("[ODD-HL:applyChild]",{childKey:e.getKey(),isHighlighted:t,groupNodeFound:!!n}),n){var i=d.select(n);if(t)i.style("filter","drop-shadow(0 0 8px rgba(255, 255, 255, 0.9)) brightness(1.15)");else{var r=this.deps.getActiveChildKey(),a=null!==r&&e.getKey()===r;i.style("filter",a?"drop-shadow(0 0 12px rgba(255, 255, 255, 0.9)) brightness(1.1)":"brightness(0.85)")}}}}])&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.OddViewManager=p},9577(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var o,s=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),c=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=o(e),i=0;i<n.length;i++)"default"!==n[i]&&s(t,e,n[i]);return l(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.SearchPanelSynchronizer=void 0;var d=c(n(600)),u=n(1123),p=n(14),h=n(1204),f=n(2823),g=n(5463),v=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.deps=t,this.searchHoverChildNode=null},t=[{key:"searchHandleComposanteClick",value:function(e){var t,n=this.deps.view.viewInitializer.getCurrentComponentIndex();if(console.debug("[border-switch] searchHandleComposanteClick",{componentIndex:e,currentIndex:n,hasActiveAction:this.deps.state.menu.hasActiveChildAction}),n===e)return this.deps.setChildrenEnabled(!0),void this.deps.onDiagramComposanteClicked(e);if(!this.deps.view.viewInitializer.isComponentSwitching()){var i=null===(t=p.yasuniCause[e])||void 0===t?void 0:t.id;i?this.deps.prepareForComponentSwitch(i):this.deps.setPendingContext(null),this.deps.animateChildrenHide(),this.deps.view.borderDrawer.activateSegment(e),this.deps.view.viewInitializer.animateToComponent(e,u.animationConfig.componentSwitchDurationMs),this.deps.onDiagramComposanteClicked(e)}}},{key:"searchNavigateToComponent",value:function(e){console.debug("[border-switch] searchNavigateToComponent",{componentIndex:e,currentIndex:this.deps.view.viewInitializer.getCurrentComponentIndex(),hasActiveAction:this.deps.state.menu.hasActiveChildAction}),this.deps.view.viewInitializer.isComponentSwitching()||(this.deps.animateChildrenHide(),this.deps.view.borderDrawer.activateSegment(e),this.deps.view.viewInitializer.animateToComponent(e,u.animationConfig.componentSwitchDurationMs),this.deps.setPendingContext(null))}},{key:"searchNavigateToOdd",value:function(e,t){this.deps.view.viewInitializer.getCurrentComponentIndex()===e?this.deps.applyEnterOddView(t):(this.deps.setPendingContext({type:"searchOdd",oddId:t}),this.deps.animateChildrenHide(),this.deps.view.borderDrawer.activateSegment(e),this.deps.view.viewInitializer.animateToComponent(e,u.animationConfig.componentSwitchDurationMs))}},{key:"searchHandleOddArcClick",value:function(e,t){var n;if(this.deps.view.viewInitializer.getCurrentComponentIndex()===e)this.deps.onDiagramOddArcClicked(t);else{var i=null===(n=p.yasuniCause[e])||void 0===n?void 0:n.id;i&&this.deps.state.menu.hasActiveChildAction?(this.deps.prepareForComponentSwitch(i),this.deps.setPendingOddHighlightAfterSwitch(t)):this.deps.setPendingContext({type:"searchOddHighlight",oddId:t}),this.deps.animateChildrenHide(),this.deps.view.borderDrawer.activateSegment(e),this.deps.view.viewInitializer.animateToComponent(e,u.animationConfig.componentSwitchDurationMs)}}},{key:"searchHighlightOdd",value:function(e,t){this.deps.view.viewInitializer.getCurrentComponentIndex()===e?this.deps.applyOddHighlight(t):(this.deps.setPendingContext({type:"searchOddHighlight",oddId:t}),this.deps.animateChildrenHide(),this.deps.view.borderDrawer.activateSegment(e),this.deps.view.viewInitializer.animateToComponent(e,u.animationConfig.componentSwitchDurationMs))}},{key:"searchPreviewHover",value:function(e){var t=this,n=this.deps.view.viewInitializer.getCurrentComponentIndex();if(this.clearSearchHoverChild(),null!==e)if("composante"!==e.type){if("odd"===e.type)return this.deps.view.borderDrawer.setHoverSegment(null),void(e.componentIndex!==n?this.deps.view.borderDrawer.setHoverSegment(e.componentIndex):e.oddId&&this.deps.view.yinYangDrawer.setHoverOddId(e.oddId));if(this.deps.view.borderDrawer.setHoverSegment(null),e.componentIndex===n){var i=e.oddId,r=e.cuttingIndex;if(void 0!==i&&void 0!==r){var a=this.deps.getChildControllers().find(function(e){var n=t.deps.getChildOddMap().get(e.getKey());return(null==n?void 0:n.oddId)===i&&(null==n?void 0:n.cuttingIndex)===r});if(a){var o=a.view.viewInitializer.yinYangGroup.node();o&&(d.select(o).style("filter","brightness(1.5) drop-shadow(0 0 10px rgba(255,255,255,0.75)) drop-shadow(0 0 22px rgba(114,245,255,0.45))"),this.searchHoverChildNode=o),this.deps.view.spikeDrawer.highlightSpikeByCuttingIndex(i,r),"action"===e.type&&e.actionId&&this.deps.childActionMenuController.highlightActionById(e.actionId)}}}else this.deps.view.borderDrawer.setHoverSegment(e.componentIndex)}else this.deps.view.borderDrawer.setHoverSegment(e.componentIndex);else this.deps.view.borderDrawer.setHoverSegment(null)}},{key:"searchHandleCuttingClick",value:function(e,t,n){var i,r,a=this.deps.view.viewInitializer.getCurrentComponentIndex();null===(r=(i=this.deps).onDiagramNavChange)||void 0===r||r.call(i,{type:"cutting",componentIndex:e,oddId:t,cuttingIndex:n}),a===e?this.deps.focusChildByOddCutting(t,n):(this.deps.setPendingContext({type:"searchCutting",oddId:t,cuttingIndex:n}),this.deps.animateChildrenHide(),this.deps.view.borderDrawer.activateSegment(e),this.deps.view.viewInitializer.animateToComponent(e,u.animationConfig.componentSwitchDurationMs))}},{key:"searchNavigateToCutting",value:function(e,t,n){var i,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(this.deps.view.viewInitializer.getCurrentComponentIndex()===e)this.deps.setChildrenEnabled(!0),this.deps.focusChildByOddCutting(t,n,r);else{var a=null===(i=p.yasuniCause[e])||void 0===i?void 0:i.id;a?(this.deps.prepareForComponentSwitch(a),this.deps.setPendingCuttingNavigationAfterSwitch(t,n,r)):this.deps.setPendingContext({type:"searchCutting",oddId:t,cuttingIndex:n,forceOpen:r}),this.deps.animateChildrenHide(),this.deps.view.borderDrawer.activateSegment(e),this.deps.view.viewInitializer.animateToComponent(e,u.animationConfig.componentSwitchDurationMs)}}},{key:"searchNavigateToAction",value:function(e,t,n,i){this.deps.view.viewInitializer.getCurrentComponentIndex()===e?(this.deps.setChildrenEnabled(!0),this.deps.focusChildByOddCuttingAndAction(t,n,i)):(this.deps.setPendingContext({type:"searchAction",oddId:t,cuttingIndex:n,actionId:i}),this.deps.animateChildrenHide(),this.deps.view.borderDrawer.activateSegment(e),this.deps.view.viewInitializer.animateToComponent(e,u.animationConfig.componentSwitchDurationMs))}},{key:"restoreActionDiagramState",value:function(e,t,n,i){this.deps.view.viewInitializer.getCurrentComponentIndex()===e?(this.deps.setRouteNextDirectActionBlockToPanelB(!0),this.deps.setSuppressDirectActionBlockRender(!0),this.deps.focusChildByOddCuttingAndAction(t,n,i),this.deps.setSuppressDirectActionBlockRender(!1),this.deps.setRouteNextDirectActionBlockToPanelB(!1)):(this.deps.setPendingContext({type:"restoreAction",oddId:t,cuttingIndex:n,actionId:i}),this.deps.animateChildrenHide(),this.deps.view.borderDrawer.activateSegment(e),this.deps.view.viewInitializer.animateToComponent(e,u.animationConfig.componentSwitchDurationMs))}},{key:"startSearchActionDrag",value:function(e,t,n,i,r,a,o,s){var l=this;if(this.deps.view.viewInitializer.getCurrentComponentIndex()===e){var c=this.deps.getChildControllers().find(function(e){var i=l.deps.getChildOddMap().get(e.getKey());return(null==i?void 0:i.oddId)===t&&(null==i?void 0:i.cuttingIndex)===n});c&&this.startActionDrag((0,h.getActionIconUrl)(i),a,o,function(e,t){return l.deps.validateActionSelection(c,i,r,e,t)},s)}}},{key:"startSearchKeyEventDrag",value:function(e,t,n,i,r,a){var o=this;if(this.deps.view.viewInitializer.getCurrentComponentIndex()===e){var s=g.yasuniKeyEventMap.get(t);s&&this.startActionDrag((0,f.getKeyEventIconUrl)(t),i,r,function(e,t){o.deps.validateKeyEventSelection(s,e,t),o.deps.restoreKeyEventDiagramState(s.id)},a)}}},{key:"startActionDrag",value:function(e,t,n,i,r){var a=this,o=t.pointerId;n.setPointerCapture(o);var s=t.clientX,l=t.clientY,c=!1,u=!1,p=function(){a.deps.actionStackController.setExternalDragActive(!1),a.deps.removeDragGhost(),a.deps.actionStackController.clearDropPreview(),d.select(window).on("pointermove.search-drag-".concat(o),null),d.select(window).on("pointerup.search-drag-".concat(o),null)};return d.select(window).on("pointermove.search-drag-".concat(o),function(t){var i,o=t.clientX-s,d=t.clientY-l;if(!c&&Math.hypot(o,d)>=a.deps.ACTION_DRAG_THRESHOLD_PX&&(c=!0,null==r||r(),n instanceof Element&&n.addEventListener("click",function(e){return e.stopPropagation()},{once:!0,capture:!0})),c){a.deps.actionStackController.setExternalDragActive(!0),a.deps.renderDragGhost(t.clientX,t.clientY,e);var u=a.deps.clientPointToGlobalGroup(t.clientX,t.clientY);a.deps.actionStackController.updateDropPreview(t.clientX,t.clientY,null!==(i=null==u?void 0:u.y)&&void 0!==i?i:0)&&a.deps.actionStackController.updateVisual()}}),d.select(window).on("pointerup.search-drag-".concat(o),function(e){if(n instanceof Element&&n.releasePointerCapture(o),!u&&c&&a.deps.actionStackController.isDropZoneHit(e.clientX,e.clientY)){var t=a.deps.clientPointToGlobalGroup(e.clientX,e.clientY);u=!0,i(a.deps.actionStackController.getInsertionPreviewIndex(),null!=t?t:{x:0,y:0})}p()}),p}},{key:"clearSearchHoverChild",value:function(){this.searchHoverChildNode&&(d.select(this.searchHoverChildNode).style("filter",null),this.searchHoverChildNode=null,this.deps.view.spikeDrawer.unhighlightSpikes()),this.deps.childActionMenuController.highlightActionById(null),this.deps.view.yinYangDrawer.setHoverOddId(null)}}],t&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.SearchPanelSynchronizer=v},9786(e,t){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}function r(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.ControllerSettingsApplier=void 0;var a=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.deps=t},(t=[{key:"setRandomForceFieldCount",value:function(e){this.deps.state.setForceFieldRandomCount(this.clampInt(e,0,6)),this.deps.clearForceFieldComputationState(),this.deps.hasChildrenControllers()&&this.deps.state.menu.hasActiveChildAction&&this.deps.renderOppositeChildrenForceField()}},{key:"setActionDeltaLabelsVisible",value:function(e){this.deps.state.setActionDeltaLabelsVisible(e),this.deps.updateContextLabels(this.deps.getOrbitData())}},{key:"setChildrenContextLabelsVisible",value:function(e){this.deps.state.setChildrenContextLabelsVisible(e),this.deps.updateContextLabels(this.deps.getOrbitData())}},{key:"setLabelsFontScale",value:function(e){this.deps.state.setLabelsFontScale(this.clamp(e,.6,1.8)),this.deps.view.viewInitializer.labelsFontScale=this.deps.view.viewInitializer.labelsFontAutoScale*this.deps.state.labels.fontScale,this.deps.updateContextLabels(this.deps.getOrbitData())}},{key:"setLabelsTextShadowEnabled",value:function(e){this.deps.state.setLabelsTextShadowEnabled(e),this.deps.view.viewInitializer.labelsTextShadowEnabled=e,this.deps.updateContextLabels(this.deps.getOrbitData()),this.deps.view.yinYangDrawer.refreshOddArcLabelsVisibility()}},{key:"setChildLabelPlacement",value:function(e){this.deps.state.setChildLabelPlacement(e),this.deps.updateContextLabels(this.deps.getOrbitData())}},{key:"setComponentLabelFontScale",value:function(e){this.deps.state.setComponentLabelFontScale(this.clamp(e,.6,1.8)),this.deps.view.viewInitializer.componentLabelFontScale=this.deps.view.viewInitializer.labelsFontAutoScale*this.deps.state.labels.componentFontScale,this.deps.updateContextLabels(this.deps.getOrbitData())}},{key:"setChildStateDeltaFontScale",value:function(e){this.deps.state.setChildStateDeltaFontScale(this.clamp(e,.6,1.8)),this.deps.view.viewInitializer.childStateDeltaFontScale=this.deps.view.viewInitializer.labelsFontAutoScale*this.deps.state.labels.childStateDeltaFontScale,this.deps.updateContextLabels(this.deps.getOrbitData())}},{key:"setChildStateDeltaOffset",value:function(e){this.deps.state.setChildStateDeltaOffset(this.clamp(e,0,200)),this.deps.updateContextLabels(this.deps.getOrbitData())}},{key:"setChildStateDeltaBoxScale",value:function(e){this.deps.state.setChildStateDeltaBoxScale(this.clamp(e,.3,3)),this.deps.updateContextLabels(this.deps.getOrbitData())}},{key:"setOddLabelFontScale",value:function(e){this.deps.state.setOddLabelFontScale(this.clamp(e,.6,1.8)),this.deps.view.viewInitializer.oddLabelFontScale=this.deps.view.viewInitializer.labelsFontAutoScale*this.deps.state.labels.oddFontScale,this.deps.view.yinYangDrawer.refreshOddArcLabelsVisibility()}},{key:"setComponentLegendLabelFontScale",value:function(e){this.deps.state.setComponentLegendLabelFontScale(this.clamp(e,.4,3)),this.deps.updateContextLabels(this.deps.getOrbitData())}},{key:"setLegendLabelsBgEnabled",value:function(e){this.deps.state.setLegendLabelsBgEnabled(e),this.deps.view.viewInitializer.legendLabelsBgEnabled=e,this.deps.view.yinYangDrawer.refreshOddArcLabelsVisibility(),this.deps.updateContextLabels(this.deps.getOrbitData())}},{key:"setDisplayEllipsisForShortLabels",value:function(e){this.deps.state.setDisplayEllipsisForShortLabels(e),this.deps.updateContextLabels(this.deps.getOrbitData())}},{key:"setOddContextLabelsVisible",value:function(e){this.deps.view.viewInitializer.oddContextLabelsVisible=e,this.deps.view.yinYangDrawer.refreshOddArcLabelsVisibility()}},{key:"setAllLabelsVisible",value:function(e){this.deps.state.setAllLabelsVisible(e),this.setChildrenContextLabelsVisible(e),this.setOddLabelsCompact(!e)}},{key:"setOddLabelsCompact",value:function(e){this.deps.view.viewInitializer.oddLabelsCompact=e,this.deps.view.yinYangDrawer.refreshOddArcLabelsVisibility()}},{key:"setChildActionMenuItemDistance",value:function(e){this.deps.state.setMenuItemDistance(this.clamp(e,.8,2.5)),this.deps.hasChildrenControllers()&&this.deps.state.menu.hasActiveChildAction&&this.deps.updateChildActionMenu(this.deps.getOrbitData()),this.deps.updateCoreEventMenu()}},{key:"setChildActionMenuItemScale",value:function(e){this.deps.state.setMenuItemScale(this.clamp(e,.6,2.5)),this.deps.hasChildrenControllers()&&this.deps.state.menu.hasActiveChildAction&&this.deps.updateChildActionMenu(this.deps.getOrbitData())}},{key:"setCoreEventMenuDistanceOffset",value:function(e){this.deps.state.setCoreEventMenuDistanceOffset(this.clamp(e,-80,80)),this.deps.updateCoreEventMenu()}},{key:"setCoreEventMenuItemScale",value:function(e){this.deps.state.setCoreEventMenuItemScale(this.clamp(e,.6,2.5)),this.deps.updateCoreEventMenu()}},{key:"setChildActionIconFontScale",value:function(e){this.deps.state.setMenuIconFontScale(this.clamp(e,.6,2.5)),this.deps.hasChildrenControllers()&&this.deps.state.menu.hasActiveChildAction&&this.deps.updateChildActionMenu(this.deps.getOrbitData())}},{key:"setCoreEventIconFontScale",value:function(e){this.deps.state.setCoreEventIconFontScale(this.clamp(e,.6,2.5)),this.deps.updateCoreEventMenu()}},{key:"setChildLabelMaxLines",value:function(e){this.deps.state.setChildLabelMaxLines(this.clampInt(Math.round(e),1,3)),this.deps.view.viewInitializer.childLabelMaxLines=this.deps.state.labels.childMaxLines,this.deps.updateContextLabels(this.deps.getOrbitData())}},{key:"setOddLabelMaxLines",value:function(e){this.deps.state.setOddLabelMaxLines(this.clampInt(Math.round(e),1,3)),this.deps.view.viewInitializer.oddLabelMaxLines=this.deps.state.labels.oddMaxLines,this.deps.view.yinYangDrawer.refreshOddArcLabelsVisibility()}},{key:"setFacetteLabelFontScale",value:function(e){this.deps.state.setFacetteLabelFontScale(this.clamp(e,.4,3)),this.deps.view.viewInitializer.facetteLabelFontScale=this.deps.state.labels.facetteFontScale,this.deps.view.yinYangDrawer.refreshOddArcLabelsVisibility()}},{key:"setFacetteLabelSuffixVisible",value:function(e){this.deps.state.setFacetteLabelSuffixVisible(e),this.deps.view.viewInitializer.facetteLabelSuffixVisible=e,this.deps.view.yinYangDrawer.refreshOddArcLabelsVisibility()}},{key:"setLabelShortMaxChars",value:function(e){this.deps.state.setLabelShortMaxChars(this.clampInt(Math.round(e),3,200)),this.deps.view.viewInitializer.oddLabelShortMaxChars=this.deps.state.labels.labelShortMaxChars,this.deps.view.yinYangDrawer.refreshOddArcLabelsVisibility(),this.deps.updateContextLabels(this.deps.getOrbitData())}},{key:"clamp",value:function(e,t,n){return Math.max(t,Math.min(n,e))}},{key:"clampInt",value:function(e,t,n){return Math.max(t,Math.min(n,Math.trunc(e)))}}])&&i(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.ControllerSettingsApplier=a},7863(e,t){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}function r(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.BlockingAnimationTracker=void 0;var a=function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.active=new Set,this.onChangeCb=null},(t=[{key:"onChange",value:function(e){this.onChangeCb=e}},{key:"begin",value:function(e){var t,n=Symbol(e),i=0===this.active.size;return this.active.add(n),i&&(null===(t=this.onChangeCb)||void 0===t||t.call(this)),n}},{key:"end",value:function(e){var t;this.active.delete(e)&&0===this.active.size&&(null===(t=this.onChangeCb)||void 0===t||t.call(this))}},{key:"isAnyActive",get:function(){return this.active.size>0}}])&&i(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.BlockingAnimationTracker=a},7128(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function a(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,o(i.key),i)}}function o(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.YinYangControllerState=void 0;var s=n(6976),l=n(7863),c=function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.children={enabled:!1,pendingRefresh:!1,activeChildKey:null,orbitFrameId:void 0,orbitEnabled:!1,orbitAngle:0,orbitSpeed:1,orbitRadiusScale:1},this.menu={hasActiveChildAction:!1,activeChildKey:null,actionSourceChildKey:null,activeActionId:null,activeActionLabel:null,itemDistance:1.7,itemScale:1,iconFontScale:1,coreEventMenuDistanceOffset:0,coreEventMenuItemScale:1,coreEventIconFontScale:1},this.action={propagationFactor:1,delta:8},this.visibility={actionDeltaLabels:!0,childrenContextLabels:!1,allLabelsVisible:!1},this.combos={uncappedChainedPerformance:!1,dangerousComboCanBecomeBonus:!1},this.labels={fontScale:1,componentFontScale:1,oddFontScale:1,facetteFontScale:1,facetteSuffixVisible:!1,childStateDeltaFontScale:1,childStateDeltaOffset:20,childStateDeltaBoxScale:1,componentLegendFontScale:1,legendLabelsBgEnabled:!0,textShadowEnabled:!0,childMaxLines:1,oddMaxLines:1,labelShortMaxChars:20,childPlacement:"bottom",displayEllipsisForShortLabels:!1},this.forceField={randomCount:2,sourceChildIndex:0,sourceChildIndices:[],links:[],allLinkDetails:[],incomingMode:!1,frameId:void 0,phase:0,lastTimestamp:void 0,orbitData:null,revealStartedAt:void 0,selectedLinkIndex:null},this.eventField={targets:[],frameId:void 0,phase:0,lastTimestamp:void 0,revealStartedAt:void 0},this.ghost=(0,s.getEmptyGhostProjectionState)(),this.blockingAnimations=new l.BlockingAnimationTracker},(t=[{key:"setActiveChildKey",value:function(e){this.children.activeChildKey=e}},{key:"setChildrenEnabled",value:function(e){this.children.enabled=e}},{key:"setChildrenPendingRefresh",value:function(e){this.children.pendingRefresh=e}},{key:"setOrbitEnabled",value:function(e){this.children.orbitEnabled=e}},{key:"setOrbitSpeed",value:function(e){this.children.orbitSpeed=e}},{key:"setOrbitRadiusScale",value:function(e){this.children.orbitRadiusScale=e}},{key:"setOrbitFrameId",value:function(e){this.children.orbitFrameId=e}},{key:"resetOrbitAngle",value:function(){this.children.orbitAngle=0}},{key:"clearMenuActiveSelection",value:function(){this.menu.activeChildKey=null,this.menu.actionSourceChildKey=null,this.menu.activeActionId=null,this.menu.activeActionLabel=null}},{key:"setMenuActiveChild",value:function(e){this.menu.activeChildKey=e}},{key:"setActionSourceChildKey",value:function(e){this.menu.actionSourceChildKey=e}},{key:"setMenuActiveAction",value:function(e){this.menu.activeActionId=e}},{key:"setHasActiveChildAction",value:function(e){this.menu.hasActiveChildAction=e}},{key:"setForceFieldSourceChildIndex",value:function(e){this.forceField.sourceChildIndex=e,this.forceField.sourceChildIndices=[e]}},{key:"setForceFieldSourceChildIndices",value:function(e){this.forceField.sourceChildIndices=function(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(e),this.forceField.incomingMode=!1,e.length>0&&(this.forceField.sourceChildIndex=e[0])}},{key:"setIncomingForceFieldLinks",value:function(e,t){this.forceField.links=e,this.forceField.allLinkDetails=t,this.forceField.incomingMode=!0,this.forceField.revealStartedAt=performance.now()}},{key:"setForceFieldRandomCount",value:function(e){this.forceField.randomCount=e}},{key:"setActionDeltaLabelsVisible",value:function(e){this.visibility.actionDeltaLabels=e}},{key:"setComboUncappedChainedPerformance",value:function(e){this.combos.uncappedChainedPerformance=e}},{key:"setComboDangerousCanBecomeBonus",value:function(e){this.combos.dangerousComboCanBecomeBonus=e}},{key:"setChildrenContextLabelsVisible",value:function(e){this.visibility.childrenContextLabels=e}},{key:"getAllLabelsVisible",value:function(){return this.visibility.allLabelsVisible}},{key:"setAllLabelsVisible",value:function(e){this.visibility.allLabelsVisible=e}},{key:"setLabelsFontScale",value:function(e){this.labels.fontScale=e}},{key:"setLabelsTextShadowEnabled",value:function(e){this.labels.textShadowEnabled=e}},{key:"setChildLabelPlacement",value:function(e){this.labels.childPlacement=e}},{key:"setComponentLabelFontScale",value:function(e){this.labels.componentFontScale=e}},{key:"setChildStateDeltaFontScale",value:function(e){this.labels.childStateDeltaFontScale=e}},{key:"setChildStateDeltaOffset",value:function(e){this.labels.childStateDeltaOffset=e}},{key:"setChildStateDeltaBoxScale",value:function(e){this.labels.childStateDeltaBoxScale=e}},{key:"setOddLabelFontScale",value:function(e){this.labels.oddFontScale=e}},{key:"setFacetteLabelFontScale",value:function(e){this.labels.facetteFontScale=e}},{key:"setFacetteLabelSuffixVisible",value:function(e){this.labels.facetteSuffixVisible=e}},{key:"setComponentLegendLabelFontScale",value:function(e){this.labels.componentLegendFontScale=e}},{key:"setLegendLabelsBgEnabled",value:function(e){this.labels.legendLabelsBgEnabled=e}},{key:"setMenuItemDistance",value:function(e){this.menu.itemDistance=e}},{key:"setMenuItemScale",value:function(e){this.menu.itemScale=e}},{key:"setMenuIconFontScale",value:function(e){this.menu.iconFontScale=e}},{key:"setCoreEventMenuDistanceOffset",value:function(e){this.menu.coreEventMenuDistanceOffset=e}},{key:"setCoreEventMenuItemScale",value:function(e){this.menu.coreEventMenuItemScale=e}},{key:"setCoreEventIconFontScale",value:function(e){this.menu.coreEventIconFontScale=e}},{key:"setChildLabelMaxLines",value:function(e){this.labels.childMaxLines=e}},{key:"setOddLabelMaxLines",value:function(e){this.labels.oddMaxLines=e}},{key:"setLabelShortMaxChars",value:function(e){this.labels.labelShortMaxChars=e}},{key:"setDisplayEllipsisForShortLabels",value:function(e){this.labels.displayEllipsisForShortLabels=e}},{key:"setForceFieldOrbitData",value:function(e){this.forceField.orbitData=e}},{key:"setForceFieldFrameId",value:function(e){this.forceField.frameId=e}},{key:"setForceFieldLastTimestamp",value:function(e){this.forceField.lastTimestamp=e}},{key:"setForceFieldSelectedLinkIndex",value:function(e){this.forceField.selectedLinkIndex=e}},{key:"setForceFieldRevealStartedAt",value:function(e){this.forceField.revealStartedAt=e}},{key:"setForceFieldLinksAndDetails",value:function(e,t){this.forceField.links=e,this.forceField.allLinkDetails=t}},{key:"setEventFieldTargets",value:function(e){this.eventField.targets=e}},{key:"setEventFieldFrameId",value:function(e){this.eventField.frameId=e}},{key:"setEventFieldLastTimestamp",value:function(e){this.eventField.lastTimestamp=e}},{key:"setEventFieldPhase",value:function(e){this.eventField.phase=e}},{key:"setEventFieldRevealStartedAt",value:function(e){this.eventField.revealStartedAt=e}},{key:"toggleForceFieldSelection",value:function(e){return this.forceField.selectedLinkIndex===e?(this.forceField.selectedLinkIndex=null,!1):(this.forceField.selectedLinkIndex=e,!0)}},{key:"applyGhostProjection",value:function(e){this.ghost=e}},{key:"clearForceFieldComputation",value:function(){this.forceField.links=[],this.forceField.allLinkDetails=[],this.forceField.incomingMode=!1}},{key:"resetGhostProjection",value:function(){this.ghost=(0,s.getEmptyGhostProjectionState)()}}])&&a(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.YinYangControllerState=c},2168(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getStackInsertionIndexFromGlobalY=function(e,t){if(!t)return 0;var n=Math.max(0,t.compactLength),i=Math.round((e-t.firstSlotCenterY)/t.slotSpacing);return Math.max(0,Math.min(i,Math.max(0,n)))},t.isPointInsideClientRect=function(e,t,n){return!!n&&(e>=n.left&&e<=n.right&&t>=n.top&&t<=n.bottom)}},9857(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.buildChildrenOrbitData=function(e){var t=e.parentX,n=e.parentY,i=e.childControllers,r=e.radiusScale;return i.map(function(e){var i=e.view.viewInitializer,a=i.positionX-t,o=i.positionY-n;return{controller:e,dx:a,dy:o,radius:Math.sqrt(a*a+o*o)*r,baseAngle:Math.atan2(o,a)}})},t.computeOrbitTranslation=function(e,t){var n=e.baseAngle+t,i=e.radius*Math.cos(n),r=e.radius*Math.sin(n);return{x:i-e.dx,y:r-e.dy}}},819(e,t){function n(e,t,n){var i,r=null==e?void 0:e.odds.find(function(e){return e.id===t});return null===(i=null==r?void 0:r.cuttings)||void 0===i?void 0:i[n]}Object.defineProperty(t,"__esModule",{value:!0}),t.getComponentTitle=function(e){var t,n;return null!==(n=null!==(t=null==e?void 0:e.label)&&void 0!==t?t:null==e?void 0:e.id)&&void 0!==n?n:""},t.getCuttingLabel=function(e,t,i){var r,a;return null!==(a=null===(r=n(e,t,i))||void 0===r?void 0:r.label)&&void 0!==a?a:"Cutting ".concat(i+1)},t.getCuttingShortLabel=function(e){var t,i=e.component,r=e.oddId,a=e.cuttingIndex,o=e.maxChars,s=n(i,r,a);if((null==s?void 0:s.shortLabel)&&s.shortLabel.trim().length>0){var l=s.shortLabel.trim();return l.length<=o?l:"".concat(l.slice(0,o-1),"…")}var c=(null===(t=null==s?void 0:s.label)||void 0===t?void 0:t.trim())||"Cutting ".concat(a+1);return c.length<=o?c:"".concat(c.slice(0,o-1),"…")}},8625(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getEventFieldColors=function(){return{cord:"rgba(160, 110, 255, 0.22)",capsule:"rgba(176, 112, 255, 0.98)",ring:"rgba(150, 80, 255, 0.9)",glow:"rgba(150, 80, 255, 0.9)",core:"#f4ecff"}},t.getEventFieldCapsuleWidth=function(e){return 6+5*Math.min(Math.max(e,0)/3,1)}},8906(e,t,n){function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(e,t)||a(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=a(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){l=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(l)throw o}}}}function a(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}Object.defineProperty(t,"__esModule",{value:!0}),t.keyEventReachesComponent=function(e,t){return c(e).some(function(e){return e.componentId===t})},t.buildEventFieldTargets=function(e){var t,n,a=e.keyEvent,o=e.activeItems,s=e.currentComponentId,l=e.childControllers,u=e.childOddMap,p=function(e,t){var n,i=t.find(function(t){return"keyEvent"===t.kind&&t.actionId===e.id}),a=new Set,o=r(t);try{for(o.s();!(n=o.n()).done;){var s=n.value;"action"===s.kind&&e.targetedActionIds.includes(s.actionId)&&(i&&s.slotIndex<=i.slotIndex||i&&void 0!==e.withinNextN&&s.slotIndex-i.slotIndex>e.withinNextN||a.add(d(s.sourceComponentId,s.sourceOddId,s.sourceCuttingIndex)))}}catch(e){o.e(e)}finally{o.f()}return a}(a,o),h=[],f=new Map,g=s===a.originComposanteId,v=r(c(a));try{var m=function(){var e=n.value,i=p.has(d(e.componentId,e.oddId,e.cuttingIndex))?a.effect.scoreBonus:0;if(e.componentId===s){var r=l.findIndex(function(t){var n=u.get(t.getKey());return(null==n?void 0:n.oddId)===e.oddId&&(null==n?void 0:n.cuttingIndex)===e.cuttingIndex});r>=0&&h.push({childIndex:r,scoreBonus:i})}else{var o=null!==(t=f.get(e.componentId))&&void 0!==t?t:0;f.set(e.componentId,Math.max(o,i))}};for(v.s();!(n=v.n()).done;)m()}catch(e){v.e(e)}finally{v.f()}if(g){var y,b=r(f);try{for(b.s();!(y=b.n()).done;){var I=i(y.value,2),C=I[0],w=I[1];h.push({targetComponentId:C,scoreBonus:w})}}catch(e){b.e(e)}finally{b.f()}}return h};var s=n(14),l=new Map;function c(e){var t=l.get(e.id);if(t)return t;var n,i=new Set(e.targetedActionIds),a=[],o=r(s.yasuniCause);try{var c=function(){var e,t=n.value,o=r(t.odds);try{var s=function(){var n=e.value;n.cuttings.forEach(function(e,r){e.actionIds.some(function(e){return i.has(e)})&&a.push({componentId:t.id,oddId:n.id,cuttingIndex:r})})};for(o.s();!(e=o.n()).done;)s()}catch(e){o.e(e)}finally{o.f()}};for(o.s();!(n=o.n()).done;)c()}catch(e){o.e(e)}finally{o.f()}return l.set(e.id,a),a}function d(e,t,n){return"".concat(e,"|").concat(t,"|").concat(n)}},754(e,t,n){function i(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getInterOddRationale=function(e,t,n){var i,r,a="".concat(e,"::").concat(t,"::").concat(n),s=c.get(a);if(void 0!==s)return s;var d=(0,l.makeCauseNodeId)(e,t),u=(0,l.makeCauseNodeId)(e,n),p=(null!==(i=o.default[d])&&void 0!==i?i:[]).find(function(e){return e.to===u}),h=null!==(r=null==p?void 0:p.rationale)&&void 0!==r?r:null;return c.set(a,h),h},t.getLayersInvolved=function(e,t,n){var i,r,a,o,l="".concat(e,"::").concat(t,"::").concat(n),c=d.get(l);if(void 0!==c)return c;var u=["Couche B — Inter-ODD (niveau stratégique)"],p=null!==(i=s.default.intraOddByComponent[e])&&void 0!==i?i:{};return((null!==(r=p[t])&&void 0!==r?r:[]).length>0||(null!==(a=p[n])&&void 0!==a?a:[]).length>0)&&u.push("Couche A — Intra-ODD (niveau local)"),(null!==(o=s.default.bridgeEdgesByComponent[e])&&void 0!==o?o:[]).some(function(e){return e.fromOddId===t&&e.toOddId===n||e.fromOddId===n&&e.toOddId===t})&&u.push("Couche C — Bridges ciblés"),d.set(l,u),u},t.getLocalLayerWeightSummary=function(e,t,n){var r,a,o,l="".concat(e,"::").concat(t,"::").concat(n),c=u.get(l);if(void 0!==c)return c;var d=null!==(r=s.default.intraOddByComponent[e])&&void 0!==r?r:{},p=(null!==(a=d[t])&&void 0!==a?a:[]).map(function(e){return e.w}),h=(null!==(o=d[n])&&void 0!==o?o:[]).map(function(e){return e.w}),f=[].concat(i(p),i(h)),g=0===f.length?null:i(new Set(f.map(function(e){return e.toFixed(2)}))).join(", ");return u.set(l,g),g},t.getBridgeLayerWeightSummary=function(e,t,n){var r,a="".concat(e,"::").concat(t,"::").concat(n),o=p.get(a);if(void 0!==o)return o;var l=(null!==(r=s.default.bridgeEdgesByComponent[e])&&void 0!==r?r:[]).filter(function(e){return e.fromOddId===t&&e.toOddId===n||e.fromOddId===n&&e.toOddId===t}).map(function(e){return e.w.toFixed(2)}),c=0===l.length?null:i(new Set(l)).join(", ");return p.set(a,c),c};var o=a(n(5465)),s=a(n(616)),l=n(5533),c=new Map,d=new Map,u=new Map,p=new Map},6659(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getForceFieldWeightLabel=function(e){switch(e){case"inter":return"w_inter";case"intra":return"w_local";case"bridge":return"w_bridge";default:return"w"}},t.getLayerDisplayName=function(e){switch(e){case"inter":return"Propagation entre thématiques";case"intra":return"Propagation locale";case"bridge":return"Propagation passerelle";default:return e}},t.getPropagationCardTitle=function(e){switch(e){case"inter":return"Impact entre thématiques";case"intra":return"Impact local en chaîne";case"bridge":return"Impact via passerelle";default:return"Impact en chaîne"}},t.calculateDisplayedDelta=function(e){if(0===e.length)return 0;var t=e.some(function(e){return"inter"===e.layerType}),n=e.some(function(e){return"intra"===e.layerType||"bridge"===e.layerType});return t&&n?e.reduce(function(e,t){return e+t.deltaTo},0):e[0].deltaTo}},7290(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getForceFieldThickness=function(e){return e>=1?2.4:e>=.6?1.8:e>=.3?1.2:.9},t.getForceFieldColors=function(e){return e>1?{aura:"rgba(255, 220, 70, 0.34)",auraGlow:"rgba(255, 220, 70, 0.95)",energy:"rgba(255, 235, 120, 0.86)",energyGlow:"rgba(255, 235, 120, 0.95)",core:"#fff6c4",coreGlow:"rgba(255, 248, 200, 0.98)"}:e>0?{aura:"rgba(70, 255, 120, 0.34)",auraGlow:"rgba(70, 255, 120, 0.95)",energy:"rgba(80, 255, 150, 0.82)",energyGlow:"rgba(80, 255, 150, 0.95)",core:"#d9ffe6",coreGlow:"rgba(220, 255, 230, 0.95)"}:e<0?{aura:"rgba(255, 85, 85, 0.34)",auraGlow:"rgba(255, 85, 85, 0.95)",energy:"rgba(255, 120, 120, 0.82)",energyGlow:"rgba(255, 120, 120, 0.95)",core:"#ffd6d6",coreGlow:"rgba(255, 220, 220, 0.95)"}:{aura:"rgba(80, 240, 255, 0.32)",auraGlow:"rgba(80, 240, 255, 0.9)",energy:"rgba(150, 235, 255, 0.8)",energyGlow:"rgba(150, 235, 255, 0.9)",core:"#e4faff",coreGlow:"rgba(210, 245, 255, 0.95)"}}},8262(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.calculateBestShortLabelPosition=function(e,t,n,i,r){for(var a=Math.atan2(t-r,e-i),o={x:0,y:0,angle:a,score:-1},s=0,l=[Math.PI/4,-Math.PI/4,Math.PI/2,-Math.PI/2];s<l.length;s++){var c=l[s],d=a+c,u=n+45,p=Math.cos(d)*u,h=Math.sin(d)*u,f=-Math.PI/2,g=Math.abs(d-a-f),v=100*Math.min(g,2*Math.PI-g),m=100*Math.abs(c)+.5*v;m>o.score&&(o={x:p,y:h,angle:d,score:m})}return o}},3669(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.resolveOddCuttingId=function(e,t,n){var i=e.odds.find(function(e){return e.id===t});if(i)return(Array.isArray(i.cuttingIds)&&i.cuttingIds.length===i.cuttingScores.length?i.cuttingIds:i.cuttingScores.map(function(e,t){return t+1}))[n]}},3115(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.clientPointToGroupCoordinates=function(e){var t=e.clientX,n=e.clientY,i=e.group,r=e.svg;if(!i||!r)return null;var a=r.createSVGPoint();a.x=t,a.y=n;var o=i.getScreenCTM();if(!o)return null;var s=a.matrixTransform(o.inverse());return{x:s.x,y:s.y}}},9692(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.parseTranslateTransform=function(e){var t=e.match(/translate\(\s*([-+]?\d*\.?\d+)\s*[,\s]\s*([-+]?\d*\.?\d+)\s*\)/);return t?{x:Number.parseFloat(t[1]),y:Number.parseFloat(t[2]),found:!0}:{x:0,y:0,found:!1}}},5639(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.wrapText=function(e,t){if(1===t||!e.includes(" "))return[e];var n=e.split(" "),i=[];if(2===t){var r=Math.ceil(n.length/2);i.push(n.slice(0,r).join(" ")),i.push(n.slice(r).join(" "))}else if(3===t){var a=Math.ceil(n.length/3);i.push(n.slice(0,a).join(" ")),i.push(n.slice(a,2*a).join(" ")),i.push(n.slice(2*a).join(" "))}return i.filter(function(e){return e.length>0})},t.truncateStackLabel=function(e,t,n){var i=(null!=e?e:"").trim();if(0===i.length)return"";var r=.56*n,a=Math.max(3,Math.floor(t/r));return i.length<=a?i:"".concat(i.slice(0,Math.max(1,a-1)).trimEnd(),"…")}},6665(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.mountVizControls=function(e){var t,n=e.controllerCause,i=e.factory,r=e.layoutState,a=e.renderColumnLayouts,o=e.animationConfig,s=document.getElementById("slider-cause"),l=document.getElementById("slider-value-cause");if(s&&l){var c=n.view.viewInitializer.getAverageTension();s.value=c.toString(),l.textContent=c.toFixed(2),s.addEventListener("input",function(e){var t=parseFloat(e.target.value);n.view.viewInitializer.updateTension(t),l.textContent=t.toFixed(2)})}var d=document.getElementById("slider-cause-ghost"),u=document.getElementById("slider-value-cause-ghost");if(d&&u){var p=n.view.viewInitializer.averageTensionGhost;d.value=p.toString(),u.textContent=p.toFixed(2),d.addEventListener("input",function(e){var t=parseFloat(e.target.value);n.view.viewInitializer.updateGhostTension(t),u.textContent=t.toFixed(2)})}var h=document.getElementById("toggle-cause-ghost");h&&(n.view.viewInitializer.setGhostVisible(h.checked),h.addEventListener("change",function(e){var t=e.target.checked;n.view.viewInitializer.setGhostVisible(t)}));var f=document.getElementById("toggle-cause-children");f&&(n.setChildrenEnabled(f.checked),f.addEventListener("change",function(e){var t=e.target.checked;n.setChildrenEnabled(t)}));var g=document.getElementById("toggle-cause-rotation");g&&g.addEventListener("change",function(e){e.target.checked?i.animator.animate(n,!0,o.rotationDurationMs):i.animator.stopRotation(n)});var v=document.getElementById("toggle-cause-orbit");v&&v.addEventListener("change",function(e){var t=e.target.checked;n.setChildrenOrbitEnabled(t)});var m=document.getElementById("toggle-cause-spark");m&&(m.checked=n.view.viewInitializer.outerSparkEnabled,m.addEventListener("change",function(e){var t=e.target.checked;n.view.viewInitializer.outerSparkEnabled=t,n.view.yinYangDrawer.refreshOuterSpark()}),n.setOnOuterSparkAutoToggle(function(e){m.checked=e}));var y=document.getElementById("toggle-cause-spikes");y&&(n.view.spikeDrawer.spikesEnabled=y.checked,y.addEventListener("change",function(e){var t=e.target.checked;n.view.spikeDrawer.spikesEnabled=t,n.view.spikeDrawer.refreshSpikes()}));var b=document.getElementById("toggle-cause-action-deltas");b&&(n.setActionDeltaLabelsVisible(b.checked),b.addEventListener("change",function(e){var t=e.target.checked;n.setActionDeltaLabelsVisible(t)}));var I=document.getElementById("toggle-cause-children-labels");I&&(n.setChildrenContextLabelsVisible(I.checked),I.addEventListener("change",function(e){var t=e.target.checked;n.setChildrenContextLabelsVisible(t)}));var C=document.getElementById("toggle-cause-odd-labels");C&&(n.setOddContextLabelsVisible(C.checked),C.addEventListener("change",function(e){var t=e.target.checked;n.setOddContextLabelsVisible(t)}));var w=document.getElementById("toggle-combo-uncapped-chained-performance");w&&(n.setComboUncappedChainedPerformance(w.checked),w.addEventListener("change",function(e){var t=e.target.checked;n.setComboUncappedChainedPerformance(t)}));var x=document.getElementById("toggle-combo-dangerous-can-become-bonus");x&&(n.setComboDangerousCanBecomeBonus(x.checked),x.addEventListener("change",function(e){var t=e.target.checked;n.setComboDangerousCanBecomeBonus(t)})),document.getElementById("ff-tab-debug-btn");var k=document.getElementById("toggle-all-labels-button");if(k){var S=!1;k.addEventListener("click",function(){S=!S,n.setAllLabelsVisible(S),k.style.opacity=S?"1":"0.6"}),k.style.opacity="0.6",n.setAllLabelsVisible(!1)}document.getElementById("fill-random-actions-button"),document.getElementById("trigger-outer-spark-button"),document.getElementById("trigger-balance-spark-button");var _=function(){var e=document.getElementById("current-component-cause"),t=document.getElementById("current-orientation-cause");if(e&&(e.textContent=n.view.viewInitializer.getCurrentComponentName()),t){var i=n.view.viewInitializer.getCurrentComponentOrientation();t.textContent="yin"===i||"yang"===i?i:"N/A"}};_();var A=document.getElementById("svg-container-cause");A&&A.addEventListener("click",function(){setTimeout(_,50)});var E=function(){n.view.viewInitializer.updateGhostTension(n.view.viewInitializer.averageTensionGhost)},O=document.getElementById("wave-thickness"),D=document.getElementById("wave-thickness-value");O&&D&&O.addEventListener("input",function(e){var t=parseFloat(e.target.value);D.textContent=t.toString(),n.view.viewInitializer.waveStrokeWidth=t,E()});var M=document.getElementById("perimeter-thickness"),L=document.getElementById("perimeter-thickness-value");M&&L&&M.addEventListener("input",function(e){var t=parseFloat(e.target.value);L.textContent=t.toString(),n.view.viewInitializer.ghostPerimeterStrokeWidth=t,E()});var F=document.getElementById("perimeter-solid");F&&F.addEventListener("change",function(e){var t=e.target.checked;n.view.viewInitializer.ghostPerimeterSolid=t,E()});var T=document.getElementById("wave-color-increase");T&&T.addEventListener("input",function(e){var t=e.target.value;n.view.viewInitializer.waveColorIncrease=t,E()});var P=document.getElementById("wave-color-decrease");P&&P.addEventListener("input",function(e){var t=e.target.value;n.view.viewInitializer.waveColorDecrease=t,n.view.viewInitializer.ghostPerimeterColor=t,E()});var B=document.getElementById("yin-opacity"),G=document.getElementById("yin-opacity-value");B&&G&&B.addEventListener("input",function(e){var t=parseFloat(e.target.value);G.textContent=t.toFixed(2),n.view.viewInitializer.yinOpacity=t,E()});var R=document.getElementById("yang-opacity"),q=document.getElementById("yang-opacity-value");R&&q&&R.addEventListener("input",function(e){var t=parseFloat(e.target.value);q.textContent=t.toFixed(2),n.view.viewInitializer.yangOpacity=t,E()});var z=document.getElementById("ghost-pulse-duration"),N=document.getElementById("ghost-pulse-duration-value");if(z&&N){var j=n.view.viewInitializer.ghostPulseDurationSec;z.value=j.toString(),N.textContent=j.toFixed(1),z.addEventListener("input",function(e){var t=parseFloat(e.target.value);N.textContent=t.toFixed(1),n.view.viewInitializer.ghostPulseDurationSec=t,E(),n.refreshWeightPreviewPulse()})}var H=document.getElementById("base-pulse-enabled");if(H){var K=null===(t=n.view.viewInitializer.basePulseEnabled)||void 0===t||t;console.log("[PULSE_INIT] VizControlsPanel - basePulseEnabled from controller:",n.view.viewInitializer.basePulseEnabled,"→ will set checkbox to:",K),console.log("[PULSE_INIT] Before set - HTML attribute checked:",H.getAttribute("checked")),console.log("[PULSE_INIT] Before set - .checked property:",H.checked),H.checked=K,n.view.viewInitializer.basePulseEnabled=K,console.log("[PULSE_INIT] After set - HTML attribute checked:",H.getAttribute("checked")),console.log("[PULSE_INIT] After set - .checked property:",H.checked),new MutationObserver(function(e){e.forEach(function(e){"attributes"===e.type&&"checked"===e.attributeName&&console.log("[PULSE_MUTATION] checkbox.checked changed to:",H.checked)})}).observe(H,{attributes:!0}),H.addEventListener("change",function(e){var t=e.target.checked;console.log("[PULSE_CHANGE] User toggled basePulseEnabled to:",t),n.view.viewInitializer.basePulseEnabled=t,E(),n.refreshWeightPreviewPulse()})}var V=document.getElementById("pulse-morph-ratio"),Y=document.getElementById("pulse-morph-ratio-value");if(V&&Y){var W=n.view.viewInitializer.pulseMorphRatio;V.value=W.toString();var U=100*(1-W);Y.textContent="".concat(Math.round(100*W),"/").concat(Math.round(U)),V.addEventListener("input",function(e){var t=parseFloat(e.target.value),i=100*(1-t);Y.textContent="".concat(Math.round(100*t),"/").concat(Math.round(i)),n.view.viewInitializer.pulseMorphRatio=t,E(),n.refreshWeightPreviewPulse()})}var X=document.getElementById("wave-travel-duration"),Z=document.getElementById("wave-travel-duration-value");if(X&&Z){var Q=n.view.viewInitializer.waveTravelDurationSec;X.value=Q.toString(),Z.textContent=Q.toFixed(1),X.addEventListener("input",function(e){var t=parseFloat(e.target.value);Z.textContent=t.toFixed(1),n.view.viewInitializer.waveTravelDurationSec=t,E()})}var $=document.getElementById("ghost-delta-badge-scale"),J=document.getElementById("ghost-delta-badge-scale-value");if($&&J){var ee=n.view.viewInitializer.ghostDeltaBadgeSizeBoost;$.value=ee.toString(),J.textContent=ee.toFixed(2),$.addEventListener("input",function(e){var t=parseFloat(e.target.value);J.textContent=t.toFixed(2),n.view.viewInitializer.ghostDeltaBadgeSizeBoost=t})}var te=document.getElementById("perimeter-wave-opacity"),ne=document.getElementById("perimeter-wave-opacity-value");te&&ne&&te.addEventListener("input",function(e){var t=parseFloat(e.target.value);ne.textContent=t.toFixed(2),n.view.viewInitializer.perimeterWaveOpacity=t,E()});var ie=document.getElementById("wave-count"),re=document.getElementById("wave-count-value");ie&&re&&ie.addEventListener("input",function(e){var t=parseInt(e.target.value);re.textContent=t.toString(),n.view.viewInitializer.numberOfWaves=t,E()});var ae=document.getElementById("wave-spacing"),oe=document.getElementById("wave-spacing-value");ae&&oe&&ae.addEventListener("input",function(e){var t=parseFloat(e.target.value);oe.textContent=t.toFixed(1),n.view.viewInitializer.waveSpacing=t,E()});var se=document.getElementById("child-scale"),le=document.getElementById("child-scale-value");if(se&&le){var ce=n.view.viewInitializer.childrenScale;se.value=ce.toString(),le.textContent=ce.toFixed(2),se.addEventListener("input",function(e){var t=parseFloat(e.target.value);le.textContent=t.toFixed(2),n.view.viewInitializer.setChildrenScale(t)})}var de=document.getElementById("rotation-speed"),ue=document.getElementById("rotation-speed-value");de&&ue&&(de.value=o.rotationDurationMs.toString(),ue.textContent="".concat((o.rotationDurationMs/1e3).toFixed(1),"s"),de.addEventListener("input",function(e){var t=parseInt(e.target.value,10);ue.textContent="".concat((t/1e3).toFixed(1),"s"),i.animator.setRotationDuration(t)}));var pe=document.getElementById("children-orbit-speed"),he=document.getElementById("children-orbit-speed-value");pe&&he&&(pe.value=1..toString(),he.textContent="".concat(1..toFixed(2)," rad/s"),pe.addEventListener("input",function(e){var t=parseFloat(e.target.value);he.textContent="".concat(t.toFixed(2)," rad/s"),n.setChildrenOrbitSpeed(t)}));var fe=document.getElementById("children-orbit-distance"),ge=document.getElementById("children-orbit-distance-value");fe&&ge&&(fe.value=1..toString(),ge.textContent=1..toFixed(2),fe.addEventListener("input",function(e){var t=parseFloat(e.target.value);ge.textContent=t.toFixed(2),n.setChildrenOrbitRadiusScale(t)}));var ve=document.getElementById("random-force-fields-count"),me=document.getElementById("random-force-fields-count-value");if(ve&&me){var ye=parseInt(ve.value,10)||2;me.textContent=ye.toString(),n.setRandomForceFieldCount(ye),ve.addEventListener("input",function(e){var t=parseInt(e.target.value,10)||0;me.textContent=t.toString(),n.setRandomForceFieldCount(t)})}var be=document.getElementById("child-action-menu-distance"),Ie=document.getElementById("child-action-menu-distance-value");if(be&&Ie){var Ce=parseFloat(be.value)||1.7;Ie.textContent=Ce.toFixed(2),n.setChildActionMenuItemDistance(Ce),be.addEventListener("input",function(e){var t=parseFloat(e.target.value)||1.7;Ie.textContent=t.toFixed(2),n.setChildActionMenuItemDistance(t)})}var we=document.getElementById("child-action-menu-scale"),xe=document.getElementById("child-action-menu-scale-value");if(we&&xe){var ke=parseFloat(we.value)||1;xe.textContent=ke.toFixed(2),n.setChildActionMenuItemScale(ke),we.addEventListener("input",function(e){var t=parseFloat(e.target.value)||1;xe.textContent=t.toFixed(2),n.setChildActionMenuItemScale(t)})}var Se=document.getElementById("child-action-icon-scale"),_e=document.getElementById("child-action-icon-scale-value");if(Se&&_e){var Ae=parseFloat(Se.value)||1;_e.textContent=Ae.toFixed(2),n.setChildActionIconFontScale(Ae),Se.addEventListener("input",function(e){var t=parseFloat(e.target.value)||1;_e.textContent=t.toFixed(2),n.setChildActionIconFontScale(t)})}var Ee=document.getElementById("core-event-menu-scale"),Oe=document.getElementById("core-event-menu-scale-value");if(Ee&&Oe){var De=parseFloat(Ee.value)||1;Oe.textContent=De.toFixed(2),n.setCoreEventMenuItemScale(De),Ee.addEventListener("input",function(e){var t=parseFloat(e.target.value)||1;Oe.textContent=t.toFixed(2),n.setCoreEventMenuItemScale(t)})}var Me=document.getElementById("core-event-icon-scale"),Le=document.getElementById("core-event-icon-scale-value");if(Me&&Le){var Fe=parseFloat(Me.value)||1;Le.textContent=Fe.toFixed(2),n.setCoreEventIconFontScale(Fe),Me.addEventListener("input",function(e){var t=parseFloat(e.target.value)||1;Le.textContent=t.toFixed(2),n.setCoreEventIconFontScale(t)})}var Te=document.getElementById("core-event-menu-distance-offset"),Pe=document.getElementById("core-event-menu-distance-offset-value");if(Te&&Pe){var Be=parseFloat(Te.value)||0;Pe.textContent=Be.toString(),n.setCoreEventMenuDistanceOffset(Be),Te.addEventListener("input",function(e){var t=parseFloat(e.target.value)||0;Pe.textContent=t.toString(),n.setCoreEventMenuDistanceOffset(t)})}var Ge=document.getElementById("label-font-scale"),Re=document.getElementById("label-font-scale-value");if(Ge&&Re){var qe=parseFloat(Ge.value)||1;Re.textContent=qe.toFixed(2),n.setLabelsFontScale(qe),Ge.addEventListener("input",function(e){var t=parseFloat(e.target.value)||1;Re.textContent=t.toFixed(2),n.setLabelsFontScale(t)})}var ze=document.getElementById("component-label-font-scale"),Ne=document.getElementById("component-label-font-scale-value");if(ze&&Ne){var je=parseFloat(ze.value)||1;Ne.textContent=je.toFixed(2),n.setComponentLabelFontScale(je),ze.addEventListener("input",function(e){var t=parseFloat(e.target.value)||1;Ne.textContent=t.toFixed(2),n.setComponentLabelFontScale(t)})}var He=document.getElementById("component-legend-label-font-scale"),Ke=document.getElementById("component-legend-label-font-scale-value");if(He&&Ke){var Ve=parseFloat(He.value)||1;Ke.textContent=Ve.toFixed(2),n.setComponentLegendLabelFontScale(Ve),He.addEventListener("input",function(e){var t=parseFloat(e.target.value)||1;Ke.textContent=t.toFixed(2),n.setComponentLegendLabelFontScale(t)})}var Ye=document.getElementById("child-state-delta-font-scale"),We=document.getElementById("child-state-delta-font-scale-value");if(Ye&&We){var Ue=parseFloat(Ye.value)||1;We.textContent=Ue.toFixed(2),n.setChildStateDeltaFontScale(Ue),Ye.addEventListener("input",function(e){var t=parseFloat(e.target.value)||1;We.textContent=t.toFixed(2),n.setChildStateDeltaFontScale(t)})}var Xe=document.getElementById("child-state-delta-offset"),Ze=document.getElementById("child-state-delta-offset-value");if(Xe&&Ze){var Qe=parseFloat(Xe.value)||20;Ze.textContent=String(Qe),n.setChildStateDeltaOffset(Qe),Xe.addEventListener("input",function(e){var t=parseFloat(e.target.value)||0;Ze.textContent=String(t),n.setChildStateDeltaOffset(t)})}var $e=document.getElementById("child-state-delta-box-scale"),Je=document.getElementById("child-state-delta-box-scale-value");if($e&&Je){var et=parseFloat($e.value)||1;Je.textContent=et.toFixed(2),n.setChildStateDeltaBoxScale(et),$e.addEventListener("input",function(e){var t=parseFloat(e.target.value)||1;Je.textContent=t.toFixed(2),n.setChildStateDeltaBoxScale(t)})}var tt=document.getElementById("odd-label-font-scale"),nt=document.getElementById("odd-label-font-scale-value");if(tt&&nt){var it=parseFloat(tt.value)||1;nt.textContent=it.toFixed(2),n.setOddLabelFontScale(it),tt.addEventListener("input",function(e){var t=parseFloat(e.target.value)||1;nt.textContent=t.toFixed(2),n.setOddLabelFontScale(t)})}var rt=document.getElementById("facette-label-font-scale"),at=document.getElementById("facette-label-font-scale-value");if(rt&&at){var ot=parseFloat(rt.value)||1;at.textContent=ot.toFixed(2),n.setFacetteLabelFontScale(ot),rt.addEventListener("input",function(e){var t=parseFloat(e.target.value)||1;at.textContent=t.toFixed(2),n.setFacetteLabelFontScale(t)})}var st=document.getElementById("toggle-facette-label-suffix");st&&(n.setFacetteLabelSuffixVisible(st.checked),st.addEventListener("change",function(e){var t=e.target.checked;n.setFacetteLabelSuffixVisible(t)}));var lt=document.getElementById("toggle-label-shadow");lt&&(n.setLabelsTextShadowEnabled(lt.checked),lt.addEventListener("change",function(e){var t=e.target.checked;n.setLabelsTextShadowEnabled(t)}));var ct=document.getElementById("toggle-legend-labels-bg");ct&&(n.setLegendLabelsBgEnabled(ct.checked),ct.addEventListener("change",function(e){var t=e.target.checked;n.setLegendLabelsBgEnabled(t)}));var dt=document.getElementById("label-short-max-chars"),ut=document.getElementById("label-short-max-chars-value");if(dt&&ut){var pt=parseInt(dt.value)||20;ut.textContent=String(pt),n.setLabelShortMaxChars(pt),dt.addEventListener("input",function(e){var t=parseInt(e.target.value)||20;ut.textContent=String(t),n.setLabelShortMaxChars(t)})}var ht=document.getElementById("action-stack-label-font-scale"),ft=document.getElementById("action-stack-label-font-scale-value");if(ht&&ft){var gt=parseFloat(ht.value)||1;ft.textContent=gt.toFixed(2),n.setActionStackLabelFontScale(gt),ht.addEventListener("input",function(e){var t=parseFloat(e.target.value)||1;ft.textContent=t.toFixed(2),n.setActionStackLabelFontScale(t)})}var vt=document.getElementById("action-stack-history-button-scale"),mt=document.getElementById("action-stack-history-button-scale-value");if(vt&&mt){var yt=parseFloat(vt.value)||1;mt.textContent=yt.toFixed(2),n.setActionStackHistoryButtonScale(yt),vt.addEventListener("input",function(e){var t=parseFloat(e.target.value)||1;mt.textContent=t.toFixed(2),n.setActionStackHistoryButtonScale(t)})}var bt=document.getElementById("child-label-max-lines"),It=document.getElementById("child-label-max-lines-value");if(bt&&It){var Ct=parseInt(bt.value)||1;It.textContent=String(Ct),n.setChildLabelMaxLines(Ct),bt.addEventListener("input",function(e){var t=parseInt(e.target.value)||1;It.textContent=String(t),n.setChildLabelMaxLines(t)})}var wt=document.getElementById("odd-label-max-lines"),xt=document.getElementById("odd-label-max-lines-value");if(wt&&xt){var kt=parseInt(wt.value)||1;xt.textContent=String(kt),n.setOddLabelMaxLines(kt),wt.addEventListener("input",function(e){var t=parseInt(e.target.value)||1;xt.textContent=String(t),n.setOddLabelMaxLines(t)})}var St=document.getElementById("odd-gradient-spread"),_t=document.getElementById("odd-gradient-spread-value");if(St&&_t){var At=n.view.viewInitializer.oddGradientSpread;St.value=At.toString(),_t.textContent=At.toFixed(2),St.addEventListener("input",function(e){var t=parseFloat(e.target.value);_t.textContent=t.toFixed(2),n.view.viewInitializer.oddGradientSpread=t,n.view.viewInitializer.updateTension(n.view.viewInitializer.getAverageTension())})}var Et=document.getElementById("odd-gradient-intensity"),Ot=document.getElementById("odd-gradient-intensity-value");if(Et&&Ot){var Dt=n.view.viewInitializer.oddGradientIntensity;Et.value=Dt.toString(),Ot.textContent=Dt.toFixed(2),Et.addEventListener("input",function(e){var t=parseFloat(e.target.value);Ot.textContent=t.toFixed(2),n.view.viewInitializer.oddGradientIntensity=t,n.view.viewInitializer.updateTension(n.view.viewInitializer.getAverageTension())})}var Mt=document.getElementById("border-spark-intensity"),Lt=document.getElementById("border-spark-intensity-value");if(Mt&&Lt){var Ft=n.view.viewInitializer.outerSparkIntensity;Mt.value=Ft.toString(),Lt.textContent=Ft.toFixed(1),Mt.addEventListener("input",function(e){var t=parseFloat(e.target.value);Lt.textContent=t.toFixed(1),n.view.viewInitializer.outerSparkIntensity=t,n.view.yinYangDrawer.refreshOuterSpark()})}var Tt=document.getElementById("border-spark-length"),Pt=document.getElementById("border-spark-length-value");if(Tt&&Pt){var Bt=n.view.viewInitializer.outerSparkLength;Tt.value=Bt.toString(),Pt.textContent=Bt.toFixed(1),Tt.addEventListener("input",function(e){var t=parseFloat(e.target.value);Pt.textContent=t.toFixed(1),n.view.viewInitializer.outerSparkLength=t,n.view.yinYangDrawer.refreshOuterSpark()})}var Gt=document.getElementById("border-spark-width"),Rt=document.getElementById("border-spark-width-value");if(Gt&&Rt){var qt=n.view.viewInitializer.outerSparkStrokeWidth;Gt.value=qt.toString(),Rt.textContent=qt.toFixed(1),Gt.addEventListener("input",function(e){var t=parseFloat(e.target.value);Rt.textContent=t.toFixed(1),n.view.viewInitializer.outerSparkStrokeWidth=t,n.view.yinYangDrawer.refreshOuterSpark()})}var zt=document.getElementById("border-spark-glow-color");zt&&(zt.value=n.view.viewInitializer.outerSparkGlowColor,zt.addEventListener("input",function(e){var t=e.target.value;n.view.viewInitializer.outerSparkGlowColor=t,n.view.yinYangDrawer.refreshOuterSpark(),n.view.viewInitializer.redrawBorders()}));var Nt=document.getElementById("border-spark-speed"),jt=document.getElementById("border-spark-speed-value");if(Nt&&jt){var Ht=n.view.viewInitializer.outerSparkRotationDurationMs;Nt.value=Ht.toString(),jt.textContent="".concat((Ht/1e3).toFixed(1),"s"),Nt.addEventListener("input",function(e){var t=parseInt(e.target.value,10);jt.textContent="".concat((t/1e3).toFixed(1),"s"),n.view.viewInitializer.outerSparkRotationDurationMs=t,n.view.yinYangDrawer.refreshOuterSpark()})}var Kt=document.getElementById("yinyang-spark-intensity"),Vt=document.getElementById("yinyang-spark-intensity-value");if(Kt&&Vt){var Yt=n.view.viewInitializer.balanceSparkIntensity;Kt.value=Yt.toString(),Vt.textContent=Yt.toFixed(1),Kt.addEventListener("input",function(e){var t=parseFloat(e.target.value);Vt.textContent=t.toFixed(1),n.view.viewInitializer.balanceSparkIntensity=t})}var Wt=document.getElementById("yinyang-spark-max-length"),Ut=document.getElementById("yinyang-spark-max-length-value");if(Wt&&Ut){var Xt=n.view.viewInitializer.balanceSparkMaxLength;Wt.value=Xt.toString(),Ut.textContent=Xt.toFixed(1),Wt.addEventListener("input",function(e){var t=parseFloat(e.target.value);Ut.textContent=t.toFixed(1),n.view.viewInitializer.balanceSparkMaxLength=t})}var Zt=document.getElementById("yinyang-spark-width"),Qt=document.getElementById("yinyang-spark-width-value");if(Zt&&Qt){var $t=n.view.viewInitializer.balanceSparkStrokeWidth;Zt.value=$t.toString(),Qt.textContent=$t.toFixed(1),Zt.addEventListener("input",function(e){var t=parseFloat(e.target.value);Qt.textContent=t.toFixed(1),n.view.viewInitializer.balanceSparkStrokeWidth=t})}var Jt=document.getElementById("yinyang-spark-duration"),en=document.getElementById("yinyang-spark-duration-value");if(Jt&&en){var tn=n.view.viewInitializer.balanceSparkDurationMs;Jt.value=tn.toString(),en.textContent="".concat((tn/1e3).toFixed(1),"s"),Jt.addEventListener("input",function(e){var t=parseInt(e.target.value,10);en.textContent="".concat((t/1e3).toFixed(1),"s"),n.view.viewInitializer.balanceSparkDurationMs=t})}var nn=document.getElementById("yinyang-spark-yang-color");nn&&(nn.value=n.view.viewInitializer.balanceSparkYangColor,nn.addEventListener("input",function(e){n.view.viewInitializer.balanceSparkYangColor=e.target.value}));var rn=document.getElementById("yinyang-spark-yin-color");rn&&(rn.value=n.view.viewInitializer.balanceSparkYinColor,rn.addEventListener("input",function(e){n.view.viewInitializer.balanceSparkYinColor=e.target.value}));var an=document.getElementById("yinyang-spark-ember-distance"),on=document.getElementById("yinyang-spark-ember-distance-value");if(an&&on){var sn=n.view.viewInitializer.balanceSparkEmberDistance;an.value=sn.toString(),on.textContent=sn.toString(),an.addEventListener("input",function(e){var t=parseFloat(e.target.value);on.textContent=t.toString(),n.view.viewInitializer.balanceSparkEmberDistance=t})}var ln=document.getElementById("yinyang-spark-ember-size"),cn=document.getElementById("yinyang-spark-ember-size-value");if(ln&&cn){var dn=n.view.viewInitializer.balanceSparkEmberSize;ln.value=dn.toString(),cn.textContent=dn.toFixed(1),ln.addEventListener("input",function(e){var t=parseFloat(e.target.value);cn.textContent=t.toFixed(1),n.view.viewInitializer.balanceSparkEmberSize=t})}var un=document.getElementById("yinyang-spark-ember-speed"),pn=document.getElementById("yinyang-spark-ember-speed-value");if(un&&pn){var hn=n.view.viewInitializer.balanceSparkEmberSpeedMs;un.value=hn.toString(),pn.textContent="".concat((hn/1e3).toFixed(2),"s"),un.addEventListener("input",function(e){var t=parseInt(e.target.value,10);pn.textContent="".concat((t/1e3).toFixed(2),"s"),n.view.viewInitializer.balanceSparkEmberSpeedMs=t})}var fn=document.getElementById("yinyang-spark-ember-color");fn&&(fn.value=n.view.viewInitializer.balanceSparkEmberColor,fn.addEventListener("input",function(e){n.view.viewInitializer.balanceSparkEmberColor=e.target.value}));var gn=document.getElementById("yinyang-spark-taper-power"),vn=document.getElementById("yinyang-spark-taper-power-value");if(gn&&vn){var mn=n.view.viewInitializer.balanceSparkTaperPower;gn.value=mn.toString(),vn.textContent=mn.toFixed(1),gn.addEventListener("input",function(e){var t=parseFloat(e.target.value);vn.textContent=t.toFixed(1),n.view.viewInitializer.balanceSparkTaperPower=t})}var yn=document.getElementById("yinyang-spark-birth-width"),bn=document.getElementById("yinyang-spark-birth-width-value");if(yn&&bn){var In=n.view.viewInitializer.balanceSparkBirthWidthRatio;yn.value=In.toString(),bn.textContent=In.toFixed(2),yn.addEventListener("input",function(e){var t=parseFloat(e.target.value);bn.textContent=t.toFixed(2),n.view.viewInitializer.balanceSparkBirthWidthRatio=t})}var Cn=document.getElementById("yinyang-spark-drift-count"),wn=document.getElementById("yinyang-spark-drift-count-value");if(Cn&&wn){var xn=n.view.viewInitializer.balanceSparkDriftFragmentCount;Cn.value=xn.toString(),wn.textContent=xn.toString(),Cn.addEventListener("input",function(e){var t=parseInt(e.target.value,10);wn.textContent=t.toString(),n.view.viewInitializer.balanceSparkDriftFragmentCount=t})}var kn=document.getElementById("yinyang-spark-drift-remnant-scale"),Sn=document.getElementById("yinyang-spark-drift-remnant-scale-value");if(kn&&Sn){var _n=n.view.viewInitializer.balanceSparkDriftRemnantScale;kn.value=_n.toString(),Sn.textContent=_n.toFixed(2),kn.addEventListener("input",function(e){var t=parseFloat(e.target.value);Sn.textContent=t.toFixed(2),n.view.viewInitializer.balanceSparkDriftRemnantScale=t})}var An=document.getElementById("yinyang-spark-drift-centrifugal-force"),En=document.getElementById("yinyang-spark-drift-centrifugal-force-value");if(An&&En){var On=n.view.viewInitializer.balanceSparkDriftCentrifugalForce;An.value=On.toString(),En.textContent=On.toFixed(2),An.addEventListener("input",function(e){var t=parseFloat(e.target.value);En.textContent=t.toFixed(2),n.view.viewInitializer.balanceSparkDriftCentrifugalForce=t})}var Dn=document.getElementById("border-glow-intensity"),Mn=document.getElementById("border-glow-intensity-value");if(Dn&&Mn){var Ln=n.view.viewInitializer.borderGlowIntensity;Dn.value=Ln.toString(),Mn.textContent=Ln.toFixed(2),Dn.addEventListener("input",function(e){var t=parseFloat(e.target.value);Mn.textContent=t.toFixed(2),n.view.viewInitializer.borderGlowIntensity=t,n.view.viewInitializer.redrawBorders()})}var Fn=document.getElementById("border-segment-width-expansion"),Tn=document.getElementById("border-segment-width-expansion-value");if(Fn&&Tn){var Pn=n.view.viewInitializer.borderSegmentWidthExpansion;Fn.value=Pn.toString(),Tn.textContent=Pn.toFixed(2),Fn.addEventListener("input",function(e){var t=parseFloat(e.target.value);Tn.textContent=t.toFixed(2),n.view.viewInitializer.borderSegmentWidthExpansion=t})}var Bn=document.getElementById("border-segment-corner-radius"),Gn=document.getElementById("border-segment-corner-radius-value");if(Bn&&Gn){var Rn=n.view.viewInitializer.borderSegmentCornerRadius;Bn.value=Rn.toString(),Gn.textContent=Rn.toFixed(2),Bn.addEventListener("input",function(e){var t=parseFloat(e.target.value);Gn.textContent=t.toFixed(2),n.view.viewInitializer.borderSegmentCornerRadius=t,n.rebuildBorderSegments()})}var qn=document.getElementById("border-segment-bevel-intensity"),zn=document.getElementById("border-segment-bevel-intensity-value");if(qn&&zn){var Nn=n.view.viewInitializer.borderSegmentBevelIntensity;qn.value=Nn.toString(),zn.textContent=Nn.toFixed(2),qn.addEventListener("input",function(e){var t=parseFloat(e.target.value);zn.textContent=t.toFixed(2),n.view.viewInitializer.borderSegmentBevelIntensity=t,n.rebuildBorderSegments()})}var jn=document.getElementById("border-segment-hover-lift"),Hn=document.getElementById("border-segment-hover-lift-value");if(jn&&Hn){var Kn=n.view.viewInitializer.borderSegmentHoverLift;jn.value=Kn.toString(),Hn.textContent=Kn.toFixed(2),jn.addEventListener("input",function(e){var t=parseFloat(e.target.value);Hn.textContent=t.toFixed(2),n.view.viewInitializer.borderSegmentHoverLift=t})}var Vn=document.getElementById("facette-image-margin"),Yn=document.getElementById("facette-image-margin-value");if(Vn&&Yn){var Wn=n.view.viewInitializer.facetteImageMargin;Vn.value=Wn.toString(),Yn.textContent=Wn.toString(),Vn.addEventListener("input",function(e){var t=parseFloat(e.target.value);Yn.textContent=t.toString(),n.view.viewInitializer.facetteImageMargin=t,n.rebuildFacetteImageRing()})}var Un=document.getElementById("facette-image-fade-start"),Xn=document.getElementById("facette-image-fade-start-value");if(Un&&Xn){var Zn=n.view.viewInitializer.facetteImageFadeStart;Un.value=Zn.toString(),Xn.textContent="".concat(Zn,"%"),Un.addEventListener("input",function(e){var t=parseFloat(e.target.value);Xn.textContent="".concat(t,"%"),n.view.viewInitializer.facetteImageFadeStart=t,n.rebuildFacetteImageRing()})}var Qn=document.getElementById("facette-image-fade-opacity"),$n=document.getElementById("facette-image-fade-opacity-value");if(Qn&&$n){var Jn=n.view.viewInitializer.facetteImageFadeEndOpacity;Qn.value=Jn.toString(),$n.textContent=Jn.toFixed(2),Qn.addEventListener("input",function(e){var t=parseFloat(e.target.value);$n.textContent=t.toFixed(2),n.view.viewInitializer.facetteImageFadeEndOpacity=t,n.rebuildFacetteImageRing()})}var ei=document.getElementById("facette-image-diameter"),ti=document.getElementById("facette-image-diameter-value");if(ei&&ti){var ni=n.view.viewInitializer.facetteImageDiameterScale;ei.value=ni.toString(),ti.textContent=ni.toFixed(2),ei.addEventListener("input",function(e){var t=parseFloat(e.target.value);ti.textContent=t.toFixed(2),n.view.viewInitializer.facetteImageDiameterScale=t,n.rebuildFacetteImageRing()})}var ii=document.getElementById("facette-image-weight-curve"),ri=document.getElementById("facette-image-weight-curve-value");if(ii&&ri){var ai=n.view.viewInitializer.facetteImageWeightCurve;ii.value=ai.toString(),ri.textContent=ai.toFixed(2),ii.addEventListener("input",function(e){var t=parseFloat(e.target.value);ri.textContent=t.toFixed(2),n.view.viewInitializer.facetteImageWeightCurve=t,n.rebuildFacetteImageRing()})}var oi=document.getElementById("facette-image-offset"),si=document.getElementById("facette-image-offset-value");if(oi&&si){var li=n.view.viewInitializer.facetteImageOffset;oi.value=li.toString(),si.textContent=li.toString(),oi.addEventListener("input",function(e){var t=parseFloat(e.target.value);si.textContent=t.toString(),n.view.viewInitializer.facetteImageOffset=t,n.rebuildFacetteImageRing()})}var ci=document.getElementById("odd-chip-zoom"),di=document.getElementById("odd-chip-zoom-value");if(ci&&di){var ui=function(e){di.textContent="".concat(e,"x"),document.documentElement.style.setProperty("--odd-chip-zoom",e.toString())};ui(parseFloat(ci.value)),ci.addEventListener("input",function(e){ui(parseFloat(e.target.value))})}var pi=document.getElementById("snapshot-controls-btn"),hi=document.getElementById("restore-controls-btn"),fi="yinyang_controls_snapshot",gi=function(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)){var n=e[t];if(!t.startsWith("__layout_")&&"toggle-cause-children"!==t&&"base-pulse-enabled"!==t){var i=document.getElementById(t);i&&("checkbox"===i.type?(i.checked=n,i.dispatchEvent(new Event("change",{bubbles:!0}))):"range"!==i.type&&"number"!==i.type&&"SELECT"!==i.tagName||(i.value=String(n),i.dispatchEvent(new Event("input",{bubbles:!0}))))}}"number"==typeof e.__layout_actionStackColumnWidth&&(r.actionStackColumnWidth=e.__layout_actionStackColumnWidth),a()};pi&&pi.addEventListener("click",function(){var e={};document.querySelectorAll("input[type='range'], input[type='checkbox'], select").forEach(function(t){var n=t;n.id&&("checkbox"===n.type?e[n.id]=n.checked:"range"===n.type||"number"===n.type?e[n.id]=parseFloat(n.value):"text"!==n.type&&"SELECT"!==n.tagName||(e[n.id]=n.value))}),e.__layout_actionStackColumnWidth=r.actionStackColumnWidth,localStorage.setItem(fi,JSON.stringify(e)),alert("OK Snapshot sauvegarde (".concat(Object.keys(e).length," controles)"))}),hi&&hi.addEventListener("click",function(){var e=localStorage.getItem(fi);if(e)try{var t=JSON.parse(e);gi(t);var n=Object.keys(t).filter(function(e){return!e.startsWith("__layout_")}).length;alert("OK Snapshot restaure (".concat(n," controles)"))}catch(e){alert("Erreur lors de la restauration du snapshot")}else alert("Aucun snapshot sauvegarde")}),setTimeout(function(){var e=localStorage.getItem(fi);if(e)try{var t=JSON.parse(e);gi(t)}catch(e){console.error("Failed to load stored snapshot:",e)}},100)}},4578(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.YinYangAppFactory=void 0;var o=n(2573),s=n(2535),l=n(4839),c=n(3005),d=n(2892),u=n(4948),p=n(5528),h=n(1067),f=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.idCounter=0,this.graphicsStrategy=t,this.instances=new Map,this.animator=this.createAnimationsManager()},t=[{key:"generateUniqueId",value:function(){return"".concat(this.idCounter++)}},{key:"getInstances",value:function(){return this.instances}},{key:"createModel",value:function(e){var t,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";try{var r=i?null!==(n=null===(t=this.instances.get(i))||void 0===t?void 0:t.generateChildKey())&&void 0!==n?n:"":this.generateUniqueId();return new o.YinYangModel(e,r,i)}catch(e){throw e}}},{key:"createView",value:function(){try{var e=new u.ViewInitializer(this.graphicsStrategy),t=new h.YinYangDrawer(e),n=new d.SpikeDrawer(e),i=new p.BorderDrawer(e);return new s.YinYangView(e,t,n,i)}catch(e){throw e}}},{key:"createController",value:function(e,t){try{return new l.YinYangController(e,t,this)}catch(e){throw e}}},{key:"createAnimationsManager",value:function(){try{return new c.AnimationsMngr}catch(e){throw e}}},{key:"create",value:function(e,t,n){try{var i=this.createModel(e,n),r=this.createView(),a=this.createController(i,r);return r.initialize(a,t,this.instances.get(null!=n?n:"")),this.instances.set(i.key,a),a.InitializeAnimations(),a}catch(e){throw e}}}],t&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.YinYangAppFactory=f},2573(e,t){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}function r(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.YinYangModel=void 0;var a=function(){return e=function e(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.internalModel=t,this.key=n,this.parentKey=i,this.childCounter=0,this.borderNb=2},(t=[{key:"generateChildKey",value:function(){return"".concat(this.key,".").concat(this.childCounter++)}},{key:"resetChildCounter",value:function(){this.childCounter=0}}])&&i(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.YinYangModel=a},3466(e,t){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}function r(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.DiagramPanelBridge=void 0;var a=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.deps=t},(t=[{key:"wire",value:function(){var e,t,n=this,i=this.deps,r=i.panelManager,a=i.controllerCause,o=i.switchToTab,s=i.yasuniCause,l=i.actionNameMap,c=i.causeOddColors;document.addEventListener("mousedown",function(){var e,t,n,i=r.panelSlots.findIndex(function(e){return null==e?void 0:e.locked});r.pendingNavSourceSlot=-1!==i?i:null!==(e=r.masterSlotIdx)&&void 0!==e?e:0,r.diagramNavMasterHistLenAtStart=null!==r.masterSlotIdx&&null!==(n=null===(t=r.panelSlots[r.masterSlotIdx])||void 0===t?void 0:t._history.length)&&void 0!==n?n:-1},{capture:!0}),a.setOnDirectActionBlockPanelB(function(e,t,n,i,a,o){var c;if(r.suppressSatelliteSearchUpdate)r.suppressSatelliteSearchUpdate=!1;else{var d=r.resolveTargetSlot(),u=d.idx,p=d.isLinked,h=d.src,f=r.ensureSlot(u),g=null!==(c=l.get(i))&&void 0!==c?c:i;r.panelSlots[u]&&(r.panelSlots[u]._linkedTitle=p),f.controller.showCuttingActionBlock(e,t,n,i,a,r.wrapAttachHandlersForSlot(o,h));var v=s.findIndex(function(t){return t.id===e});v>=0&&(f.controller.setQuery(""),f.controller.syncTreeOnly({type:"action",componentIndex:v,oddId:t,cuttingIndex:n,actionId:i}));var m=p?"Necessite {badge}":"";r.setPanelTitle(u,m,g,{label:"Action",cssClass:"action-direct"}),p&&r.activateLinkedPanel(u),r.pushHistory(u,r.makeActionRestoreFn(u,e,t,n,i,a,o,h,g,m,p)),!p&&v>=0&&(r.suppressSatelliteSearchUpdate=!0,r.syncDiagramToTarget({type:"action",componentIndex:v,oddId:t,cuttingIndex:n,actionId:i}),r.suppressSatelliteSearchUpdate=!1)}}),a.setOnPropagationBlock(function(e,t,i,a,o,l,d){var u,p,h,f,g,v,m;if(console.log("[HIST] setOnPropagationBlock oddId=".concat(t," cutIdx=").concat(i," suppress=").concat(r.suppressSatelliteSearchUpdate," pendingNavSrc=").concat(r.pendingNavSourceSlot)),r.suppressSatelliteSearchUpdate)r.suppressSatelliteSearchUpdate=!1;else{(null===(u=document.getElementById("ff-tab-stack"))||void 0===u?void 0:u.classList.contains("ff-tab-active"))&&(null===(h=(p=n.deps).onStackPropagationNav)||void 0===h||h.call(p,e,t,i));var y=r.resolveTargetSlot(),b=y.idx,I=y.isLinked,C=y.src;console.log("[HIST] => resolveTargetSlot idx=".concat(b," isLinked=").concat(I," src=").concat(C," histLen=").concat(null===(f=r.panelSlots[b])||void 0===f?void 0:f._history.length));var w=r.ensureSlot(b);r.lastPropagationSlot=b,I&&r.panelSlots[b]&&(r.panelSlots[b]._linkedTitle=!0);var x=s.findIndex(function(t){return t.id===e});if(x>=0&&(w.controller.setQuery(""),w.controller.syncTreeOnly({type:"cutting",componentIndex:x,oddId:t,cuttingIndex:i})),w.controller.showPropagationBlock(e,t,i,a,r.wrapAttachHandlersForSlot(o,C),l),I){var k=null===(m=null===(v=null===(g=s.find(function(t){return t.id===e}))||void 0===g?void 0:g.odds.find(function(e){return e.id===t}))||void 0===v?void 0:v.cuttings[i])||void 0===m?void 0:m.name;r.setPanelTitle(b,k?"Se propage vers":"Recherche",k,k?{label:"Satellite",cssClass:"d3"}:void 0,d,k?c[t]:void 0),r.activateLinkedPanel(b),r.updateStackBadge()}r.suppressSatelliteSearchUpdate||(r.pushHistory(b,r.makePropRestoreFn(b,e,t,i,a,o,C,l,d,I)),r.masterCuttingPending&&!I&&(r.masterCuttingHistoryPushed=!0))}},function(){var e;null===(e=r.panelSlots[r.lastPropagationSlot])||void 0===e||e.controller.clearPropagationBlock(),r.updateStackBadge()}),a.setOnCuttingNavigated(function(e,t,i){var r,a,o;(null===(r=document.getElementById("ff-tab-stack"))||void 0===r?void 0:r.classList.contains("ff-tab-active"))&&(null===(o=(a=n.deps).onStackPropagationNav)||void 0===o||o.call(a,e,t,i))}),r.initMasterAndHeights(),document.querySelectorAll(".ff-subtab-btn").forEach(function(e){e.addEventListener("click",function(){var t=e.dataset.subtab;t&&(document.querySelectorAll(".ff-subtab-btn").forEach(function(t){t.classList.toggle("ff-subtab-active",t===e)}),document.querySelectorAll(".ff-panel-subtab-pane").forEach(function(e){e.classList.toggle("ff-subtab-active",e.id===t)}))})}),a.setOnDiagramActionDragIntent(function(){var e,t,i=document.querySelector('.ff-tab-btn[data-tab="ff-tab-stack"]');i&&!i.classList.contains("ff-tab-active")&&o("ff-tab-stack"),null===(t=(e=n.deps).onDiagramActionDragIntent)||void 0===t||t.call(e)});var d=null;null===(e=document.querySelector('.ff-tab-btn[data-tab="ff-tab-stack"]'))||void 0===e||e.addEventListener("click",function(){var e=document.getElementById("ff-tab-stack");(null==e?void 0:e.classList.contains("ff-tab-active"))||(d=r.getMasterSelectedTarget(),a.syncForceFieldToStackMode())},{capture:!0});var u=!1;null===(t=document.querySelector('.ff-tab-btn[data-tab="ff-tab-recherche"]'))||void 0===t||t.addEventListener("click",function(){var e=document.getElementById("ff-tab-recherche");(null==e?void 0:e.classList.contains("ff-tab-active"))||(a.clearForceFieldForModeSwitch(),u=!0)},{capture:!0}),document.querySelectorAll('.ff-tab-btn[data-tab="ff-tab-stack"], .ff-tab-btn[data-tab="ff-tab-recherche"]').forEach(function(e){e.addEventListener("click",function(){u&&(u=!1,r.resyncDiagramToMasterPanel(d)),a.refreshGhostVisualState(),a.syncEventFieldToCurrentMode()})}),a.setOnDiagramOddChange(function(e,t,n){var i;r.oddNavState={componentIndex:e,oddId:t,mode:n},null===(i=r.getMasterController())||void 0===i||i.syncDiagramOdd(e,t)}),a.setOnDiagramSatelliteDeselect(function(e){var t;null===(t=r.getMasterController())||void 0===t||t.clearDiagramNavSelection(e)}),a.setOnDiagramComposanteDeselect(function(){var e;null===(e=r.getMasterController())||void 0===e||e.resetToSphereView()}),a.setOnDiagramNavChange(function(e){var t,i,s,l,c;if("cutting"===e.type||"action"===e.type?r.oddNavState={componentIndex:e.componentIndex,oddId:e.oddId,mode:"highlight"}:r.oddNavState=null,"cutting"===e.type&&(null===(i=(t=n.deps).onDiagramCuttingNav)||void 0===i||i.call(t,{componentIndex:e.componentIndex,oddId:e.oddId,cuttingIndex:e.cuttingIndex})),"composante"===e.type&&(null===(l=(s=n.deps).onDiagramComposanteNav)||void 0===l||l.call(s,e.componentIndex)),("action"===e.type||"keyEvent"===e.type)&&(null===(c=document.getElementById("ff-tab-stack"))||void 0===c?void 0:c.classList.contains("ff-tab-active"))){o("ff-tab-recherche");var d=r.panelSlots.findIndex(function(e){return e&&!e.locked});r.openPanel(-1===d?0:d,!0),a.syncEventFieldToCurrentMode()}var u=null!==r.masterSlotIdx?r.panelSlots[r.masterSlotIdx]:null;if(null==u||u.controller.syncDiagramNav(e),u&&!u._histNav&&null!==r.masterSlotIdx&&"action"!==e.type&&u._history.length===r.diagramNavMasterHistLenAtStart){var p=e;r.pushHistory(r.masterSlotIdx,function(){u.controller.clearDetailBlocks(),u.controller.syncDiagramNav(p),r.syncDiagramToTarget(p,!0)})}}),a.setOnDiagramChildHover(function(e,t,n){var i,a,o=r.getMasterController();if(null!==e&&null!==t){var l=null!==(a=null===(i=s[e])||void 0===i?void 0:i.id)&&void 0!==a?a:"";null==o||o.setExternalHoverNavKey("cut::".concat(l,"::").concat(t,"::").concat(null!=n?n:0))}else null==o||o.setExternalHoverNavKey(null)}),a.setOnDiagramComposanteHover(function(e){var t,n,i=r.getMasterController();null!==e?null==i||i.setExternalHoverNavKey("comp::".concat(null!==(n=null===(t=s[e])||void 0===t?void 0:t.id)&&void 0!==n?n:"")):null==i||i.setExternalHoverNavKey(null)}),a.setOnDiagramActionHover(function(e,t,n,i){var a,o,l=r.getMasterController();null!==e&&null!==t&&null!==n&&null!==i?null==l||l.setExternalHoverNavKey("act::".concat(null!==(o=null===(a=s[e])||void 0===a?void 0:a.id)&&void 0!==o?o:"","::").concat(t,"::").concat(n,"::").concat(i)):null==l||l.setExternalHoverNavKey(null)}),a.setOnLocateStackItemInSearch(function(e,t,i,l,c){var d,u,p,h,f=s.findIndex(function(t){return t.id===e});if(!(f<0)){var g="keyEvent"===c?{type:"keyEvent",componentIndex:f,keyEventId:l}:{type:"action",componentIndex:f,oddId:t,cuttingIndex:i,actionId:l};if(null===(d=document.getElementById("ff-tab-stack"))||void 0===d?void 0:d.classList.contains("ff-tab-active")){o("ff-tab-recherche");var v=r.panelSlots.findIndex(function(e){return e&&!e.locked});r.openPanel(-1===v?0:v,!0),a.syncEventFieldToCurrentMode()}null===(u=r.getMasterController())||void 0===u||u.syncDiagramNav(g),r.syncDiagramToTarget(g),null===(h=(p=n.deps).onDiagramCuttingNav)||void 0===h||h.call(p,{componentIndex:f,oddId:t,cuttingIndex:i})}}),a.setOnSelectStackItemSatellite(function(e,t,n,i){var r=s.findIndex(function(t){return t.id===e});r<0||(t?a.searchNavigateToCutting(r,t,n,!0):a.searchHandleComposanteClick(r),a.requestScrollToStackItemBlock(i))}),a.setOpenSearchWithQuery(function(e){var t,n=document.querySelector('.ff-tab-btn[data-tab="ff-tab-recherche"]');n&&n.click(),null===(t=r.getMasterController())||void 0===t||t.setQuery(e)}),a.setOnDirectActionBlock(function(e,t,n,i,a,o){var c,d,u,p,h,f,g;if(!r.suppressSatelliteSearchUpdate){var v=null!==(c=r.masterSlotIdx)&&void 0!==c?c:0,m=r.wrapAttachHandlersForSlot(o,v);null===(d=r.getMasterController())||void 0===d||d.showCuttingActionBlock(e,t,n,i,a,m);var y=s.findIndex(function(t){return t.id===e});y>=0&&(null===(u=r.getMasterController())||void 0===u||u.syncTreeOnly({type:"action",componentIndex:y,oddId:t,cuttingIndex:n,actionId:i}));var b=!r.suppressSatelliteSearchUpdate&&!(null===(p=r.panelSlots[v])||void 0===p?void 0:p._histNav);if(console.log("[HIST] setOnDirectActionBlock actionId=".concat(i," idx=").concat(v," suppress=").concat(r.suppressSatelliteSearchUpdate," histNav=").concat(null===(h=r.panelSlots[v])||void 0===h?void 0:h._histNav," => willPush=").concat(b," histLen=").concat(null===(f=r.panelSlots[v])||void 0===f?void 0:f._history.length)),b){var I=null!==(g=l.get(i))&&void 0!==g?g:i;r.pushHistory(v,r.makeActionRestoreFn(v,e,t,n,i,a,o,v,I,"",!1))}r.updateStackBadge()}},function(){var e;r.suppressSatelliteSearchUpdate||(null===(e=r.getMasterController())||void 0===e||e.clearCuttingActionBlock(),r.updateStackBadge())}),a.setOnShowKeyEventBlock(function(e,t,n,i){var a,o;if(!r.suppressSatelliteSearchUpdate){var s=null!==(a=r.masterSlotIdx)&&void 0!==a?a:0,l=r.wrapAttachHandlersForSlot(i,s);null===(o=r.getMasterController())||void 0===o||o.showKeyEventBlock(e,t,n,l),r.updateStackBadge()}},function(){var e;null===(e=r.getMasterController())||void 0===e||e.clearKeyEventBlock(),r.updateStackBadge()}),a.setOnKeyEventMenuStateChange(function(e,t){r.syncKeyEventGroupFromDiagram(e,t)})}}])&&i(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.DiagramPanelBridge=a},4543(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.PanelManager=void 0;var o=n(951),s=n(4468),l=n(6713),c='<svg width="12" height="13" viewBox="0 0 12 13" fill="none" aria-hidden="true">\n <rect x="1.5" y="5" width="9" height="7.5" rx="1.5" stroke="currentColor" stroke-width="1.4"/>\n <path d="M3.5 5V3.5a2.5 2.5 0 0 1 5 0V5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" opacity="0.35"/>\n <circle cx="6" cy="8.75" r="1" fill="currentColor" opacity="0.4"/>\n </svg>',d=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.deps=t,this.panelSlots=[null,null,null,null],this.masterSlotIdx=null,this.suppressSatelliteSearchUpdate=!1,this.pendingNavSourceSlot=0,this.lastPropagationSlot=0,this.masterCuttingPending=!1,this.masterCuttingHistoryPushed=!1,this.diagramNavMasterHistLenAtStart=-1,this.navGen=0,this.oddNavState=null},t=[{key:"init",value:function(){var e=this;this.initPanel1(),this.initPanel2(),this.ensureSlot(2),this.ensureSlot(3),this.panelSlots.forEach(function(t){return t&&e.wireSearchDrag(t.controller)})}},{key:"syncKeyEventGroupFromDiagram",value:function(e,t){var n,i,r=null!==(n=this.masterSlotIdx)&&void 0!==n?n:0;null===(i=this.panelSlots[r])||void 0===i||i.controller.syncKeyEventGroupOpen(e,t)}},{key:"getMasterController",value:function(){var e,t;return null!==this.masterSlotIdx&&null!==(t=null===(e=this.panelSlots[this.masterSlotIdx])||void 0===e?void 0:e.controller)&&void 0!==t?t:null}},{key:"findNextUnlocked",value:function(e){for(var t=e+1;t<4;t++){var n=this.panelSlots[t];if(n&&!n.locked)return t}return null}},{key:"setPanelTitle",value:function(e,t,n,i,r,a,o,s,c){var d=this.panelSlots[e];if(d){if(!n)return d.titleEl.textContent=0===e?t||"Recherche":"Naviguez pour comparer",void d.titleEl.classList.toggle("gs-context-title--empty",e>0);d.titleEl.classList.remove("gs-context-title--empty");var u="".concat(a?(0,l.buildOddDotHtml)(a)+" ":"").concat(c?(0,l.buildItemIconHtml)(c,"keyevent"===(null==i?void 0:i.cssClass))+" ":""),p=i?(0,l.buildHierBadgeHtml)(i):"",h=i&&t.includes("{badge}")?t.replace("{badge}",p+" "):t+(p?" ".concat(p):""),f=(0,l.buildSelectedStateWeightChipsHtml)({stateValue:o,weightValue:s}),g="".concat(u).concat(h,' <span class="gs-context-title-name">').concat(n,"</span>").concat(f?" ".concat(f):"");r&&(g+=' <span class="gs-context-title-rationale">'.concat(r,"</span>")),d.titleEl.innerHTML=g}}},{key:"redistributeOpenHeights",value:function(e){var t,n=null===(t=this.panelSlots[0])||void 0===t?void 0:t.panelEl.parentElement;if(n){var i=this.panelSlots.filter(function(e){return null!==e}),r=i.filter(function(t,n){return!t.collapsed||n===e});if(0!==r.length){var a=i.filter(function(t,n){return t.collapsed&&n!==e}).length,o=12*Math.max(0,i.length-1),s=Math.max(0,n.offsetHeight-36*a-o),l=Math.max(200,Math.floor(s/r.length));r.forEach(function(e){e._openHeight=l,e.collapsed||(e.panelEl.style.height="".concat(l,"px"))})}}}},{key:"setPanelCollapsed",value:function(e,t){var n=this.panelSlots[e];if(n)if(n.collapsed=t,t){n.panelEl.style.height="".concat(n.panelEl.offsetHeight,"px"),n.panelEl.offsetHeight,n.panelEl.classList.add("gs-recherche-context-panel--collapsed");var i=function(){return n.panelEl.style.height=""};n.panelEl.addEventListener("transitionend",i,{once:!0}),setTimeout(i,300)}else n.panelEl.style.height="36px",n.panelEl.classList.remove("gs-recherche-context-panel--collapsed"),n.panelEl.offsetHeight,n.panelEl.style.height="".concat(n._openHeight||200,"px")}},{key:"updateLockButton",value:function(e){var t=this.panelSlots[e];t&&(t.lockEl.disabled=t.isMaster&&null===this.findNextUnlocked(e),t.lockEl.classList.toggle("gs-panel-lock-btn--locked",t.locked),t.lockEl.setAttribute("aria-pressed",String(t.locked)),t.lockEl.title=t.locked?"Déverrouiller le panneau":"Verrouiller le panneau",t.lockEl.innerHTML=t.locked?'<svg width="12" height="13" viewBox="0 0 12 13" fill="none" aria-hidden="true">\n <rect x="1.5" y="5" width="9" height="7.5" rx="1.5" stroke="currentColor" stroke-width="1.4"/>\n <path d="M3.5 5V3.5a2.5 2.5 0 0 1 5 0V5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/>\n <circle cx="6" cy="8.75" r="1" fill="currentColor"/>\n </svg>':c)}},{key:"getMasterSelectedTarget",value:function(){var e,t;return null===this.masterSlotIdx?null:null!==(t=null===(e=this.panelSlots[this.masterSlotIdx])||void 0===e?void 0:e.controller.getSelectedTarget())&&void 0!==t?t:null}},{key:"resyncDiagramToMasterPanel",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(null!==this.masterSlotIdx){var t=this.panelSlots[this.masterSlotIdx];if(t){var n=function(e){return null!==e&&("action"===e.type||"keyEvent"===e.type||"cutting"===e.type)},i=t.controller.getSelectedTarget(),r=n(i)?i:n(e)?e:null;if(r){r!==i&&t.controller.syncDiagramNav(r);var a=this.deps.controllerCause;switch(r.type){case"action":a.restoreActionDiagramState(r.componentIndex,r.oddId,r.cuttingIndex,r.actionId);break;case"keyEvent":a.restoreKeyEventDiagramState(r.keyEventId);break;case"cutting":this.suppressSatelliteSearchUpdate=!0,this.syncDiagramToTarget(r,!0),this.suppressSatelliteSearchUpdate=!1}}}}}},{key:"syncDiagramToTarget",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.deps,r=i.controllerCause,a=i.yasuniCause;switch(e.type){case"composante":this.oddNavState=null,r.searchHandleComposanteClick(e.componentIndex);break;case"odd":this.oddNavState=null,r.searchHandleOddArcClick(e.componentIndex,e.oddId);break;case"cutting":this.oddNavState={componentIndex:e.componentIndex,oddId:e.oddId,mode:"highlight"};var o=null===(t=a[e.componentIndex])||void 0===t?void 0:t.id;o&&r.showPropagationForContextCutting(o,e.oddId,e.cuttingIndex)||r.searchNavigateToCutting(e.componentIndex,e.oddId,e.cuttingIndex,n);break;case"action":this.oddNavState=null,r.searchNavigateToAction(e.componentIndex,e.oddId,e.cuttingIndex,e.actionId);break;case"keyEvent":this.oddNavState=null,r.searchNavigateToKeyEvent(e.keyEventId)}}},{key:"setMaster",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(null!==this.masterSlotIdx){var i=this.panelSlots[this.masterSlotIdx];i&&(i.isMaster=!1,i.panelEl.classList.remove("gs-recherche-context-panel--master"),this.updateLockButton(this.masterSlotIdx))}if(this.masterSlotIdx=e,null!==e){var r=this.panelSlots[e];if(r&&(r.isMaster=!0,r.panelEl.classList.add("gs-recherche-context-panel--master"),this.updateLockButton(e),r.collapsed&&!n&&(this.redistributeOpenHeights(e),this.setPanelCollapsed(e,!1)),!t)){var a=r.controller.getSelectedTarget();a&&(this.suppressSatelliteSearchUpdate=!0,this.syncDiagramToTarget(a,!0),this.suppressSatelliteSearchUpdate=!1)}}}},{key:"setPanelLocked",value:function(e,t){var n=this.panelSlots[e];n&&(n.locked=t,n.controller.setLocked(t),n.panelEl.classList.toggle("gs-recherche-context-panel--locked",t),this.updateLockButton(e))}},{key:"openPanel",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.panelSlots.forEach(function(n,i){i===e||!n||n.locked||n.collapsed||t.setPanelCollapsed(i,!0)}),this.redistributeOpenHeights(e),this.setPanelCollapsed(e,!1),this.setMaster(e,n)}},{key:"closePanel",value:function(e){if(this.setPanelCollapsed(e,!0),this.masterSlotIdx===e){var t=this.panelSlots.findIndex(function(t,n){return n!==e&&t&&!t.locked&&!t.collapsed});this.setMaster(-1!==t?t:this.findNextUnlocked(e),!1,!0)}this.redistributeOpenHeights()}},{key:"activateLinkedPanel",value:function(e){var t=this;this.panelSlots.forEach(function(n,i){i===e||!n||n.locked||n.collapsed||t.setPanelCollapsed(i,!0)}),this.redistributeOpenHeights(e),this.setPanelCollapsed(e,!1)}},{key:"resolveTargetSlot",value:function(){var e=this.pendingNavSourceSlot,t=this.panelSlots[e];if(null==t?void 0:t.locked){var n=this.findNextUnlocked(e);if(null!==n)return{idx:n,isLinked:!0,src:e}}return{idx:e,isLinked:!1,src:e}}},{key:"wrapAttachHandlersForSlot",value:function(e,t){var n=this;return function(i){i.addEventListener("mousedown",function(){n.pendingNavSourceSlot=t},{capture:!0}),e(i)}}},{key:"wireSlotNavigation",value:function(e){var t=this,n=this.panelSlots[e];if(n){var i=this.deps,r=i.controllerCause,a=i.yasuniCause,o=i.actionNameMap;n.controller.setOnNavigate(function(i){var s,l,c;if(t.pendingNavSourceSlot=e,t.panelSlots[e]&&(t.panelSlots[e]._linkedTitle=!1),n.isMaster){console.log("[HIST] onNavigate master slot=".concat(e," type=").concat(i.type),i);var d=i;"cutting"===i.type?(t.masterCuttingPending=!0,t.masterCuttingHistoryPushed=!1,t.syncDiagramToTarget(i),t.masterCuttingPending=!1,n.controller.syncDiagramNav(i),console.log("[HIST] après syncDiagramToTarget cutting => masterCuttingHistoryPushed=".concat(t.masterCuttingHistoryPushed," history len=").concat(null===(s=t.panelSlots[e])||void 0===s?void 0:s._history.length)),t.masterCuttingHistoryPushed||t.pushHistory(e,function(){t.panelSlots[e]&&(t.panelSlots[e]._linkedTitle=!1),n.controller.clearDetailBlocks(),n.controller.syncDiagramNav(d),t.suppressSatelliteSearchUpdate=!0,t.syncDiagramToTarget(d,!0),t.suppressSatelliteSearchUpdate=!1})):(t.syncDiagramToTarget(i),"action"!==i.type&&(n.controller.syncDiagramNav(i),"composante"!==i.type&&t.pushHistory(e,function(){t.panelSlots[e]&&(t.panelSlots[e]._linkedTitle=!1),n.controller.clearDetailBlocks(),n.controller.syncDiagramNav(d),t.syncDiagramToTarget(d,!0)})))}else if("action"===i.type){var u=null===(l=a[i.componentIndex])||void 0===l?void 0:l.id;if(!u)return;r.buildDirectActionBlockForContext(u,i.oddId,i.cuttingIndex,i.actionId,function(e,n,i,r,a,s){var l,c=t.resolveTargetSlot(),d=c.idx,u=c.isLinked,p=c.src,h=t.ensureSlot(d),f=null!==(l=o.get(r))&&void 0!==l?l:r;u&&t.setPanelTitle(d,"{badge} directe",f,{label:"Action",cssClass:"action-direct"}),h.controller.showCuttingActionBlock(e,n,i,r,a,t.wrapAttachHandlersForSlot(s,p)),u&&t.activateLinkedPanel(d),t.pushHistory(d,t.makeActionRestoreFn(d,e,n,i,r,a,s,p,f,u?"{badge} directe":"",u))})}else if("cutting"===i.type){var p=null===(c=a[i.componentIndex])||void 0===c?void 0:c.id;if(!p)return;r.showPropagationForContextCutting(p,i.oddId,i.cuttingIndex)}}),n.controller.setOnKeyEventGroupToggle(function(i,a){(n.isMaster||null===t.masterSlotIdx)&&(t.pendingNavSourceSlot=e,r.searchSetKeyEventMenuOpen(i,a))}),n.controller.setOnDeselect(function(e){"composante"===e.type?r.deactivateComposanteFromHierarchy():r.deactivateChildMenuFromHierarchy()})}}},{key:"buildContextPanelDOM",value:function(e){var t=document.querySelector("#ff-tab-recherche .gs-search-stack"),n=document.createElement("div");n.className="layout-resizer layout-resizer-horizontal layout-resizer-recherche-context",t.appendChild(n);var i=document.createElement("span");i.textContent="Naviguez pour comparer",i.classList.add("gs-context-title--empty");var r=document.createElement("button");r.className="gs-panel-lock-btn",r.type="button",r.setAttribute("aria-pressed","false"),r.innerHTML=c,r.title="Verrouiller le panneau";var a=document.createElement("button");a.className="gs-panel-nav-btn",a.type="button",a.setAttribute("aria-label","Retour"),a.innerHTML='<svg width="10" height="10" viewBox="0 0 10 10" fill="none" aria-hidden="true"><path d="M6.5 2L3 5l3.5 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>',a.disabled=!0;var o=document.createElement("button");o.className="gs-panel-nav-btn",o.type="button",o.setAttribute("aria-label","Suivant"),o.innerHTML='<svg width="10" height="10" viewBox="0 0 10 10" fill="none" aria-hidden="true"><path d="M3.5 2L7 5l-3.5 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>',o.disabled=!0;var s=document.createElement("div");s.className="gs-recherche-context-header-actions",s.append(a,o,r);var l=document.createElement("div");l.className="gs-recherche-context-header",l.appendChild(i),l.appendChild(s);var d="global-search-widget-context".concat(e),u="gs-recherche-right-context".concat(e),p=Object.assign(document.createElement("input"),{id:"global-search-input-context".concat(e),className:"gs-search-input",type:"text",placeholder:"Bloc contextuel…",autocomplete:"off",spellcheck:!1}),h=Object.assign(document.createElement("button"),{id:"global-search-clear-context".concat(e),className:"gs-search-clear",textContent:"×"});h.setAttribute("aria-label","Effacer");var f=document.createElement("div");f.className="gs-search-wrap",f.append(p,h);var g=Object.assign(document.createElement("ul"),{id:"global-search-results-context".concat(e),className:"gs-search-results"}),v=Object.assign(document.createElement("div"),{id:d,className:"gs-search-widget"});v.append(f,g);var m=document.createElement("div");m.className="gs-recherche-left",m.appendChild(v);var y=Object.assign(document.createElement("div"),{className:"gs-detail-placeholder",textContent:"Aucun bloc contextuel affiché"}),b=Object.assign(document.createElement("div"),{className:"gs-recherche-right",id:u});b.appendChild(y);var I=document.createElement("div");I.className="gs-recherche-layout gs-recherche-layout--context",I.append(m,b);var C=document.createElement("div");return C.className="gs-recherche-context-panel gs-recherche-context-panel--collapsed",C.append(l,I),t.appendChild(C),{panelEl:C,headerEl:l,titleEl:i,lockEl:r,backEl:a,forwardEl:o,resizerEl:n,widgetId:d,detailId:u}}},{key:"ensureSlot",value:function(e){var t,n=this;if(this.panelSlots[e])return this.panelSlots[e];var i=this.buildContextPanelDOM(null!==(t=["","","-p3","-p4"][e])&&void 0!==t?t:"-p".concat(e+1)),r=new o.GlobalSearchController({onNavigate:function(){},alwaysShowDesc:!0});r.mount(i.widgetId),r.setDetailPanel(document.getElementById(i.detailId)),this.wireSearchDrag(r),this.deps.attachAxisResizer(i.resizerEl,"y","row-resize",function(){return n.deps.layoutState.rechercheContextHeight},function(e){return n.deps.applyRechercheContextHeight(e)});var a={controller:r,panelEl:i.panelEl,headerEl:i.headerEl,titleEl:i.titleEl,lockEl:i.lockEl,backEl:i.backEl,forwardEl:i.forwardEl,resizerEl:i.resizerEl,collapsed:!0,locked:!1,isMaster:!1,_openHeight:0,_linkedTitle:!1,_history:[],_histIdx:-1,_histNav:!1};return this.panelSlots[e]=a,r.setOnTitleUpdate(function(t,i,r,a,o,s){var l,c;(null===(l=n.panelSlots[e])||void 0===l?void 0:l.isMaster)&&((null===(c=n.panelSlots[e])||void 0===c?void 0:c._linkedTitle)||i&&n.setPanelTitle(e,"",i,t,void 0,r,a,o,s))}),this.wireSlotInteraction(e),this.wireSlotNavigation(e),a}},{key:"pushHistory",value:function(e,t){var n,i,r=this.panelSlots[e];if(r&&!r._histNav){r._history.splice(r._histIdx+1),r._history.push(t),r._history.length>30&&r._history.shift(),r._histIdx=r._history.length-1,this.updateHistoryBtns(e);var a=null!==(i=null===(n=(new Error).stack)||void 0===n?void 0:n.split("\n").slice(2,5).map(function(e){return e.trim()}).join(" <- "))&&void 0!==i?i:"";console.log("[HIST] pushHistory slot=".concat(e," => len=").concat(r._history.length," idx=").concat(r._histIdx," | ").concat(a))}else console.log("[HIST] pushHistory slot=".concat(e," BLOQUE (slot=").concat(!!r," _histNav=").concat(null==r?void 0:r._histNav,")"))}},{key:"updateHistoryBtns",value:function(e){var t=this.panelSlots[e];t&&(t.backEl&&(t.backEl.disabled=t._histIdx<=0),t.forwardEl&&(t.forwardEl.disabled=t._histIdx>=t._history.length-1))}},{key:"replayHistoryEntry",value:function(e,t){var n=this,i=function(){if(t===n.navGen){var r=n.panelSlots[e];r&&(n.deps.controllerCause.view.viewInitializer.isComponentSwitching()?window.setTimeout(i,60):(r._histNav=!0,r._history[r._histIdx](),r._histNav=!1))}};i()}},{key:"historyBack",value:function(e){var t=this.panelSlots[e];!t||t._histIdx<=0||(t._histIdx--,this.updateHistoryBtns(e),this.replayHistoryEntry(e,++this.navGen))}},{key:"historyForward",value:function(e){var t=this.panelSlots[e];!t||t._histIdx>=t._history.length-1||(t._histIdx++,this.updateHistoryBtns(e),this.replayHistoryEntry(e,++this.navGen))}},{key:"makeActionRestoreFn",value:function(e,t,n,i,r,a,o,s,l){var c=this,d=arguments.length>9&&void 0!==arguments[9]?arguments[9]:"Necessite {badge}",u=!(arguments.length>10&&void 0!==arguments[10])||arguments[10],p=this.deps,h=p.yasuniCause,f=p.controllerCause,g=h.findIndex(function(e){return e.id===t});return function(){var p=c.panelSlots[e];p&&(c.panelSlots[e]&&(c.panelSlots[e]._linkedTitle=u),p.controller.showCuttingActionBlock(t,n,i,r,a,c.wrapAttachHandlersForSlot(o,s)),g>=0&&(p.controller.setQuery(""),p.controller.syncTreeOnly({type:"action",componentIndex:g,oddId:n,cuttingIndex:i,actionId:r})),c.setPanelTitle(e,d,l,{label:"Action",cssClass:"action-direct"}),!u&&g>=0&&f.restoreActionDiagramState(g,n,i,r))}}},{key:"makePropRestoreFn",value:function(e,t,n,i,r,a,o,l,c,d){var u=this,p=this.deps.yasuniCause,h=p.findIndex(function(e){return e.id===t});return function(){var f,g,v,m=u.panelSlots[e];if(m)if(u.panelSlots[e]&&(u.panelSlots[e]._linkedTitle=d),h>=0&&(m.controller.setQuery(""),m.controller.syncTreeOnly({type:"cutting",componentIndex:h,oddId:n,cuttingIndex:i})),m.controller.showPropagationBlock(t,n,i,r,u.wrapAttachHandlersForSlot(a,o),l),d){var y=null===(v=null===(g=null===(f=p.find(function(e){return e.id===t}))||void 0===f?void 0:f.odds.find(function(e){return e.id===n}))||void 0===g?void 0:g.cuttings[i])||void 0===v?void 0:v.name;u.setPanelTitle(e,y?"Se propage vers":"Recherche",y,y?{label:"Satellite",cssClass:"d3"}:void 0,c,y?s.causeOddColors[n]:void 0)}else h>=0&&(u.suppressSatelliteSearchUpdate=!0,u.syncDiagramToTarget({type:"cutting",componentIndex:h,oddId:n,cuttingIndex:i},!0),u.suppressSatelliteSearchUpdate=!1)}}},{key:"wireSlotInteraction",value:function(e){var t,n,i=this,r=this.panelSlots[e];r.headerEl.addEventListener("click",function(t){t.target.closest(".gs-panel-lock-btn, .gs-panel-nav-btn")||(r.collapsed?i.openPanel(e):i.closePanel(e))}),r.lockEl.addEventListener("click",function(t){t.stopPropagation(),r.locked?(i.setPanelLocked(e,!1),i.setMaster(e,!0)):(i.setPanelLocked(e,!0),i.setMaster(i.findNextUnlocked(e)))}),null===(t=r.backEl)||void 0===t||t.addEventListener("click",function(t){t.stopPropagation(),i.historyBack(e)}),null===(n=r.forwardEl)||void 0===n||n.addEventListener("click",function(t){t.stopPropagation(),i.historyForward(e)})}},{key:"initPanel1",value:function(){var e=this,t=this.deps.globalSearch,n={controller:t,panelEl:document.getElementById("gs-recherche-panel-1"),headerEl:document.getElementById("gs-recherche-panel1-header"),titleEl:document.getElementById("gs-recherche-panel1-title"),lockEl:document.getElementById("lock-recherche-panel1"),backEl:document.getElementById("nav-back-panel1"),forwardEl:document.getElementById("nav-fwd-panel1"),resizerEl:document.createElement("div"),collapsed:!1,locked:!1,isMaster:!1,_openHeight:0,_linkedTitle:!1,_history:[],_histIdx:-1,_histNav:!1};this.panelSlots[0]=n,t.setOnTitleUpdate(function(t,n,i,r,a,o){var s;(null===(s=e.panelSlots[0])||void 0===s?void 0:s._linkedTitle)||n&&e.setPanelTitle(0,"",n,t,void 0,i,r,a,o)}),this.wireSlotInteraction(0),this.wireSlotNavigation(0),requestAnimationFrame(function(){var t=e.panelSlots[0];if(t&&!(t._history.length>0)){var n=t.controller.getSelectedTarget();n&&e.pushHistory(0,function(){e.panelSlots[0]&&(e.panelSlots[0]._linkedTitle=!1),e.panelSlots[0].controller.clearDetailBlocks(),e.panelSlots[0].controller.syncDiagramNav(n),e.syncDiagramToTarget(n,!0)})}})}},{key:"initPanel2",value:function(){var e=this,t=this.deps,n=t.resizerRechercheContext,i=t.attachAxisResizer,r=t.layoutState,a=t.applyRechercheContextHeight,s=new o.GlobalSearchController({onNavigate:function(){},alwaysShowDesc:!0});s.mount("global-search-widget-context"),s.setDetailPanel(document.getElementById("gs-recherche-right-context"));var l={controller:s,panelEl:document.getElementById("gs-recherche-context-panel"),headerEl:document.querySelector("#gs-recherche-context-panel .gs-recherche-context-header"),titleEl:document.getElementById("gs-recherche-context-title"),lockEl:document.getElementById("lock-recherche-context-panel"),backEl:document.getElementById("nav-back-panel2"),forwardEl:document.getElementById("nav-fwd-panel2"),resizerEl:n,collapsed:!0,locked:!1,isMaster:!1,_openHeight:0,_linkedTitle:!1,_history:[],_histIdx:-1,_histNav:!1};this.panelSlots[1]=l,s.setOnTitleUpdate(function(t,n,i,r,a,o){var s,l;(null===(s=e.panelSlots[1])||void 0===s?void 0:s.isMaster)&&((null===(l=e.panelSlots[1])||void 0===l?void 0:l._linkedTitle)||n&&e.setPanelTitle(1,"",n,t,void 0,i,r,a,o))}),i(n,"y","row-resize",function(){return r.rechercheContextHeight},function(e){return a(e)}),this.wireSlotInteraction(1),this.wireSlotNavigation(1)}},{key:"updateStackBadge",value:function(){var e=document.getElementById("ff-stack-badge"),t=document.getElementById("force-field-details-cause");if(e&&t){var n=null!==t.querySelector(".force-field-detail-empty")&&t.children.length<=1;e.hidden=n}}},{key:"wireSearchDrag",value:function(e){var t=this.deps,n=t.controllerCause,i=t.switchToTab;e.setOnActionDragStart(function(e,t,r,a,o,s,l){n.startSearchActionDrag(e,t,r,a,o,s,l,function(){return i("ff-tab-stack")})}),e.setOnKeyEventDragStart(function(e,t,r,a,o){n.startSearchKeyEventDrag(e,t,r,a,o,function(){return i("ff-tab-stack")})})}},{key:"initMasterAndHeights",value:function(){var e=this;this.setMaster(0),requestAnimationFrame(function(){e.redistributeOpenHeights();var t=e.panelSlots[0];t&&(t.panelEl.style.height="".concat(t._openHeight,"px"))}),window.addEventListener("resize",function(){e.redistributeOpenHeights()})}}],t&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.PanelManager=d},951(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(e,t)||c(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e){return function(e){if(Array.isArray(e))return d(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,s(i.key),i)}}function s(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}function l(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=c(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw a}}}}function c(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}Object.defineProperty(t,"__esModule",{value:!0}),t.GlobalSearchController=void 0;var u=n(14),p=n(6982),h=n(5463),f=n(6049),g=n(4468),v=n(996),m=n(8214),y=n(1204),b=n(6713),I=n(2823),C=n(9366);function w(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function x(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?"".concat(parseInt(t[1],16),", ").concat(parseInt(t[2],16),", ").concat(parseInt(t[3],16)):"58, 122, 191"}function k(e){var t;return null!==(t=g.causeOddColors[e])&&void 0!==t?t:"#3a7abf"}var S=function(){var e,t=new Map,n=l(h.yasuniKeyEvents);try{for(n.s();!(e=n.n()).done;){var i=e.value,r=t.get(i.originComposanteId);r?r.push(i):t.set(i.originComposanteId,[i])}}catch(e){n.e(e)}finally{n.f()}return t}(),_=new Map(u.yasuniCause.map(function(e){return[e.id,e.odds.reduce(function(e,t){return e+t.cuttings.length},0)]})),A=function(){return e=function e(t){var n,i,r,a=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.inputEl=null,this.listEl=null,this.clearBtn=null,this.activeIndex=-1,this.currentResults=[],this._activeItemEl=null,this._inputDebounceTimer=null,this._filteredTreeMode=!1,this.openComposanteId=null,this.openOddKey=null,this.openCuttingKey=null,this.openEvtGroupId=null,this._amplifierKeyEventId=null,this.expandedDescId=null,this.selectedNavKey=null,this._currentImpactBlock=null,this._navigationLocked=!1,this._impactBlockLocked=!1,this._impactBlockHidden=!1,this._currentKeyEventBlock=null,this._currentPropagationBlock=null,this._detailPanelEl=null,this._sphereName="",this._sphereDescription="",this._browseContainer=null,this._compWrappers=new Map,this._compToggles=new Map,this._oddWrappers=new Map,this._oddToggles=new Map,this._cutWrappers=new Map,this._cutToggles=new Map,this._evtGroupWrappers=new Map,this._evtGroupToggles=new Map,this._navRows=new Map,this._descWrappers=new Map,this._descBtns=new Map,this._onOddLegendActiveChangeCb=null,this._externalHoverNavKey=null,this.options=Object.assign({maxResults:500,contextMode:!1,alwaysShowDesc:!1},t),this._contextMode=null!==(n=t.contextMode)&&void 0!==n&&n,this.index=(i=new Map(p.yasuniActions.map(function(e){return[e.id,e]})),r=[],u.yasuniCause.forEach(function(e,t){e.odds.forEach(function(n){n.cuttings.forEach(function(a,o){a.actionIds.forEach(function(s){var l=i.get(s);l&&!(0,p.isAdverseAction)(l)&&r.push({componentId:e.id,componentIndex:t,componentName:e.name,oddId:n.id,oddName:n.name,cuttingId:a.id,cuttingIndex:o,cuttingName:a.name,actionId:l.id,actionName:l.name})})})})}),r),this.actionMap=new Map(p.yasuniActions.map(function(e){return[e.id,e]})),this.oddRgbCache=new Map,u.yasuniCause.forEach(function(e){e.odds.forEach(function(e){var t;if(!a.oddRgbCache.has(e.id)){var n=null!==(t=g.causeOddColors[e.id])&&void 0!==t?t:"#3a7abf";a.oddRgbCache.set(e.id,{hex:n,rgb:x(n)})}})}),this.compIdToIndex=new Map(u.yasuniCause.map(function(e,t){return[e.id,t]}))},t=[{key:"setSphereInfo",value:function(e,t){this._sphereName=e,this._sphereDescription=t,this._syncPlaceholder()}},{key:"mount",value:function(e){var t,n=this,i="string"==typeof e?document.getElementById(e):e;i&&(this.inputEl=i.querySelector(".gs-search-input"),this.listEl=i.querySelector(".gs-search-results"),this.clearBtn=i.querySelector(".gs-search-clear"),this.listEl&&(this.inputEl&&(this.inputEl.addEventListener("input",function(){return n.debouncedHandleInput()}),this.inputEl.addEventListener("keydown",function(e){return n.handleKeyDown(e)})),this._contextMode||null===(t=this.clearBtn)||void 0===t||t.addEventListener("click",function(){var e;n.inputEl&&(n.inputEl.value=""),null===(e=n.inputEl)||void 0===e||e.focus(),n.expandedDescId=null,n.currentResults=[],n._activeItemEl=null,n.activeIndex=-1,n._filteredTreeMode=!1,n.syncClearBtn(),n.renderTree()}),this.setupDelegatedListeners(),this._contextMode?this.renderContextEmptyState():this.handleInput()))}},{key:"searchKeyEvents",value:function(e){var t=e.trim().toLowerCase(),n=new Map;if(0===t.length)return n;var i,r=t.split(/\s+/),a=l(h.yasuniKeyEvents);try{var o=function(){var e=i.value,t="".concat(e.name," ").concat(e.shortDescription).toLowerCase();if(!r.every(function(e){return t.includes(e)}))return 1;var a=n.get(e.originComposanteId);a?a.push(e):n.set(e.originComposanteId,[e])};for(a.s();!(i=a.n()).done;)o()}catch(e){a.e(e)}finally{a.f()}return n}},{key:"search",value:function(e){var t=e.trim().toLowerCase();if(0===t.length)return this.index.slice(0,this.options.maxResults);var n=t.split(/\s+/);return this.index.filter(function(e){var t="".concat(e.cuttingName," ").concat(e.actionName," ").concat(e.actionId," ").concat(e.componentName," ").concat(e.oddName).toLowerCase();return n.every(function(e){return t.includes(e)})}).slice(0,this.options.maxResults)}},{key:"handleInput",value:function(){var e,t,n=null!==(t=null===(e=this.inputEl)||void 0===e?void 0:e.value)&&void 0!==t?t:"";this.syncClearBtn(),this.expandedDescId=null,0===n.trim().length?(this.currentResults=[],this.activeIndex=-1,this._filteredTreeMode=!1,this.renderTree()):(this.currentResults=this.search(n),this.activeIndex=-1,this._filteredTreeMode=!0,this.renderFilteredTree(n))}},{key:"handleKeyDown",value:function(e){if(this.listEl){if("Escape"===e.key)return this.inputEl&&(this.inputEl.value=""),this.expandedDescId=null,this.currentResults=[],this._activeItemEl=null,this.activeIndex=-1,this._filteredTreeMode=!1,this.syncClearBtn(),void this.renderTree();if(0!==this.currentResults.length&&!this._filteredTreeMode)if("ArrowDown"===e.key)e.preventDefault(),this.activeIndex=Math.min(this.activeIndex+1,this.currentResults.length-1),this.updateActiveItem();else if("ArrowUp"===e.key)e.preventDefault(),this.activeIndex=Math.max(this.activeIndex-1,0),this.updateActiveItem();else if("Enter"===e.key){e.preventDefault();var t=this.activeIndex>=0?this.activeIndex:0,n=this.currentResults[t];n&&this.emitNav({type:"action",componentIndex:n.componentIndex,oddId:n.oddId,cuttingIndex:n.cuttingIndex,actionId:n.actionId})}}}},{key:"debouncedHandleInput",value:function(){var e=this;null!==this._inputDebounceTimer&&clearTimeout(this._inputDebounceTimer),this._inputDebounceTimer=setTimeout(function(){e._inputDebounceTimer=null,e.handleInput()},160)}},{key:"setupDelegatedListeners",value:function(){var e=this;this.listEl&&(this.listEl.addEventListener("click",function(t){var n,i,r,a,o,s,l,c,d,u,p,h=t.target,f=h.closest("[data-desc-btn]");if(f){t.stopPropagation();var g=f.dataset.descBtn;g&&e.toggleDesc(g)}else{var v=h.closest("[data-odd-dot]");if(v){t.stopPropagation();var m="odd::".concat(v.dataset.oddDot),y=e._decodeNavKey(m);y&&e.emitNav(y)}else{var b=h.closest(".gs-tree-row--evtgroup");if(b){t.stopPropagation();var I=null===(n=b.querySelector("[data-toggle-evtgroup]"))||void 0===n?void 0:n.dataset.toggleEvtgroup;I&&e.toggleEvtGroup(I)}else{var C=h.closest(".gs-tree-row--composante, .gs-tree-row--odd, .gs-tree-row--cutting, .gs-tree-row--keyevent");if(C){t.stopPropagation();var w=C.querySelector("[data-toggle-comp],[data-toggle-odd],[data-toggle-cut]"),x=null;if(w){var k=null!==(r=null!==(i=w.dataset.toggleComp)&&void 0!==i?i:w.dataset.toggleOdd)&&void 0!==r?r:w.dataset.toggleCut;k&&(void 0!==w.dataset.toggleComp?e.toggleComposante(k)&&(x=k):void 0!==w.dataset.toggleOdd?e.toggleOdd(k):e.toggleCutting(k))}if(null!==x){var S=e.compIdToIndex.get(x);return void 0!==S&&(null===(o=(a=e.options).onDeselect)||void 0===o||o.call(a,{type:"composante",componentIndex:S})),void e.resetToSphereView()}if(C.dataset.navKey){var _=e._decodeNavKey(C.dataset.navKey);if(_)if(e.navKeyFromTarget(_)===e.selectedNavKey){if("composante"===_.type)return null===(l=(s=e.options).onDeselect)||void 0===l||l.call(s,_),void e.resetToSphereView();e.setSelectedNavKey(null),e._detailPanelEl&&(null===(c=e._detailPanelEl.querySelector("[data-detail-desc]"))||void 0===c||c.remove(),e._syncPlaceholder()),null===(u=(d=e.options).onDeselect)||void 0===u||u.call(d,_)}else e.emitNav(_)}}else{var A=h.closest(".gs-tree-row--action");if(A&&!h.closest("button")){var E=e._decodeNavKey(null!==(p=A.dataset.navKey)&&void 0!==p?p:"");E&&e.emitNav(E)}}}}}}),this.listEl.addEventListener("pointerdown",function(t){var n,i,r=t.target;if(!r.closest("button")){var a=r.closest(".gs-tree-row--action");if(a){if(!e.onActionDragStart)return;var o=e._decodeNavKey(null!==(n=a.dataset.navKey)&&void 0!==n?n:"");if(!o||"action"!==o.type)return;var s=e.actionMap.get(o.actionId);if(!s)return;e.onActionDragStart(o.componentIndex,o.oddId,o.cuttingIndex,o.actionId,s.name,t,a)}else{var l=r.closest(".gs-tree-row--keyevent");if(l){if(!e.onKeyEventDragStart)return;var c=e._decodeNavKey(null!==(i=l.dataset.navKey)&&void 0!==i?i:"");if(!c||"keyEvent"!==c.type)return;var d=h.yasuniKeyEventMap.get(c.keyEventId);if(!d)return;e.onKeyEventDragStart(c.componentIndex,c.keyEventId,d.name,t,l)}}}}),this.listEl.addEventListener("mouseover",function(t){var n;if(0!==e.currentResults.length){var i=t.target.closest(".gs-result-item");if(i){var r=parseInt(null!==(n=i.dataset.index)&&void 0!==n?n:"-1",10);r!==e.activeIndex&&(e.activeIndex=r,e.updateActiveItem())}}}),this.listEl.addEventListener("mouseover",function(t){var n;if(e._onHover){var i=t.target.closest("[data-odd-dot]");if(i){var r="odd::".concat(i.dataset.oddDot),a=e._decodeNavKey(r);a&&e._onHover(a)}else{var o=t.target.closest(".gs-tree-row--composante, .gs-tree-row--cutting, .gs-tree-row--action, .gs-tree-row--keyevent");if(o){var s=e._decodeNavKey(null!==(n=o.dataset.navKey)&&void 0!==n?n:"");s&&e._onHover(s)}}}}),this.listEl.addEventListener("mouseover",function(t){var n,i,r=t.target.closest(".gs-tree-row--keyevent"),a=null!==(i=null===(n=null==r?void 0:r.dataset.navKey)||void 0===n?void 0:n.split("::")[2])&&void 0!==i?i:null;e._setAmplifierHighlight(null!=a?a:e._selectedKeyEventId())}),this.listEl.addEventListener("mouseleave",function(){var t;null===(t=e._onHover)||void 0===t||t.call(e,null),e._setAmplifierHighlight(e._selectedKeyEventId())}))}},{key:"_decodeNavKey",value:function(e){var t,n,i=e.split("::"),r=i[0],a=i[1];if(!a)return null;var o=this.compIdToIndex.get(a);if(void 0===o)return null;switch(r){case"comp":return{type:"composante",componentIndex:o};case"odd":var s=i[2];return s?{type:"odd",componentIndex:o,oddId:s}:null;case"cut":var l=i[2],c=parseInt(null!==(t=i[3])&&void 0!==t?t:"",10);return!l||isNaN(c)?null:{type:"cutting",componentIndex:o,oddId:l,cuttingIndex:c};case"act":var d=i[2],u=parseInt(null!==(n=i[3])&&void 0!==n?n:"",10),p=i[4];return d&&!isNaN(u)&&p?{type:"action",componentIndex:o,oddId:d,cuttingIndex:u,actionId:p}:null;case"keyevt":var f=i[2];return f&&h.yasuniKeyEventMap.has(f)?{type:"keyEvent",componentIndex:o,keyEventId:f}:null;default:return null}}},{key:"_clearNodeCaches",value:function(){this._compWrappers.clear(),this._compToggles.clear(),this._oddWrappers.clear(),this._oddToggles.clear(),this._cutWrappers.clear(),this._cutToggles.clear(),this._evtGroupWrappers.clear(),this._evtGroupToggles.clear(),this._navRows.clear(),this._descWrappers.clear(),this._descBtns.clear()}},{key:"_rebuildNodeCaches",value:function(){var e=this;this._clearNodeCaches(),this.listEl&&(this.listEl.querySelectorAll("[data-nav-key]").forEach(function(t){var n=t.dataset.navKey;n&&e._navRows.set(n,t)}),this.listEl.querySelectorAll("[data-comp-wrapper]").forEach(function(t){var n=t.dataset.compWrapper;n&&e._compWrappers.set(n,t)}),this.listEl.querySelectorAll("[data-odd-wrapper]").forEach(function(t){var n=t.dataset.oddWrapper;n&&e._oddWrappers.set(n,t)}),this.listEl.querySelectorAll("[data-cut-wrapper]").forEach(function(t){var n=t.dataset.cutWrapper;n&&e._cutWrappers.set(n,t)}),this.listEl.querySelectorAll("[data-toggle-comp]").forEach(function(t){var n=t.dataset.toggleComp;n&&e._compToggles.set(n,t)}),this.listEl.querySelectorAll("[data-toggle-odd]").forEach(function(t){var n=t.dataset.toggleOdd;n&&e._oddToggles.set(n,t)}),this.listEl.querySelectorAll("[data-toggle-cut]").forEach(function(t){var n=t.dataset.toggleCut;n&&e._cutToggles.set(n,t)}),this.listEl.querySelectorAll("[data-evtgroup-wrapper]").forEach(function(t){var n=t.dataset.evtgroupWrapper;n&&e._evtGroupWrappers.set(n,t)}),this.listEl.querySelectorAll("[data-toggle-evtgroup]").forEach(function(t){var n=t.dataset.toggleEvtgroup;n&&e._evtGroupToggles.set(n,t)}),this.listEl.querySelectorAll("[data-desc-id]").forEach(function(t){var n=t.dataset.descId;n&&e._descWrappers.set(n,t)}),this.listEl.querySelectorAll("[data-desc-btn]").forEach(function(t){var n=t.dataset.descBtn;n&&e._descBtns.set(n,t)}))}},{key:"renderTree",value:function(){var e=this;if(this.listEl){var t=!this._browseContainer;if(t&&(this._browseContainer=document.createElement("div"),this._browseContainer.className="gs-browse-container"),this.listEl.contains(this._browseContainer)||this.listEl.replaceChildren(this._browseContainer),!t)return this._rebuildNodeCaches(),this.restoreExpandedDesc(),this.restoreSelectedRow(),this._injectImpactBlockIfActive(),void this._injectPropagationBlockIfActive();u.yasuniCause.forEach(function(t,n){var i=e.openComposanteId===t.id,r=document.createElement("li");r.className="gs-tree-composante";var a=document.createElement("div");a.className="gs-tree-row gs-tree-row--composante",a.dataset.navKey="comp::".concat(t.id),a.innerHTML='\n <button class="gs-tree-toggle" data-toggle-comp="'.concat(t.id,'" aria-label="Déplier">').concat(i?"▼":"▶",'</button>\n <span class="gs-tree-composante-label">').concat(w(t.name),"</span>\n ").concat(function(e){var t,n,i,r=null!==(t=_.get(e))&&void 0!==t?t:0,a=null!==(i=null===(n=S.get(e))||void 0===n?void 0:n.length)&&void 0!==i?i:0;if(0===r&&0===a)return"";var o="".concat(r," Satellite").concat(r>1?"s":""," · ").concat(a," Événement").concat(a>1?"s":""," Clé").concat(a>1?"s":"");return'<span class="gs-tree-count" title="'.concat(w(o),'">')+'<span class="gs-tree-count-dot"></span><span class="gs-tree-count-n">'.concat(r,"</span>")+'<span class="gs-tree-count-sep">·</span>'+"".concat('<svg class="gs-tree-keyevent-glyph" viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="10.2" fill="none" stroke="currentColor" stroke-width="1.5" /><path d="M12 1.8A10.2 10.2 0 0 1 12 22.2A5.1 5.1 0 0 1 12 12A5.1 5.1 0 0 0 12 1.8Z" fill="currentColor" /><circle cx="12" cy="6.9" r="1.5" fill="#16100a" /><circle cx="12" cy="17.1" r="1.5" fill="currentColor" /></svg>','<span class="gs-tree-count-n gs-tree-count-n--evt">').concat(a,"</span>")+"</span>"}(t.id),"\n "),r.appendChild(a);var o=document.createElement("div");o.className="gs-tree-children-wrapper"+(i?" gs-tree-children-wrapper--open":""),o.dataset.compWrapper=t.id;var s=document.createElement("ul");s.className="gs-tree-children",o.appendChild(s),t.odds.forEach(function(n){var i,r,a=e.oddRgbCache.get(n.id),o=null!==(i=null==a?void 0:a.hex)&&void 0!==i?i:k(n.id),l=null!==(r=null==a?void 0:a.rgb)&&void 0!==r?r:x(o);n.cuttings.forEach(function(i,r){var a="".concat(t.id,"::").concat(n.id,"::").concat(r),c=e.openCuttingKey===a,d=document.createElement("li");d.className="gs-tree-cutting",d.style.borderLeft="3px solid rgba(".concat(l,",0.35)");var u=document.createElement("div");u.className="gs-tree-row gs-tree-row--cutting",u.dataset.navKey="cut::".concat(t.id,"::").concat(n.id,"::").concat(r),u.innerHTML='\n <button class="gs-tree-toggle" data-toggle-cut="'.concat(a,'" aria-label="Déplier">').concat(c?"▼":"▶",'</button>\n <button type="button" class="gs-tree-odd-dot" data-odd-dot="').concat(t.id,"::").concat(n.id,'" title="').concat(w(n.name),'" style="background-color:').concat(o,'"></button>\n <span class="gs-tree-cutting-label">').concat(w(i.name),"</span>\n "),d.appendChild(u);var h=document.createElement("div");h.className="gs-tree-children-wrapper"+(c?" gs-tree-children-wrapper--open":""),h.dataset.cutWrapper=a;var g=document.createElement("ul");g.className="gs-tree-children",i.actionIds.forEach(function(i,a){var o=e.actionMap.get(i);if(o&&!(0,p.isAdverseAction)(o)){var s=document.createElement("li");s.className="gs-tree-action",s.style.borderLeft="3px solid rgba(".concat(l,",0.18)");var c=document.createElement("div");c.className="gs-tree-row gs-tree-row--action",c.dataset.navKey="act::".concat(t.id,"::").concat(n.id,"::").concat(r,"::").concat(o.id),c.innerHTML='\n <span class="gs-tree-prefix gs-tree-prefix--action"><img class="gs-tree-prefix-icon" src="'.concat((0,y.getActionIconUrl)(o.id),'" alt="" /></span>\n <span class="gs-tree-action-label">').concat(w(o.name),"</span>\n ").concat((0,f.buildActionChipsHtml)(o),"\n "),c.dataset.actionId=o.id,s.appendChild(c),g.appendChild(s)}}),h.appendChild(g),d.appendChild(h),s.appendChild(d)})}),e.appendKeyEventGroup(t.id,s),r.appendChild(o),e._browseContainer.appendChild(r)}),this._rebuildNodeCaches(),this.restoreExpandedDesc(),this.restoreSelectedRow(),this._injectImpactBlockIfActive(),this._injectPropagationBlockIfActive()}}},{key:"appendKeyEventGroup",value:function(e,t,n,i,r){var a,o=this;if(void 0===n&&(n=null!==(a=S.get(e))&&void 0!==a?a:[]),void 0===i&&(i=!1),0!==n.length){var s=i||this.openEvtGroupId===e,l=document.createElement("li");l.className="gs-tree-evtgroup";var c=document.createElement("div");c.className="gs-tree-row gs-tree-row--evtgroup",c.innerHTML=i?'<span class="gs-tree-toggle gs-tree-toggle--static">▼</span>\n <span class="gs-tree-evtgroup-label">Événements Clés</span>\n <span class="gs-tree-evtgroup-count">'.concat(n.length,"</span>"):'<button class="gs-tree-toggle" data-toggle-evtgroup="'.concat(e,'" aria-label="Déplier les Événements Clés">').concat(s?"▼":"▶",'</button>\n <span class="gs-tree-evtgroup-label">Événements Clés</span>\n <span class="gs-tree-evtgroup-count">').concat(n.length,"</span>"),l.appendChild(c);var d=document.createElement("div");d.className="gs-tree-children-wrapper"+(s?" gs-tree-children-wrapper--open":""),d.dataset.evtgroupWrapper=e;var u=document.createElement("ul");u.className="gs-tree-children",n.forEach(function(t){var n=document.createElement("li");n.className="gs-tree-keyevent";var i=!(0,I.isKeyEventUnlocked)(t.id),a=document.createElement("div");a.className="gs-tree-row gs-tree-row--keyevent"+(i?" gs-tree-row--locked":""),a.dataset.navKey="keyevt::".concat(e,"::").concat(t.id),i&&(a.title="Événement Clé non débloqué"),a.innerHTML='\n <span class="gs-tree-toggle gs-tree-toggle--static gs-tree-toggle--leaf"></span>\n <span class="gs-tree-prefix gs-tree-prefix--keyevent">'.concat((0,b.buildItemIconHtml)((0,I.getKeyEventIconUrl)(t.id),!0),'</span>\n <span class="gs-tree-keyevent-label">').concat(r?o.highlightMatch(t.name,r):w(t.name),"</span>\n ").concat(i?(0,I.buildLockGlyphHtml)("gs-tree-lock-glyph"):"","\n ").concat((0,f.buildKeyEventChipsHtml)(t.effect),"\n "),n.appendChild(a),u.appendChild(n)}),d.appendChild(u),l.appendChild(d),t.appendChild(l)}}},{key:"renderFilteredTree",value:function(e){var t,n=this;if(this.listEl){null===(t=this._browseContainer)||void 0===t||t.remove(),this.listEl.innerHTML="",this._activeItemEl=null;var i=this.searchKeyEvents(e);if(0===this.currentResults.length&&0===i.size){var r=document.createElement("li");return r.className="gs-no-results",r.textContent="Aucun résultat",void this.listEl.appendChild(r)}var o=new Set([].concat(a(this.currentResults.map(function(e){return e.componentId})),a(i.keys()))),s=new Set(this.currentResults.map(function(e){return"".concat(e.componentId,"::").concat(e.oddId)})),l=new Set(this.currentResults.map(function(e){return"".concat(e.componentId,"::").concat(e.oddId,"::").concat(e.cuttingIndex)})),c=new Set(this.currentResults.map(function(e){return"".concat(e.componentId,"::").concat(e.oddId,"::").concat(e.cuttingIndex,"::").concat(e.actionId)})),d=document.createDocumentFragment();u.yasuniCause.forEach(function(t,r){var a;if(o.has(t.id)){var u=document.createElement("li");u.className="gs-tree-composante";var h=document.createElement("div");h.className="gs-tree-row gs-tree-row--composante",h.dataset.navKey="comp::".concat(t.id),h.innerHTML='\n <span class="gs-tree-toggle gs-tree-toggle--static">▼</span>\n <span class="gs-tree-composante-label">'.concat(n.highlightMatch(t.name,e),"</span>\n "),u.appendChild(h);var g=document.createElement("div");g.className="gs-tree-children-wrapper gs-tree-children-wrapper--open",g.dataset.compWrapper=t.id;var v=document.createElement("ul");v.className="gs-tree-children",g.appendChild(v),t.odds.forEach(function(i){var r,a,o="".concat(t.id,"::").concat(i.id);if(s.has(o)){var d=n.oddRgbCache.get(i.id),u=null!==(r=null==d?void 0:d.hex)&&void 0!==r?r:k(i.id),h=null!==(a=null==d?void 0:d.rgb)&&void 0!==a?a:x(u);i.cuttings.forEach(function(r,a){var o="".concat(t.id,"::").concat(i.id,"::").concat(a);if(l.has(o)){var s=document.createElement("li");s.className="gs-tree-cutting",s.style.borderLeft="3px solid rgba(".concat(h,",0.35)");var d=document.createElement("div");d.className="gs-tree-row gs-tree-row--cutting",d.dataset.navKey="cut::".concat(t.id,"::").concat(i.id,"::").concat(a),d.innerHTML='\n <span class="gs-tree-toggle gs-tree-toggle--static">▼</span>\n <button type="button" class="gs-tree-odd-dot" data-odd-dot="'.concat(t.id,"::").concat(i.id,'" title="').concat(w(i.name),'" style="background-color:').concat(u,'"></button>\n <span class="gs-tree-cutting-label">').concat(n.highlightMatch(r.name,e),"</span>\n "),s.appendChild(d);var g=document.createElement("div");g.className="gs-tree-children-wrapper gs-tree-children-wrapper--open",g.dataset.cutWrapper=o;var m=document.createElement("ul");m.className="gs-tree-children",r.actionIds.forEach(function(r,o){var s="".concat(t.id,"::").concat(i.id,"::").concat(a,"::").concat(r);if(c.has(s)){var l=n.actionMap.get(r);if(l&&!(0,p.isAdverseAction)(l)){var d=document.createElement("li");d.className="gs-tree-action",d.style.borderLeft="3px solid rgba(".concat(h,",0.18)");var u=document.createElement("div");u.className="gs-tree-row gs-tree-row--action",u.dataset.navKey="act::".concat(t.id,"::").concat(i.id,"::").concat(a,"::").concat(l.id),u.innerHTML='\n <span class="gs-tree-prefix gs-tree-prefix--action"><img class="gs-tree-prefix-icon" src="'.concat((0,y.getActionIconUrl)(l.id),'" alt="" /></span>\n <span class="gs-tree-action-label">').concat(n.highlightMatch(l.name,e),"</span>\n ").concat((0,f.buildActionChipsHtml)(l),"\n "),u.dataset.actionId=l.id,d.appendChild(u),m.appendChild(d)}}}),g.appendChild(m),s.appendChild(g),v.appendChild(s)}})}}),n.appendKeyEventGroup(t.id,v,null!==(a=i.get(t.id))&&void 0!==a?a:[],!0,e),u.appendChild(g),d.appendChild(u)}}),this.listEl.appendChild(d),this._rebuildNodeCaches(),this.restoreExpandedDesc(),this.restoreSelectedRow(),this._injectImpactBlockIfActive(),this._injectPropagationBlockIfActive()}}},{key:"renderContextEmptyState",value:function(){if(this.listEl){this.listEl.innerHTML="";var e=document.createElement("li");e.className="gs-context-placeholder",e.textContent="Sélectionnez un élément dans le panneau Sélection",this.listEl.appendChild(e)}}},{key:"renderContextPath",value:function(e,t,n,i){var r,a,o,s=this;if(this.listEl){null===(r=this._browseContainer)||void 0===r||r.remove(),this.listEl.innerHTML="",this._activeItemEl=null;var l=this.compIdToIndex.get(e);if(void 0!==l){var c=u.yasuniCause[l];if(c){var d=c.odds.findIndex(function(e){return e.id===t});if(!(d<0)){var p=c.odds[d],h=p.cuttings[n];if(h){var f=this.oddRgbCache.get(t),g=null!==(a=null==f?void 0:f.hex)&&void 0!==a?a:k(t),v=null!==(o=null==f?void 0:f.rgb)&&void 0!==o?o:x(g),m="".concat(c.id,"::").concat(p.id),b="".concat(c.id,"::").concat(p.id,"::").concat(n),I="comp-".concat(l),C=document.createElement("li");C.className="gs-tree-composante";var S=document.createElement("div");if(S.className="gs-tree-row gs-tree-row--composante",S.dataset.navKey="comp::".concat(c.id),S.innerHTML='\n <span class="gs-tree-toggle gs-tree-toggle--static">▼</span>\n <span class="gs-tree-composante-label">'.concat(w(c.name),"</span>\n ").concat(c.description?'<button class="gs-desc-btn" data-desc-btn="'.concat(I,'" aria-label="Description">ⓘ</button>'):"","\n "),C.appendChild(S),c.description){var _=document.createElement("div");_.className="gs-tree-desc-wrapper",_.dataset.descId=I;var A=document.createElement("div");A.className="gs-tree-desc",A.innerHTML=c.description,_.appendChild(A),C.appendChild(_)}var E=document.createElement("div");E.className="gs-tree-children-wrapper gs-tree-children-wrapper--open",E.dataset.compWrapper=c.id;var O=document.createElement("ul");O.className="gs-tree-children";var D="odd-".concat(l,"-").concat(d),M=document.createElement("li");M.className="gs-tree-odd";var L=document.createElement("div");if(L.className="gs-tree-row gs-tree-row--odd",L.dataset.navKey="odd::".concat(c.id,"::").concat(p.id),L.innerHTML='\n <span class="gs-tree-toggle gs-tree-toggle--static">▼</span>\n <span class="gs-tree-odd-dot" style="background-color:'.concat(g,'"></span>\n <span class="gs-tree-odd-tag" style="background:rgba(').concat(v,",0.12);border-left-color:rgba(").concat(v,',0.55)">').concat(w(p.name),"</span>\n ").concat(p.description?'<button class="gs-desc-btn" data-desc-btn="'.concat(D,'" aria-label="Description">ⓘ</button>'):"","\n "),M.appendChild(L),p.description){var F=document.createElement("div");F.className="gs-tree-desc-wrapper",F.dataset.descId=D;var T=document.createElement("div");T.className="gs-tree-desc",T.innerHTML=p.description,F.appendChild(T),M.appendChild(F)}var P=document.createElement("div");P.className="gs-tree-children-wrapper gs-tree-children-wrapper--open",P.dataset.oddWrapper=m;var B=document.createElement("ul");B.className="gs-tree-children";var G="cut-".concat(l,"-").concat(d,"-").concat(n),R=document.createElement("li");R.className="gs-tree-cutting",R.style.borderLeft="3px solid rgba(".concat(v,",0.35)");var q=document.createElement("div");if(q.className="gs-tree-row gs-tree-row--cutting",q.dataset.navKey="cut::".concat(c.id,"::").concat(p.id,"::").concat(n),q.innerHTML='\n <span class="gs-tree-toggle gs-tree-toggle--static">▼</span>\n <span class="gs-tree-cutting-label">'.concat(w(h.name),"</span>\n ").concat(h.description?'<button class="gs-desc-btn" data-desc-btn="'.concat(G,'" aria-label="Description">ⓘ</button>'):"","\n "),R.appendChild(q),h.description){var z=document.createElement("div");z.className="gs-tree-desc-wrapper",z.dataset.descId=G;var N=document.createElement("div");N.className="gs-tree-desc",N.innerHTML=h.description,z.appendChild(N),R.appendChild(z)}var j=document.createElement("div");j.className="gs-tree-children-wrapper gs-tree-children-wrapper--open",j.dataset.cutWrapper=b;var H=document.createElement("ul");H.className="gs-tree-children",void 0!==i&&h.actionIds.forEach(function(e,t){var i=s.actionMap.get(e);if(i){var r="act-".concat(l,"-").concat(d,"-").concat(n,"-").concat(t),a=document.createElement("li");a.className="gs-tree-action",a.style.borderLeft="3px solid rgba(".concat(v,",0.18)");var o=document.createElement("div");o.className="gs-tree-row gs-tree-row--action",o.dataset.navKey="act::".concat(c.id,"::").concat(p.id,"::").concat(n,"::").concat(i.id),o.innerHTML='\n <span class="gs-tree-prefix gs-tree-prefix--action"><img class="gs-tree-prefix-icon" src="'.concat((0,y.getActionIconUrl)(i.id),'" alt="" /></span>\n <span class="gs-tree-action-label">').concat(w(i.name),'</span>\n <button class="gs-desc-btn" data-desc-btn="').concat(r,'" aria-label="Description">ⓘ</button>\n '),a.appendChild(o);var u=document.createElement("div");u.className="gs-tree-desc-wrapper",u.dataset.descId=r;var h=document.createElement("div");h.className="gs-tree-desc",h.innerHTML=i.shortDescription||i.description,u.appendChild(h),a.appendChild(u),H.appendChild(a)}}),j.appendChild(H),R.appendChild(j),B.appendChild(R),P.appendChild(B),M.appendChild(P),O.appendChild(M),E.appendChild(O),C.appendChild(E),this.listEl.appendChild(C),this._rebuildNodeCaches(),this.restoreExpandedDesc(),this.restoreSelectedRow()}}}}}}},{key:"toggleComposante",value:function(e){var t=this.openComposanteId;t&&t!==e&&(this.setComposanteOpen(t,!1),this.openOddKey&&(this.setOddOpen(this.openOddKey,!1),this.openOddKey=null));var n=t===e;return n?(this.openComposanteId=null,this.setComposanteOpen(e,!1),this.openOddKey&&(this.setOddOpen(this.openOddKey,!1),this.openOddKey=null)):(this.openComposanteId=e,this.setComposanteOpen(e,!0)),this.expandedDescId&&(this.setDescVisible(this.expandedDescId,!1),this.expandedDescId=null),n}},{key:"toggleOdd",value:function(e){var t=this.openOddKey;t&&t!==e&&this.setOddOpen(t,!1),t===e?(this.openOddKey=null,this.setOddOpen(e,!1)):(this.openOddKey=e,this.setOddOpen(e,!0)),this.expandedDescId&&(this.setDescVisible(this.expandedDescId,!1),this.expandedDescId=null)}},{key:"setComposanteOpen",value:function(e,t){var n=this._compWrappers.get(e),i=this._compToggles.get(e);n&&n.classList.toggle("gs-tree-children-wrapper--open",t),i&&(i.textContent=t?"▼":"▶")}},{key:"setOddOpen",value:function(e,t){var n=this._oddWrappers.get(e),i=this._oddToggles.get(e);n&&n.classList.toggle("gs-tree-children-wrapper--open",t),i&&(i.textContent=t?"▼":"▶")}},{key:"toggleCutting",value:function(e){var t=this.openCuttingKey;t&&t!==e&&this.setCuttingOpen(t,!1),t===e?(this.openCuttingKey=null,this.setCuttingOpen(e,!1)):(this.openCuttingKey=e,this.setCuttingOpen(e,!0)),this.expandedDescId&&(this.setDescVisible(this.expandedDescId,!1),this.expandedDescId=null)}},{key:"setCuttingOpen",value:function(e,t){var n=this._cutWrappers.get(e),i=this._cutToggles.get(e);n&&n.classList.toggle("gs-tree-children-wrapper--open",t),i&&(i.textContent=t?"▼":"▶")}},{key:"toggleEvtGroup",value:function(e){var t,n,i=this.openEvtGroupId;if(i&&i!==e&&this.setEvtGroupOpen(i,!1),i===e?(this.openEvtGroupId=null,this.setEvtGroupOpen(e,!1)):(this.openEvtGroupId=e,this.setEvtGroupOpen(e,!0)),this.expandedDescId&&(this.setDescVisible(this.expandedDescId,!1),this.expandedDescId=null),!this._navigationLocked){var r=this.compIdToIndex.get(e);void 0!==r&&(null===(n=(t=this.options).onKeyEventGroupToggle)||void 0===n||n.call(t,r,this.openEvtGroupId===e))}}},{key:"syncKeyEventGroupOpen",value:function(e,t){var n,i=null===(n=u.yasuniCause[e])||void 0===n?void 0:n.id;if(i)if(t){if(this.openEvtGroupId===i)return;this.openEvtGroupId&&this.setEvtGroupOpen(this.openEvtGroupId,!1),this.openEvtGroupId=i,this.setEvtGroupOpen(i,!0)}else this.openEvtGroupId===i&&(this.openEvtGroupId=null,this.setEvtGroupOpen(i,!1))}},{key:"setEvtGroupOpen",value:function(e,t){var n=this._evtGroupWrappers.get(e),i=this._evtGroupToggles.get(e);n&&n.classList.toggle("gs-tree-children-wrapper--open",t),i&&(i.textContent=t?"▼":"▶")}},{key:"_setAmplifierHighlight",value:function(e){this._amplifierKeyEventId!==e&&(this._amplifierKeyEventId=e,this._applyAmplifierHighlight())}},{key:"_applyAmplifierHighlight",value:function(){if(this.listEl){this.listEl.querySelectorAll(".gs-row-amplified").forEach(function(e){return e.classList.remove("gs-row-amplified")});var e=this._amplifierKeyEventId?h.yasuniKeyEventMap.get(this._amplifierKeyEventId):void 0;if(e){var t,n=l(e.targetedActionIds);try{for(n.s();!(t=n.n()).done;){var i=t.value;this.listEl.querySelectorAll('.gs-tree-row--action[data-action-id="'.concat(CSS.escape(i),'"]')).forEach(function(e){return e.classList.add("gs-row-amplified")})}}catch(e){n.e(e)}finally{n.f()}}}}},{key:"_selectedKeyEventId",value:function(){var e,t,n=this.selectedNavKey;return(null==n?void 0:n.startsWith("keyevt::"))&&"keyEvent"===(null===(e=this._decodeNavKey(n))||void 0===e?void 0:e.type)&&null!==(t=n.split("::")[2])&&void 0!==t?t:null}},{key:"toggleDesc",value:function(e){var t=this.expandedDescId;t&&t!==e&&this.setDescVisible(t,!1),t===e?(this.expandedDescId=null,this.setDescVisible(e,!1)):(this.expandedDescId=e,this.setDescVisible(e,!0))}},{key:"setDescVisible",value:function(e,t){var n,i=this._descWrappers.get(e),r=this._descBtns.get(e);if(i)if(t){var a=i.querySelector(".gs-tree-desc");i.style.maxHeight=(null!==(n=null==a?void 0:a.scrollHeight)&&void 0!==n?n:300)+"px"}else i.style.maxHeight="0";r&&(r.textContent=t?"×":"ⓘ",r.classList.toggle("gs-desc-btn--active",t))}},{key:"restoreExpandedDesc",value:function(){var e;if(this.expandedDescId){var t=this._descWrappers.get(this.expandedDescId),n=this._descBtns.get(this.expandedDescId);if(t){var i=t.querySelector(".gs-tree-desc");t.style.transition="none",t.style.maxHeight=(null!==(e=null==i?void 0:i.scrollHeight)&&void 0!==e?e:300)+"px",requestAnimationFrame(function(){t.style.transition=""})}n&&(n.textContent="×",n.classList.add("gs-desc-btn--active"))}}},{key:"highlightMatch",value:function(e,t){var n=t.trim().toLowerCase().split(/\s+/).filter(Boolean);if(0===n.length)return w(e);var i=[],a=e.toLowerCase();if(n.forEach(function(e){for(var t=0;-1!==(t=a.indexOf(e,t));)i.push([t,t+e.length]),t+=1}),0===i.length)return w(e);i.sort(function(e,t){return e[0]-t[0]});for(var o=[],s=0,l=i;s<l.length;s++){var c=r(l[s],2),d=c[0],u=c[1],p=o[o.length-1];p&&d<=p[1]?p[1]=Math.max(p[1],u):o.push([d,u])}for(var h="",f=0,g=0,v=o;g<v.length;g++){var m=r(v[g],2),y=m[0],b=m[1];h+=w(e.slice(f,y)),h+='<mark class="gs-highlight">'.concat(w(e.slice(y,b)),"</mark>"),f=b}return h+w(e.slice(f))}},{key:"syncClearBtn",value:function(){var e,t,n,i=(null!==(t=null===(e=this.inputEl)||void 0===e?void 0:e.value.length)&&void 0!==t?t:0)>0;null===(n=this.clearBtn)||void 0===n||n.classList.toggle("gs-search-clear--visible",i)}},{key:"updateActiveItem",value:function(){var e;if(null===(e=this._activeItemEl)||void 0===e||e.classList.remove("gs-result-item--active"),this._activeItemEl=null,!(this.activeIndex<0)&&this.listEl){var t=this.listEl.children[this.activeIndex];t&&(t.classList.add("gs-result-item--active"),this._activeItemEl=t)}}},{key:"navKeyFromTarget",value:function(e){var t,n,i=null!==(n=null===(t=u.yasuniCause[e.componentIndex])||void 0===t?void 0:t.id)&&void 0!==n?n:"";switch(e.type){case"composante":return"comp::".concat(i);case"odd":return"odd::".concat(i,"::").concat(e.oddId);case"cutting":return"cut::".concat(i,"::").concat(e.oddId,"::").concat(e.cuttingIndex);case"action":return"act::".concat(i,"::").concat(e.oddId,"::").concat(e.cuttingIndex,"::").concat(e.actionId);case"keyEvent":return"keyevt::".concat(i,"::").concat(e.keyEventId)}}},{key:"setSelectedNavKey",value:function(e){var t,n;this.selectedNavKey&&(null===(t=this._navRows.get(this.selectedNavKey))||void 0===t||t.classList.remove("gs-row-selected")),this.selectedNavKey=e,e&&(null===(n=this._navRows.get(e))||void 0===n||n.classList.add("gs-row-selected")),this._setAmplifierHighlight(this._selectedKeyEventId())}},{key:"restoreSelectedRow",value:function(){var e;this._applyAmplifierHighlight(),this.selectedNavKey&&(null===(e=this._navRows.get(this.selectedNavKey))||void 0===e||e.classList.add("gs-row-selected"))}},{key:"_syncImpactBlockVisibility",value:function(e){var t;if(!this._impactBlockLocked&&this._currentImpactBlock&&this._detailPanelEl){var n="action"===e.type&&e.actionId===this._currentImpactBlock.actionId;if(n&&this._impactBlockHidden){this._impactBlockHidden=!1,null===(t=this._detailPanelEl.querySelector("[data-detail-desc]"))||void 0===t||t.remove();var i=this.compIdToIndex.get(this._currentImpactBlock.compId);void 0!==i&&this._showDetailDesc({type:"action",componentIndex:i,oddId:this._currentImpactBlock.oddId,cuttingIndex:this._currentImpactBlock.cutIdx,actionId:this._currentImpactBlock.actionId}),this._injectImpactBlockIfActive()}else if(!n){var r=this._detailPanelEl.querySelector("[data-detail-primary]");r&&(r.remove(),this._impactBlockHidden=!0)}}}},{key:"emitNav",value:function(e){this._navigationLocked||(this.setSelectedNavKey(this.navKeyFromTarget(e)),this._syncImpactBlockVisibility(e),!this._detailPanelEl||this._impactBlockLocked||"action"===e.type&&!this.options.alwaysShowDesc||this._showDetailDesc(e),this.options.onNavigate(e))}},{key:"setDetailPanel",value:function(e){var t=this;this._detailPanelEl=e,(0,m.watchChainCardHeight)(e),e.addEventListener("click",function(e){var n,i=e.target.closest("[data-odd-legend-chip]");if(i){var r=(0,C.toggleOddLegendChip)(i),a=i.dataset.oddLegendChip,o=i.dataset.oddLegendComposante,s=o?t.compIdToIndex.get(o):void 0;a&&void 0!==s&&(null===(n=t._onOddLegendActiveChangeCb)||void 0===n||n.call(t,s,a,r))}})}},{key:"setOnOddLegendActiveChange",value:function(e){this._onOddLegendActiveChangeCb=e}},{key:"toggleOddLegendChipById",value:function(e){if(!this._detailPanelEl)return null;var t=this._detailPanelEl.querySelectorAll('[data-odd-legend-chip="'.concat(e,'"]')),n=Array.from(t).find(function(e){return null!==e.offsetParent});return n?(0,C.toggleOddLegendChip)(n):null}},{key:"_attachOddLegendHover",value:function(e){var t=this;(0,C.attachOddLegendHoverHandlers)(e,function(e,n){var i,r,a=n?t.compIdToIndex.get(n):void 0;e&&void 0!==a?null===(i=t._onHover)||void 0===i||i.call(t,{type:"odd",componentIndex:a,oddId:e}):null===(r=t._onHover)||void 0===r||r.call(t,null)})}},{key:"highlightOddLegendChip",value:function(e){this._detailPanelEl&&(0,C.setOddLegendHoverState)(this._detailPanelEl,e)}},{key:"_syncPlaceholder",value:function(){var e;if(this._detailPanelEl){var t=!!this._detailPanelEl.querySelector("[data-detail-desc],[data-detail-primary],[data-detail-secondary]"),n=this._detailPanelEl.querySelector(".gs-detail-placeholder");n&&(!t&&this._sphereName&&(null===(e=this._onTitleUpdate)||void 0===e||e.call(this,{label:"Sphère",cssClass:"d0"},this._sphereName),n.innerHTML='\n <div class="ff-sphere-intro">\n <p class="ff-sphere-intro-desc">'.concat(this._sphereDescription,"</p>\n </div>\n ").concat((0,C.buildOddLegendHtml)(),"\n "),this._attachOddLegendHover(n)),n.style.display=t?"none":"")}}},{key:"clearDetailDesc",value:function(){var e,t;this._detailPanelEl&&(null===(e=this._detailPanelEl.querySelector("[data-detail-desc]"))||void 0===e||e.remove(),null===(t=this._onTitleUpdate)||void 0===t||t.call(this,void 0,void 0),this._syncPlaceholder())}},{key:"_buildDetailDescSection",value:function(e,t,n,i,r,a,o){var s;null===(s=this._onTitleUpdate)||void 0===s||s.call(this,e,t||void 0,i,r,a,o);var l=document.createElement("div");return l.className="gs-detail-desc-section",l.dataset.detailDesc="",n?"string"==typeof n?l.innerHTML='<div class="gs-detail-desc-text">'.concat(n,"</div>"):n.full&&n.full!==n.short?(l.innerHTML='\n <div class="gs-detail-desc-text" data-desc-short>'.concat(n.short,'<button type="button" class="gs-detail-desc-toggle" data-desc-toggle title="Afficher la description complète">▾</button></div>\n <div class="gs-detail-desc-text gs-detail-desc-full" data-desc-full hidden>').concat(n.full,'<button type="button" class="gs-detail-desc-toggle" data-desc-toggle title="Réduire">▴</button></div>\n '),l.addEventListener("click",function(e){if(e.target.closest("[data-desc-toggle]")){var t=l.querySelector("[data-desc-short]"),n=l.querySelector("[data-desc-full]");t&&n&&(t.hidden=!t.hidden,n.hidden=!n.hidden)}})):l.innerHTML='<div class="gs-detail-desc-text">'.concat(n.short,"</div>"):l.innerHTML="",l}},{key:"_showDetailDesc",value:function(e){var t,n,i,r,a,o,s,l,c,d;if(this._detailPanelEl){var p=e.componentIndex,f=u.yasuniCause[p];if(f)if("odd"!==e.type){var g,m,b,w,x,k,S="",_="";switch(e.type){case"composante":S=f.name,_=null!==(t=f.description)&&void 0!==t?t:"",g={label:"Facette",cssClass:"d1"};break;case"cutting":var A=f.odds.find(function(t){return t.id===e.oddId});if(!A)return;var E=A.cuttings[e.cuttingIndex];if(!E)return;S=E.name,_=null!==(n=E.description)&&void 0!==n?n:"",g={label:"Satellite",cssClass:"d3"},m=null===(i=this.oddRgbCache.get(e.oddId))||void 0===i?void 0:i.hex,b=(0,v.stateFromTension)(null!==(r=E.score)&&void 0!==r?r:.5),w=(0,v.clampWeight)(null!==(a=E.weight)&&void 0!==a?a:1),k=A;break;case"action":var O=f.odds.find(function(t){return t.id===e.oddId});if(!O)return;var D=O.cuttings[e.cuttingIndex];if(!D)return;var M=this.actionMap.get(e.actionId);if(!M)return;S=M.name;var L=M.shortDescription,F=M.description;_=L&&F&&L!==F?{short:L,full:F}:L||F||"",g={label:"Action",cssClass:"action-direct"},m=null===(o=this.oddRgbCache.get(e.oddId))||void 0===o?void 0:o.hex,b=(0,v.stateFromTension)(null!==(s=D.score)&&void 0!==s?s:.5),w=(0,v.clampWeight)(null!==(l=D.weight)&&void 0!==l?l:1),x=(0,y.getActionIconUrl)(M.id);break;case"keyEvent":var T=h.yasuniKeyEventMap.get(e.keyEventId);if(!T)return;S=T.name;var P=T.shortDescription,B=T.description;_=P&&B&&P!==B?{short:P,full:B}:P||B||"",g={label:"Événement Clé",cssClass:"keyevent"},x=(0,I.getKeyEventIconUrl)(T.id)}if(null===(c=this._detailPanelEl.querySelector("[data-detail-desc]"))||void 0===c||c.remove(),!S)return null===(d=this._onTitleUpdate)||void 0===d||d.call(this,void 0,void 0),void this._syncPlaceholder();var G=this._buildDetailDescSection(g,S,_,m,b,w,x);"keyEvent"!==e.type||(0,I.isKeyEventUnlocked)(e.keyEventId)||(G.classList.add("gs-detail-desc--locked"),G.insertAdjacentHTML("afterbegin",'<div class="gs-detail-locked-banner">'+(0,I.buildLockGlyphHtml)("gs-detail-locked-glyph")+"<span>Événement Clé non débloqué</span></div>")),"composante"===e.type?(G.insertAdjacentHTML("beforeend",(0,C.buildOddLegendHtmlForComposante)(f)),this._attachOddLegendHover(G)):"cutting"===e.type&&k&&(G.insertAdjacentHTML("beforeend",(0,C.buildOddLegendHtmlForOdd)(k,f.id)),this._attachOddLegendHover(G));var R=this._detailPanelEl.querySelector("[data-detail-primary],[data-detail-secondary]");R?this._detailPanelEl.insertBefore(G,R):this._detailPanelEl.appendChild(G),this._syncPlaceholder()}else this.toggleOddLegendChipById(e.oddId)}}},{key:"showSecondaryBlock",value:function(e,t,n,i){var r,a,o;if(this._detailPanelEl){null===(r=this._detailPanelEl.querySelector("[data-detail-primary]"))||void 0===r||r.remove(),this._currentImpactBlock=null,null===(a=this._detailPanelEl.querySelector("[data-detail-secondary]"))||void 0===a||a.remove(),null===(o=this._detailPanelEl.querySelector("[data-detail-desc]"))||void 0===o||o.remove();var s=document.createElement("div");s.className="gs-cutting-impact-block",s.dataset.detailSecondary=n,s.innerHTML=t,i(s),this._detailPanelEl.appendChild(s),requestAnimationFrame(function(){return s.classList.add("gs-block-open")}),this._syncPlaceholder()}}},{key:"clearSecondaryBlock",value:function(){var e=this;if(this._detailPanelEl){var t=this._detailPanelEl.querySelector("[data-detail-secondary]");t&&this._animateBlockOut(t,function(){t.remove(),e._syncPlaceholder()})}}},{key:"setOnNavigate",value:function(e){this.options.onNavigate=e}},{key:"setOnDeselect",value:function(e){this.options.onDeselect=e}},{key:"setOnKeyEventGroupToggle",value:function(e){this.options.onKeyEventGroupToggle=e}},{key:"setOnHover",value:function(e){this._onHover=e}},{key:"setOnTitleUpdate",value:function(e){this._onTitleUpdate=e,this._syncPlaceholder()}},{key:"getSelectedTarget",value:function(){return this.selectedNavKey?this._decodeNavKey(this.selectedNavKey):null}},{key:"setExternalHoverNavKey",value:function(e){var t,n;this._externalHoverNavKey&&(null===(t=this._navRows.get(this._externalHoverNavKey))||void 0===t||t.classList.remove("gs-row-hover-ext")),this._externalHoverNavKey=e,e&&(null===(n=this._navRows.get(e))||void 0===n||n.classList.add("gs-row-hover-ext"))}},{key:"setOnActionDragStart",value:function(e){this.onActionDragStart=e}},{key:"setOnKeyEventDragStart",value:function(e){this.onKeyEventDragStart=e}},{key:"setQuery",value:function(e){this.inputEl&&(this.inputEl.value=e,this.inputEl.focus()),this.expandedDescId=null,0===e.trim().length?(this.currentResults=[],this.activeIndex=-1,this._filteredTreeMode=!1,this.renderTree()):(this.currentResults=this.search(e),this.activeIndex=-1,this._filteredTreeMode=!0,this.renderFilteredTree(e))}},{key:"applyTreeSync",value:function(e){var t,n,i=this;if(!((null!==(n=null===(t=this.inputEl)||void 0===t?void 0:t.value.trim().length)&&void 0!==n?n:0)>0)){var r=u.yasuniCause[e.componentIndex];if(r){var a=r.id;if(this.openComposanteId!==a&&(this.openComposanteId&&this.setComposanteOpen(this.openComposanteId,!1),this.openComposanteId=a,this.setComposanteOpen(a,!0)),"composante"===e.type)return this.openOddKey&&(this.setOddOpen(this.openOddKey,!1),this.openOddKey=null),this.openCuttingKey&&(this.setCuttingOpen(this.openCuttingKey,!1),this.openCuttingKey=null),this.setSelectedNavKey(this.navKeyFromTarget(e)),void setTimeout(function(){var e,t;return null===(t=null===(e=i._compWrappers.get(a))||void 0===e?void 0:e.closest("li"))||void 0===t?void 0:t.scrollIntoView({behavior:"smooth",block:"nearest"})},220);if("odd"===e.type)return this.openCuttingKey&&(this.setCuttingOpen(this.openCuttingKey,!1),this.openCuttingKey=null),void this.setSelectedNavKey("comp::".concat(a));if("keyEvent"===e.type){this.openEvtGroupId!==a&&(this.openEvtGroupId&&this.setEvtGroupOpen(this.openEvtGroupId,!1),this.openEvtGroupId=a,this.setEvtGroupOpen(a,!0));var o=this.navKeyFromTarget(e);return this.setSelectedNavKey(o),void setTimeout(function(){var e;return null===(e=i._navRows.get(o))||void 0===e?void 0:e.scrollIntoView({behavior:"smooth",block:"nearest"})},220)}var s="".concat(a,"::").concat(e.oddId,"::").concat(e.cuttingIndex);if(this.openCuttingKey!==s&&(this.openCuttingKey&&this.setCuttingOpen(this.openCuttingKey,!1),this.openCuttingKey=s,this.setCuttingOpen(s,!0)),"action"===e.type){var l=this.navKeyFromTarget(e);return this.setSelectedNavKey(l),void setTimeout(function(){var e;return null===(e=i._navRows.get(l))||void 0===e?void 0:e.scrollIntoView({behavior:"smooth",block:"nearest"})},220)}this.setSelectedNavKey(this.navKeyFromTarget(e)),setTimeout(function(){var e,t;return null===(t=null===(e=i._cutToggles.get(s))||void 0===e?void 0:e.closest("li"))||void 0===t?void 0:t.scrollIntoView({behavior:"smooth",block:"nearest"})},220)}}}},{key:"syncDiagramOdd",value:function(e,t){var n={type:"odd",componentIndex:e,oddId:t};this.applyTreeSync(n),this._syncImpactBlockVisibility(n),this._detailPanelEl&&!this._impactBlockLocked&&this._showDetailDesc(n)}},{key:"syncTreeOnly",value:function(e){this.applyTreeSync(e),this.setSelectedNavKey(this.navKeyFromTarget(e)),this.options.alwaysShowDesc&&this._detailPanelEl&&(this._detailPanelEl.querySelector("[data-detail-primary]")||this._showDetailDesc(e))}},{key:"locateStackItem",value:function(e,t,n,i){var r=this.compIdToIndex.get(e);void 0!==r&&(this.inputEl&&this.inputEl.value.trim().length>0&&(this.inputEl.value="",this.handleInput()),this.syncDiagramNav({type:"action",componentIndex:r,oddId:t,cuttingIndex:n,actionId:i}))}},{key:"syncDiagramNav",value:function(e){this.applyTreeSync(e),this._syncImpactBlockVisibility(e),this._detailPanelEl&&!this._impactBlockLocked&&"action"!==e.type&&this._showDetailDesc(e)}},{key:"clearDiagramNavSelection",value:function(e){this.openCuttingKey&&(this.setCuttingOpen(this.openCuttingKey,!1),this.openCuttingKey=null);var t={type:"composante",componentIndex:e};this.setSelectedNavKey(this.navKeyFromTarget(t)),this._showDetailDesc(t)}},{key:"resetToSphereView",value:function(){this.openCuttingKey&&(this.setCuttingOpen(this.openCuttingKey,!1),this.openCuttingKey=null),this.openOddKey&&(this.setOddOpen(this.openOddKey,!1),this.openOddKey=null),this.openComposanteId&&(this.setComposanteOpen(this.openComposanteId,!1),this.openComposanteId=null),this.setSelectedNavKey(null),this._clearActionBeacon(),this._impactBlockLocked||(this.clearDetailBlocks(),this.clearDetailDesc())}},{key:"_markActionBeacon",value:function(){if(this._currentImpactBlock&&this.listEl){var e=this._currentImpactBlock,t=e.compId,n=e.oddId,i=e.cutIdx,r=e.actionId;this._clearActionBeacon();for(var a=0,o=["comp::".concat(t),"odd::".concat(t,"::").concat(n),"cut::".concat(t,"::").concat(n,"::").concat(i),"act::".concat(t,"::").concat(n,"::").concat(i,"::").concat(r)];a<o.length;a++){var s=o[a],l=this._navRows.get(s);l&&l.classList.add("gs-action-beacon")}}}},{key:"_clearActionBeacon",value:function(){var e;null===(e=this.listEl)||void 0===e||e.querySelectorAll(".gs-action-beacon").forEach(function(e){return e.classList.remove("gs-action-beacon")})}},{key:"setLocked",value:function(e){this._navigationLocked=e,this._impactBlockLocked=e}},{key:"_injectImpactBlockIfActive",value:function(){if(this._currentImpactBlock&&!this._impactBlockHidden){var e=this._currentImpactBlock,t=e.compId,n=e.oddId,i=e.cutIdx,r=e.actionId,a=e.cardsHtml,o=e.attachHandlers,s="".concat(t,"::").concat(n,"::").concat(i);if(this._detailPanelEl){if(this._detailPanelEl.querySelector("[data-detail-primary]"))return;var l=document.createElement("div");l.className="gs-cutting-impact-block gs-cutting-impact-block--direct",l.dataset.detailPrimary=s,l.dataset.impactKey=s,l.innerHTML=a,o(l);var c=this._detailPanelEl.querySelector("[data-detail-secondary]");return c?this._detailPanelEl.insertBefore(l,c):this._detailPanelEl.appendChild(l),requestAnimationFrame(function(){return l.classList.add("gs-block-open")}),this._syncPlaceholder(),void this._markActionBeacon()}if(this.listEl&&!this.listEl.querySelector('[data-impact-key="'.concat(s,'"]'))){var d="act::".concat(t,"::").concat(n,"::").concat(i,"::").concat(r),u=this._navRows.get(d);if(u){var p=u.closest(".gs-tree-action");if(p){var h=document.createElement("div");h.className="gs-cutting-impact-block gs-cutting-impact-block--direct",h.dataset.impactKey=s,h.innerHTML=a,o(h),p.insertAdjacentElement("afterend",h),requestAnimationFrame(function(){return h.classList.add("gs-block-open")}),this._markActionBeacon()}}}}}},{key:"_animateBlockOut",value:function(e,t){var n=!1,i=function(){n||(n=!0,t())};e.classList.remove("gs-block-open"),e.addEventListener("transitionend",i,{once:!0}),setTimeout(i,400)}},{key:"showCuttingActionBlock",value:function(e,t,n,i,r,a){var o,s,l,c,d=this;this._detailPanelEl?(null===(o=this._detailPanelEl.querySelector("[data-detail-primary]"))||void 0===o||o.remove(),null===(s=this._detailPanelEl.querySelector("[data-detail-secondary]"))||void 0===s||s.remove(),this._currentPropagationBlock=null,this._currentKeyEventBlock=null):null===(c=null===(l=this.listEl)||void 0===l?void 0:l.querySelector("[data-impact-key]"))||void 0===c||c.remove(),function(){var o,s;if(d._currentImpactBlock={compId:e,oddId:t,cutIdx:n,actionId:i,cardsHtml:r,attachHandlers:a},d._impactBlockLocked=!1,d._impactBlockHidden=!1,d._detailPanelEl){var l=d.compIdToIndex.get(e);void 0!==l&&d._showDetailDesc({type:"action",componentIndex:l,oddId:t,cuttingIndex:n,actionId:i})}if(d._contextMode)d.renderContextPath(e,t,n,i);else if(0===(null!==(s=null===(o=d.inputEl)||void 0===o?void 0:o.value.trim().length)&&void 0!==s?s:0)){var c=u.yasuniCause.findIndex(function(t){return t.id===e});c>=0&&d.applyTreeSync({type:"action",componentIndex:c,oddId:t,cuttingIndex:n,actionId:i})}d._injectImpactBlockIfActive(),setTimeout(function(){var i,r;if(d._detailPanelEl)null===(i=d._detailPanelEl.querySelector("[data-detail-primary]"))||void 0===i||i.scrollIntoView({behavior:"smooth",block:"nearest"});else{var a="".concat(e,"::").concat(t,"::").concat(n),o=null===(r=d.listEl)||void 0===r?void 0:r.querySelector('[data-impact-key="'.concat(a,'"]'));null==o||o.scrollIntoView({behavior:"smooth",block:"nearest"})}},220)}()}},{key:"showKeyEventBlock",value:function(e,t,n,i){var r,a,o,s,l=this;if(this._detailPanelEl?(null===(r=this._detailPanelEl.querySelector("[data-detail-primary]"))||void 0===r||r.remove(),null===(a=this._detailPanelEl.querySelector("[data-detail-secondary]"))||void 0===a||a.remove(),this._currentPropagationBlock=null,this._currentImpactBlock=null):null===(s=null===(o=this.listEl)||void 0===o?void 0:o.querySelector("[data-impact-key]"))||void 0===s||s.remove(),this._currentKeyEventBlock={compId:e,keyEventId:t,cardsHtml:n,attachHandlers:i},this._impactBlockHidden=!1,this._detailPanelEl){var c=this.compIdToIndex.get(e);void 0!==c&&(this._showDetailDesc({type:"keyEvent",componentIndex:c,keyEventId:t}),this.setSelectedNavKey("keyevt::".concat(e,"::").concat(t)))}this._injectKeyEventBlockIfActive(),setTimeout(function(){var e,t;null===(t=null===(e=l._detailPanelEl)||void 0===e?void 0:e.querySelector("[data-detail-primary]"))||void 0===t||t.scrollIntoView({behavior:"smooth",block:"nearest"})},220)}},{key:"clearKeyEventBlock",value:function(){var e,t=this;if(this._currentKeyEventBlock&&(this._currentKeyEventBlock=null,this._detailPanelEl)){var n=this._detailPanelEl.querySelector("[data-detail-primary]");n?(null===(e=this._detailPanelEl.querySelector("[data-detail-desc]"))||void 0===e||e.remove(),this._animateBlockOut(n,function(){var e,i;n.remove();var r=t._decodeNavKey(null!==(e=t.selectedNavKey)&&void 0!==e?e:"");r?t._showDetailDesc(r):null===(i=t._onTitleUpdate)||void 0===i||i.call(t,void 0,void 0),t._syncPlaceholder()})):this._syncPlaceholder()}}},{key:"_injectKeyEventBlockIfActive",value:function(){if(this._currentKeyEventBlock&&!this._impactBlockHidden){var e=this._currentKeyEventBlock,t=e.compId,n=e.keyEventId,i=e.cardsHtml,r=e.attachHandlers;if(this._detailPanelEl&&!this._detailPanelEl.querySelector("[data-detail-primary]")){var a=document.createElement("div");a.className="gs-cutting-impact-block gs-cutting-impact-block--direct",a.dataset.detailPrimary="keyevt::".concat(t,"::").concat(n),a.innerHTML=i,r(a);var o=this._detailPanelEl.querySelector("[data-detail-secondary]");o?this._detailPanelEl.insertBefore(a,o):this._detailPanelEl.appendChild(a),requestAnimationFrame(function(){return a.classList.add("gs-block-open")}),this._syncPlaceholder()}}}},{key:"clearCuttingActionBlock",value:function(){var e,t,n=this;if(!this._impactBlockLocked)if(this._currentImpactBlock=null,this._impactBlockLocked=!1,this._impactBlockHidden=!1,this._clearActionBeacon(),this._detailPanelEl){var i=this._detailPanelEl.querySelector("[data-detail-primary]");i?(null===(e=this._detailPanelEl.querySelector("[data-detail-desc]"))||void 0===e||e.remove(),this._animateBlockOut(i,function(){var e,t;i.remove();var r=n._decodeNavKey(null!==(e=n.selectedNavKey)&&void 0!==e?e:"");r?n._showDetailDesc(r):null===(t=n._onTitleUpdate)||void 0===t||t.call(n,void 0,void 0),n._syncPlaceholder()})):this._syncPlaceholder()}else{var r=null===(t=this.listEl)||void 0===t?void 0:t.querySelector("[data-impact-key]");r?this._animateBlockOut(r,function(){r.remove(),n._contextMode&&n.renderContextEmptyState()}):this._contextMode&&this.renderContextEmptyState()}}},{key:"_injectPropagationBlockIfActive",value:function(){var e,t,n;if(this._currentPropagationBlock){var i=this._currentPropagationBlock,r=i.compId,a=i.oddId,o=i.cutIdx,s=i.html,l=i.attachHandlers,c=(i.sourceDesc,"".concat(r,"::").concat(a,"::").concat(o));if(this._detailPanelEl){if(this._detailPanelEl.querySelector("[data-detail-secondary]"))return;var d=this.compIdToIndex.get(r),p=void 0!==d?u.yasuniCause[d]:void 0,h=null==p?void 0:p.odds.find(function(e){return e.id===a}),f=null==h?void 0:h.cuttings[o];f&&(null===(e=this._detailPanelEl.querySelector("[data-detail-desc]"))||void 0===e||e.remove(),this._detailPanelEl.appendChild(this._buildDetailDescSection({label:"Satellite",cssClass:"d3"},f.name,f.description,void 0,(0,v.stateFromTension)(null!==(t=f.score)&&void 0!==t?t:.5),(0,v.clampWeight)(null!==(n=f.weight)&&void 0!==n?n:1))));var g=document.createElement("div");return g.className="gs-cutting-impact-block gs-cutting-impact-block--propagated",g.dataset.detailSecondary=c,g.dataset.propagationKey=c,g.innerHTML=s,l(g),this._detailPanelEl.appendChild(g),requestAnimationFrame(function(){return g.classList.add("gs-block-open")}),void this._syncPlaceholder()}if(this.listEl&&!this.listEl.querySelector('[data-propagation-key="'.concat(c,'"]'))){var m=this._cutWrappers.get(c);if(m){var y=m.closest("li");if(y){var b=document.createElement("div");b.className="gs-cutting-impact-block gs-cutting-impact-block--propagated",b.dataset.propagationKey=c,b.innerHTML=s,l(b),y.insertBefore(b,m),requestAnimationFrame(function(){return b.classList.add("gs-block-open")})}}}}}},{key:"showPropagationBlock",value:function(e,t,n,i,r,a){var o,s,l,c=this,d=function(){var o,s;if(c._currentPropagationBlock={compId:e,oddId:t,cutIdx:n,html:i,attachHandlers:r,sourceDesc:a},!c._detailPanelEl)if(c._contextMode)c.renderContextPath(e,t,n);else if(0===(null!==(s=null===(o=c.inputEl)||void 0===o?void 0:o.value.trim().length)&&void 0!==s?s:0)){var l=u.yasuniCause.findIndex(function(t){return t.id===e});l>=0&&c.applyTreeSync({type:"cutting",componentIndex:l,oddId:t,cuttingIndex:n})}c._injectPropagationBlockIfActive(),setTimeout(function(){var i,r;if(c._detailPanelEl)null===(i=c._detailPanelEl.querySelector("[data-detail-secondary]"))||void 0===i||i.scrollIntoView({behavior:"smooth",block:"nearest"});else{var a="".concat(e,"::").concat(t,"::").concat(n),o=null===(r=c.listEl)||void 0===r?void 0:r.querySelector('[data-propagation-key="'.concat(a,'"]'));null==o||o.scrollIntoView({behavior:"smooth",block:"nearest"})}},220)};if(this._detailPanelEl)null===(o=this._detailPanelEl.querySelector("[data-detail-primary]"))||void 0===o||o.remove(),this._currentImpactBlock=null,null===(s=this._detailPanelEl.querySelector("[data-detail-secondary]"))||void 0===s||s.remove(),d();else{var p=null===(l=this.listEl)||void 0===l?void 0:l.querySelector("[data-propagation-key]");p?this._animateBlockOut(p,function(){p.remove(),d()}):d()}}},{key:"clearDetailBlocks",value:function(){var e,t;this._detailPanelEl&&(null===(e=this._detailPanelEl.querySelector("[data-detail-primary]"))||void 0===e||e.remove(),this._currentImpactBlock=null,this._currentKeyEventBlock=null,this._impactBlockHidden=!1,null===(t=this._detailPanelEl.querySelector("[data-detail-secondary]"))||void 0===t||t.remove(),this._currentPropagationBlock=null)}},{key:"clearPropagationBlock",value:function(){var e,t=this;if(this._currentPropagationBlock=null,this._detailPanelEl){var n=this._detailPanelEl.querySelector("[data-detail-secondary]");n?this._animateBlockOut(n,function(){n.remove(),t._syncPlaceholder()}):this._syncPlaceholder()}else{var i=null===(e=this.listEl)||void 0===e?void 0:e.querySelector("[data-propagation-key]");i?this._animateBlockOut(i,function(){i.remove(),!t._contextMode||t._currentImpactBlock||t._currentPropagationBlock||t.renderContextEmptyState()}):!this._contextMode||this._currentImpactBlock||this._currentPropagationBlock||this.renderContextEmptyState()}}}],t&&o(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.GlobalSearchController=A},6949(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(e,t)||o(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=o(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){l=!0,a=e},f:function(){try{s||null==n.return||n.return()}finally{if(l)throw a}}}}function o(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function l(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,c(i.key),i)}}function c(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.StackNavOverlay=void 0;var d=n(4468),u=n(996),p=n(6713),h={label:"Satellite",cssClass:"d3"},f={label:"Facette",cssClass:"d1"},g={label:"ODD",cssClass:"d2"},v={label:"Sphère",cssClass:"d0"};function m(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function y(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?"".concat(Number.parseInt(t[1],16),",").concat(Number.parseInt(t[2],16),",").concat(Number.parseInt(t[3],16)):"58,122,191"}var b=function(){return e=function e(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.isOpen=!1,this.openCompId=null,this.selectedNavKey=null,this.selectedCompId=null,this._compToggles=new Map,this._compWrappers=new Map,this._compRows=new Map,this._cuttingRows=new Map,this._outsideClickHandler=null,this._keyHandler=null,this.composantes=t.composantes,this.onNavigate=t.onNavigate,this.onDeselect=t.onDeselect,this.containerEl=t.containerEl;var i=t.containerEl.querySelector(".stack-nav-chip"),r=t.containerEl.querySelector(".stack-nav-chip-label"),a=t.containerEl.querySelector(".stack-nav-chip-dot"),o=t.containerEl.querySelector(".stack-nav-chip-state");if(!(i&&r&&a&&o))throw new Error("StackNavOverlay: required chip elements not found");this.chipEl=i,this.chipLabelEl=r,this.chipDotEl=a,this.chipStateEl=o,this.dropdownEl=document.createElement("div"),this.dropdownEl.className="stack-nav-dropdown",this.dropdownEl.hidden=!0,document.body.appendChild(this.dropdownEl),this._buildTree(),this.chipEl.addEventListener("click",function(e){e.stopPropagation(),n.isOpen?n.close():n.open()})},t=[{key:"_buildTree",value:function(){var e,t=this,n=document.createElement("div");n.className="gs-browse-container";var i,o=a(this.composantes.entries());try{var s=function(){var o=r(i.value,2),s=o[0],l=o[1],c=document.createElement("li");c.className="gs-tree-composante",c.dataset.compIdx=String(s);var u=document.createElement("div");u.className="gs-tree-row gs-tree-row--composante",u.innerHTML='\n <button class="gs-tree-toggle" data-toggle-comp="'.concat(m(l.id),'" aria-label="Déplier">▶</button>\n <span class="gs-tree-composante-label">').concat(m(l.name),"</span>\n "),c.appendChild(u),t._compRows.set(l.id,u);var p=document.createElement("div");p.className="gs-tree-children-wrapper",p.dataset.compWrapper=l.id,t._compWrappers.set(l.id,p);var h=u.querySelector("[data-toggle-comp]");h&&t._compToggles.set(l.id,h);var f=document.createElement("ul");f.className="gs-tree-children";var g,v=a(l.odds);try{for(v.s();!(g=v.n()).done;){var b,I=g.value,C=null!==(e=d.causeOddColors[I.id])&&void 0!==e?e:"#3a7abf",w=y(C),x=a(I.cuttings.entries());try{for(x.s();!(b=x.n()).done;){var k=r(b.value,2),S=k[0],_=k[1],A="".concat(l.id,"::").concat(I.id,"::").concat(S),E=document.createElement("li");E.className="gs-tree-cutting",E.style.borderLeft="3px solid rgba(".concat(w,",0.35)"),E.style.cursor="pointer",E.dataset.compIdx=String(s),E.dataset.oddId=I.id,E.dataset.cutIdx=String(S);var O=document.createElement("div");O.className="gs-tree-row gs-tree-row--cutting",O.dataset.navKey=A,O.innerHTML='\n <span class="gs-tree-toggle gs-tree-toggle--static"></span>\n <button type="button" class="gs-tree-odd-dot" title="'.concat(m(I.name),'" style="background-color:').concat(m(C),'"></button>\n <span class="gs-tree-cutting-label">').concat(m(_.name),"</span>\n "),t._cuttingRows.set(A,O),E.appendChild(O),f.appendChild(E)}}catch(e){x.e(e)}finally{x.f()}}}catch(e){v.e(e)}finally{v.f()}p.appendChild(f),c.appendChild(p),n.appendChild(c),u.addEventListener("click",function(){var e;if(t.selectedCompId===l.id)return t._highlightComposanteRow(null),void(null===(e=t.onDeselect)||void 0===e||e.call(t,"composante"));t.syncToActiveComposante(l.name),t.onNavigate({type:"composante",componentIndex:s})}),null==h||h.addEventListener("click",function(e){e.stopPropagation(),t._toggleComp(l.id)})};for(o.s();!(i=o.n()).done;)s()}catch(e){o.e(e)}finally{o.f()}n.addEventListener("click",function(e){var n,i,r=e.target.closest("li.gs-tree-cutting");if(r){var a=Number(r.dataset.compIdx),o=null!==(n=r.dataset.oddId)&&void 0!==n?n:"",s=Number(r.dataset.cutIdx),l=t.composantes[a];if(l){var c=null!==(i=r.querySelector(".gs-tree-row--cutting"))&&void 0!==i?i:r;t._selectCutting(a,o,s,l,c)}}}),n.addEventListener("mouseover",function(e){var n;if(t._onHover){var i=e.target,r=i.closest("li.gs-tree-cutting");if(r){var a=Number(r.dataset.compIdx),o=null!==(n=r.dataset.oddId)&&void 0!==n?n:"",s=Number(r.dataset.cutIdx);t._onHover({type:"cutting",componentIndex:a,oddId:o,cuttingIndex:s})}else{var l=i.closest("li.gs-tree-composante");if(l){var c=Number(l.dataset.compIdx);t._onHover({type:"composante",componentIndex:c})}}}}),n.addEventListener("mouseleave",function(){var e;null===(e=t._onHover)||void 0===e||e.call(t,null)}),this.dropdownEl.appendChild(n)}},{key:"_selectCutting",value:function(e,t,n,i,r){var a,o,s,l,c,p="".concat(i.id,"::").concat(t,"::").concat(n);if(this.selectedNavKey===p)return r.classList.remove("gs-row-selected"),this.selectedNavKey=null,void(null===(a=this.onDeselect)||void 0===a||a.call(this,"cutting"));this.selectedNavKey&&(null===(o=this._cuttingRows.get(this.selectedNavKey))||void 0===o||o.classList.remove("gs-row-selected")),this.selectedNavKey=p,r.classList.add("gs-row-selected");var f=i.odds.find(function(e){return e.id===t}),g=null==f?void 0:f.cuttings[n];if(g){var v=null!==(s=d.causeOddColors[t])&&void 0!==s?s:"#3a7abf";this._updateChip(g.name,v,h,(0,u.stateFromTension)(null!==(l=g.score)&&void 0!==l?l:.5),(0,u.clampWeight)(null!==(c=g.weight)&&void 0!==c?c:1))}this.onNavigate({type:"cutting",componentIndex:e,oddId:t,cuttingIndex:n})}},{key:"_toggleComp",value:function(e){var t,n,i=this.openCompId===e;if(this.openCompId){null===(t=this._compWrappers.get(this.openCompId))||void 0===t||t.classList.remove("gs-tree-children-wrapper--open");var r=this._compToggles.get(this.openCompId);r&&(r.textContent="▶")}if(i)this.openCompId=null;else{this.openCompId=e,null===(n=this._compWrappers.get(e))||void 0===n||n.classList.add("gs-tree-children-wrapper--open");var a=this._compToggles.get(e);a&&(a.textContent="▼")}}},{key:"_updateChip",value:function(e,t,n,i,r){if(this.chipLabelEl.classList.toggle("gs-context-title--empty",null===e),null===e)this.chipLabelEl.textContent="—";else{var a=n?"".concat((0,p.buildHierBadgeHtml)(n)," "):"";this.chipLabelEl.innerHTML="".concat(a,'<span class="gs-context-title-name">').concat(m(e),"</span>")}this.chipEl.classList.toggle("stack-nav-chip--active",null!==e);var o=(0,p.buildSelectedStateWeightChipsHtml)({stateValue:i,weightValue:r});this.chipStateEl.hidden=""===o,this.chipStateEl.innerHTML=o;var s=this.chipEl.closest(".stack-nav-header");t?(this.chipDotEl.style.backgroundColor=t,this.chipDotEl.style.border="none",this.chipDotEl.style.boxShadow="0 0 7px 2px ".concat(t,"80"),s&&(s.style.boxShadow="inset 3px 0 0 ".concat(t))):(this.chipDotEl.style.backgroundColor="transparent",this.chipDotEl.style.border="1px solid #2a4a6a",this.chipDotEl.style.boxShadow="none",s&&(s.style.boxShadow="none"))}},{key:"_positionDropdown",value:function(){var e=this.chipEl.getBoundingClientRect(),t=document.getElementById("action-stack-column"),n=t?t.getBoundingClientRect().width:e.width;this.dropdownEl.style.top="".concat(e.bottom,"px"),this.dropdownEl.style.left="".concat(e.left,"px"),this.dropdownEl.style.width="".concat(n,"px")}},{key:"setOnHover",value:function(e){this._onHover=e}},{key:"open",value:function(){var e=this;if(!this.isOpen){this.isOpen=!0,this._positionDropdown(),this.dropdownEl.hidden=!1,this.chipEl.setAttribute("aria-expanded","true");var t=this.chipEl.querySelector(".stack-nav-chip-chevron");t&&(t.textContent="▲");var n=function(t){e.dropdownEl.contains(t.target)||e.containerEl.contains(t.target)||e.close()};this._outsideClickHandler=n,document.addEventListener("mousedown",n);var i=function(t){"Escape"===t.key&&e.close()};this._keyHandler=i,document.addEventListener("keydown",i)}}},{key:"close",value:function(){if(this.isOpen){this.isOpen=!1,this.dropdownEl.hidden=!0,this.chipEl.setAttribute("aria-expanded","false");var e=this.chipEl.querySelector(".stack-nav-chip-chevron");e&&(e.textContent="▼"),this._outsideClickHandler&&(document.removeEventListener("mousedown",this._outsideClickHandler),this._outsideClickHandler=null),this._keyHandler&&(document.removeEventListener("keydown",this._keyHandler),this._keyHandler=null)}}},{key:"_expandComposante",value:function(e){var t,n;if(this.openCompId!==e){if(this.openCompId){null===(t=this._compWrappers.get(this.openCompId))||void 0===t||t.classList.remove("gs-tree-children-wrapper--open");var i=this._compToggles.get(this.openCompId);i&&(i.textContent="▶")}this.openCompId=e,null===(n=this._compWrappers.get(e))||void 0===n||n.classList.add("gs-tree-children-wrapper--open");var r=this._compToggles.get(e);r&&(r.textContent="▼")}}},{key:"_collapseAll",value:function(){var e;if(this.openCompId){null===(e=this._compWrappers.get(this.openCompId))||void 0===e||e.classList.remove("gs-tree-children-wrapper--open");var t=this._compToggles.get(this.openCompId);t&&(t.textContent="▶"),this.openCompId=null}}},{key:"_highlightComposanteRow",value:function(e){var t,n;this.selectedCompId&&(null===(t=this._compRows.get(this.selectedCompId))||void 0===t||t.classList.remove("gs-row-selected")),this.selectedCompId=e,e&&(null===(n=this._compRows.get(e))||void 0===n||n.classList.add("gs-row-selected"))}},{key:"_clearSatelliteHighlight",value:function(){var e;this.selectedNavKey&&(null===(e=this._cuttingRows.get(this.selectedNavKey))||void 0===e||e.classList.remove("gs-row-selected"),this.selectedNavKey=null)}},{key:"syncToActiveChild",value:function(e){var t,n;if(this._highlightComposanteRow(null),this.selectedNavKey&&(null===(t=this._cuttingRows.get(this.selectedNavKey))||void 0===t||t.classList.remove("gs-row-selected")),!e)return this.selectedNavKey=null,void this._updateChip(null);this._updateChip(e.label,e.oddColor,h,e.stateValue,e.weightValue);var i="".concat(e.compId,"::").concat(e.oddId,"::").concat(e.cutIdx);this.selectedNavKey=i,null===(n=this._cuttingRows.get(i))||void 0===n||n.classList.add("gs-row-selected"),this._expandComposante(e.compId)}},{key:"syncToActiveComposante",value:function(e){if(this._clearSatelliteHighlight(),this._updateChip(e,void 0,null===e?void 0:f),null!==e){var t=this.composantes.find(function(t){return t.name===e});t&&(this._highlightComposanteRow(t.id),this._expandComposante(t.id))}else this._highlightComposanteRow(null)}},{key:"syncToActiveOdd",value:function(e){if(this._clearSatelliteHighlight(),this._highlightComposanteRow(null),this._updateChip(e,void 0,null===e?void 0:g),null!==e){var t=this.composantes.find(function(t){return t.odds.some(function(t){return t.name===e})});t&&this._expandComposante(t.id)}}},{key:"syncToSphere",value:function(e){this._clearSatelliteHighlight(),this._highlightComposanteRow(null),this._updateChip(e,void 0,null===e?void 0:v),this._collapseAll()}},{key:"destroy",value:function(){this.close(),this.dropdownEl.remove()}}],t&&l(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.StackNavOverlay=b},5528(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function a(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,o(i.key),i)}}function o(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var s,l=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),c=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),d=this&&this.__importStar||(s=function(e){return s=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},s(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=s(e),i=0;i<n.length;i++)"default"!==n[i]&&l(t,e,n[i]);return c(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.BorderDrawer=void 0;var u=d(n(600)),p=n(1123),h=n(8112),f=n(133),g=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.ViewInitializer=t,this.debugTag="[border-switch]",this.borderSegmentElements=[],this.lastActiveIndex=-1,this.currentBeaconIndex=-1,this.persistentSourceIndex=-1,this.beaconPulseActive=!1,this.arcsInitialized=!1,this.facetteImageRingGroup=null,this.facetteImageElements=new Map,this.facetteImagePositions=new Map,this.revealedFacetteImageIndex=null,this.facetteImageVeilFilter="grayscale(0.9) brightness(0.55) saturate(0.5)",this._hoverSegmentIndex=-1,this._pointerHoverIndex=-1,this.segmentOutlineWidth=3,this.bevelGradientId="border-segment-bevel-gradient",this.activeOutlineWidth=5,this.inactiveOutlineColor="#c0c0c0",this.activeOutlineColor="#d4af37",this.sourceBeaconColor="#72f5ff",this.borderGhostGroupNode=null,this.borderGhostEntries=[],this.borderGhostFrameId=null},t=[{key:"setOnBorderHover",value:function(e){this._onBorderHoverCb=e}},{key:"initialize",value:function(){this.viewData=this.ViewInitializer.viewData,this.yinYangGroup=this.ViewInitializer.yinYangGroup,this.borderArcsGroup=this.ViewInitializer.borderArcsGroup,this.facetteImageBackgroundGroup=this.ViewInitializer.facetteImageBackgroundGroup,this.graphicStrategy=this.ViewInitializer.graphicStrategy,this.geometry=this.ViewInitializer.geometry,this.containerId=this.ViewInitializer.containerId,this.key=this.ViewInitializer.key}},{key:"createBorders",value:function(){var e=this.ViewInitializer.controller.getInternalModel(),t=this.ViewInitializer.getCurrentComponentIndex();console.debug("".concat(this.debugTag," createBorders"),{activeIndex:t,lastActiveIndex:this.lastActiveIndex,currentBeaconIndex:this.currentBeaconIndex,persistentSourceIndex:this.persistentSourceIndex}),this.geometry.border.isChild||(this.arcsInitialized?this.updateBorderSegmentStyles(this.lastActiveIndex,!0,!1,!0):(this.arcsInitialized=!0,this.createBorderSegmentElements(e),this.updateBorderSegmentStyles(-1,!0,!0))),this.geometry.border.isChild&&this.drawBorder(this.geometry.border.innerRadius,this.geometry.border.outerRadius,0,this.getTotalBordersGroup()),this.ViewInitializer.controller.view.yinYangDrawer.refreshOuterSpark()}},{key:"drawBorder",value:function(e,t){var n=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:this.yinYangGroup).appendElement("g");this.graphicStrategy.drawArc(n,this.geometry.layout.positionX,this.geometry.layout.positionY,e,t,0,2*Math.PI,"none").setStyle("stroke","#000000").setStyle("stroke-width","1").setStyle("stroke-opacity","0.2").setStyle("fill","none")}},{key:"createBorderSegmentElements",value:function(e){for(var t=this,n=this.borderArcsGroup.node();n.firstChild;)n.removeChild(n.firstChild);this.stopBorderGhostLoop(),this.borderGhostGroupNode=null,this.borderGhostEntries=[];var i=this.borderArcsGroup.appendElement("g");i.setStyle("filter","drop-shadow(0 2px 8px rgba(0, 0, 0, 0.15))");var r=this.geometry.border.innerRadius+this.segmentOutlineWidth/2,a=this.geometry.border.innerRadius+this.geometry.border.thickness*this.geometry.border.count+this.segmentOutlineWidth/2,o=this.getSegmentCornerRadius(r,a),s=this.createSegmentBevelGradient(r,a);this.geometry.borderSegments.forEach(function(n){var l=e.components.findIndex(function(e){return e.id===n.category}),c=l>=0?e.components[l].odds:[],d=c&&c.length>1?t.createSegmentGradient(n,c,(r+a)/2):null,u=i.appendElement("g"),p=t.graphicStrategy.drawArc(u,t.geometry.layout.positionX,t.geometry.layout.positionY,r,a,n.startAngle,n.endAngle,d?"url(#".concat(d.gradientId,")"):n.color,o);p.setStyle("cursor","pointer").setStyle("transition","stroke 0.1s ease, stroke-width 0.1s ease, opacity 0.1s ease").setStyle("stroke",t.inactiveOutlineColor).setStyle("stroke-width",t.segmentOutlineWidth.toString()).setStyle("filter","brightness(1)");var h=t.graphicStrategy.drawArc(u,t.geometry.layout.positionX,t.geometry.layout.positionY,r,a,n.startAngle,n.endAngle,"url(#".concat(s,")"),o);h.setStyle("pointer-events","none").setAttribute("data-role","border-segment-bevel"),l>=0&&t.borderSegmentElements.push({element:p,bevel:h,group:u,index:l,gradient:null==d?void 0:d.gradient,odds:c,midAngle:t.getSegmentMidAngle(n),cornerRadius:o,geometry:{innerRadius:r,outerRadius:a,startAngle:n.startAngle,endAngle:n.endAngle}}),l>=0&&(p.addEventListener("click",function(){t.handleSegmentClick(l,n.category)}),p.addEventListener("mouseenter",function(){var e;t._pointerHoverIndex=l,t.refreshSegmentLifts(),null===(e=t._onBorderHoverCb)||void 0===e||e.call(t,l)}),p.addEventListener("mouseleave",function(){var e;t._pointerHoverIndex===l&&(t._pointerHoverIndex=-1,t.refreshSegmentLifts()),null===(e=t._onBorderHoverCb)||void 0===e||e.call(t,null)}))})}},{key:"getSegmentCornerRadius",value:function(e,t){return(t-e)/2*Math.max(0,Math.min(1,this.ViewInitializer.borderSegmentCornerRadius))}},{key:"createSegmentBevelGradient",value:function(e,t){var n=Math.max(0,Math.min(1,this.ViewInitializer.borderSegmentBevelIntensity)),i=t+this.getMaxOuterRadiusIncrease(),r=function(e){return"".concat((e/i*100).toFixed(3),"%")},a=t-e;return this.graphicStrategy.createRadialGradient(this.bevelGradientId,"0","0",i.toString(),[{offset:r(e),color:"#000000",opacity:.45*n},{offset:r(e+.45*a),color:"#000000",opacity:0},{offset:r(e+.78*a),color:"#ffffff",opacity:.06*n},{offset:r(t),color:"#ffffff",opacity:.42*n},{offset:"100%",color:"#ffffff",opacity:0}],"userSpaceOnUse"),this.bevelGradientId}},{key:"getMaxOuterRadiusIncrease",value:function(){return this.geometry.border.thickness*this.geometry.border.count*.8}},{key:"refreshSegmentLifts",value:function(){var e=this,t=this.geometry.border.thickness*this.geometry.border.count*.3*Math.max(0,Math.min(1,this.ViewInitializer.borderSegmentHoverLift));this.borderSegmentElements.forEach(function(n){var i=n.group,r=n.index,a=n.midAngle,o=r!==e._pointerHoverIndex&&r!==e._hoverSegmentIndex||void 0===a?0:t,s=null!=a?a:0;i.setStyle("transition","transform 0.16s ease-out").setStyle("transform",0===o?"none":"translate(".concat((Math.sin(s)*o).toFixed(2),"px, ").concat((-Math.cos(s)*o).toFixed(2),"px)"))})}},{key:"drawBorderSegmentGhosts",value:function(){if(!this.geometry.border.isChild){if(!this.borderGhostGroupNode){var e=this.borderArcsGroup.appendElement("g").setAttribute("data-role","border-segment-ghost-layer").setStyle("pointer-events","none");this.borderGhostGroupNode=e.node()}var t=this.borderGhostGroupNode;if(t){var n=this.ViewInitializer.borderSegmentsGhost;if(!n||0===n.length)return this.borderGhostEntries=[],u.select(t).selectAll("*").remove(),void this.stopBorderGhostLoop();var i=new Map(this.geometry.borderSegments.map(function(e){return[e.category,e]}));this.borderGhostEntries=n.map(function(e){var t,n,r=i.get(e.category),a=null!==(t=null==r?void 0:r.startAngle)&&void 0!==t?t:e.startAngle,o=null!==(n=null==r?void 0:r.endAngle)&&void 0!==n?n:e.endAngle;return{category:e.category,baseStart:a,baseEnd:o,ghostStart:e.startAngle,ghostEnd:e.endAngle,isGrowing:e.endAngle-e.startAngle>o-a}}),this.drawBorderGhostArcs(t),this.ensureBorderGhostLoop(t)}}}},{key:"getBorderGhostRadii",value:function(){return{innerRadius:this.geometry.border.innerRadius+this.segmentOutlineWidth/2,outerRadius:this.geometry.border.innerRadius+this.geometry.border.thickness*this.geometry.border.count+this.segmentOutlineWidth/2}}},{key:"drawBorderGhostArcs",value:function(e){var t=this.getBorderGhostRadii(),n=t.innerRadius,i=t.outerRadius,r=u.arc().innerRadius(n).outerRadius(i).startAngle(function(e){return e.ghostStart}).endAngle(function(e){return e.ghostEnd}),a=u.select(e).selectAll('path[data-role="border-segment-ghost"]').data(this.borderGhostEntries,function(e){return e.category});a.exit().remove(),a.enter().append("path").attr("data-role","border-segment-ghost").style("pointer-events","none").style("stroke",f.WEIGHT_DELTA_COLOR).style("stroke-width","2px").merge(a).attr("d",r).attr("transform","translate(".concat(this.geometry.layout.positionX,", ").concat(this.geometry.layout.positionY,")")).style("fill",f.WEIGHT_DELTA_COLOR).style("fill-opacity",function(e){return e.isGrowing?.18:0}).style("stroke-dasharray",function(e){return e.isGrowing?"6 4":"4 3"})}},{key:"ensureBorderGhostLoop",value:function(e){var t=this;if(null===this.borderGhostFrameId){var n=function(i){0!==t.borderGhostEntries.length&&t.borderGhostGroupNode?(t.updateBorderGhostWave(e,i),t.borderGhostFrameId=requestAnimationFrame(n)):t.borderGhostFrameId=null};this.borderGhostFrameId=requestAnimationFrame(n)}}},{key:"stopBorderGhostLoop",value:function(){null!==this.borderGhostFrameId&&(cancelAnimationFrame(this.borderGhostFrameId),this.borderGhostFrameId=null)}},{key:"updateBorderGhostWave",value:function(e,t){var n=this.getBorderGhostRadii(),i=n.innerRadius,r=n.outerRadius,a=t/Math.max(200,1e3*this.ViewInitializer.waveTravelDurationSec)%1,o=u.easeSinInOut(a),s=Math.sin(a*Math.PI),l=u.arc().innerRadius(i).outerRadius(r).startAngle(function(e){return e.baseStart+(e.ghostStart-e.baseStart)*o}).endAngle(function(e){return e.baseEnd+(e.ghostEnd-e.baseEnd)*o}),c=u.select(e).selectAll('path[data-role="border-segment-ghost-wave"]').data(this.borderGhostEntries,function(e){return e.category});c.exit().remove(),c.enter().append("path").attr("data-role","border-segment-ghost-wave").style("pointer-events","none").style("fill","none").style("stroke",f.WEIGHT_DELTA_COLOR).style("stroke-width","2px").merge(c).attr("d",l).attr("transform","translate(".concat(this.geometry.layout.positionX,", ").concat(this.geometry.layout.positionY,")")).style("stroke-opacity",s.toString())}},{key:"handleSegmentClick",value:function(e,t){if(!this.ViewInitializer.isComponentSwitching())if(e!==this.ViewInitializer.getCurrentComponentIndex()){var n=this.ViewInitializer.controller.view.viewInitializer.controller;n.prepareForComponentSwitch(t),n.animateChildrenHide(),this.updateBorderSegmentStyles(e,!1,!0),this.ViewInitializer.animateToComponent(e,p.animationConfig.componentSwitchDurationMs),n.onDiagramComposanteClicked(e)}else this.ViewInitializer.controller.view.viewInitializer.controller.toggleComposanteChildrenFromDiagram(e)}},{key:"createFacetteImageRing",value:function(){var e=this;if(!this.facetteImageRingGroup&&this.geometry.borderSegments.length){var t=this.ViewInitializer.controller.getInternalModel(),n=this.geometry.layout.positionX,i=this.geometry.layout.positionY,a=this.geometry.border.innerRadius+this.geometry.border.thickness*this.geometry.border.count+this.segmentOutlineWidth/2,o=this.ViewInitializer.borderOuterRadius/(this.ViewInitializer.patternScale||1),s=this.ViewInitializer.facetteImageMargin,l=Math.max(10,(o-a-2*s)/2),c=a+s+this.ViewInitializer.facetteImageOffset,d=Math.max(.1,Math.min(2,this.ViewInitializer.facetteImageDiameterScale)),u=Math.max(4,l*d),p=t.slices.length>0?Math.max.apply(Math,function(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t.slices.map(function(e){return e.weight}))):0,f=this.facetteImageBackgroundGroup.appendElement("g");f.setAttribute("data-role","facette-image-ring"),this.facetteImageRingGroup=f;var g="facette-image-fade-gradient",v="facette-image-fade-mask",m=this.graphicStrategy.defs.appendElement("radialGradient").setAttribute("id",g).setAttribute("cx","50%").setAttribute("cy","50%").setAttribute("r","50%");m.appendElement("stop").setAttribute("offset","0%").setAttribute("stop-color","white").setAttribute("stop-opacity","1"),m.appendElement("stop").setAttribute("offset","".concat(this.ViewInitializer.facetteImageFadeStart,"%")).setAttribute("stop-color","white").setAttribute("stop-opacity","1"),m.appendElement("stop").setAttribute("offset","100%").setAttribute("stop-color","white").setAttribute("stop-opacity",this.ViewInitializer.facetteImageFadeEndOpacity.toString()),this.graphicStrategy.defs.appendElement("mask").setAttribute("id",v).setAttribute("maskContentUnits","objectBoundingBox").appendElement("circle").setAttribute("cx","0.5").setAttribute("cy","0.5").setAttribute("r","0.5").setAttribute("fill","url(#".concat(g,")")),this.geometry.borderSegments.forEach(function(r){var a=t.components.findIndex(function(e){return e.id===r.category});if(!(a<0)){var o=t.slices.find(function(e){return e.id===r.category}),s=p>0&&o?o.weight/p:1,l=Math.max(0,Math.min(1,e.ViewInitializer.facetteImageWeightCurve)),d=Math.pow(s,l),g=Math.max(4,u*d),m=e.getSegmentMidAngle(r),y=e.getPointOnAngle(n,i,m,c+g);e.facetteImagePositions.set(a,{x:y.x,y:y.y,radius:g});var b=f.appendElement("g");b.setAttribute("transform","translate(".concat(y.x,", ").concat(y.y,")"));var I=b.appendElement("image").setAttribute("href",(0,h.getFacetteImageUrl)(r.category)).setAttribute("x",(-g).toString()).setAttribute("y",(-g).toString()).setAttribute("width",(2*g).toString()).setAttribute("height",(2*g).toString()).setAttribute("mask","url(#".concat(v,")")).setAttribute("preserveAspectRatio","xMidYMid slice").setStyle("filter",-1===e.lastActiveIndex?"none":e.facetteImageVeilFilter).setStyle("transition","filter 0.4s ease");e.facetteImageElements.set(a,I)}})}}},{key:"rebuildFacetteImageRing",value:function(){var e,t,n,i;null===(t=null===(e=this.facetteImageRingGroup)||void 0===e?void 0:e.node())||void 0===t||t.remove(),this.facetteImageRingGroup=null,this.facetteImageElements.clear(),this.facetteImagePositions.clear(),this.revealedFacetteImageIndex=null;var r=this.graphicStrategy.defs.node();null===(n=null==r?void 0:r.querySelector("#facette-image-fade-gradient"))||void 0===n||n.remove(),null===(i=null==r?void 0:r.querySelector("#facette-image-fade-mask"))||void 0===i||i.remove(),this.createFacetteImageRing()}},{key:"revealFacetteImage",value:function(e){var t=this;this.revealedFacetteImageIndex!==e&&(this.facetteImageElements.forEach(function(n,i){n.setStyle("filter",i===e?"none":t.facetteImageVeilFilter)}),this.revealedFacetteImageIndex=e)}},{key:"getFacetteImagePosition",value:function(e){return this.facetteImagePositions.get(e)}},{key:"getSegmentMidAngle",value:function(e){var t=e.endAngle<e.startAngle?e.endAngle+2*Math.PI:e.endAngle;return(e.startAngle+t)/2}},{key:"getPointOnAngle",value:function(e,t,n,i){return{x:e+Math.sin(n)*i,y:t-Math.cos(n)*i}}},{key:"activateSegment",value:function(e){console.debug("".concat(this.debugTag," BorderDrawer.activateSegment"),{segmentIndex:e,lastActiveIndex:this.lastActiveIndex,currentBeaconIndex:this.currentBeaconIndex,persistentSourceIndex:this.persistentSourceIndex}),this.updateBorderSegmentStyles(e,!1,!0)}},{key:"deactivateSegment",value:function(){this.updateBorderSegmentStyles(-1,!0),this.revealAllFacetteImages()}},{key:"revealAllFacetteImages",value:function(){this.facetteImageElements.forEach(function(e){e.setStyle("filter","none")}),this.revealedFacetteImageIndex=null}},{key:"flashSourceBeacon",value:function(e){var t=this;if(this.beaconPulseActive&&this.currentBeaconIndex!==e){var n=this.borderSegmentElements.find(function(e){return e.index===t.currentBeaconIndex}),i=null==n?void 0:n.element.node();i&&i.classList.remove("gs-border-beacon")}this.currentBeaconIndex=e,this.persistentSourceIndex=e,console.debug("".concat(this.debugTag," flashSourceBeacon"),{segmentIndex:e,activeIndex:this.lastActiveIndex}),this.updateBorderSegmentStyles(this.lastActiveIndex,!0),this.startBeaconPulse(e)}},{key:"clearSourceBeacon",value:function(){var e=this;this.beaconPulseActive=!1;var t=this.borderSegmentElements.find(function(t){return t.index===e.currentBeaconIndex}),n=null==t?void 0:t.element.node();n&&n.classList.remove("gs-border-beacon"),this.currentBeaconIndex=-1,this.persistentSourceIndex=-1,this.updateBorderSegmentStyles(this.lastActiveIndex,!0)}},{key:"setHoverSegment",value:function(e){var t=this;if(this._hoverSegmentIndex>=0){var n=this.borderSegmentElements.find(function(e){return e.index===t._hoverSegmentIndex}),i=null==n?void 0:n.group.node();null==i||i.classList.remove("gs-border-hover")}if(this._hoverSegmentIndex=null!=e?e:-1,null!==e&&e>=0){var r=this.borderSegmentElements.find(function(t){return t.index===e}),a=null==r?void 0:r.group.node();null==a||a.classList.add("gs-border-hover")}this.refreshSegmentLifts()}},{key:"rebuildBorderSegments",value:function(){var e;if(!this.geometry.border.isChild&&this.arcsInitialized){var t=this.graphicStrategy.defs.node();null===(e=null==t?void 0:t.querySelector("#".concat(this.bevelGradientId)))||void 0===e||e.remove(),this.borderSegmentElements.forEach(function(e){var t,n=e.gradient;null===(t=null==n?void 0:n.node())||void 0===t||t.remove()}),this.borderSegmentElements=[];var n=this.ViewInitializer.controller.getInternalModel();this.createBorderSegmentElements(n),this.updateBorderSegmentStyles(this.lastActiveIndex,!0,!1,!0),this.beaconPulseActive&&this.currentBeaconIndex>=0&&this.startBeaconPulse(this.currentBeaconIndex),this.refreshSegmentLifts()}}},{key:"updateBorderSegmentStyles",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];console.debug("".concat(this.debugTag," updateBorderSegmentStyles"),{activeSegmentIndex:e,forceUpdate:n,isInitialClick:i,skipWidthAnim:r,lastActiveIndex:this.lastActiveIndex,currentBeaconIndex:this.currentBeaconIndex,persistentSourceIndex:this.persistentSourceIndex}),(n||this.lastActiveIndex!==e)&&(this.lastActiveIndex=e,this.borderSegmentElements.forEach(function(n){var a=n.element,o=n.index,s=n.gradient,l=n.odds,c=n.geometry;t.applySegmentStyle(a,o===e,s,l,c,o===e&&i,r)}))}},{key:"applySegmentStyle",value:function(e,t,n,i,r){var a,o=arguments.length>5&&void 0!==arguments[5]&&arguments[5],s=arguments.length>6&&void 0!==arguments[6]&&arguments[6],l=null===(a=this.borderSegmentElements.find(function(t){return t.element===e}))||void 0===a?void 0:a.index,c=void 0!==l&&(l===this.persistentSourceIndex||l===this.currentBeaconIndex);if(console.debug("".concat(this.debugTag," applySegmentStyle"),{segmentIndex:l,isActive:t,isBeaconSegment:c,currentBeaconIndex:this.currentBeaconIndex,activeIndex:this.lastActiveIndex,isInitialExpand:o}),t){var d=this.ViewInitializer.borderGlowIntensity,u=4+10*d,p=8+16*d,h=.25+.7*d,f=.15+.5*d,g=1+.2*d,v=this.ViewInitializer.outerSparkGlowColor,m=this.toRgba(v,h),y=this.toRgba(v,f),b=this.segmentOutlineWidth+1.5;e.setStyle("opacity","1").setStyle("stroke",c?this.sourceBeaconColor:this.activeOutlineColor).setStyle("stroke-width",c?b.toString():this.activeOutlineWidth.toString()),c&&this.beaconPulseActive||e.setStyle("filter","drop-shadow(0 0 ".concat(u,"px ").concat(m,") drop-shadow(0 0 ").concat(p,"px ").concat(y,") brightness(").concat(g,")")),n&&i&&i.length>1&&(console.debug("".concat(this.debugTag," applySegmentColorAnimation"),{segmentIndex:l,oddsCount:i.length}),this.applySegmentColorAnimation(n,i)),r&&o&&!s&&(console.debug("".concat(this.debugTag," applySegmentOuterWidthAnimation"),{segmentIndex:l,innerRadius:r.innerRadius,outerRadius:r.outerRadius}),this.applySegmentOuterWidthAnimation(e,r,!0))}else e.setStyle("opacity","1").setStyle("stroke",c?this.sourceBeaconColor:this.inactiveOutlineColor).setStyle("stroke-width",c?(this.segmentOutlineWidth+1.5).toString():this.segmentOutlineWidth.toString()),c&&this.beaconPulseActive||e.setStyle("filter",c?"brightness(1.08) saturate(1.22)":"brightness(0.95) saturate(0.9)"),n&&this.removeSegmentColorAnimation(n),r&&!s&&this.applySegmentOuterWidthAnimation(e,r,!1)}},{key:"getTotalBordersGroup",value:function(){var e='g[data-role="total-borders-'.concat(this.key,'"]'),t=this.yinYangGroup.select(e);t.node()||(t=this.yinYangGroup.appendElement("g").setAttribute("data-role","total-borders-".concat(this.key)));for(var n=t.node();n.firstChild;)n.removeChild(n.firstChild);return t.setStyle("pointer-events","none"),t}},{key:"applySegmentColorAnimation",value:function(e,t){var n=this,i=t.map(function(e){return n.ViewInitializer.getOddColor(e.id)});this.graphicStrategy.changeBorderColors(e,this.viewData.borderAnimationDuration,i)}},{key:"removeSegmentColorAnimation",value:function(e){var t=e.node();t&&t.querySelectorAll("animate").forEach(function(e){return e.remove()})}},{key:"applySegmentOuterWidthAnimation",value:function(e,t,n){var i,r,a=e.node();if(a){var o=this.ViewInitializer.borderSegmentWidthExpansion||1,s=this.getMaxOuterRadiusIncrease(),l=n?t.outerRadius+s*o:t.outerRadius,c=a.getAttribute("data-outer-radius"),d=c?parseFloat(c):t.outerRadius,p=this.borderSegmentElements.find(function(t){return t.element===e}),h=null===(i=null==p?void 0:p.bevel)||void 0===i?void 0:i.node(),f=u.arc().innerRadius(t.innerRadius).startAngle(t.startAngle).endAngle(t.endAngle).cornerRadius(null!==(r=null==p?void 0:p.cornerRadius)&&void 0!==r?r:0),g=function(e){var t=f.outerRadius(e)({})||"";return null==h||h.setAttribute("d",t),t};n?u.select(a).interrupt("width-anim").transition("width-anim").duration(160).ease(u.easeBackOut.overshoot(1.6)).attrTween("d",function(){var e=u.interpolateNumber(d,l);return function(t){return g(e(t))}}).on("end",function(){a.setAttribute("data-outer-radius",l.toString())}):u.select(a).interrupt("width-anim").transition("width-anim").duration(100).ease(u.easeQuadIn).attrTween("d",function(){var e=u.interpolateNumber(d,l);return function(t){return g(e(t))}}).on("end",function(){a.setAttribute("data-outer-radius",l.toString())})}}},{key:"startBeaconPulse",value:function(e){var t=this.borderSegmentElements.find(function(t){return t.index===e}),n=null==t?void 0:t.element.node();n&&(this.beaconPulseActive=!0,n.classList.add("gs-border-beacon"))}},{key:"toRgba",value:function(e,t){var n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(!n)return e;var i=parseInt(n[1],16),r=parseInt(n[2],16),a=parseInt(n[3],16),o=Math.max(0,Math.min(1,t));return"rgba(".concat(i,", ").concat(r,", ").concat(a,", ").concat(o,")")}},{key:"createSegmentGradient",value:function(e,t,n){var i=this,r=this.ViewInitializer.getSafeIdPart(e.category),a="".concat(this.containerId,"-segmentGradient-").concat(r,"-").concat(this.key),o=t.map(function(e,n){var r=n/(t.length-1);return{offset:"".concat(Math.round(100*r),"%"),color:i.ViewInitializer.getOddColor(e.id),opacity:1}}),s={x:Math.sin(e.startAngle)*n,y:-Math.cos(e.startAngle)*n},l={x:Math.sin(e.endAngle)*n,y:-Math.cos(e.endAngle)*n};return{gradientId:a,gradient:this.graphicStrategy.createLinearGradient(a,s.x.toFixed(3),s.y.toFixed(3),l.x.toFixed(3),l.y.toFixed(3),o,"userSpaceOnUse")}}}],t&&a(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.BorderDrawer=g},2892(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function a(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var o,s=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),c=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=o(e),i=0;i<n.length;i++)"default"!==n[i]&&s(t,e,n[i]);return l(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.SpikeDrawer=void 0;var d=c(n(600)),u=n(133),p=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.ViewInitializer=t,this.spikesEnabled=!0,this.spikeGhostEntries={yin:[],yang:[]},this.spikeGhostFrameId=null},(t=[{key:"initialize",value:function(){this.geometry=this.ViewInitializer.geometry,this.containerId=this.ViewInitializer.containerId,this.key=this.ViewInitializer.key,this.graphicStrategy=this.ViewInitializer.graphicStrategy}},{key:"createSpikes",value:function(){this.drawSpikes()}},{key:"refreshSpikes",value:function(){this.clearSpikes(),this.drawSpikes()}},{key:"clearSpikes",value:function(){var e,t;if(null===(t=null===(e=this.ViewInitializer.yinOrYangGroup)||void 0===e?void 0:e.yin)||void 0===t?void 0:t.graphElementGroup){var n=this.ViewInitializer.yinOrYangGroup.yin.graphElementGroup.node(),i=this.ViewInitializer.yinOrYangGroup.yang.graphElementGroup.node();n&&n.querySelectorAll('line[id*="gradientSpike-'.concat(this.key,'"]')).forEach(function(e){return e.remove()}),i&&i.querySelectorAll('line[id*="gradientSpike-'.concat(this.key,'"]')).forEach(function(e){return e.remove()});var r=this.ViewInitializer.graphicContainer.node().querySelector("defs");r&&r.querySelectorAll('[id*="gradientSpike-'.concat(this.key,'"]')).forEach(function(e){return e.remove()})}}},{key:"drawSpikes",value:function(){var e=this;this.spikesEnabled&&(this.geometry.spikes.forEach(function(t,n){e.drawSpike(t,n)}),this.drawSpikeGhosts())}},{key:"drawSpike",value:function(e,t){var n=e.startX.toString(),i=e.startY.toString(),r=e.endX.toString(),a=e.endY.toString(),o=this.ViewInitializer.getSafeIdPart(e.category),s="".concat(this.containerId,"-gradientSpike-").concat(this.key,"-").concat(e.type,"-").concat(o,"-").concat(t);this.graphicStrategy.createLinearGradient(s,n,i,r,a,[{offset:"0%",color:"yin"===e.type?"black":"white",opacity:1},{offset:"80%",color:e.color,opacity:1},{offset:"100%",color:e.color,opacity:0}],"userSpaceOnUse");var l=e.cuttingIndex;this.ViewInitializer.yinOrYangGroup[e.type].graphElementGroup.appendElement("line").setAttribute("x1",n).setAttribute("y1",i).setAttribute("x2",r).setAttribute("y2",a).setAttribute("id",s).setAttribute("data-cutting-index",l.toString()).setAttribute("data-category",o).setStyle("stroke","url(#".concat(s,")")).setStyle("transition","filter 0.2s")}},{key:"drawSpikeGhosts",value:function(){this.drawSpikeGhostsForType("yin"),this.drawSpikeGhostsForType("yang"),this.spikeGhostEntries.yin.length>0||this.spikeGhostEntries.yang.length>0?this.ensureSpikeGhostLoop():this.stopSpikeGhostLoop()}},{key:"drawSpikeGhostsForType",value:function(e){var t,n=this.ViewInitializer.yinOrYangGroup[e],i='g[data-role="spike-ghost-layer-'.concat(e,'"]'),r=n.graphElementGroup.select(i),a=(null!==(t=this.ViewInitializer.spikesGhost)&&void 0!==t?t:[]).filter(function(t){return t.type===e});if(0===a.length)return this.spikeGhostEntries[e]=[],void(r.node()&&d.select(r.node()).selectAll("*").remove());r.node()||(r=n.graphElementGroup.appendElement("g").setAttribute("data-role","spike-ghost-layer-".concat(e)).setStyle("pointer-events","none"));var o=n.graphElementGroup.node(),s=r.node();if(o&&s&&o.appendChild(s),s){var l=new Map(this.geometry.spikes.filter(function(t){return t.type===e}).map(function(e){return["".concat(e.category,"-").concat(e.cuttingIndex),e]}));this.spikeGhostEntries[e]=a.map(function(e){var t,n,i="".concat(e.category,"-").concat(e.cuttingIndex),r=l.get(i),a=null!==(t=null==r?void 0:r.endX)&&void 0!==t?t:e.startX,o=null!==(n=null==r?void 0:r.endY)&&void 0!==n?n:e.startY,s=Math.hypot(a-e.startX,o-e.startY),c=Math.hypot(e.endX-e.startX,e.endY-e.startY);return{key:i,startX:e.startX,startY:e.startY,baseEndX:a,baseEndY:o,ghostEndX:e.endX,ghostEndY:e.endY,isGrowing:c>s}}),this.drawSpikeGhostLines(s,e)}else this.spikeGhostEntries[e]=[]}},{key:"drawSpikeGhostLines",value:function(e,t){var n=d.select(e).selectAll('line[data-role="spike-ghost"]').data(this.spikeGhostEntries[t],function(e){return e.key});n.exit().remove(),n.enter().append("line").attr("data-role","spike-ghost").style("pointer-events","none").style("stroke",u.WEIGHT_DELTA_COLOR).style("stroke-width","2px").merge(n).attr("x1",function(e){return e.startX}).attr("y1",function(e){return e.startY}).attr("x2",function(e){return e.ghostEndX}).attr("y2",function(e){return e.ghostEndY}).style("stroke-dasharray",function(e){return e.isGrowing?"6 4":"4 3"})}},{key:"ensureSpikeGhostLoop",value:function(){var e=this;if(null===this.spikeGhostFrameId){var t=function(n){e.spikeGhostEntries.yin.length>0||e.spikeGhostEntries.yang.length>0?(e.updateSpikeGhostWave("yin",n),e.updateSpikeGhostWave("yang",n),e.spikeGhostFrameId=requestAnimationFrame(t)):e.spikeGhostFrameId=null};this.spikeGhostFrameId=requestAnimationFrame(t)}}},{key:"stopSpikeGhostLoop",value:function(){null!==this.spikeGhostFrameId&&(cancelAnimationFrame(this.spikeGhostFrameId),this.spikeGhostFrameId=null)}},{key:"updateSpikeGhostWave",value:function(e,t){var n=this.spikeGhostEntries[e];if(0!==n.length){var i=this.ViewInitializer.yinOrYangGroup[e],r='g[data-role="spike-ghost-layer-'.concat(e,'"]'),a=i.graphElementGroup.select(r).node();if(a){var o=t/Math.max(200,1e3*this.ViewInitializer.waveTravelDurationSec)%1,s=d.easeSinInOut(o),l=Math.sin(o*Math.PI),c=d.select(a).selectAll('circle[data-role="spike-ghost-wave"]').data(n,function(e){return e.key});c.exit().remove(),c.enter().append("circle").attr("data-role","spike-ghost-wave").style("pointer-events","none").attr("r",3.5).style("fill",u.WEIGHT_DELTA_COLOR).merge(c).attr("cx",function(e){return e.baseEndX+(e.ghostEndX-e.baseEndX)*s}).attr("cy",function(e){return e.baseEndY+(e.ghostEndY-e.baseEndY)*s}).style("fill-opacity",l.toString())}}}},{key:"highlightSpikeByCuttingIndex",value:function(e,t){var n,i,r,a,o,s,l=this.ViewInitializer.getSafeIdPart(e);[null===(r=null===(i=null===(n=this.ViewInitializer.yinOrYangGroup)||void 0===n?void 0:n.yin)||void 0===i?void 0:i.graphElementGroup)||void 0===r?void 0:r.node(),null===(s=null===(o=null===(a=this.ViewInitializer.yinOrYangGroup)||void 0===a?void 0:a.yang)||void 0===o?void 0:o.graphElementGroup)||void 0===s?void 0:s.node()].forEach(function(e){e&&e.querySelectorAll('line[data-category="'.concat(l,'"][data-cutting-index="').concat(t,'"]')).forEach(function(e){e.style.filter="drop-shadow(0 0 4px rgba(255, 255, 255, 1)) drop-shadow(0 0 8px rgba(255, 255, 255, 0.8)) drop-shadow(0 0 14px rgba(255, 255, 255, 0.5)) brightness(1.4)"})})}},{key:"unhighlightSpikes",value:function(){var e,t,n,i,r,a,o=this;[null===(n=null===(t=null===(e=this.ViewInitializer.yinOrYangGroup)||void 0===e?void 0:e.yin)||void 0===t?void 0:t.graphElementGroup)||void 0===n?void 0:n.node(),null===(a=null===(r=null===(i=this.ViewInitializer.yinOrYangGroup)||void 0===i?void 0:i.yang)||void 0===r?void 0:r.graphElementGroup)||void 0===a?void 0:a.node()].forEach(function(e){e&&e.querySelectorAll('line[id*="gradientSpike-'.concat(o.key,'"]')).forEach(function(e){e.style.filter=""})})}}])&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.SpikeDrawer=p},4948(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||o(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=o(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){l=!0,a=e},f:function(){try{s||null==n.return||n.return()}finally{if(l)throw a}}}}function o(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function l(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,c(i.key),i)}}function c(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.ViewInitializer=void 0;var d=n(4468),u=n(6939),p=n(1123),h=n(996),f=n(8286),g=n(133),v=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.weightDeltaGhostTotal=0,this.ghostVisible=!0,this.yinOpacity=.6,this.yangOpacity=.6,this.perimeterWaveOpacity=.5,this.numberOfWaves=4,this.waveSpacing=1,this.waveStrokeWidth=2,this.ghostPerimeterStrokeWidth=2,this.ghostPerimeterColor="#9b9b9b",this.waveColorIncrease="#aa0000",this.waveColorDecrease="#00aa00",this.ghostPerimeterSolid=!1,this.basePulseEnabled=!0,this.ghostPulseDurationSec=1.5,this.pulseMorphRatio=.85,this.waveTravelDurationSec=1.2,this.ghostDeltaBadgeSizeBoost=1.35,this.borderSegmentsGhost=null,this.categoriesGhost=null,this.spikesGhost=null,this.borderThicknessRatio=10,this.weightRatio=1,this.weight=1,this.offsetfromBorder=0,this.childrenScale=1,this.oddGradientSpread=1,this.oddGradientIntensity=1,this.borderGlowIntensity=.5,this.borderSegmentWidthExpansion=.25,this.borderSegmentCornerRadius=.6,this.borderSegmentBevelIntensity=.7,this.borderSegmentHoverLift=.35,this.outerSparkIntensity=2,this.outerSparkEnabled=!1,this.outerSparkLength=.1,this.outerSparkStrokeWidth=3,this.outerSparkAngleRad=0,this.outerSparkRotationDurationMs=7e3,this.outerSparkGlowColor="#72f5ff",this.balanceSparkIntensity=2,this.balanceSparkMaxLength=1.5,this.balanceSparkStrokeWidth=3,this.balanceSparkDurationMs=3500,this.balanceSparkYangColor="#72f5ff",this.balanceSparkYinColor="#ff4da6",this.balanceSparkEmberDistance=90,this.balanceSparkEmberSize=1,this.balanceSparkEmberSpeedMs=500,this.balanceSparkEmberColor="#fff3c4",this.balanceSparkTaperPower=2.2,this.balanceSparkBirthWidthRatio=0,this.balanceSparkDriftFragmentCount=3,this.balanceSparkDriftRemnantScale=1,this.balanceSparkDriftCentrifugalForce=.15,this.facetteImageMargin=10,this.facetteImageFadeStart=50,this.facetteImageFadeEndOpacity=0,this.facetteImageDiameterScale=1,this.facetteImageWeightCurve=1,this.facetteImageOffset=0,this.oddContextLabelsVisible=!0,this.oddContextLabelsSuppressed=!1,this.oddLabelsCompact=!0,this.legendLabelsBgEnabled=!0,this.labelsFontAutoScale=1,this.labelsFontScale=1,this.componentLabelFontScale=1,this.childStateDeltaFontScale=1,this.oddLabelFontScale=1,this.facetteLabelFontScale=1,this.facetteLabelSuffixVisible=!1,this.labelsTextShadowEnabled=!0,this.childLabelMaxLines=1,this.oddLabelMaxLines=1,this.oddLabelShortMaxChars=20,this.currentComponentIndex=0,this.animationSequence=0,this.isAnimationRunning=!1,this.isDisplayingOddMode=!1,this.displayingOddId=null,this.lastGhostDisplayKey=null,this.lastGhostOrderKey=null,this.lastGhostOrderParent=null,this.sliderElement=null,this.sliderValueElement=null,this.categoryFadeOpacities=new Map,this.borderSegmentGapAngle=Math.PI/90,this.patternScale=1,this.categoryBlendOpacity=.8,console.log("[PULSE_INIT] ViewInitializer.constructor - basePulseEnabled =",this.basePulseEnabled),this.graphicStrategy=t},t=[{key:"isInOddMode",value:function(){return this.isDisplayingOddMode}},{key:"getDisplayingOddId",value:function(){return this.displayingOddId}},{key:"initializeGraphicElements",value:function(e,t,n){var i,r,a,o,s;this.containerId=t.containerId,this.controller=e,this.viewData=t,this.categoryBlendOpacity=1,this.oddGradientIntensity=1,this.oddGradientSpread=1,this.lastGhostDisplayKey=null,this.lastGhostOrderKey=null,this.lastGhostOrderParent=null,this.weightRatio=null!==(i=this.viewData.weightRatio)&&void 0!==i?i:1,this.weight=null!==(r=this.viewData.weight)&&void 0!==r?r:1,this.borderOuterRadius=this.viewData.minEdge/2,this.borderThickness=this.borderOuterRadius/this.borderThicknessRatio,n||(this.borderOuterRadius-=this.borderThickness),this.labelsFontAutoScale=this.borderOuterRadius/300,this.oddLabelFontScale=this.labelsFontAutoScale,this.borderInnerRadius=this.borderOuterRadius-this.borderThickness*e.getBorderNb();var l=this.getCurrentComponent(),c=null!==(a=null==l?void 0:l.odds)&&void 0!==a?a:[],d=l?this.getChildCount(l):0;this.smallCircleRadius=u.GeometryUtils.calculateSmallCircleRadius(this.borderInnerRadius,d);var p=this.borderThickness;this.distanceFromChild=n?0:this.borderOuterRadius+p+this.smallCircleRadius+this.offsetfromBorder,this.graphicContainer=n?n.view.viewInitializer.graphicContainer:this.createGraphicContainer(this.containerId);var h=this.graphicContainer.node(),f="svg"===(null===(o=null==h?void 0:h.tagName)||void 0===o?void 0:o.toLowerCase())?h:null!==(s=null==h?void 0:h.closest("svg"))&&void 0!==s?s:null;f&&(f.style.overflow="visible"),n?(this.globalGroup=n.view.viewInitializer.childrenGroup.appendElement("g"),this.facetteImageBackgroundGroup=n.view.viewInitializer.facetteImageBackgroundGroup,this.childrenGroup=this.globalGroup.appendElement("g").setAttribute("data-role","children-group")):(this.globalGroup=this.graphicContainer.appendElement("g"),this.facetteImageBackgroundGroup=this.globalGroup.appendElement("g"),this.childrenGroup=this.globalGroup.appendElement("g").setAttribute("data-role","children-group")),this.borderArcsGroup=n?n.view.viewInitializer.borderArcsGroup:this.globalGroup.appendElement("g").setAttribute("data-role","border-arcs-group"),this.yinYangGroup=this.globalGroup.appendElement("g"),this.averageTension=this.calculateAverageTension(c),this.averageTensionGhost=this.averageTension,this.categories=this.setupCategories(),this.key=e.getKey(),this.isChild=!!n,this.applyChildrenScale();var g=this.getPatternPosition(n);this.positionX=g.positionX,this.positionY=g.positionY,this.yinOrYangGroup=this.createYinOrYangGroups(this.averageTension),this.yinOrYangGroupGhost=this.createYinOrYangGroups(this.averageTensionGhost),this.yinOrYangGroupGhost.yin.graphElementGroup.setStyle("pointer-events","none"),this.yinOrYangGroupGhost.yang.graphElementGroup.setStyle("pointer-events","none"),this.applyGhostOverlapRules(),this.geometry=this.buildGeometry()}},{key:"resizeWholePattern",value:function(e){this.patternScale=e,this.graphicStrategy.resizeGroup(this.globalGroup,e,this.positionX,this.positionY)}},{key:"setChildrenScale",value:function(e){this.childrenScale=Math.max(.5,Math.min(2,e)),this.applyChildrenScale()}},{key:"applyChildrenScale",value:function(){this.childrenGroup&&this.graphicStrategy.resizeGroup(this.childrenGroup,this.childrenScale,this.positionX,this.positionY)}},{key:"updateTension",value:function(e){this.averageTension=Math.max(0,Math.min(1,e)),this.redrawYinYangGeometry()}},{key:"updateGhostTension",value:function(e){this.averageTensionGhost=Math.max(0,Math.min(1,e)),this.redrawGhostGeometry()}},{key:"setGhostVisible",value:function(e){this.ghostVisible=e,this.refreshGhostDisplay()}},{key:"refreshGhostDisplay",value:function(){this.applyGhostOverlapRules(),this.controller.view.yinYangDrawer.drawGhostYinYangSymbols()}},{key:"isGhostDisplayAllowed",value:function(){return!this.isChild&&this.ghostVisible&&(0,f.isStackModeActive)()&&!this.controller.hasActiveBlockingAnimation()}},{key:"redrawYinYangGeometry",value:function(){var e=this.graphicContainer.node().querySelector("defs");if(e){for(var t=[],n=0;n<e.children.length;n++){var i=e.children[n],r=i.tagName.toLowerCase(),a=i.getAttribute("id")||"",o=a.includes("segmentGradient"),s=a.includes("-")&&!a.includes("-".concat(this.key,"-"));"radialgradient"!==r&&"lineargradient"!==r&&"mask"!==r||o||s||t.push(i)}t.forEach(function(e){var t;return null===(t=e.parentNode)||void 0===t?void 0:t.removeChild(e)})}this.yinOrYangGroup=this.updateYinOrYangGroup(this.yinOrYangGroup,this.averageTension,this.animationRadii),this.yinOrYangGroupGhost=this.updateYinOrYangGroup(this.yinOrYangGroupGhost,this.averageTensionGhost,void 0,!1),this.applyGhostOverlapRules(),this.geometry=this.buildGeometry(),this.controller.view.yinYangDrawer.initialize(),this.controller.view.yinYangDrawer.drawYinYangSymbols(),this.controller.view.yinYangDrawer.drawGhostYinYangSymbols(),this.controller.view.spikeDrawer.initialize(),this.controller.view.spikeDrawer.createSpikes(),this.controller.view.borderDrawer.initialize(),this.controller.view.borderDrawer.createBorders()}},{key:"redrawGhostGeometry",value:function(){this.yinOrYangGroupGhost=this.updateYinOrYangGroup(this.yinOrYangGroupGhost,this.averageTensionGhost,void 0,!1),this.applyGhostOverlapRules(),this.controller.view.yinYangDrawer.drawGhostYinYangSymbols()}},{key:"redrawBorders",value:function(){this.controller.view.borderDrawer.initialize(),this.controller.view.borderDrawer.createBorders()}},{key:"refreshSpikes",value:function(){var e=this.yinOrYangGroup.yin.graphElementGroup.node(),t=this.yinOrYangGroup.yang.graphElementGroup.node();e&&e.querySelectorAll("line").forEach(function(e){var t,n;(null===(t=e.getAttribute("stroke"))||void 0===t?void 0:t.includes("url(#"))&&(null===(n=e.getAttribute("stroke"))||void 0===n?void 0:n.includes("gradientSpike"))&&e.remove()}),t&&t.querySelectorAll("line").forEach(function(e){var t,n;(null===(t=e.getAttribute("stroke"))||void 0===t?void 0:t.includes("url(#"))&&(null===(n=e.getAttribute("stroke"))||void 0===n?void 0:n.includes("gradientSpike"))&&e.remove()}),this.controller.view.spikeDrawer.initialize(),this.controller.view.spikeDrawer.createSpikes()}},{key:"getAverageTension",value:function(){return this.averageTension}},{key:"getAverageState",value:function(){return(0,h.stateFromTension)(this.averageTension)}},{key:"getFacetteWeight",value:function(){var e=this,t=this.getCurrentComponent();return t?t.odds.reduce(function(t,n){return t+e.getOddWeight(n)},0):0}},{key:"getFacetteWeightMax",value:function(){var e=this.getCurrentComponent();return e?e.odds.reduce(function(e,t){return e+Math.max(1,t.cuttingWeights.length||t.satelliteCount)},0)*h.WEIGHT_MAX:h.WEIGHT_MAX}},{key:"getCurrentComponentIndex",value:function(){return this.currentComponentIndex}},{key:"getCurrentComponentName",value:function(){var e,t,n=this.controller.getInternalModel();if(0===n.components.length)return"N/A";var i=n.components[this.currentComponentIndex];return null!==(t=null!==(e=null==i?void 0:i.label)&&void 0!==e?e:null==i?void 0:i.id)&&void 0!==t?t:"N/A"}},{key:"getCurrentComponentOrientation",value:function(){var e=this.getCurrentComponent();return e?e.orientation:"yin"}},{key:"getLiveOrbitCenter",value:function(e){var t,n,i,r,a=this.geometry.layout.positionX,o=this.geometry[e].centerY,s=this.yinOrYangGroup[e].graphElementGroup.node(),l=this.globalGroup.node(),c=null!==(n=null===(t=null==s?void 0:s.getCTM)||void 0===t?void 0:t.call(s))&&void 0!==n?n:null,d=null!==(r=null===(i=null==l?void 0:l.getCTM)||void 0===i?void 0:i.call(l))&&void 0!==r?r:null;if(!c||!d)return{x:a,y:o};var u=d.inverse().multiply(c),p=new DOMPoint(a,o).matrixTransform(u);return{x:p.x,y:p.y}}},{key:"getComponentOrientation",value:function(e){var t,n=this.controller.getInternalModel().components[e];return null!==(t=null==n?void 0:n.orientation)&&void 0!==t?t:"yin"}},{key:"getRadiiForScore",value:function(e,t){var n=.5+.5*e,i=1-n;return"yin"===t?{yinRadius:this.borderInnerRadius*n,yangRadius:this.borderInnerRadius*i}:{yinRadius:this.borderInnerRadius*i,yangRadius:this.borderInnerRadius*n}}},{key:"getOddColor",value:function(e){return this.getCategoryColor(e)}},{key:"getSafeIdPart",value:function(e){return e.replace(/[^a-zA-Z0-9_-]/g,"_")}},{key:"getCategoryBlendOpacity",value:function(e){var t;return null!==(t=this.categoryFadeOpacities.get(e))&&void 0!==t?t:1}},{key:"updateCategoryFadeOpacities",value:function(e,t,n){var i=p.animationConfig.categoryBlendFadeMinOpacity,r=new Set(e.map(function(e){return e.category})),o=new Set(t.map(function(e){return e.category}));this.categoryFadeOpacities.clear();var s,l=a(r);try{for(l.s();!(s=l.n()).done;){var c=s.value;o.has(c)||this.categoryFadeOpacities.set(c,1-(1-i)*n)}}catch(e){l.e(e)}finally{l.f()}var d,u=a(o);try{for(u.s();!(d=u.n()).done;){var h=d.value;r.has(h)||this.categoryFadeOpacities.set(h,i+(1-i)*n)}}catch(e){u.e(e)}finally{u.f()}}},{key:"isComponentSwitching",value:function(){return void 0!==this.currentAnimation&&this.currentAnimation.isComponentSwitch&&this.currentAnimation.notifyChildren}},{key:"animateToComponent",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p.animationConfig.componentSwitchDurationMs,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.controller.getInternalModel().components[e]){this.isDisplayingOddMode=!1,this.displayingOddId=null,n&&(this.controller.cancelOuterSparkForActivation(),this.controller.view.borderDrawer.revealFacetteImage(e));var i=this.getComponentAnimationState(e),r=i.targetCategories,a=i.targetScore;this.startCategoryAnimation(a,r,e,t,!0,n)}else console.warn("Component index out of range")}},{key:"renderSwitchFrame",value:function(e,t,n){var i=this.getComponentAnimationState(e),r=this.getComponentAnimationState(t),a=this.getComponentOrientation(e),o=this.getComponentOrientation(t),s=Math.max(0,Math.min(1,n)),l=1-Math.pow(1-s,3);this.isDisplayingOddMode=!1,this.displayingOddId=null,this.currentAnimation=void 0,this.isAnimationRunning=!1,this.currentComponentIndex=t;var c=i.targetScore+(r.targetScore-i.targetScore)*l;if(a!==o){var d=this.getRadiiForScore(i.targetScore,a),u=this.getRadiiForScore(r.targetScore,o);this.animationRadii={yinRadius:d.yinRadius+(u.yinRadius-d.yinRadius)*l,yangRadius:d.yangRadius+(u.yangRadius-d.yangRadius)*l}}else this.animationRadii=void 0;this.categories=this.interpolateCategoriesRGB(this.convertCategoriesToRGB(i.targetCategories),this.convertCategoriesToRGB(r.targetCategories),l),this.updateCategoryFadeOpacities(i.targetCategories,r.targetCategories,l),this.averageTensionGhost=c,this.updateTension(c),s>=1&&(this.categories=r.targetCategories,this.averageTension=r.targetScore,this.animationRadii=void 0,this.categoryFadeOpacities.clear(),this.redrawGhostGeometry())}},{key:"animateToComponentView",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p.animationConfig.componentSwitchDurationMs;this.isDisplayingOddMode=!1,this.displayingOddId=null;var t=this.getComponentAnimationState(this.currentComponentIndex),n=t.targetCategories,i=t.targetScore;this.startCategoryAnimation(i,n,this.currentComponentIndex,e,!1)}},{key:"animateToOdd",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:p.animationConfig.componentSwitchDurationMs;this.isDisplayingOddMode=!0,this.displayingOddId=e;var i=this.buildOddCategories(e);this.startCategoryAnimation(t,i,this.currentComponentIndex,n,!1)}},{key:"convertCategoriesToRGB",value:function(e){var t=this;return e.map(function(e){return Object.assign(Object.assign({},e),{rgbColor:t.hexToRgb(e.color)||{r:0,g:0,b:0}})})}},{key:"interpolateCategoriesRGB",value:function(e,t,n){for(var i=new Map(e.map(function(e){return[e.category,e]})),a=new Map(t.map(function(e){return[e.category,e]})),o=[],s=new Set,l=0,c=[].concat(r(e),r(t));l<c.length;l++){var d=c[l];s.has(d.category)||(s.add(d.category),o.push(d.category))}for(var u=[],p=0,h=o;p<h.length;p++){var f=h[p],g=i.get(f),v=a.get(f);if(g&&v){var m=Math.round(g.rgbColor.r+(v.rgbColor.r-g.rgbColor.r)*n),y=Math.round(g.rgbColor.g+(v.rgbColor.g-g.rgbColor.g)*n),b=Math.round(g.rgbColor.b+(v.rgbColor.b-g.rgbColor.b)*n),I=g.percentage+(v.percentage-g.percentage)*n;u.push({category:v.category,color:this.rgbToHex(m,y,b),percentage:I,angles:{startAngle:0,endAngle:0}})}else g?u.push(Object.assign(Object.assign({},g),{percentage:g.percentage*(1-n),angles:{startAngle:0,endAngle:0}})):v&&u.push(Object.assign(Object.assign({},v),{percentage:v.percentage*n,angles:{startAngle:0,endAngle:0}}))}for(var C=0,w=0,x=u;w<x.length;w++){var k=x[w];k.angles.startAngle=2*Math.PI*C,C+=k.percentage,k.angles.endAngle=2*Math.PI*C}return u}},{key:"startCategoryAnimation",value:function(e,t,n,i){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],s=this.getCurrentComponentOrientation(),l=this.getComponentOrientation(n);a&&(this.currentComponentIndex=n);var c=r(this.categories),d=this.averageTension;if(this.currentAnimation){var u=Date.now(),p=this.getAnimationCurrentState(this.currentAnimation,u),h=p.currentScore,f=p.currentCategories;d=h,c=f,this.averageTension=h,this.categories=f}this.sliderElement=document.getElementById("slider-cause"),this.sliderValueElement=document.getElementById("slider-value-cause"),this.currentAnimation={id:++this.animationSequence,startTime:Date.now(),duration:i,startScore:d,targetScore:e,startCategories:c,targetCategories:t,startCategoriesRGB:this.convertCategoriesToRGB(c),targetCategoriesRGB:this.convertCategoriesToRGB(t),targetComponentIndex:n,startOrientation:s,targetOrientation:l,startRadii:{yinRadius:this.yinOrYangGroup.yin.radius,yangRadius:this.yinOrYangGroup.yang.radius},targetRadii:this.getRadiiForScore(e,l),isComponentSwitch:a,notifyChildren:o},this.isAnimationRunning||this.startComponentAnimationLoop()}},{key:"startComponentAnimationLoop",value:function(){var e=this;if(!this.isAnimationRunning){this.isAnimationRunning=!0;var t=this.controller.beginBlockingAnimation("facette-switch"),n=function(){var i,r=e.currentAnimation;if(!r)return e.isAnimationRunning=!1,void e.controller.endBlockingAnimation(t);var a=r.id,o=Date.now()-r.startTime,s=Math.min(o/r.duration,1);if((null===(i=e.currentAnimation)||void 0===i?void 0:i.id)===a){var l=1-Math.pow(1-s,3),c=r.startScore+(r.targetScore-r.startScore)*l;if(r.startOrientation!==r.targetOrientation?e.animationRadii={yinRadius:r.startRadii.yinRadius+(r.targetRadii.yinRadius-r.startRadii.yinRadius)*l,yangRadius:r.startRadii.yangRadius+(r.targetRadii.yangRadius-r.startRadii.yangRadius)*l}:e.animationRadii=void 0,e.categories=e.interpolateCategoriesRGB(r.startCategoriesRGB,r.targetCategoriesRGB,l),e.updateCategoryFadeOpacities(r.startCategories,r.targetCategories,l),e.updateTension(c),e.sliderElement&&(e.sliderElement.value=c.toFixed(2)),e.sliderValueElement&&(e.sliderValueElement.textContent=c.toFixed(2)),s<1)requestAnimationFrame(n);else{e.currentComponentIndex=r.targetComponentIndex,e.categories=r.targetCategories,e.averageTension=r.targetScore,e.averageTensionGhost=r.targetScore,e.animationRadii=void 0,e.categoryFadeOpacities.clear(),e.currentAnimation=void 0,e.isAnimationRunning=!1,e.controller.endBlockingAnimation(t),e.redrawGhostGeometry(),r.isComponentSwitch&&e.controller.view.borderDrawer.createBorders();var d=document.getElementById("slider-cause-ghost"),u=document.getElementById("slider-value-cause-ghost");d&&u&&(d.value=e.averageTensionGhost.toString(),u.textContent=e.averageTensionGhost.toFixed(2)),r.isComponentSwitch&&r.notifyChildren&&e.controller.handleComponentSwitchChildren()}}else requestAnimationFrame(n)};requestAnimationFrame(n)}}},{key:"getAnimationCurrentState",value:function(e,t){var n=t-e.startTime,i=Math.min(n/e.duration,1),r=1-Math.pow(1-i,3);return{currentScore:e.startScore+(e.targetScore-e.startScore)*r,currentCategories:this.interpolateCategoriesRGB(e.startCategoriesRGB,e.targetCategoriesRGB,r)}}},{key:"getComponentAnimationState",value:function(e){var t=this.controller.getInternalModel();if(!t.components[e])return{targetCategories:this.categories,targetScore:this.averageTension};var n=t.components[e];return{targetCategories:this.buildCategoriesFromComponent(n),targetScore:this.calculateAverageTension(n.odds)}}},{key:"buildOddCategories",value:function(e){return[{category:e,color:this.getCategoryColor(e),percentage:1,angles:{startAngle:0,endAngle:2*Math.PI}}]}},{key:"getOddWeight",value:function(e){var t=e.cuttingWeights.reduce(function(e,t){return e+Math.max(0,t)},0);return t>0?t:e.satelliteCount}},{key:"buildCategoriesFromComponent",value:function(e){var t=this,n=e.odds.reduce(function(e,n){return e+t.getOddWeight(n)},0)||1,i=0;return e.odds.map(function(e){var r=t.getOddWeight(e)/n,a=2*Math.PI*i;i+=r;var o=a+2*Math.PI*r;return{category:e.id,color:t.getCategoryColor(e.id),percentage:r,angles:{startAngle:a,endAngle:o}}})}},{key:"updateCategoryGhost",value:function(e){this.categoriesGhost=e&&e.size>0?this.buildGhostCategories(e):null,this.controller.view.yinYangDrawer.drawCategoryArcsGhost()}},{key:"buildGhostCategories",value:function(e){var t=this,n=this.getCurrentComponent();if(!n)return null;var i=function(t){var n=t.cuttingWeights.reduce(function(n,i,r){var a=e.get("".concat(t.id,"::").concat(r)),o=void 0===a?i:Math.max(g.MIN_PROJECTED_WEIGHT,i+a);return n+Math.max(0,o)},0);return n>0?n:t.satelliteCount},r=n.odds.reduce(function(e,t){return e+i(t)},0)||1,a=0;return n.odds.map(function(e){var n=i(e)/r,o=2*Math.PI*a;a+=n;var s=o+2*Math.PI*n;return{category:e.id,color:t.getCategoryColor(e.id),percentage:n,angles:{startAngle:o,endAngle:s}}})}},{key:"updateSpikeGhost",value:function(e){this.spikesGhost=e&&e.size>0?this.buildGhostSpikes(e):null,this.controller.view.spikeDrawer.drawSpikeGhosts()}},{key:"buildGhostSpikes",value:function(e){var t=this.getCurrentComponent();return t?this.isDisplayingOddMode?this.buildGhostOddSpikes(t,e):this.buildGhostComponentSpikes(t,e):[]}},{key:"projectSpikeWeight",value:function(e,t,n,i){var r=e.get("".concat(t,"::").concat(n));return void 0===r?null:Math.max(0,Math.min(h.WEIGHT_MAX,i+r))}},{key:"buildGhostOddSpikes",value:function(e,t){var n=this;if(!this.displayingOddId)return[];var i=e.odds.find(function(e){return e.id===n.displayingOddId});if(!i||0===i.cuttingScores.length)return[];var r=i.cuttingScores.length,a=this.getCategoryColor(this.displayingOddId),o=this.yinOrYangGroup.yin.radius/this.yinOrYangGroup.yin.smallRadiusRatio,s=this.yinOrYangGroup.yang.radius/this.yinOrYangGroup.yang.smallRadiusRatio,l=[];return i.cuttingWeights.forEach(function(e,c){var d=n.projectSpikeWeight(t,i.id,c,e);if(null!==d){var u=2*Math.PI*c/r;l.push(n.buildSpike({angle:u,centerY:n.yinOrYangGroup.yin.centerY,smallRadius:o,type:"yin",color:a,category:n.displayingOddId,cuttingIndex:c,weight:d})),l.push(n.buildSpike({angle:u,centerY:n.yinOrYangGroup.yang.centerY,smallRadius:s,type:"yang",color:a,category:n.displayingOddId,cuttingIndex:c,weight:d}))}}),l}},{key:"buildGhostComponentSpikes",value:function(e,t){var n=this,i=[],r=this.yinOrYangGroup.yin.radius/this.yinOrYangGroup.yin.smallRadiusRatio,a=this.yinOrYangGroup.yang.radius/this.yinOrYangGroup.yang.smallRadiusRatio;return this.categories.forEach(function(o){var s,l=e.odds.find(function(e){return e.id===o.category});if(l)for(var c=Math.max(1,Math.trunc(l.satelliteCount)),d=0;d<c;d+=1){var u=null!==(s=l.cuttingWeights[d])&&void 0!==s?s:0,p=n.projectSpikeWeight(t,l.id,d,u);if(null!==p){var h=o.angles.startAngle+(o.angles.endAngle-o.angles.startAngle)*((d+1)/(c+1));i.push(n.buildSpike({angle:h,centerY:n.yinOrYangGroup.yin.centerY,smallRadius:r,type:"yin",color:o.color,category:o.category,cuttingIndex:d,weight:p})),i.push(n.buildSpike({angle:h,centerY:n.yinOrYangGroup.yang.centerY,smallRadius:a,type:"yang",color:o.color,category:o.category,cuttingIndex:d,weight:p}))}}}),i}},{key:"areCategoriesEqual",value:function(e,t){return e.length===t.length&&e.every(function(e,n){var i=t[n];return e.category===i.category&&e.color===i.color&&e.percentage===i.percentage})}},{key:"clearGroupChildren",value:function(e){for(var t=e.node();t.firstChild;)t.removeChild(t.firstChild)}},{key:"hexToRgb",value:function(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}},{key:"rgbToHex",value:function(e,t,n){return"#"+[e,t,n].map(function(e){var t=e.toString(16);return 1===t.length?"0"+t:t}).join("").toUpperCase()}},{key:"createGraphicContainer",value:function(e){var t=this.graphicStrategy.initialize(e,this.viewData.minEdge),n=t.node&&"function"==typeof t.node?t.node():null;return n&&n instanceof SVGElement&&(n.style.overflow="visible"),t}},{key:"createYinOrYangGroups",value:function(e){var t,n,i=null!==(n=null===(t=this.getCurrentComponent())||void 0===t?void 0:t.orientation)&&void 0!==n?n:"yin",r=this.getRadiiForScore(e,i),a=r.yinRadius,o=r.yangRadius,s=this.positionY-a,l=this.positionY+o;return{yang:{type:"yang",graphElementGroup:this.globalGroup.appendElement("g"),centerY:s,radius:o,smallRadiusRatio:5},yin:{type:"yin",graphElementGroup:this.globalGroup.appendElement("g"),centerY:l,radius:a,smallRadiusRatio:5}}}},{key:"updateYinOrYangGroup",value:function(e,t,n){var i,r,a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=null!==(r=null===(i=this.getCurrentComponent())||void 0===i?void 0:i.orientation)&&void 0!==r?r:"yin",s=null!=n?n:this.getRadiiForScore(t,o),l=s.yinRadius,c=s.yangRadius,d=this.positionY-l,u=this.positionY+c,p=e;return p?a&&(this.clearGroupChildren(p.yin.graphElementGroup),this.clearGroupChildren(p.yang.graphElementGroup)):p=this.createYinOrYangGroups(t),p.yin.centerY=u,p.yin.radius=l,p.yang.centerY=d,p.yang.radius=c,p}},{key:"applyGhostOverlapRules",value:function(){var e,t=this.yinOrYangGroup.yin,n=this.yinOrYangGroup.yang,i=this.yinOrYangGroupGhost.yin,r=this.yinOrYangGroupGhost.yang,a=null===(e=t.graphElementGroup.node())||void 0===e?void 0:e.parentNode;if(a){var o=i.radius===t.radius,s=r.radius===n.radius,l=this.isGhostDisplayAllowed(),c="".concat(l,"-").concat(o,"-").concat(s);if(c!==this.lastGhostDisplayKey&&(l?(i.graphElementGroup.setStyle("display",o?"none":"block"),r.graphElementGroup.setStyle("display",s?"none":"block")):(i.graphElementGroup.setStyle("display","none"),r.graphElementGroup.setStyle("display","none")),this.lastGhostDisplayKey=c),!l)return this.lastGhostOrderKey=null,void(this.lastGhostOrderParent=null);var d=i.radius>t.radius,u=r.radius>n.radius,p=[];d?(p.push(n.graphElementGroup,i.graphElementGroup,t.graphElementGroup),s||p.push(r.graphElementGroup)):u?(p.push(t.graphElementGroup,r.graphElementGroup,n.graphElementGroup),o||p.push(i.graphElementGroup)):p.push(n.graphElementGroup,t.graphElementGroup);var h="".concat(d,"-").concat(u,"-").concat(o,"-").concat(s);this.lastGhostOrderKey===h&&this.lastGhostOrderParent===a||(p.forEach(function(e){a.appendChild(e.node())}),a.querySelectorAll(':scope > [data-role="children-force-field"]').forEach(function(e){a.appendChild(e)}),a.querySelectorAll(':scope > [data-balance-spark-layer="true"], :scope > [data-orbit-spark-layer="true"]').forEach(function(e){a.appendChild(e)}),this.lastGhostOrderKey=h,this.lastGhostOrderParent=a)}}},{key:"buildGeometry",value:function(){var e=this.yinOrYangGroup.yin.radius/this.yinOrYangGroup.yin.smallRadiusRatio,t=this.yinOrYangGroup.yang.radius/this.yinOrYangGroup.yang.smallRadiusRatio,n=this.getTotalBorderColors(),i={innerRadius:this.borderInnerRadius,outerRadius:this.borderOuterRadius,thickness:this.borderThickness,count:this.controller.getBorderNb(),isChild:this.isChild,colors:n},r=this.buildBorderSegments();return{layout:{positionX:this.positionX,positionY:this.positionY,borderInnerRadius:this.borderInnerRadius},yin:{centerY:this.yinOrYangGroup.yin.centerY,radius:this.yinOrYangGroup.yin.radius,smallRadius:e},yang:{centerY:this.yinOrYangGroup.yang.centerY,radius:this.yinOrYangGroup.yang.radius,smallRadius:t},categoryArcs:this.categories.map(function(e){return{category:e.category,color:e.color,startAngle:e.angles.startAngle,endAngle:e.angles.endAngle}}),borderSegments:r,border:i,spikes:this.buildSpikes(e,t)}}},{key:"buildSpikes",value:function(e,t){return this.isChild?[]:this.isDisplayingOddMode?this.buildOddSpikes(e,t):this.buildComponentSpikes(e,t)}},{key:"buildOddSpikes",value:function(e,t){var n=this,i=this.getCurrentComponent();if(!i||!this.displayingOddId)return[];var r=i.odds.find(function(e){return e.id===n.displayingOddId});if(!r||!r.cuttingScores||0===r.cuttingScores.length)return[];var a=[],o=this.getCategoryColor(this.displayingOddId),s=r.cuttingScores.length;return r.cuttingScores.forEach(function(i,l){var c,d=2*Math.PI*l/s,u=null!==(c=r.cuttingWeights[l])&&void 0!==c?c:0;a.push(n.buildSpike({angle:d,centerY:n.yinOrYangGroup.yin.centerY,smallRadius:e,type:"yin",color:o,category:n.displayingOddId,cuttingIndex:l,weight:u})),a.push(n.buildSpike({angle:d,centerY:n.yinOrYangGroup.yang.centerY,smallRadius:t,type:"yang",color:o,category:n.displayingOddId,cuttingIndex:l,weight:u}))}),a}},{key:"buildComponentSpikes",value:function(e,t){var n=this,i=this.getCurrentComponent();if(!i)return[];var r=[];return this.categories.forEach(function(a){var o,s=i.odds.find(function(e){return e.id===a.category});if(s)for(var l=Math.max(1,Math.trunc(s.satelliteCount)),c=0;c<l;c+=1){var d=a.angles.startAngle+(a.angles.endAngle-a.angles.startAngle)*((c+1)/(l+1)),u=null!==(o=s.cuttingWeights[c])&&void 0!==o?o:0;r.push(n.buildSpike({angle:d,centerY:n.yinOrYangGroup.yin.centerY,smallRadius:e,type:"yin",color:a.color,category:a.category,cuttingIndex:c,weight:u})),r.push(n.buildSpike({angle:d,centerY:n.yinOrYangGroup.yang.centerY,smallRadius:t,type:"yang",color:a.color,category:a.category,cuttingIndex:c,weight:u}))}}),r}},{key:"buildSpike",value:function(e){var t=e.angle,n=e.centerY,i=e.smallRadius,r=e.type,a=e.color,o=e.category,s=e.cuttingIndex,l=e.weight,c="yang"===r?-t+Math.PI:t,d=this.positionX+i*Math.sin(c),u=n+i*Math.cos(c),p=("yin"===r?this.yinOrYangGroup.yin.radius:this.yinOrYangGroup.yang.radius)*Math.max(0,Math.min(1,l/h.WEIGHT_MAX))-i;return{type:r,category:o,cuttingIndex:null!=s?s:0,startX:d,startY:u,endX:d+(p=Math.max(0,p))*Math.sin(c),endY:u+p*Math.cos(c),color:a}}},{key:"calculateAverageTension",value:function(e){var t=this;if(0===e.length)return.5;var n=e.reduce(function(e,n){return e+t.getOddWeight(n)},0);return 0===n?.5:e.reduce(function(e,n){return e+(0,h.oddTensionFromCuttings)(n.cuttingScores,n.cuttingWeights)*t.getOddWeight(n)},0)/n}},{key:"getCurrentComponent",value:function(){var e=this.controller.getInternalModel();return 0===e.components.length?null:e.components[this.currentComponentIndex]}},{key:"handleSparkAngleUpdate",value:function(e,t){var n=this;if(this.isChild)this.outerSparkAngleRad=e;else if(this.outerSparkAngleRad=e,null!==t&&this.geometry.borderSegments.length){var i=this.geometry.borderSegments.find(function(i){return n.hasCrossedAngle(t,e,i.startAngle)});if(i){var r=this.controller.getInternalModel().components.findIndex(function(e){return e.id===i.category});r<0||(this.controller.view.borderDrawer.revealFacetteImage(r),r!==this.currentComponentIndex&&(this.controller.animateChildrenHide(),this.animateToComponent(r,p.animationConfig.componentSwitchDurationMs,!1)))}}}},{key:"normalizeAngle",value:function(e){var t=2*Math.PI,n=e%t;return n<0?n+t:n}},{key:"hasCrossedAngle",value:function(e,t,n){var i=this.normalizeAngle(e),r=this.normalizeAngle(t),a=this.normalizeAngle(n);return i!==r&&(i<r?i<a&&a<=r:a>i||a<=r)}},{key:"getTotalBorderColors",value:function(){var e=this,t=this.controller.getInternalModel();if(0===t.components.length)return this.categories.map(function(e){return e.color});var n=t.components.flatMap(function(t){return t.odds.map(function(t){return e.getOddColor(t.id)})});return n.length>0?n:this.categories.map(function(e){return e.color})}},{key:"getCategoryColor",value:function(e){return(0,d.getCauseNamedColor)(e)}},{key:"getComponentColor",value:function(e){return(0,d.getCauseNamedColor)(e)}},{key:"buildBorderSegments",value:function(){var e=this,t=this.controller.getInternalModel();if(0===t.components.length)return[];var n=this.borderSegmentGapAngle*t.slices.length,i=Math.max(0,2*Math.PI-n),r=0;return t.slices.map(function(t){var n=i*t.weight,a=r,o=a+n;return r=o+e.borderSegmentGapAngle,{category:t.id,color:e.getComponentColor(t.id),startAngle:a,endAngle:o}})}},{key:"updateBorderSegmentGhost",value:function(e){this.borderSegmentsGhost=e&&e.size>0?this.buildGhostBorderSegments(e):null,this.controller.view.borderDrawer.drawBorderSegmentGhosts()}},{key:"buildGhostBorderSegments",value:function(e){var t=this,n=this.controller.getInternalModel();if(0===n.components.length)return null;var i=new Map(n.components.map(function(e){return[e.id,e]})),r=n.slices.map(function(t){return n=t.id,(r=i.get(n))?r.odds.reduce(function(t,n){return t+n.cuttingWeights.reduce(function(t,i,a){var o=e.get("".concat(r.id,"::").concat(n.id,"::").concat(a)),s=void 0===o?i:Math.max(g.MIN_PROJECTED_WEIGHT,i+o);return t+Math.max(0,s)},0)},0):0;var n,r}),a=r.reduce(function(e,t){return e+t},0)||1,o=this.borderSegmentGapAngle*n.slices.length,s=Math.max(0,2*Math.PI-o),l=0;return n.slices.map(function(e,n){var i,o=(null!==(i=r[n])&&void 0!==i?i:0)/a,c=l,d=c+s*o;return l=d+t.borderSegmentGapAngle,{category:e.id,color:t.getComponentColor(e.id),startAngle:c,endAngle:d}})}},{key:"setupCategories",value:function(){var e=this,t=this.getCurrentComponent();if(!t)return[];var n=t.odds.reduce(function(t,n){return t+e.getOddWeight(n)},0)||1,i=0;return t.odds.map(function(t){var r=e.getOddWeight(t)/n,a=2*Math.PI*i;i+=r;var o=a+2*Math.PI*r;return{category:t.id,color:e.getCategoryColor(t.id),percentage:r,angles:{startAngle:a,endAngle:o}}})}},{key:"getPatternPosition",value:function(e){return e?this.GetChildPosition(e.view):this.centerMotif()}},{key:"GetChildPosition",value:function(e){var t,n=Number(null===(t=this.controller)||void 0===t?void 0:t.getKey().split(".").pop())||0,i=this.getParentChildCount(e),r=(i>0?n%i:n)*(2*Math.PI/i);return{positionX:e.viewInitializer.positionX+e.viewInitializer.distanceFromChild*Math.cos(r),positionY:e.viewInitializer.positionY+e.viewInitializer.distanceFromChild*Math.sin(r)}}},{key:"getParentChildCount",value:function(e){var t=e.controller.getInternalModel();if(0===t.components.length)return 1;var n=e.viewInitializer.getCurrentComponentIndex(),i=t.components[n];return i?this.getChildCount(i):1}},{key:"getChildCount",value:function(e){var t=e.odds.reduce(function(e,t){return e+Math.max(1,Math.trunc(t.satelliteCount))},0);return Math.max(1,t)}},{key:"centerMotif",value:function(){var e=this.graphicContainer.getDimensions();return{positionX:e.width/2,positionY:e.height/2}}}],t&&l(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.ViewInitializer=v},1067(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function a(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,o(i.key),i)}}function o(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var s,l=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),c=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),d=this&&this.__importStar||(s=function(e){return s=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},s(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=s(e),i=0;i<n.length;i++)"default"!==n[i]&&l(t,e,n[i]);return c(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.YinYangDrawer=void 0;var u=d(n(600)),p=n(1123),h=n(996),f=n(133),g=n(6255),v=n(4498);function m(e){return"yang"===e?{fill:"#000000",stroke:"rgba(255, 255, 255, 0.9)"}:{fill:"#ffffff",stroke:"rgba(0, 0, 0, 0.85)"}}var y=[{offset:"0%",opacity:.42},{offset:"65%",opacity:.32},{offset:"100%",opacity:0}];function b(e){return"yang"===e?"rgb(255, 255, 255)":"rgb(0, 0, 0)"}var I=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.ViewInitializer=t,this.WAVE_COLOR="#9b9b9b",this.WAVE_MIN_RADIUS_DIFF=1,this.MAX_WAVE_OPACITY=.5,this.ADAPTIVE_WAVE_FULL_DIFF_RATIO=.08,this.GHOST_MAIN_SELECTOR='circle[data-ghost-main="true"]',this.GHOST_WAVE_SELECTOR='circle[data-ghost-wave="true"]',this.GHOST_DELTA_BADGE_FONT_SIZE=22,this.GHOST_DELTA_BADGE_ROW_GAP=26,this.GHOST_DELTA_BADGE_NUCLEUS_FILL=.92,this.categoryArcGhostEntries={yin:[],yang:[]},this.categoryArcGhostFrameId=null,this.CHILD_SCORE_BAND_FRACTION=.58,this.CHILD_WEIGHT_LABEL_BAND_FRACTION=.42,this.BASE_MAIN_SELECTOR='circle[data-base-main="true"]',this.IDLE_SPHERE_OVERLAY_ROLE="idle-sphere-overlay",this.MIN_VISIBLE_ARC_ANGLE_RAD=.1,this.pulseAnimationFrameId=null,this.outerSparkTimer=null,this.outerSparkStartTimeMs=null,this.outerSparkPhaseMs=0,this.outerSparkRotationDurationMs=null,this.outerSparkCircumference=null,this.outerSparkLastAngleRad=null,this.balanceSparkOnComplete=null,this.balanceSparkInstances={primary:{timer:null,startTimeMs:null,travelStartTimeMs:null,travelBodyLengthPx:null,shedStartTimeMs:null},inverse:{timer:null,startTimeMs:null,travelStartTimeMs:null,travelBodyLengthPx:null,shedStartTimeMs:null}},this.balanceSparkTadpoleIdSeq=0,this.balanceSparkTadpoles=new Map,this.balanceSparkTadpoleTimer=null,this.BALANCE_SPARK_DRIFT_SPEED_PX_PER_MS=.15,this.BALANCE_SPARK_DRIFT_INITIAL_SPEED_PX_PER_MS=.4,this.BALANCE_SPARK_DRIFT_SPEED_EASE_MS=900,this.BALANCE_SPARK_DRIFT_TURN_RATE_RAD_PER_MS=.0012,this.BALANCE_SPARK_DRIFT_MAX_FRAGMENTS=10,this.BALANCE_SPARK_DRIFT_FAN_SPREAD_RAD=.6,this.BALANCE_SPARK_SWIM_WAVE_AMPLITUDE_PX=9,this.BALANCE_SPARK_SWIM_WAVE_FREQUENCY=1.3,this.BALANCE_SPARK_SWIM_WAVE_SPEED=.009,this.BALANCE_SPARK_SWIM_WAVE_TAPER=1.6,this.BALANCE_SPARK_CONSUME_DURATION_MS=900,this.BALANCE_SPARK_EMBER_COUNT=7,this.BALANCE_SPARK_EMBER_ANGLE_OFFSETS=[-.65,-.4,-.15,.05,.22,.4,.6],this.BALANCE_SPARK_EMBER_DISTANCE_OFFSETS=[.75,1.15,.6,1.3,.85,1.05,.65],this.BALANCE_SPARK_EMBER_PHASE_OFFSETS=[0,.3,.55,.1,.72,.4,.85],this.activeOddId=null,this.hoverOddId=null,this._onOddArcHoverCb=null,this.pulseStates={yin:{startTimeMs:0,fromRadius:0,fromCenterY:0,fromOpacity:1,targetRadius:0,targetCenterY:0,baseRadius:0,baseCenterY:0,durationMs:3e3,active:!1},yang:{startTimeMs:0,fromRadius:0,fromCenterY:0,fromOpacity:1,targetRadius:0,targetCenterY:0,baseRadius:0,baseCenterY:0,durationMs:3e3,active:!1}}},t=[{key:"initialize",value:function(){this.yinYangGroup=this.ViewInitializer.yinYangGroup,this.graphicStrategy=this.ViewInitializer.graphicStrategy,this.geometry=this.ViewInitializer.geometry,this.containerId=this.ViewInitializer.containerId,this.key=this.ViewInitializer.key}},{key:"createYinYangPattern",value:function(){this.drawMainCircle(),this.drawSemiCircle(),this.drawYinYangSymbols(),this.drawGhostYinYangSymbols()}},{key:"refreshOuterSpark",value:function(){this.yinYangGroup&&this.graphicStrategy&&this.geometry||this.initialize(),this.startOuterSparkAnimation()}},{key:"drawGhostYinYangSymbols",value:function(){this.ensureGhostRenderContext();var e=this.ViewInitializer.yinOrYangGroupGhost,t=e.yin,n=e.yang;this.drawGhostCircle(t,"yin"),this.drawGhostCircle(n,"yang"),this.updateBasePulseAnimations()}},{key:"ensureGhostRenderContext",value:function(){this.graphicStrategy||(this.graphicStrategy=this.ViewInitializer.graphicStrategy),this.geometry||(this.geometry=this.ViewInitializer.geometry)}},{key:"drawMainCircle",value:function(){this.graphicStrategy.drawCircle(this.yinYangGroup,this.geometry.layout.positionX,this.geometry.layout.positionY,this.geometry.layout.borderInnerRadius,"white"),this.yinYangGroup.select("circle").setAttribute("stroke","black"),this.startOuterSparkAnimation()}},{key:"startOuterSparkAnimation",value:function(e){var t,n,i,r,a,o,s,l=this;if(!this.ViewInitializer.isChild&&this.ViewInitializer.outerSparkEnabled){var c=this.getOrCreateSparkLayer(),d=c.select("circle[data-orbit-spark='true']");d.node()||(d=c.appendElement("circle"));var p=null!==(t=null==e?void 0:e.radius)&&void 0!==t?t:this.geometry.layout.borderInnerRadius+this.WAVE_MIN_RADIUS_DIFF,h=2*Math.PI*p,f=Math.max(0,Math.min(2,this.ViewInitializer.outerSparkIntensity)),g=(.06+.05*f)*Math.max(.1,Math.min(2.5,this.ViewInitializer.outerSparkLength)),v=(4+4*f)*Math.max(.5,Math.min(3,this.ViewInitializer.outerSparkStrokeWidth)),m=2+4*f,y=Math.max(.4,Math.min(1,.6+.3*f)),b=null!==(n=null==e?void 0:e.strokeColor)&&void 0!==n?n:this.ViewInitializer.outerSparkGlowColor,I={radius:p,rotationDurationMs:null!==(i=null==e?void 0:e.rotationDurationMs)&&void 0!==i?i:this.ViewInitializer.outerSparkRotationDurationMs,sparkLength:null!==(r=null==e?void 0:e.sparkLength)&&void 0!==r?r:h*g,strokeWidth:null!==(a=null==e?void 0:e.strokeWidth)&&void 0!==a?a:v,strokeColor:b,glowStdDeviation:null!==(o=null==e?void 0:e.glowStdDeviation)&&void 0!==o?o:m},C=Math.max(2,Math.min(h-1,I.sparkLength)),w=h-C,x=this.graphicStrategy.defs,k="spark-glow-".concat(this.key),S="undefined"!=typeof CSS&&"function"==typeof CSS.escape?"#".concat(CSS.escape(k)):'[id="'.concat(k.replace(/\\/g,"\\\\").replace(/\"/g,'\\"'),'"]');x.getSelection().select(S).remove(),x.appendElement("filter").setAttribute("id",k).setAttribute("x","-80%").setAttribute("y","-80%").setAttribute("width","260%").setAttribute("height","260%").appendElement("feGaussianBlur").setAttribute("in","SourceGraphic").setAttribute("stdDeviation",I.glowStdDeviation.toString()),d.setAttribute("data-orbit-spark","true").setAttribute("cx",this.geometry.layout.positionX.toString()).setAttribute("cy",this.geometry.layout.positionY.toString()).setAttribute("r",I.radius.toString()).setAttribute("fill","none").setAttribute("stroke",I.strokeColor).setAttribute("stroke-opacity",y.toString()).setAttribute("stroke-width",I.strokeWidth.toString()).setAttribute("stroke-linecap","round").setAttribute("stroke-dasharray","".concat(C," ").concat(w)).setAttribute("filter","url(#".concat(k,")")),this.outerSparkCircumference=h;var _=null!==(s=this.outerSparkRotationDurationMs)&&void 0!==s?s:I.rotationDurationMs,A=_>0?this.outerSparkPhaseMs/_:0;this.outerSparkRotationDurationMs=I.rotationDurationMs,this.outerSparkPhaseMs=A*this.outerSparkRotationDurationMs,null===this.outerSparkStartTimeMs&&(this.outerSparkStartTimeMs=performance.now()-this.outerSparkPhaseMs),this.outerSparkTimer||(this.outerSparkTimer=u.timer(function(){var e,t,n=null===l.outerSparkStartTimeMs?0:performance.now()-l.outerSparkStartTimeMs,i=null!==(e=l.outerSparkRotationDurationMs)&&void 0!==e?e:1,r=n%i;l.outerSparkPhaseMs=r;var a=r/i,o=-a*(null!==(t=l.outerSparkCircumference)&&void 0!==t?t:h);d.setAttribute("stroke-dashoffset",o.toString());var s=a*Math.PI*2+Math.PI/2,c=l.normalizeAngle(s);l.ViewInitializer.handleSparkAngleUpdate(c,l.outerSparkLastAngleRad),l.outerSparkLastAngleRad=c}))}else this.clearOuterSpark()}},{key:"clearOuterSpark",value:function(){var e,t,n,i,r;null===(e=this.outerSparkTimer)||void 0===e||e.stop(),this.outerSparkTimer=null,this.outerSparkStartTimeMs=null,this.outerSparkLastAngleRad=null;var a=null===(n=null===(t=this.ViewInitializer)||void 0===t?void 0:t.globalGroup)||void 0===n?void 0:n.select("g[data-orbit-spark-layer='true']");null===(i=null==a?void 0:a.select("circle[data-orbit-spark='true']").node())||void 0===i||i.remove();var o=null===(r=this.graphicStrategy)||void 0===r?void 0:r.defs;if(o){var s="spark-glow-".concat(this.key),l="undefined"!=typeof CSS&&"function"==typeof CSS.escape?"#".concat(CSS.escape(s)):'[id="'.concat(s.replace(/\\/g,"\\\\").replace(/\"/g,'\\"'),'"]');o.getSelection().select(l).remove()}}},{key:"normalizeAngle",value:function(e){var t=2*Math.PI,n=e%t;return n<0?n+t:n}},{key:"getOrCreateSparkLayer",value:function(){var e=this.ViewInitializer.globalGroup.select("g[data-orbit-spark-layer='true']");if(e.node()){var t=this.ViewInitializer.globalGroup.node();return t&&t.appendChild(e.node()),e}return this.ViewInitializer.globalGroup.appendElement("g").setAttribute("data-orbit-spark-layer","true").setStyle("pointer-events","none")}},{key:"triggerBalanceSpark",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"yang",n=arguments.length>1?arguments[1]:void 0;this.yinYangGroup&&this.graphicStrategy&&this.geometry||this.initialize();var i="yang"===t?"yin":"yang",r=this.computeBalanceSparkPathGeometry(t),a=r.totalArcLength,o=Math.max(0,Math.min(2,this.ViewInitializer.balanceSparkIntensity)),s=Math.max(.1,Math.min(2.5,this.ViewInitializer.balanceSparkMaxLength)),l=Math.max(2*Math.PI*r.globalRadius*(.06+.05*o)*s,.02*r.globalRadius)/this.BALANCE_SPARK_CONSUME_DURATION_MS,c=function(t){return"yang"===t?e.ViewInitializer.balanceSparkYangColor:e.ViewInitializer.balanceSparkYinColor};this.startBalanceSparkAnimation("primary",t,c(t),a,l),this.startBalanceSparkAnimation("inverse",i,c(i),a,l),this.balanceSparkOnComplete=null!=n?n:null}},{key:"computeBalanceSparkPathGeometry",value:function(e){var t=this.geometry.layout,n=t.positionX,i=t.positionY,r=t.borderInnerRadius+this.WAVE_MIN_RADIUS_DIFF,a="yang"===e?this.geometry.yang:this.geometry.yin,o=a.centerY,s=a.radius+this.WAVE_MIN_RADIUS_DIFF,l="yang"===e?0:Math.PI,c=l+Math.PI,d=Math.PI*r,u=Math.PI*s;return{positionX:n,positionY:i,globalRadius:r,subCenterY:o,subRadius:s,tangentAngle:l,startAngle:c,globalArcLength:d,subArcLength:u,totalArcLength:d+u}}},{key:"buildTaperedSparkPath",value:function(e,t,n){var i=e.map(function(e){return Math.abs(e.angleEnd-e.angleStart)*e.radius}),r=i.reduce(function(e,t){return e+t},0);if(r<=0)return"";for(var a=[],o=[],s=0,l=0;l<e.length;l++){for(var c=e[l],d=i[l],u=0===l?0:1;u<=8;u++){var p=u/8,h=c.angleStart+(c.angleEnd-c.angleStart)*p,f=(s+d*p)/r,g=t*Math.pow(f,n),v=c.radius+g,m=c.radius-g;a.push({x:c.cx+Math.sin(h)*v,y:c.cy-Math.cos(h)*v}),o.push({x:c.cx+Math.sin(h)*m,y:c.cy-Math.cos(h)*m})}s+=d}if(a.length<2)return"";for(var y=function(e){return"".concat(e.x.toFixed(2),",").concat(e.y.toFixed(2))},b="M".concat(y(a[0])),I=1;I<a.length;I++)b+="L".concat(y(a[I]));for(var C=o.length-1;C>=0;C--)b+="L".concat(y(o[C]));return b+"Z"}},{key:"buildSwimmingTadpolePath",value:function(e,t,n,i,r,a,o){for(var s=Math.cos(n),l=Math.sin(n),c=-l,d=s,u=o*this.BALANCE_SPARK_SWIM_WAVE_SPEED,p=[],h=[],f=0;f<=16;f++){var g=f/16,v=(1-g)*i,m=e-s*v,y=t-l*v,b=Math.pow(1-g,this.BALANCE_SPARK_SWIM_WAVE_TAPER),I=this.BALANCE_SPARK_SWIM_WAVE_AMPLITUDE_PX*b*Math.sin((1-g)*this.BALANCE_SPARK_SWIM_WAVE_FREQUENCY*Math.PI*2-u),C=m+c*I,w=y+d*I,x=r*Math.pow(g,a);p.push({x:C+c*x,y:w+d*x}),h.push({x:C-c*x,y:w-d*x})}if(p.length<2)return"";for(var k=function(e){return"".concat(e.x.toFixed(2),",").concat(e.y.toFixed(2))},S="M".concat(k(p[0])),_=1;_<p.length;_++)S+="L".concat(k(p[_]));for(var A=h.length-1;A>=0;A--)S+="L".concat(k(h[A]));return S+"Z"}},{key:"renderBalanceSparkEmbers",value:function(e,t,n,i,r){for(var a=Math.max(0,Math.min(150,this.ViewInitializer.balanceSparkEmberDistance)),o=Math.max(.2,Math.min(3,this.ViewInitializer.balanceSparkEmberSize)),s=Math.max(100,Math.min(1500,this.ViewInitializer.balanceSparkEmberSpeedMs)),l=0;l<this.BALANCE_SPARK_EMBER_COUNT;l++){var c=s,d=(r+this.BALANCE_SPARK_EMBER_PHASE_OFFSETS[l]*c)%c/c,u=Math.sin(d*Math.PI),p=t+this.BALANCE_SPARK_EMBER_ANGLE_OFFSETS[l],h=this.BALANCE_SPARK_EMBER_DISTANCE_OFFSETS[l]*a*d,f=n+Math.sin(p)*h,g=i-Math.cos(p)*h,v=e[l];v.setAttribute("cx",f.toString()),v.setAttribute("cy",g.toString()),v.setAttribute("r",((4+5*u)*o).toString()),v.setAttribute("opacity",(1*u).toString())}}},{key:"startBalanceSparkAnimation",value:function(e,t,n,i,r){var a=this;if(this.clearBalanceSparkInstance(e),!this.ViewInitializer.isChild){var o=this.computeBalanceSparkPathGeometry(t),s=o.positionX,l=o.positionY,c=o.globalRadius,d=(o.subCenterY,o.subRadius),p=o.tangentAngle,h=o.startAngle,f=o.globalArcLength,g=o.totalArcLength,v="yang"===t?"yin":"yang",m=this.computeBalanceSparkPathGeometry(v),y=(m.subCenterY,m.subRadius),b=Math.max(0,Math.min(2,this.ViewInitializer.balanceSparkIntensity)),I=Math.max(.1,Math.min(2.5,this.ViewInitializer.balanceSparkMaxLength)),C=Math.max(.5,Math.min(3,this.ViewInitializer.balanceSparkStrokeWidth)),w=(4+4*b)*C/2,x=2+4*b,k=Math.max(1,Math.min(6,this.ViewInitializer.balanceSparkTaperPower)),S=Math.max(0,Math.min(.9,this.ViewInitializer.balanceSparkBirthWidthRatio)),_=Math.max(1,Math.min(this.BALANCE_SPARK_DRIFT_MAX_FRAGMENTS,Math.round(this.ViewInitializer.balanceSparkDriftFragmentCount))),A=Math.max(.05,Math.min(3,this.ViewInitializer.balanceSparkDriftRemnantScale)),E=Math.max(0,Math.min(1,this.ViewInitializer.balanceSparkDriftCentrifugalForce)),O=Math.abs(this.geometry.yang.radius-this.geometry.yin.radius),D=this.geometry.layout.borderInnerRadius>0?Math.min(1,O/this.geometry.layout.borderInnerRadius):0,M=i>0?(I-.1)/i:0,L=(.06+.05*b)*(.1+M*g),F=Math.max(2*Math.PI*c*L,.02*c),T=this.ViewInitializer.balanceSparkDurationMs,P=g>0?f/g*T:T/2,B=T-P,G=g>0?g/T:0,R=G>0?Math.PI*y/G:B,q=this.getOrCreateBalanceSparkLayer(),z=q.node(),N="path[data-balance-spark='".concat(e,"']"),j=q.select(N);j.node()||(j=q.appendElement("path"));var H=this.graphicStrategy.defs,K="balance-spark-glow-".concat(this.key,"-").concat(e),V="undefined"!=typeof CSS&&"function"==typeof CSS.escape?"#".concat(CSS.escape(K)):'[id="'.concat(K.replace(/\\/g,"\\\\").replace(/\"/g,'\\"'),'"]');H.getSelection().select(V).remove(),H.appendElement("filter").setAttribute("id",K).setAttribute("x","-80%").setAttribute("y","-80%").setAttribute("width","260%").setAttribute("height","260%").appendElement("feGaussianBlur").setAttribute("in","SourceGraphic").setAttribute("stdDeviation",x.toString()),j.setAttribute("data-balance-spark",e).setAttribute("fill",n).setAttribute("filter","url(#".concat(K,")"));var Y="g[data-balance-spark-embers='".concat(e,"']"),W=q.select(Y);if(!W.node()){W=q.appendElement("g").setAttribute("data-balance-spark-embers",e);for(var U=0;U<this.BALANCE_SPARK_EMBER_COUNT;U++)W.appendElement("circle").setAttribute("fill",this.ViewInitializer.balanceSparkEmberColor).setAttribute("filter","url(#".concat(K,")"))}var X=Array.from(W.node().children),Z=this.balanceSparkInstances[e];Z.startTimeMs=performance.now(),Z.timer=u.timer(function(){var i,o,u,f,m,I=null==z?void 0:z.parentNode;I&&I.lastChild!==z&&I.appendChild(z);var C=performance.now()-(null!==(i=Z.startTimeMs)&&void 0!==i?i:0),x=a.ViewInitializer.getLiveOrbitCenter(t),O=Math.atan2(x.x-s,l-x.y)-p,L=p+O,q=h+O,N=null!==Z.travelStartTimeMs?R:0;if(C>=T+N+a.BALANCE_SPARK_CONSUME_DURATION_MS)a.clearBalanceSparkInstance(e);else if(C>=T){if(null!==Z.shedStartTimeMs){var H=performance.now()-(null!==(o=Z.shedStartTimeMs)&&void 0!==o?o:0),V=null!==(u=Z.travelBodyLengthPx)&&void 0!==u?u:0,Y=Math.max(0,V-r*H);if(Y<=.01)return j.setAttribute("d",""),X.forEach(function(e){return e.setAttribute("opacity","0")}),void a.clearBalanceSparkInstance(e);var W=L-Math.PI,U=Y/y,Q=Math.min(U,Math.PI),$=W+Q,J=a.ViewInitializer.getLiveOrbitCenter(v),ee=[],te=Y-Q*y;if(te>.01){var ne=te/d,ie=L+Math.PI,re=Math.max(L,ie-ne);ee.push({cx:x.x,cy:x.y,radius:d,angleStart:re,angleEnd:ie})}ee.push({cx:J.x,cy:J.y,radius:y,angleStart:$,angleEnd:W}),j.setAttribute("d",a.buildTaperedSparkPath(ee,w,k));var ae=J.x+Math.sin(W)*y,oe=J.y-Math.cos(W)*y;return void a.renderBalanceSparkEmbers(X,W,ae,oe,H)}if(null!==Z.travelStartTimeMs){var se=L,le=performance.now()-(null!==(f=Z.travelStartTimeMs)&&void 0!==f?f:0),ce=Math.min(1,le/R),de=se-ce*Math.PI,ue=null!==(m=Z.travelBodyLengthPx)&&void 0!==m?m:0,pe=se-de,he=ue/y,fe=Math.min(he,pe),ge=de+fe,ve=a.ViewInitializer.getLiveOrbitCenter(v),me=[],ye=ue-fe*y;if(ye>.01){var be=ye/d,Ie=L+Math.PI,Ce=Math.max(L,Ie-be);me.push({cx:x.x,cy:x.y,radius:d,angleStart:Ce,angleEnd:Ie})}if(me.push({cx:ve.x,cy:ve.y,radius:y,angleStart:ge,angleEnd:de}),j.setAttribute("d",a.buildTaperedSparkPath(me,w,k)),X.forEach(function(e){return e.setAttribute("opacity","0")}),ce>=1){for(var we=L-Math.PI,xe=ve.x+Math.sin(we)*y,ke=ve.y-Math.cos(we)*y,Se=-Math.cos(we),_e=-Math.sin(we),Ae=Math.sin(we),Ee=-Math.cos(we),Oe=G*Se+E*Ae,De=G*_e+E*Ee,Me=Math.atan2(De,Oe),Le=_,Fe=D*c*A/Le,Te=ue/r/Le,Pe=[],Be=0;Be<Le;Be++){var Ge=(Le>1?Be/(Le-1)-.5:0)*a.BALANCE_SPARK_DRIFT_FAN_SPREAD_RAD;Pe.push({angle:Me+Ge,bodyLength:Fe,birthOffsetMs:Be*Te})}a.spawnBalanceSparkTadpoles(n,K,xe,ke,w,k,Pe),Z.shedStartTimeMs=performance.now()}return}var Re=C-T,qe=Math.max(0,F-r*Re);if(qe<=.01)return j.setAttribute("d",""),X.forEach(function(e){return e.setAttribute("opacity","0")}),void a.clearBalanceSparkInstance(e);var ze=L+Math.PI,Ne=qe/d,je=Math.min(Ne,Math.PI),He=ze-je,Ke=[],Ve=qe-je*d;if(Ve>.01){var Ye=Ve/c,We=q+Math.PI,Ue=Math.max(q,We-Ye);Ke.push({cx:s,cy:l,radius:c,angleStart:Ue,angleEnd:We})}Ke.push({cx:x.x,cy:x.y,radius:d,angleStart:He,angleEnd:ze}),j.setAttribute("d",a.buildTaperedSparkPath(Ke,w,k));var Xe=x.x+Math.sin(ze)*d,Ze=x.y-Math.cos(ze)*d;a.renderBalanceSparkEmbers(X,ze,Xe,Ze,Re);var Qe="primary"===e?"inverse":"primary";null===Z.travelStartTimeMs&&null===a.balanceSparkInstances[Qe].timer&&(Z.travelStartTimeMs=performance.now(),Z.travelBodyLengthPx=qe)}else{var $e=C<P,Je=$e?s:x.x,et=$e?l:x.y,tt=$e?c:d,nt=$e?q:L,it=nt+($e?C/P:(C-P)/B)*Math.PI,rt=C/T,at=(.06+.05*b)*(.1+M*(rt*g)),ot=Math.max(2*Math.PI*c*at,.02*c),st=it-nt,lt=ot/tt,ct=Math.min(lt,st),dt=it-ct,ut=[],pt=ot-ct*tt;if(!$e&&pt>.01){var ht=pt/c,ft=q+Math.PI,gt=Math.max(q,ft-ht);ut.push({cx:s,cy:l,radius:c,angleStart:gt,angleEnd:ft})}ut.push({cx:Je,cy:et,radius:tt,angleStart:dt,angleEnd:it});var vt=w*(S+(1-S)*rt);j.setAttribute("d",a.buildTaperedSparkPath(ut,vt,k))}})}}},{key:"clearBalanceSparkInstance",value:function(e){var t,n,i,r,a,o=this.balanceSparkInstances[e],s=null!==o.timer;null===(t=o.timer)||void 0===t||t.stop(),o.timer=null,o.startTimeMs=null,o.travelStartTimeMs=null,o.travelBodyLengthPx=null,o.shedStartTimeMs=null;var l=null===(i=null===(n=this.ViewInitializer)||void 0===n?void 0:n.globalGroup)||void 0===i?void 0:i.select("g[data-balance-spark-layer='true']");if(null===(r=null==l?void 0:l.select("path[data-balance-spark='".concat(e,"']")).node())||void 0===r||r.remove(),null===(a=null==l?void 0:l.select("g[data-balance-spark-embers='".concat(e,"']")).node())||void 0===a||a.remove(),s){var c="primary"===e?"inverse":"primary";if(null===this.balanceSparkInstances[c].timer&&this.balanceSparkOnComplete){var d=this.balanceSparkOnComplete;this.balanceSparkOnComplete=null,d()}}}},{key:"getOrCreateBalanceSparkLayer",value:function(){var e=this.ViewInitializer.globalGroup.select("g[data-balance-spark-layer='true']");if(e.node()){var t=this.ViewInitializer.globalGroup.node();return t&&t.appendChild(e.node()),e}return this.ViewInitializer.globalGroup.appendElement("g").setAttribute("data-balance-spark-layer","true").setStyle("pointer-events","none")}},{key:"getOrCreateBalanceSparkTadpoleLayer",value:function(){var e=this.getOrCreateBalanceSparkLayer(),t=e.select("g[data-balance-spark-tadpoles='true']");return t.node()?t:e.appendElement("g").setAttribute("data-balance-spark-tadpoles","true")}},{key:"spawnBalanceSparkTadpoles",value:function(e,t,n,i,r,a,o){var s=this,l=this.getOrCreateBalanceSparkTadpoleLayer(),c=performance.now();o.forEach(function(o){var d=l.appendElement("path").setAttribute("fill",e).setAttribute("filter","url(#".concat(t,")")).setAttribute("opacity","1");s.balanceSparkTadpoleIdSeq+=1,s.balanceSparkTadpoles.set(s.balanceSparkTadpoleIdSeq,{element:d,currentX:n,currentY:i,currentAngle:o.angle,bodyLength:o.bodyLength,strokeHalfWidth:r,taperPower:a,spawnTimeMs:c+o.birthOffsetMs,lastTickMs:null})}),this.balanceSparkTadpoleTimer||(this.balanceSparkTadpoleTimer=u.timer(function(){return s.tickBalanceSparkTadpoles()}))}},{key:"tickBalanceSparkTadpoles",value:function(){var e,t=this,n=this.getOrCreateBalanceSparkLayer().node(),i=null==n?void 0:n.parentNode;i&&i.lastChild!==n&&i.appendChild(n);var r=performance.now(),a=this.ViewInitializer.graphicContainer.getDimensions(),o=a.width,s=a.height,l=o/2,c=s;this.balanceSparkTadpoles.forEach(function(e){var n=r-e.spawnTimeMs;if(!(n<0)){var i=null===e.lastTickMs?0:r-e.lastTickMs;e.lastTickMs=r;var a=t.BALANCE_SPARK_DRIFT_SPEED_PX_PER_MS+(t.BALANCE_SPARK_DRIFT_INITIAL_SPEED_PX_PER_MS-t.BALANCE_SPARK_DRIFT_SPEED_PX_PER_MS)*Math.exp(-n/t.BALANCE_SPARK_DRIFT_SPEED_EASE_MS),o=Math.atan2(c-e.currentY,l-e.currentX),s=Math.atan2(Math.sin(o-e.currentAngle),Math.cos(o-e.currentAngle)),d=t.BALANCE_SPARK_DRIFT_TURN_RATE_RAD_PER_MS*i;e.currentAngle+=Math.abs(s)<=d?s:Math.sign(s)*d;var u=a*i;e.currentX+=Math.cos(e.currentAngle)*u,e.currentY+=Math.sin(e.currentAngle)*u,e.element.setAttribute("d",t.buildSwimmingTadpolePath(e.currentX,e.currentY,e.currentAngle,e.bodyLength,e.strokeHalfWidth,e.taperPower,n))}}),0===this.balanceSparkTadpoles.size&&(null===(e=this.balanceSparkTadpoleTimer)||void 0===e||e.stop(),this.balanceSparkTadpoleTimer=null)}},{key:"drawSemiCircle",value:function(){this.graphicStrategy.drawArc(this.yinYangGroup,this.geometry.layout.positionX,this.geometry.layout.positionY,0,this.geometry.layout.borderInnerRadius,0,Math.PI,"black")}},{key:"drawYinYangSymbols",value:function(){this.drawYinOrYangWithGroup(this.ViewInitializer.yinOrYangGroup.yin,"yin","base"),this.drawYinOrYangWithGroup(this.ViewInitializer.yinOrYangGroup.yang,"yang","base"),this.refreshIdleSphereOverlay(),this.drawCategoryArcsGhost()}},{key:"refreshIdleSphereOverlay",value:function(){for(var e=!this.ViewInitializer.isChild&&!this.ViewInitializer.controller.isChildrenEnabled(),t=p.animationConfig.idleSphereCrossfadeMs,n=0,i=[this.ViewInitializer.yinOrYangGroup.yin,this.ViewInitializer.yinOrYangGroup.yang];n<i.length;n++){var r=i[n],a=r.graphElementGroup.node();a&&(r.graphElementGroup.setStyle("pointer-events",e?"none":""),u.select(a).transition().duration(t).style("opacity",e?"0":"1"))}for(var o=0,s=["yin","yang"];o<s.length;o++){var l=s[o],c=("yin"===l?this.ViewInitializer.yinOrYangGroup.yin:this.ViewInitializer.yinOrYangGroup.yang).graphElementGroup.select('g[data-role="odd-interactive-layer-'.concat(l,'"]')).node();c&&(c.style.pointerEvents=e?"none":"all",c.querySelectorAll('path[data-role="odd-hit-zone"]').forEach(function(t){t.style.pointerEvents=e?"none":"all"}))}var d=this.ViewInitializer.globalGroup.select('g[data-role="'.concat(this.IDLE_SPHERE_OVERLAY_ROLE,'"]'));if(e){var h=this.geometry.layout.positionX,f=this.geometry.layout.positionY,g=this.ViewInitializer.borderInnerRadius,m="".concat(this.containerId,"-idle-sphere-clip"),y=d,b=!1;y.node()||(b=!0,(y=this.ViewInitializer.globalGroup.appendElement("g")).setAttribute("data-role",this.IDLE_SPHERE_OVERLAY_ROLE),y.setAttribute("clip-path","url(#".concat(m,")")),y.setStyle("pointer-events","none"),y.setStyle("opacity","0"),this.graphicStrategy.defs.appendElement("clipPath").setAttribute("id",m).appendElement("circle").setAttribute("data-role","idle-sphere-clip-circle"),y.appendElement("circle").setAttribute("data-role","idle-sphere-bg"),y.appendElement("image").setAttribute("data-role","idle-sphere-image").setAttribute("href",(0,v.getIdleSphereImageUrl)()).setAttribute("preserveAspectRatio","xMidYMid slice"));var I=y.node();I&&(b?u.select(I).style("opacity","1"):u.select(I).transition().duration(t).style("opacity","1"));var C="undefined"!=typeof CSS&&"function"==typeof CSS.escape?"clipPath#".concat(CSS.escape(m)," circle"):'clipPath[id="'.concat(m.replace(/\\/g,"\\\\").replace(/"/g,'\\"'),'"] circle'),w=this.graphicStrategy.defs.node(),x=null==w?void 0:w.querySelector(C);null==x||x.setAttribute("cx",h.toString()),null==x||x.setAttribute("cy",f.toString()),null==x||x.setAttribute("r",g.toString()),y.select('circle[data-role="idle-sphere-bg"]').setAttribute("cx",h.toString()).setAttribute("cy",f.toString()).setAttribute("r",g.toString()).setAttribute("fill","var(--idle-sphere-bg-color, #f4f1ea)"),y.select('image[data-role="idle-sphere-image"]').setAttribute("x",(h-g).toString()).setAttribute("y",(f-g).toString()).setAttribute("width",(2*g).toString()).setAttribute("height",(2*g).toString());var k=y.node(),S=this.ViewInitializer.globalGroup.node();k&&S&&S.appendChild(k)}else{var _=d.node();_&&u.select(_).transition().duration(t).style("opacity","0")}}},{key:"drawYinOrYangWithGroup",value:function(e,t,n){var i=e.centerY,r=e.radius,a=this.graphicStrategy.drawCircle(e.graphElementGroup,this.geometry.layout.positionX,i,r,"yin"===t?"black":"white");"base"===n&&a.setAttribute("data-base-main","true").setAttribute("data-base-type",t);var o=r/e.smallRadiusRatio;this.drawCategoryArcs(i,r,t,o,e,n),this.renderChildStateLabel(e,t,i,r,o,n),this.renderChildWeightLabel(e,t,i,r,o,n),this.renderFacetteStateLabel(e,t,i,r,o,n),this.renderFacetteWeightLabel(e,t,i,r,o,n)}},{key:"renderChildStateLabel",value:function(e,t,n,i,r,a){var o="child-state-label",s=e.graphElementGroup.select('text[data-role="'.concat(o,'"]')),l=this.ViewInitializer.getCurrentComponentOrientation();if("base"===a&&this.ViewInitializer.isChild&&t===l){var c=s.node()?s:e.graphElementGroup.appendElement("text").setAttribute("data-role",o).setStyle("text-anchor","middle").setStyle("dominant-baseline","middle").setStyle("font-weight","800").setStyle("paint-order","stroke").setStyle("stroke-linejoin","round").setStyle("pointer-events","none"),d=n+("yang"===t?-1:1)*(r+(i-r)*this.CHILD_SCORE_BAND_FRACTION),p=Math.min(2,Math.max(1,1/Math.sqrt(this.ViewInitializer.weightRatio))),h=Math.max(9,Math.round(.4*i*p)),f=m(t);c.setAttribute("x",this.geometry.layout.positionX.toString()).setAttribute("y",d.toString()).setStyle("font-size","".concat(h,"px")).setStyle("stroke-width","".concat(Math.max(1,Math.round(.06*h)),"px")).setStyle("fill",f.fill).setStyle("stroke",f.stroke);var g=Math.round(this.ViewInitializer.getAverageState()),v=u.select(c.node());v.selectAll("tspan").remove(),v.append("tspan").text(g.toString())}else s.node()&&s.node().remove()}},{key:"renderChildWeightLabel",value:function(e,t,n,i,r,a){var o="child-weight-label",s=e.graphElementGroup.select('g[data-role="'.concat(o,'"]')),l=this.ViewInitializer.getCurrentComponentOrientation();if("base"===a&&this.ViewInitializer.isChild&&t===l){var c,d,p=!s.node(),g=p?e.graphElementGroup.appendElement("g").setAttribute("data-role",o).setStyle("pointer-events","none"):s,v=u.select(g.node()),m="child-weight-label-gradient-".concat(this.key);p?(v.append("defs").append("radialGradient").attr("id",m).attr("cx","50%").attr("cy","50%").attr("r","50%").selectAll("stop").data([{offset:"0%",opacity:.55},{offset:"100%",opacity:0}]).enter().append("stop").attr("offset",function(e){return e.offset}).attr("stop-color",b(t)).attr("stop-opacity",function(e){return e.opacity}),c=v.append("circle").attr("data-role","child-weight-label-bg").style("fill","url(#".concat(m,")")).style("pointer-events","none"),d=v.append("text").attr("data-role","child-weight-label-text").style("text-anchor","middle").style("dominant-baseline","middle").style("font-weight","800").style("pointer-events","none")):(c=v.select("circle[data-role='child-weight-label-bg']"),d=v.select("text[data-role='child-weight-label-text']"));var y=r+(i-r)*this.CHILD_WEIGHT_LABEL_BAND_FRACTION,I="yang"===t?1:-1,C=this.geometry.layout.positionX,w=n+I*y,x=Math.min(2,Math.max(1,1/Math.sqrt(this.ViewInitializer.weightRatio))),k=Math.max(9,Math.round(.4*i*x)),S=Math.round(Math.max(0,Math.min(h.WEIGHT_MAX,this.ViewInitializer.weight)));d.attr("x",C).attr("y",w).style("font-size","".concat(k,"px")).style("fill",(0,f.weightColorForLobe)(t)),d.selectAll("tspan").remove(),d.append("tspan").text(S.toString());var _=d.node().getBBox(),A=Math.max(_.width/2+5,_.height/2+3);c.attr("cx",C).attr("cy",w).attr("r",A)}else s.node()&&s.node().remove()}},{key:"renderFacetteStateLabel",value:function(e,t,n,i,r,a){var o="facette-state-label",s=e.graphElementGroup.select('text[data-role="'.concat(o,'"]')),l=this.ViewInitializer.getCurrentComponentOrientation();if("base"!==a||this.ViewInitializer.isChild||t!==l)s.node()&&s.node().remove();else{var c=s.node()?s:e.graphElementGroup.appendElement("text").setAttribute("data-role",o).setStyle("text-anchor","middle").setStyle("dominant-baseline","middle").setStyle("font-weight","800").setStyle("paint-order","stroke").setStyle("stroke-linejoin","round").setStyle("pointer-events","none").setStyle("opacity","0"),d=n+("yang"===t?-1:1)*(r+(i-r)*this.CHILD_SCORE_BAND_FRACTION),h=Math.min(2,Math.max(1,1/Math.sqrt(this.ViewInitializer.weightRatio))),f=Math.max(9,Math.round(.4*i*h*this.ViewInitializer.facetteLabelFontScale)),g=m(t);c.setAttribute("x",this.geometry.layout.positionX.toString()).setAttribute("y",d.toString()).setStyle("font-size","".concat(f,"px")).setStyle("stroke-width","".concat(Math.max(1,Math.round(.06*f)),"px")).setStyle("fill",g.fill).setStyle("stroke",g.stroke);var v=Math.round(this.ViewInitializer.getAverageState()),y=u.select(c.node());y.selectAll("tspan").remove(),y.append("tspan").text(v.toString()),this.ViewInitializer.facetteLabelSuffixVisible&&y.append("tspan").style("font-size","".concat(.7425000000000002,"em")).style("font-weight","400").style("fill-opacity",.78).text("/100"),y.interrupt().transition().duration(Math.max(180,p.animationConfig.forceFieldRevealDurationMs)).style("opacity",this.shouldShowFacetteLabels()?1:0)}}},{key:"renderFacetteWeightLabel",value:function(e,t,n,i,r,a){var o="facette-weight-label",s=e.graphElementGroup.select('g[data-role="'.concat(o,'"]')),l=this.ViewInitializer.getCurrentComponentOrientation();if("base"!==a||this.ViewInitializer.isChild||t!==l)s.node()&&s.node().remove();else{var c,d,h=!s.node(),g=h?e.graphElementGroup.appendElement("g").setAttribute("data-role",o).setStyle("pointer-events","none").setStyle("opacity","0"):s,v=u.select(g.node()),m="facette-weight-label-gradient-".concat(this.key);h?(v.append("defs").append("radialGradient").attr("id",m).attr("cx","50%").attr("cy","50%").attr("r","50%").selectAll("stop").data([{offset:"0%",opacity:.55},{offset:"100%",opacity:0}]).enter().append("stop").attr("offset",function(e){return e.offset}).attr("stop-color",b(t)).attr("stop-opacity",function(e){return e.opacity}),c=v.append("circle").attr("data-role","facette-weight-label-bg").style("fill","url(#".concat(m,")")).style("pointer-events","none"),d=v.append("text").attr("data-role","facette-weight-label-text").style("text-anchor","middle").style("dominant-baseline","middle").style("font-weight","800").style("pointer-events","none")):(c=v.select("circle[data-role='facette-weight-label-bg']"),d=v.select("text[data-role='facette-weight-label-text']"));var y=r+(i-r)*this.CHILD_WEIGHT_LABEL_BAND_FRACTION,I="yang"===t?1:-1,C=this.geometry.layout.positionX,w=n+I*y,x=Math.min(2,Math.max(1,1/Math.sqrt(this.ViewInitializer.weightRatio))),k=Math.max(9,Math.round(.4*i*x*this.ViewInitializer.facetteLabelFontScale)),S=this.ViewInitializer.getFacetteWeightMax(),_=Math.round(Math.max(0,Math.min(S,this.ViewInitializer.getFacetteWeight())));d.attr("x",C).attr("y",w).style("font-size","".concat(k,"px")).style("fill",(0,f.weightColorForLobe)(t)),d.selectAll("tspan").remove(),d.append("tspan").text(_.toString()),this.ViewInitializer.facetteLabelSuffixVisible&&d.append("tspan").style("font-size","".concat(.7425000000000002,"em")).style("font-weight","400").style("fill-opacity",.78).text("/".concat(S));var A=d.node().getBBox(),E=Math.max(A.width/2+5,A.height/2+3);c.attr("cx",C).attr("cy",w).attr("r",E),v.interrupt().transition().duration(Math.max(180,p.animationConfig.forceFieldRevealDurationMs)).style("opacity",this.shouldShowFacetteLabels()?1:0)}}},{key:"drawGhostCircle",value:function(e,t){var n,i="yin"===t?this.ViewInitializer.yinOrYangGroup.yin:this.ViewInitializer.yinOrYangGroup.yang;if(!this.shouldRenderGhost(t))return this.clearGhostVisuals(e.graphElementGroup),void this.removeGhostDeltaBadge(t);var r=this.getGhostWaveColor(t,i,e),a="yin"===t?this.ViewInitializer.yinOpacity:this.ViewInitializer.yangOpacity;e.radius<i.radius&&(a=0);var o=this.getOrCreateGhostMainCircle(e.graphElementGroup,this.geometry.layout.positionX,e.centerY,e.radius,"yin"===t?"black":"white");o.setAttribute("fill-opacity",a.toString()),o.setAttribute("stroke",r),o.setAttribute("stroke-width",this.ViewInitializer.ghostPerimeterStrokeWidth.toString()),o.setAttribute("stroke-opacity",this.ViewInitializer.perimeterWaveOpacity.toString()),this.ViewInitializer.ghostPerimeterSolid?null===(n=o.node())||void 0===n||n.removeAttribute("stroke-dasharray"):o.setAttribute("stroke-dasharray",e.radius<i.radius?"4 3":"6 4")}},{key:"clearGhostVisuals",value:function(e){var t=e.node();t&&(t.querySelectorAll(this.GHOST_MAIN_SELECTOR).forEach(function(e){e.remove()}),t.querySelectorAll(this.GHOST_WAVE_SELECTOR).forEach(function(e){e.remove()}))}},{key:"getOrCreateGhostMainCircle",value:function(e,t,n,i,r){if(e.node().querySelector(this.GHOST_MAIN_SELECTOR)){var a=e.select(this.GHOST_MAIN_SELECTOR);return a.setAttribute("cx",t.toString()).setAttribute("cy",n.toString()).setAttribute("r",i.toString()).setAttribute("fill",r).setStyle("pointer-events","none"),a}var o=this.graphicStrategy.drawCircle(e,t,n,i,r);return o.setAttribute("data-ghost-main","true").setStyle("pointer-events","none"),o}},{key:"getAdaptiveWaveCount",value:function(e,t){var n=Math.max(0,Math.floor(this.ViewInitializer.numberOfWaves));if(n<=1)return n;var i=Math.max(t,1)*this.ADAPTIVE_WAVE_FULL_DIFF_RATIO;if(e>=i)return n;var r=(e-this.WAVE_MIN_RADIUS_DIFF)/Math.max(i-this.WAVE_MIN_RADIUS_DIFF,1e-4),a=Math.max(0,Math.min(1,r));return Math.max(1,Math.round(a*n))}},{key:"reconcileGhostWaves",value:function(e,t,n){var i=this,r=e.node(),a=Array.from(r.querySelectorAll(this.GHOST_WAVE_SELECTOR));t.forEach(function(t,r){var o=a[r];o?(o.setAttribute("cx",i.geometry.layout.positionX.toString()),o.setAttribute("cy",t.centerY.toString()),o.setAttribute("r",t.radius.toString()),o.setAttribute("fill","none"),o.setAttribute("stroke",n),o.setAttribute("stroke-width",i.ViewInitializer.waveStrokeWidth.toString()),o.setAttribute("stroke-opacity",t.opacity.toString())):i.graphicStrategy.drawCircle(e,i.geometry.layout.positionX,t.centerY,t.radius,"none").setAttribute("data-ghost-wave","true").setAttribute("fill","none").setAttribute("stroke",n).setAttribute("stroke-width",i.ViewInitializer.waveStrokeWidth.toString()).setAttribute("stroke-opacity",t.opacity.toString())}),a.length>t.length&&a.slice(t.length).forEach(function(e){return e.remove()})}},{key:"updateBasePulseAnimations",value:function(){var e=performance.now();this.updateBasePulseAnimationForType("yin",e),this.updateBasePulseAnimationForType("yang",e),this.hasActivePulseAnimations()?this.ensurePulseAnimationLoop():this.stopPulseAnimationLoop()}},{key:"updateBasePulseAnimationForType",value:function(e,t){var n="yin"===e?this.ViewInitializer.yinOrYangGroup.yin:this.ViewInitializer.yinOrYangGroup.yang,i="yin"===e?this.ViewInitializer.yinOrYangGroupGhost.yin:this.ViewInitializer.yinOrYangGroupGhost.yang,r=this.getBaseMainCircle(e);if(r){if(!this.ViewInitializer.isGhostDisplayAllowed()||i.radius===n.radius)return this.resetBaseCircle(r,n),void(this.pulseStates[e].active=!1);this.getCircleNumericAttribute(r,"r",n.radius),this.getCircleNumericAttribute(r,"cy",n.centerY),this.getCircleNumericAttribute(r,"fill-opacity",1);var a=Math.max(500,1e3*this.ViewInitializer.ghostPulseDurationSec),o=this.pulseStates[e];(o.targetRadius!==i.radius||o.targetCenterY!==i.centerY||o.baseRadius!==n.radius||o.baseCenterY!==n.centerY||o.durationMs!==a||!o.active)&&(this.pulseStates[e]={startTimeMs:t,fromRadius:n.radius,fromCenterY:n.centerY,fromOpacity:1,targetRadius:i.radius,targetCenterY:i.centerY,baseRadius:n.radius,baseCenterY:n.centerY,durationMs:a,active:!0}),this.applyPulseFrame(e,t)}else this.pulseStates[e].active=!1}},{key:"ensurePulseAnimationLoop",value:function(){var e=this;null===this.pulseAnimationFrameId&&(this.pulseAnimationFrameId=requestAnimationFrame(function(t){e.pulseAnimationFrameId=null,e.hasActivePulseAnimations()&&(e.applyPulseFrame("yin",t),e.applyPulseFrame("yang",t),e.ensurePulseAnimationLoop())}))}},{key:"stopPulseAnimationLoop",value:function(){null!==this.pulseAnimationFrameId&&(cancelAnimationFrame(this.pulseAnimationFrameId),this.pulseAnimationFrameId=null)}},{key:"hasActivePulseAnimations",value:function(){return this.pulseStates.yin.active||this.pulseStates.yang.active}},{key:"applyPulseFrame",value:function(e,t){var n=this.pulseStates[e];if(n.active){var i=this.getBaseMainCircle(e);if(i){if(!this.ViewInitializer.basePulseEnabled)return i.setAttribute("r",n.baseRadius.toString()),i.setAttribute("cy",n.baseCenterY.toString()),i.setAttribute("fill-opacity","1"),void this.updateGhostWaveAnimation(e,t);var r=n.durationMs,a=r+1e3,o=Math.max(0,t-n.startTimeMs)%a/a,s=this.ViewInitializer.pulseMorphRatio*r/a,l=r/a,c=n.baseRadius,d=n.baseCenterY,u=1;if(o<=s){var p=o/Math.max(s,1e-4);c=this.lerp(n.fromRadius,n.targetRadius,p),d=this.lerp(n.fromCenterY,n.targetCenterY,p),u=this.lerp(n.fromOpacity,1,p)}else if(o<l){var h=l-s,f=Math.min(1,(o-s)/Math.max(h,1e-4));c=this.lerp(n.targetRadius,n.baseRadius,f),d=this.lerp(n.targetCenterY,n.baseCenterY,f),u=1}else c=n.baseRadius,d=n.baseCenterY,u=1;i.setAttribute("r",c.toString()),i.setAttribute("cy",d.toString()),i.setAttribute("fill-opacity",u.toString()),this.updateGhostWaveAnimation(e,t)}else n.active=!1}}},{key:"getGhostWaveColor",value:function(e,t,n){var i,r=n.radius>t.radius,a=null!==(i=this.ViewInitializer.getCurrentComponentOrientation())&&void 0!==i?i:"yin";return e===a&&r||e!==a&&!r?this.ViewInitializer.waveColorIncrease:this.ViewInitializer.waveColorDecrease}},{key:"updateGhostWaveAnimation",value:function(e,t){var n="yin"===e?this.ViewInitializer.yinOrYangGroup.yin:this.ViewInitializer.yinOrYangGroup.yang,i="yin"===e?this.ViewInitializer.yinOrYangGroupGhost.yin:this.ViewInitializer.yinOrYangGroupGhost.yang,r=Math.abs(i.radius-n.radius),a=r>this.WAVE_MIN_RADIUS_DIFF?this.getAdaptiveWaveCount(r,n.radius):0;if(a<=0)return this.reconcileGhostWaves(i.graphElementGroup,[],""),void this.updateGhostDeltaBadge(e,n,i,t);for(var o=this.getGhostWaveColor(e,n,i),s=Math.max(300,1e3*this.ViewInitializer.waveTravelDurationSec),l=[],c=0;c<a;c++){var d=(t/s+Math.pow(c/a,this.ViewInitializer.waveSpacing))%1,p=u.easeSinInOut(d),h=this.lerp(n.radius,i.radius,p),f=this.lerp(n.centerY,i.centerY,p),g=Math.sin(d*Math.PI),v=this.ViewInitializer.perimeterWaveOpacity*g;v<=.01||l.push({radius:h,centerY:f,opacity:v})}this.reconcileGhostWaves(i.graphElementGroup,l,o),this.updateGhostDeltaBadge(e,n,i,t)}},{key:"updateGhostDeltaBadge",value:function(e,t,n,i){var r=this,a=this.ViewInitializer.globalGroup.node();if(a){var o=a.querySelector(this.ghostDeltaBadgeSelector(e)),s=n.radius>t.radius,l=this.ViewInitializer.yinOrYangGroup,c=l.yin,d=l.yang,h=d.radius>=c.radius?d:c,f=h===c,v=h.radius/h.smallRadiusRatio,m=100*(this.ViewInitializer.averageTension-this.ViewInitializer.averageTensionGhost),y=[{role:"ghost-score-delta",row:(0,g.buildScoreDeltaRow)(m,f)},{role:"ghost-weight-delta",row:(0,g.buildWeightDeltaRow)(this.ViewInitializer.weightDeltaGhostTotal,f)}].filter(function(e){return null!==e.row});if(s&&0!==y.length){var b=!o,I=this.ViewInitializer.globalGroup.select(this.ghostDeltaBadgeSelector(e));b&&(I=this.ViewInitializer.globalGroup.appendElement("g").setAttribute("data-ghost-delta-badge",e).setStyle("pointer-events","none").setStyle("opacity","0"));var C=u.select(I.node());C.selectAll("*").remove();var w=this.GHOST_DELTA_BADGE_ROW_GAP,x=-(y.length-1)*w/2;y.forEach(function(e,t){var n=e.role,i=e.row;(0,g.appendDeltaRow)(C,0,x+t*w,r.GHOST_DELTA_BADGE_FONT_SIZE,n,i,r.ViewInitializer.labelsTextShadowEnabled)});var k=1/0,S=-1/0,_=1/0,A=-1/0;C.selectAll("text").each(function(){var e=this.getBBox();k=Math.min(k,e.x),S=Math.max(S,e.x+e.width),_=Math.min(_,e.y),A=Math.max(A,e.y+e.height)});var E=Math.hypot(S-k,A-_)||1,O=2*v*this.GHOST_DELTA_BADGE_NUCLEUS_FILL*this.ViewInitializer.ghostDeltaBadgeSizeBoost/E,D=i/Math.max(300,1e3*this.ViewInitializer.waveTravelDurationSec)%1,M=O*(1+.05*Math.pow(u.easeSinInOut(D),3)),L=this.geometry.layout.positionX-M*(k+S)/2,F=h.centerY-M*(_+A)/2;I.setAttribute("transform","translate(".concat(L,", ").concat(F,") scale(").concat(M,")")),b?u.select(I.node()).transition().duration(Math.max(180,p.animationConfig.forceFieldRevealDurationMs)).style("opacity","1"):I.setStyle("opacity","1");var T=I.node();T&&a.appendChild(T)}else null==o||o.remove()}}},{key:"ghostDeltaBadgeSelector",value:function(e){return'g[data-ghost-delta-badge="'.concat(e,'"]')}},{key:"removeGhostDeltaBadge",value:function(e){var t;null===(t=this.ViewInitializer.globalGroup.node())||void 0===t||t.querySelectorAll(this.ghostDeltaBadgeSelector(e)).forEach(function(e){return e.remove()})}},{key:"getBaseMainCircle",value:function(e){var t=("yin"===e?this.ViewInitializer.yinOrYangGroup.yin:this.ViewInitializer.yinOrYangGroup.yang).graphElementGroup.node();return t?t.querySelector(this.BASE_MAIN_SELECTOR):null}},{key:"resetBaseCircle",value:function(e,t){e.setAttribute("r",t.radius.toString()),e.setAttribute("cy",t.centerY.toString()),e.setAttribute("fill-opacity","1")}},{key:"getCircleNumericAttribute",value:function(e,t,n){var i=e.getAttribute(t);if(null===i)return n;var r=parseFloat(i);return Number.isFinite(r)?r:n}},{key:"lerp",value:function(e,t,n){return e+(t-e)*n}},{key:"shouldRenderGhost",value:function(e){if(!this.ViewInitializer.isGhostDisplayAllowed())return!1;var t="yin"===e?this.ViewInitializer.yinOrYangGroup.yin:this.ViewInitializer.yinOrYangGroup.yang;return("yin"===e?this.ViewInitializer.yinOrYangGroupGhost.yin:this.ViewInitializer.yinOrYangGroupGhost.yang).radius!==t.radius}},{key:"drawCategoryArcs",value:function(e,t,n,i,r,a){var o=this,s=this.key,l="base"===a,c=l?this.getOrCreateInteractiveArcLayer(r,n):null;if(c)for(var d=c.node();null==d?void 0:d.firstChild;)d.removeChild(d.firstChild);var u=new Set;if(this.geometry.categoryArcs.forEach(function(l){u.add(l.category);var d=o.ViewInitializer.getSafeIdPart(l.category),p="".concat(o.containerId,"-").concat(d,"-").concat(s,"-").concat(n,"-").concat(a),h="".concat(o.containerId,"-categoryArcMask-").concat(p),f=o.graphicStrategy.createYinOrYangArcMask(h,o.geometry.layout.positionX,e,i,t,l.startAngle,l.endAngle,n,o.ViewInitializer.categoryBlendOpacity*o.ViewInitializer.getCategoryBlendOpacity(l.category)),g="".concat(o.containerId,"-categoryArcGradientId-").concat(p),v=o.graphicStrategy.createUnderlyingCircleGradient(g,l.color,o.ViewInitializer.oddGradientSpread,o.ViewInitializer.oddGradientIntensity);o.graphicStrategy.createUnderlyingCircleWithArcMask(f,v,r.graphElementGroup,o.geometry.layout.positionX,e,t),c&&o.drawInteractiveArcZone(c,e,t,i,n,l)}),this.activeOddId&&!u.has(this.activeOddId)&&(this.activeOddId=null),c){var p=r.graphElementGroup.node(),h=c.node();p&&h&&p.appendChild(h)}var f=this.graphicStrategy.drawCircle(r.graphElementGroup,this.geometry.layout.positionX,e,i,"yin"===n?"white":"black",1);l&&!this.ViewInitializer.isChild&&n===this.ViewInitializer.getCurrentComponentOrientation()&&(f.setStyle("pointer-events","all").setAttribute("data-role","core-event-nucleus"),f.addEventListener("mouseenter",function(){f.setStyle("cursor",o.ViewInitializer.controller.isChildrenEnabled()?"pointer":"default")}),f.addEventListener("click",function(){o.ViewInitializer.controller.isChildrenEnabled()&&o.ViewInitializer.controller.onCoreEventNucleusClicked()})),this.renderOddArcLabels(r,n,e,t,i,a)}},{key:"drawCategoryArcsGhost",value:function(){this.drawCategoryArcsGhostForType(this.ViewInitializer.yinOrYangGroup.yin,"yin"),this.drawCategoryArcsGhostForType(this.ViewInitializer.yinOrYangGroup.yang,"yang"),this.categoryArcGhostEntries.yin.length>0||this.categoryArcGhostEntries.yang.length>0?this.ensureCategoryArcGhostLoop():this.stopCategoryArcGhostLoop()}},{key:"drawCategoryArcsGhostForType",value:function(e,t){var n='g[data-role="category-arc-ghost-layer-'.concat(t,'"]'),i=e.graphElementGroup.select(n),r=this.ViewInitializer.categoriesGhost;if(!r||0===r.length)return this.categoryArcGhostEntries[t]=[],void(i.node()&&u.select(i.node()).selectAll("*").remove());i.node()||(i=e.graphElementGroup.appendElement("g").setAttribute("data-role","category-arc-ghost-layer-".concat(t)).setStyle("pointer-events","none"));var a=e.graphElementGroup.node(),o=i.node();if(a&&o&&a.appendChild(o),o){var s=function(e){return"yang"===t?e:Math.PI-e},l=new Map(this.ViewInitializer.categories.map(function(e){return[e.category,e]}));this.categoryArcGhostEntries[t]=r.map(function(e){var t,n,i,r=l.get(e.category),a=null!==(t=null==r?void 0:r.angles.startAngle)&&void 0!==t?t:e.angles.startAngle,o=null!==(n=null==r?void 0:r.angles.endAngle)&&void 0!==n?n:e.angles.endAngle;return{category:e.category,baseStart:s(a),baseEnd:s(o),ghostStart:s(e.angles.startAngle),ghostEnd:s(e.angles.endAngle),isGrowing:e.percentage>(null!==(i=null==r?void 0:r.percentage)&&void 0!==i?i:0)}});var c=e.radius/e.smallRadiusRatio;this.drawCategoryArcGhostShapes(o,t,e.radius,c,e.centerY)}else this.categoryArcGhostEntries[t]=[]}},{key:"drawCategoryArcGhostShapes",value:function(e,t,n,i,r){var a=u.arc().innerRadius(i).outerRadius(n).startAngle(function(e){return e.ghostStart}).endAngle(function(e){return e.ghostEnd}),o=u.select(e).selectAll('path[data-role="category-arc-ghost"]').data(this.categoryArcGhostEntries[t],function(e){return e.category});o.exit().remove(),o.enter().append("path").attr("data-role","category-arc-ghost").style("pointer-events","none").style("stroke",f.WEIGHT_DELTA_COLOR).style("stroke-width","2px").merge(o).attr("d",a).attr("transform","translate(".concat(this.geometry.layout.positionX,", ").concat(r,")")).style("fill",f.WEIGHT_DELTA_COLOR).style("fill-opacity",function(e){return e.isGrowing?.18:0}).style("stroke-dasharray",function(e){return e.isGrowing?"6 4":"4 3"})}},{key:"ensureCategoryArcGhostLoop",value:function(){var e=this;if(null===this.categoryArcGhostFrameId){var t=function(n){e.categoryArcGhostEntries.yin.length>0||e.categoryArcGhostEntries.yang.length>0?(e.updateCategoryArcGhostWave("yin",n),e.updateCategoryArcGhostWave("yang",n),e.categoryArcGhostFrameId=requestAnimationFrame(t)):e.categoryArcGhostFrameId=null};this.categoryArcGhostFrameId=requestAnimationFrame(t)}}},{key:"stopCategoryArcGhostLoop",value:function(){null!==this.categoryArcGhostFrameId&&(cancelAnimationFrame(this.categoryArcGhostFrameId),this.categoryArcGhostFrameId=null)}},{key:"updateCategoryArcGhostWave",value:function(e,t){var n=this.categoryArcGhostEntries[e];if(0!==n.length){var i="yin"===e?this.ViewInitializer.yinOrYangGroup.yin:this.ViewInitializer.yinOrYangGroup.yang,r='g[data-role="category-arc-ghost-layer-'.concat(e,'"]'),a=i.graphElementGroup.select(r).node();if(a){var o=i.radius/i.smallRadiusRatio,s=t/Math.max(200,1e3*this.ViewInitializer.waveTravelDurationSec)%1,l=u.easeSinInOut(s),c=Math.sin(s*Math.PI),d=u.arc().innerRadius(o).outerRadius(i.radius).startAngle(function(e){return e.baseStart+(e.ghostStart-e.baseStart)*l}).endAngle(function(e){return e.baseEnd+(e.ghostEnd-e.baseEnd)*l}),p=u.select(a).selectAll('path[data-role="category-arc-ghost-wave"]').data(n,function(e){return e.category});p.exit().remove(),p.enter().append("path").attr("data-role","category-arc-ghost-wave").style("pointer-events","none").style("fill","none").style("stroke",f.WEIGHT_DELTA_COLOR).style("stroke-width","2px").merge(p).attr("d",d).attr("transform","translate(".concat(this.geometry.layout.positionX,", ").concat(i.centerY,")")).style("stroke-opacity",c.toString())}}}},{key:"shouldShowOddArcLabels",value:function(){return this.ViewInitializer.controller.isChildrenEnabled()&&this.ViewInitializer.oddContextLabelsVisible&&!this.ViewInitializer.oddContextLabelsSuppressed}},{key:"shouldShowFacetteLabels",value:function(){return this.shouldShowOddArcLabels()&&null===this.activeOddId}},{key:"refreshOddArcLabelsVisibility",value:function(){for(var e=this,t=this,n=this.shouldShowOddArcLabels(),i=function(){var i=a[r],o="yin"===i?e.ViewInitializer.yinOrYangGroup.yin:e.ViewInitializer.yinOrYangGroup.yang,s=o.graphElementGroup.select('g[data-role="odd-label-layer-'.concat(i,'"]')).node();if(!s)return 1;var l=u.select(s).selectAll('g[data-role="odd-arc-label"]');l.each(function(e){var n=u.select(this).select('g[data-role="odd-arc-label-content"]'),r=n.select("text");r.style("font-size","".concat(Math.round(22*t.ViewInitializer.oddLabelFontScale),"px"));var a=t.buildOddArcLabelLines(e.id);t.writeOddArcLabelText(r,a,i),t.sizeOddArcLabelBackground(n,r,a,i)}),l.interrupt().transition().duration(Math.max(180,p.animationConfig.forceFieldRevealDurationMs)).style("opacity",n?1:0);var c=o.radius/o.smallRadiusRatio;e.renderFacetteStateLabel(o,i,o.centerY,o.radius,c,"base"),e.renderFacetteWeightLabel(o,i,o.centerY,o.radius,c,"base")},r=0,a=["yin","yang"];r<a.length;r++)i()}},{key:"refreshOddArcLabelsOrientation",value:function(){for(var e=0,t=["yin","yang"];e<t.length;e++){var n=t[e];this.applyOddArcLabelCounterRotation(n)}}},{key:"isArcVisibleForLabel",value:function(e,t){var n=this.getDisplayedArcAngles(e,t),i=n.displayedStartAngle,r=n.displayedEndAngle-i;return r<0&&(r+=2*Math.PI),r>=this.MIN_VISIBLE_ARC_ANGLE_RAD}},{key:"renderOddArcLabels",value:function(e,t,n,i,a,o){var s=this,l='g[data-role="odd-label-layer-'.concat(t,'"]'),c=e.graphElementGroup.select(l);c.node()||(c=e.graphElementGroup.appendElement("g").setAttribute("data-role","odd-label-layer-".concat(t)).setStyle("pointer-events","none"));var d=this.ViewInitializer.getCurrentComponentOrientation(),h="base"===o&&!this.ViewInitializer.isChild&&t===d,f=Math.max(180,p.animationConfig.forceFieldRevealDurationMs),g=h?this.geometry.categoryArcs.filter(function(e){return s.isArcVisibleForLabel(t,e)}).map(function(e){var o=s.getDisplayedArcAngles(t,e),l=o.displayedStartAngle,c=o.displayedEndAngle,d=c<l?c+2*Math.PI:c,p=function(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(u.arc().innerRadius(a).outerRadius(i).startAngle(l).endAngle(d).centroid({}),2),h=p[0],f=p[1];return{id:e.category,x:s.geometry.layout.positionX+h,y:n+f,lines:s.buildOddArcLabelLines(e.category)}}):[],v=u.select(c.node()).selectAll('g[data-role="odd-arc-label"]').data(g,function(e){return e.id});v.exit().interrupt().transition().duration(f).style("opacity",0).remove();var m=v.enter().append("g").attr("data-role","odd-arc-label").style("opacity",0),b=m.append("g").attr("data-role","odd-arc-label-content");b.append("defs").append("radialGradient").attr("id",function(e,t){return"odd-label-gradient-".concat(s.key,"-").concat(t)}).attr("cx","50%").attr("cy","50%").attr("r","50%").selectAll("stop").data(y).enter().append("stop").attr("offset",function(e){return e.offset}).attr("stop-color","rgb(0, 0, 0)").attr("stop-opacity",function(e){return e.opacity}),b.append("circle").attr("data-role","odd-label-bg").attr("cx",0).attr("cy",0).attr("r",30).style("fill",function(e,t){return"url(#odd-label-gradient-".concat(s.key,"-").concat(t,")")}).style("pointer-events","none"),b.append("text").style("text-anchor","middle").style("dominant-baseline","middle").style("font-size","".concat(Math.round(22*this.ViewInitializer.oddLabelFontScale),"px")).style("font-weight","700").style("fill","#ffffff").style("paint-order","stroke").style("stroke","rgba(114, 245, 255, 0.9)").style("stroke-width","2.5px").style("stroke-linejoin","round").style("text-shadow",this.ViewInitializer.labelsTextShadowEnabled?"0 0 10px rgba(114, 245, 255, 0.5), 0 2px 8px rgba(0,0,0,0.9)":"none").style("pointer-events","none");var I=m.merge(v),C=this;I.attr("transform",function(e){return"translate(".concat(e.x,", ").concat(e.y,")")}).each(function(e){var n=u.select(this).select('g[data-role="odd-arc-label-content"]'),i=n.select("text");i.style("font-size","".concat(Math.round(22*C.ViewInitializer.oddLabelFontScale),"px")),C.writeOddArcLabelText(i,e.lines,t),C.sizeOddArcLabelBackground(n,i,e.lines,t)}).interrupt().transition().duration(f).style("opacity",this.shouldShowOddArcLabels()?1:0),this.applyOddArcLabelCounterRotation(t);var w=e.graphElementGroup.node(),x=c.node();w&&x&&w.appendChild(x)}},{key:"applyOddArcLabelCounterRotation",value:function(e){var t,n="yin"===e?this.ViewInitializer.yinOrYangGroup.yin:this.ViewInitializer.yinOrYangGroup.yang,i=n.graphElementGroup.select('g[data-role="odd-label-layer-'.concat(e,'"]')).node();if(i){var r=this.getRotationAngleFromTransform(null===(t=n.graphElementGroup.node())||void 0===t?void 0:t.getAttribute("transform"));u.select(i).selectAll('g[data-role="odd-arc-label-content"]').attr("transform","rotate(".concat(-r,")"))}}},{key:"getRotationAngleFromTransform",value:function(e){if(!e)return 0;var t=e.match(/rotate\(([-+]?\d*\.?\d+)/);if(!t)return 0;var n=Number.parseFloat(t[1]);return Number.isFinite(n)?n:0}},{key:"getDisplayedArcAngles",value:function(e,t){if("yang"===e)return{displayedStartAngle:t.startAngle,displayedEndAngle:t.endAngle};var n=Math.PI-t.startAngle;return{displayedStartAngle:Math.PI-t.endAngle,displayedEndAngle:n}}},{key:"sizeOddArcLabelBackground",value:function(e,t,n,i){var r,a=e.select("radialGradient"),o=a.attr("id");a.selectAll("stop").data(y).join("stop").attr("offset",function(e){return e.offset}).attr("stop-color",b(i)).attr("stop-opacity",function(e){return e.opacity});var s=t.node().getBBox(),l=n.reduce(function(e,t){return e+function(e){return"name"===e.kind?e.text.length:e.value.length+e.suffix.length}(t)},0)>12,c=e.select("[data-role='odd-label-bg']"),d=null===(r=c.node())||void 0===r?void 0:r.tagName,u=l?"ellipse":"circle";d&&d!==u&&c.remove();var p=d===u?c:e.insert(function(){return document.createElementNS("http://www.w3.org/2000/svg",u)},":first-child").attr("data-role","odd-label-bg").attr("cx",0).attr("cy",0).style("pointer-events","none");l?p.attr("rx",Math.max(.62*s.width,s.height/1.2)).attr("ry",.66*s.height):p.attr("r",Math.max(.62*s.width,.66*s.height)),p.style("fill","url(#".concat(o,")")).style("opacity",1)}},{key:"writeOddArcLabelText",value:function(e,t,n){e.selectAll("tspan").remove();var i=t.map(function(e){return"name"===e.kind?1:1.35}),r=function(e){var t=e.map(function(e){return 1.1*e}),n=-t.reduce(function(e,t){return e+t},0)/2;return t.map(function(e){var t=n+e/2;return n+=e,t})}(i);t.forEach(function(t,a){var o=0===a?0:r[a-1],s=e.append("tspan").attr("x",0).attr("dy","".concat((r[a]-o)/i[a],"em"));if("name"!==t.kind){s.style("font-size","".concat(1.35,"em"));var l=m(n),c=l.fill,d=l.stroke;s.style("fill","weight"===t.kind?(0,f.weightColorForLobe)(n):c).style("stroke",d),s.append("tspan").text(t.value),t.suffix&&s.append("tspan").style("font-size","0.74em").style("font-weight","400").style("fill-opacity",.78).style("stroke-width","2px").text(t.suffix)}else s.text(t.text)})}},{key:"buildOddArcLabelLines",value:function(e){var t=this.ViewInitializer.getCurrentComponentIndex(),n=this.ViewInitializer.controller.getInternalModel().components[t],i=null==n?void 0:n.odds.find(function(t){return t.id===e}),r=this.ViewInitializer.oddLabelsCompact?[]:this.wrapOddLabel(e).map(function(e){return{kind:"name",text:e}});if(!i)return r;var a=(0,h.stateFromTension)((0,h.oddTensionFromCuttings)(i.cuttingScores,i.cuttingWeights)),o=i.cuttingWeights.reduce(function(e,t){return e+Math.max(0,t)},0),s=o>0?o:i.satelliteCount,l=Math.max(1,i.cuttingWeights.length||i.satelliteCount);if(e===this.activeOddId){var c=this.ViewInitializer.facetteLabelSuffixVisible;r.push({kind:"score",value:"".concat(a),suffix:c?"/100":""}),r.push({kind:"weight",value:"".concat(Math.round(s)),suffix:c?"/".concat(l*h.WEIGHT_MAX):""})}return r}},{key:"wrapOddLabel",value:function(e){var t,n,i=this.ViewInitializer.getCurrentComponentIndex(),r=this.ViewInitializer.controller.getInternalModel().components[i],a=null==r?void 0:r.odds.find(function(t){return t.id===e}),o=null!==(n=null!==(t=null==a?void 0:a.shortLabel)&&void 0!==t?t:null==a?void 0:a.label)&&void 0!==n?n:e,s=this.ViewInitializer.oddLabelShortMaxChars,l=o.length>s?"".concat(o.slice(0,s-1),"…"):o,c=this.ViewInitializer.oddLabelMaxLines;return this.wrapTextByLines(l,c)}},{key:"wrapTextByLines",value:function(e,t){var n=e.split(/\s+/).filter(function(e){return e.length>0});if(1===t||n.length<=1)return[e];var i=[];if(2===t){var r=Math.ceil(n.length/2);i.push(n.slice(0,r).join(" ")),i.push(n.slice(r).join(" "))}else if(3===t){var a=Math.ceil(n.length/3);i.push(n.slice(0,a).join(" ")),i.push(n.slice(a,2*a).join(" ")),i.push(n.slice(2*a).join(" "))}return i.filter(function(e){return e.length>0})}},{key:"getOrCreateInteractiveArcLayer",value:function(e,t){var n='g[data-role="odd-interactive-layer-'.concat(t,'"]'),i=e.graphElementGroup.select(n);return i.node()||(i=e.graphElementGroup.appendElement("g").setAttribute("data-role","odd-interactive-layer-".concat(t)).setStyle("pointer-events","all")),i}},{key:"drawInteractiveArcZone",value:function(e,t,n,i,r,a){var o,s,l=this,c=this.getDisplayedArcAngles(r,a),d=c.displayedStartAngle,p=c.displayedEndAngle,h=null!==(o=u.arc().innerRadius(i).outerRadius(n).startAngle(d).endAngle(p<d?p+2*Math.PI:p)({}))&&void 0!==o?o:"",f=e.appendElement("path").setAttribute("d",h).setAttribute("transform","translate(".concat(this.geometry.layout.positionX,", ").concat(t,")")).setAttribute("data-odd-id",a.category).setAttribute("data-odd-color",a.color).setAttribute("data-role","odd-hit-zone").setStyle("cursor","pointer").setStyle("fill","#ffffff").setStyle("fill-opacity","0.001").setStyle("pointer-events","all"),g=null!==(s=u.arc().innerRadius(i).outerRadius(i+6).startAngle(d).endAngle(p<d?p+2*Math.PI:p)({}))&&void 0!==s?s:"";e.appendElement("path").setAttribute("d",g).setAttribute("transform","translate(".concat(this.geometry.layout.positionX,", ").concat(t,")")).setAttribute("data-odd-id",a.category).setAttribute("data-role","odd-active-edge").setStyle("pointer-events","none").setStyle("fill","yin"===r?"#ffffff":"#2196f3").setStyle("fill-opacity",this.activeOddId===a.category?"0.9":"0").setStyle("filter",this.activeOddId===a.category?"yin"===r?"drop-shadow(0 0 3px rgba(255,255,255,0.9))":"drop-shadow(0 0 4px #2196f3)":"none");var v=f.node();v.addEventListener("click",function(e){l.ViewInitializer.isChild||l.ViewInitializer.controller.onDiagramOddArcClicked(a.category)}),v.addEventListener("mouseenter",function(){var e;l.ViewInitializer.isChild||(l.setHoverOddId(a.category),null===(e=l._onOddArcHoverCb)||void 0===e||e.call(l,a.category))}),v.addEventListener("mouseleave",function(){var e;l.ViewInitializer.isChild||(l.setHoverOddId(null),null===(e=l._onOddArcHoverCb)||void 0===e||e.call(l,null))})}},{key:"setOnOddArcHover",value:function(e){this._onOddArcHoverCb=e}},{key:"getActiveOddId",value:function(){return this.activeOddId}},{key:"setActiveOddId",value:function(e){this.activeOddId!==e&&(this.activeOddId=e,this.refreshInteractiveArcStyles(),this.refreshOddArcLabelsVisibility())}},{key:"setHoverOddId",value:function(e){this.hoverOddId!==e&&(this.hoverOddId=e,this.refreshHoverArcStyles())}},{key:"refreshHoverArcStyles",value:function(){for(var e=this,t=0,n=["yin","yang"];t<n.length;t++){var i=n[t],r="yin"===i?this.ViewInitializer.yinOrYangGroup.yin:this.ViewInitializer.yinOrYangGroup.yang,a='g[data-role="odd-interactive-layer-'.concat(i,'"]'),o=r.graphElementGroup.select(a).node();o&&o.querySelectorAll('path[data-role="odd-hit-zone"]').forEach(function(t){var n,i=t.getAttribute("data-odd-id"),r=null!==i&&i===e.hoverOddId;if(i!==e.activeOddId)if(r){var a=null!==(n=t.getAttribute("data-odd-color"))&&void 0!==n?n:"#ffffff";t.style.fill=a,t.style.fillOpacity="0.28",t.style.stroke=a,t.style.strokeWidth="2.5",t.style.filter=["drop-shadow(0 0 6px ".concat(a,")"),"drop-shadow(0 0 14px ".concat(a,"99)"),"drop-shadow(0 0 26px ".concat(a,"55)")].join(" ")}else t.style.fill="#ffffff",t.style.fillOpacity="0.001",t.style.stroke="none",t.style.strokeWidth="0",t.style.filter="none"})}}},{key:"refreshInteractiveArcStyles",value:function(){for(var e=this,t=function(){var t=i[n],r="yin"===t?e.ViewInitializer.yinOrYangGroup.yin:e.ViewInitializer.yinOrYangGroup.yang,a='g[data-role="odd-interactive-layer-'.concat(t,'"]'),o=r.graphElementGroup.select(a).node();if(!o)return 1;o.querySelectorAll('path[data-role="odd-active-edge"]').forEach(function(n){var i=n.getAttribute("data-odd-id"),r=null!==i&&i===e.activeOddId;n.style.fillOpacity=r?"0.9":"0",n.style.filter=r?"yin"===t?"drop-shadow(0 0 3px rgba(255,255,255,0.9))":"drop-shadow(0 0 4px #2196f3)":"none"})},n=0,i=["yin","yang"];n<i.length;n++)t()}}],t&&a(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.YinYangDrawer=I},2535(e,t){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}function r(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.YinYangView=void 0;var a=function(){return e=function e(t,n,i,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._positionX=0,this._positionY=0,this.viewInitializer=t,this.yinYangDrawer=n,this.spikeDrawer=i,this.borderDrawer=r},(t=[{key:"controller",get:function(){return this._controller},set:function(e){this._controller=e}},{key:"viewData",get:function(){return this._viewData},set:function(e){this._viewData=e}},{key:"positionX",get:function(){return this._positionX},set:function(e){this._positionX=e}},{key:"positionY",get:function(){return this._positionY},set:function(e){this._positionY=e}},{key:"viewInitializer",get:function(){return this._viewInitializer},set:function(e){this._viewInitializer=e}},{key:"yinYangDrawer",get:function(){return this._yinYangDrawer},set:function(e){this._yinYangDrawer=e}},{key:"spikeDrawer",get:function(){return this._spikeDrawer},set:function(e){this._spikeDrawer=e}},{key:"borderDrawer",get:function(){return this._borderDrawer},set:function(e){this._borderDrawer=e}},{key:"initialize",value:function(e,t,n){this.controller=e,this.viewData=t,this.viewInitializer.initializeGraphicElements(e,t,n),this.yinYangDrawer.initialize(),this.yinYangDrawer.createYinYangPattern(),this.spikeDrawer.initialize(),this.spikeDrawer.createSpikes(),this.borderDrawer.initialize(),this.borderDrawer.createBorders()}},{key:"addClickEventToYinYangGroup",value:function(e){this.viewInitializer.yinYangGroup.addEventListener("click",e)}},{key:"addClickEventToArcGroups",value:function(e,t){this.viewInitializer.yinOrYangGroup[e].graphElementGroup.addEventListener("click",t)}}])&&i(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.YinYangView=a},1123(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.animationConfig=void 0,t.animationConfig={componentSwitchDurationMs:800,borderColorCycleDurationMs:15e3,rotationDurationMs:1e4,forceFieldRevealDurationMs:700,forceFieldRevealChainStepMs:220,fieldFadeOutDurationMs:380,stackItemReflowDurationMs:180,componentTitleCrossfadeMs:180,childActionMenuOpenDurationMs:460,childActionMenuCloseDurationMs:390,childActionMenuStaggerMs:80,idleSphereCrossfadeMs:450,categoryBlendFadeMinOpacity:0}},133(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MIN_PROJECTED_WEIGHT=t.WEIGHT_DELTA_COLOR_ON_LIGHT=t.WEIGHT_DELTA_GLOW_COLOR=t.WEIGHT_DELTA_COLOR=t.DELTA_GLOW_ON_LIGHT=t.SCORE_DELTA_NEGATIVE_COLOR_ON_LIGHT=t.SCORE_DELTA_POSITIVE_COLOR_ON_LIGHT=t.SCORE_DELTA_NEGATIVE_GLOW_COLOR=t.SCORE_DELTA_NEGATIVE_COLOR=t.SCORE_DELTA_POSITIVE_GLOW_COLOR=t.SCORE_DELTA_POSITIVE_COLOR=void 0,t.scoreDeltaColor=function(e){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]?{fill:e>=0?t.SCORE_DELTA_POSITIVE_COLOR_ON_LIGHT:t.SCORE_DELTA_NEGATIVE_COLOR_ON_LIGHT,glow:t.DELTA_GLOW_ON_LIGHT}:e>=0?{fill:t.SCORE_DELTA_POSITIVE_COLOR,glow:t.SCORE_DELTA_POSITIVE_GLOW_COLOR}:{fill:t.SCORE_DELTA_NEGATIVE_COLOR,glow:t.SCORE_DELTA_NEGATIVE_GLOW_COLOR}},t.weightColorForLobe=function(e){return"yang"===e?t.WEIGHT_DELTA_COLOR_ON_LIGHT:t.WEIGHT_DELTA_COLOR},t.SCORE_DELTA_POSITIVE_COLOR="#8ef2b4",t.SCORE_DELTA_POSITIVE_GLOW_COLOR="rgba(142, 242, 180, 0.9)",t.SCORE_DELTA_NEGATIVE_COLOR="#f28e8e",t.SCORE_DELTA_NEGATIVE_GLOW_COLOR="rgba(242, 142, 142, 0.9)",t.SCORE_DELTA_POSITIVE_COLOR_ON_LIGHT="#1f7a45",t.SCORE_DELTA_NEGATIVE_COLOR_ON_LIGHT="#a83a33",t.DELTA_GLOW_ON_LIGHT="rgba(255, 255, 255, 0.92)",t.WEIGHT_DELTA_COLOR="#f5c860",t.WEIGHT_DELTA_GLOW_COLOR="rgba(245, 200, 96, 0.9)",t.WEIGHT_DELTA_COLOR_ON_LIGHT="#b06f00",t.MIN_PROJECTED_WEIGHT=.1},4468(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.causeComponentColors=t.causeOddColors=void 0,t.getCauseNamedColor=function(e){if(t.causeOddColors[e])return t.causeOddColors[e];var n=Array.from(e).reduce(function(e,t){return e+t.charCodeAt(0)},0);return t.causeComponentColors[n%t.causeComponentColors.length]},t.causeOddColors={ODD_1:"#E5243B",ODD_2:"#DDA63A",ODD_3:"#4C9F38",ODD_4:"#C5192D",ODD_5:"#FF3A21",ODD_6:"#26BDE2",ODD_7:"#FCC30B",ODD_8:"#A21942",ODD_9:"#FD6925",ODD_10:"#DD1367",ODD_11:"#FD9D24",ODD_12:"#BF8B2E",ODD_13:"#3F7E44",ODD_14:"#0A97D9",ODD_15:"#56C02B",ODD_16:"#00689D",ODD_17:"#19486A"},t.causeComponentColors=["#FF0000","#008000","#0000FF","#FFA500","#00FFFF","#800080","#FF00FF","#FFD700","#008080","#000080"]},1411(e,t){function n(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||r(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=r(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,a=function(){};return{s:a,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){l=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(l)throw o}}}}function r(e,t){if(e){if("string"==typeof e)return a(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}Object.defineProperty(t,"__esModule",{value:!0}),t.selectAdverseChainGroups=c,t.selectAdverseChain=function(e,t,n){var i=new Set(c(e,t,n).flat().map(function(e){return e.id}));return e.filter(function(e){return i.has(e.id)})},t.adverseDepth=d,t.orderAdverseActions=u,t.planAdverseInsertions=function(e){var t,r=null!==(t=e.rng)&&void 0!==t?t:Math.random,a=function(e,t){for(var i=n(e),r=i.length-1;r>0;r--){var a=Math.floor(t()*(r+1)),o=[i[a],i[r]];i[r]=o[0],i[a]=o[1]}return i}(c(e.candidates,e.count,r),r),o=e.stack.map(function(e){return Object.assign({},e)}),s=[],l=0;return a.forEach(function(e,t){t>0&&(l+=h(r,g));var n,a=i(u(e,r));try{for(a.s();!(n=a.n()).done;){var c=n.value;l=v(c,o,s,r,l)}}catch(e){a.e(e)}finally{a.f()}}),s};var o=1.5/2.2;function s(e,t){var n,r,a,o=[],s=i(null!==(n=e.combos)&&void 0!==n?n:[]);try{for(s.s();!(a=s.n()).done;){var l,c=i(null!==(r=a.value.condition.requires)&&void 0!==r?r:[]);try{for(c.s();!(l=c.n()).done;){var d=l.value;t.has(d)&&!o.includes(d)&&o.push(d)}}catch(e){c.e(e)}finally{c.f()}}}catch(e){s.e(e)}finally{s.f()}return o}function l(e,t){var n,r=[],a=i(t.values());try{for(a.s();!(n=a.n()).done;){var o=n.value;s(o,t).includes(e)&&r.push(o.id)}}catch(e){a.e(e)}finally{a.f()}return r}function c(e,t,i){for(var r=new Map(e.map(function(e){return[e.id,e]})),a=new Set,o=function(){return e.filter(function(e){return!a.has(e.id)})},c=Math.max(0,Math.min(t,e.length)),d=[];a.size<c;){for(var u=o(),p=[u[Math.floor(i()*u.length)].id],h=[];p.length>0&&a.size<c;){var f=p.shift();if(!a.has(f)){a.add(f),h.push(f);var g=r.get(f);p.unshift.apply(p,n(s(g,r).filter(function(e){return!a.has(e)}))),p.push.apply(p,n(l(f,r).filter(function(e){return!a.has(e)})))}}h.length>0&&d.push(h.map(function(e){return r.get(e)}))}return d}function d(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Set;if(n.has(e.id))return 0;n.add(e.id);var r,a=0,o=i(s(e,t));try{for(o.s();!(r=o.n()).done;){var l=r.value;a=Math.max(a,1+d(t.get(l),t,n))}}catch(e){o.e(e)}finally{o.f()}return n.delete(e.id),a}function u(e,t){var i=new Map(e.map(function(e){return[e.id,e]})),r=new Map(e.map(function(e){return[e.id,t()]}));return n(e).sort(function(e,t){var n=d(e,i)-d(t,i);return 0!==n?n:r.get(e.id)-r.get(t.id)})}function p(e,t){var n=Math.max(e.lo,t.lo),i=Math.min(e.hi,t.hi);return n<=i?{lo:n,hi:i}:null}function h(e,t){var n=t.lo,i=t.hi;return n+Math.floor(e()*(i-n+1))}function f(e,t){var n,r=null,a=i(e);try{for(a.s();!(n=a.n()).done;){var o=n.value;o.actionId===t&&(null===r||o.slotIndex>r)&&(r=o.slotIndex)}}catch(e){a.e(e)}finally{a.f()}return r}var g={lo:1,hi:4};function v(e,t,r,a,s){var l,c,d,u,g=0===t.length?0:Math.max.apply(Math,n(t.map(function(e){return e.slotIndex})))+1,v={lo:s,hi:Math.max(s,g)},m=[],y=i(null!==(l=e.combos)&&void 0!==l?l:[]);try{for(y.s();!(u=y.n()).done;){var b,I=u.value,C=I.condition.withinLastN,w=i(null!==(c=I.condition.requires)&&void 0!==c?c:[]);try{for(w.s();!(b=w.n()).done;){var x=b.value,k=f(t,x);if(null!==k){var S=p(v,void 0===C?{lo:k+1,hi:Number.POSITIVE_INFINITY}:{lo:k+1,hi:k+C});S&&(v=S),void 0!==C&&m.push(k+C-o*(C-1))}}}catch(e){w.e(e)}finally{w.f()}}}catch(e){y.e(e)}finally{y.f()}var _,A,E,O,D,M=e.delayedEffect;if(M){var L=M.targetedActionIds.map(function(e){return f(t,e)}).filter(function(e){return null!==e});if(L.length>0){var F=Math.min.apply(Math,n(L)),T=Math.max.apply(Math,n(L)),P=M.withinNextN,B={lo:void 0===P?0:F+1-P,hi:F},G=null!==(d=p(v,{lo:void 0===P?0:T+1-P,hi:F}))&&void 0!==d?d:p(v,B);G&&(v=G),void 0!==P&&m.push(F-o*(P-1))}}if(m.length>0){var R=m.reduce(function(e,t){return e+t},0)/m.length;A=Math.round(R)+h(a,{lo:-1,hi:1}),O=(E=v).lo,D=E.hi,_=Math.max(O,Math.min(D,A))}else _=h(a,v);var q,z=i(t);try{for(z.s();!(q=z.n()).done;){var N=q.value;N.slotIndex>=_&&(N.slotIndex+=1)}}catch(e){z.e(e)}finally{z.f()}return t.push({actionId:e.id,slotIndex:_}),r.push({actionId:e.id,slotIndex:_}),_+1}},9285(e,t,n){function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}Object.defineProperty(t,"__esModule",{value:!0}),t.evaluateAmplifiers=function(e,t,n,r){var c,d=[],u=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return i(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){l=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(l)throw o}}}}(t);try{for(u.s();!(c=u.n()).done;){var p=c.value,h=a(p,r);if(h&&l(p,e,n,h.definition)){var f=o(p,h.definition,e.slotIndex);d.push({sourceId:h.id,name:h.name,scoreBonus:s(h.definition.effect.scoreBonus,f),weightBonus:Math.round(s(h.definition.effect.weightBonus,f))})}}}catch(e){u.e(e)}finally{u.f()}return d},t.isKeyEventCurrentlyActive=function(e,t,n,i){var r=i.get(e.actionId);return!!r&&!!n.has(e.id)&&t.some(function(t){return"action"===t.kind&&l(e,t,n,r)})},t.getAmplifierTargetBreakdown=function(e,t,n){return e.targetedActionIds.map(function(i){var r=n.filter(function(n){return"action"===n.kind&&n.actionId===i&&n.slotIndex>t.slotIndex&&(void 0===e.withinNextN||n.slotIndex-t.slotIndex<=e.withinNextN)}).sort(function(e,t){return e.slotIndex-t.slotIndex})[0];if(!r)return{id:i,positional:0,played:!1,effectiveScoreBonus:0,effectiveWeightBonus:0};var a=o(t,e,r.slotIndex);return{id:i,slotIndex:r.slotIndex,positional:a,played:!0,effectiveScoreBonus:s(e.effect.scoreBonus,a),effectiveWeightBonus:Math.round(s(e.effect.weightBonus,a))}})},t.composeAmplifiedDelta=function(e,t){return 0===t.length?e:c(e,t.reduce(function(e,t){return e+t.scoreBonus},0))},t.composeAmplifiedWeightDelta=function(e,t){return 0===t.length?e:c(e,t.reduce(function(e,t){return e+t.weightBonus},0))},t.findSoleActiveAction=function(e){var t=e.filter(function(e){return"action"===e.kind});return 1===t.length?t[0]:void 0};var r=n(7519);function a(e,t){if("keyEvent"===e.kind){var n=t.get(e.actionId);return n?{id:n.id,name:n.name,definition:n}:void 0}}function o(e,t,n){if(void 0===t.withinNextN)return 1;var i=e.slotIndex+1,a=t.withinNextN-1;return(0,r.occupiedSlotPositionalEfficiency)(n,i,a)}function s(e,t){return e*t}function l(e,t,n,i){return!(!i||e.id===t.id||!n.has(e.id)||e.slotIndex>=t.slotIndex||!i.targetedActionIds.includes(t.actionId)||void 0!==i.withinNextN&&t.slotIndex-e.slotIndex>i.withinNextN)}function c(e,t){if(0===e)return 0;var n=e+Math.sign(e)*t;return Math.sign(n)===Math.sign(e)?n:0}},1830(e,t,n){function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}Object.defineProperty(t,"__esModule",{value:!0}),t.evaluateCombo=function(e,t,n,a){if(!e.combos||0===e.combos.length)return[];var o,s=t.length,l=[],c=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return i(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){l=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(l)throw o}}}}(e.combos);try{var d=function(){var i,c,d=o.value,u=d.condition,p=d.effect,h=void 0!==u.withinLastN?t.slice(-u.withinLastN):t,f="dangereux"===p.type,g=!u.requires||u.requires.every(function(e){return h.includes(e)}),v=f||g,m=1,y=1;if(u.requires&&u.requires.length>0){var b=void 0!==u.withinLastN?Math.max(0,s-u.withinLastN):0,I=s-1-b,C=[],w=u.requires.map(function(e){var i,o,s=t.lastIndexOf(e);if(s<0)o=0;else if(n){var l=null!==(i=n.get(e))&&void 0!==i?i:1;o=(f?null==a?void 0:a.dangerousComboCanBecomeBonus:null==a?void 0:a.uncappedChainedPerformance)?Math.max(0,l):Math.min(1,Math.max(0,l))}else o=1;var c=s>=0?(0,r.occupiedSlotPositionalEfficiency)(s,b,I):0,d=o*c;return C.push({id:e,ratio:o,positional:c,factor:d,played:s>=0}),d});i=w.reduce(function(e,t){return e+t},0)/w.length,m=(f?0:1)+i,y=f?0:2,c=C}l.push({triggered:v,name:p.name,comboId:p.comboId,description:p.description,type:p.type,effectiveDelta:e.baseDelta*m,baseDelta:e.baseDelta,deltaMultiplier:m,maxDeltaMultiplier:y,prereqAvgRatio:i,prereqBreakdowns:c,requires:u.requires,withinLastN:u.withinLastN})};for(c.s();!(o=c.n()).done;)d()}catch(e){c.e(e)}finally{c.f()}return l},t.composeEffectiveDelta=function(e,t){var n=t.filter(function(e){return e.triggered});return 0===n.length?e:e*(1+n.reduce(function(e,t){return e+(t.deltaMultiplier-1)},0))},t.isPrerequisiteOf=function(e,t){return t.some(function(t){var n;return null===(n=t.combos)||void 0===n?void 0:n.some(function(t){var n;return null===(n=t.condition.requires)||void 0===n?void 0:n.includes(e)})})};var r=n(7519)},6986(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.oddGenericDescriptionsFr=void 0,t.oddGenericDescriptionsFr={ODD_1:{description:"La croissance économique doit profiter à tous pour créer des <strong>emplois durables</strong> et promouvoir l'égalité, afin d'éliminer la pauvreté sous toutes ses formes."},ODD_2:{description:"Le secteur de l'alimentation et de l'agriculture offre des solutions clés pour <strong>éradiquer la faim</strong> et construire un monde où chacun a accès à une nourriture suffisante et nutritive."},ODD_3:{description:"Permettre à chacun de vivre en bonne santé et promouvoir le <strong>bien-être</strong> à tout âge est un fondement essentiel du développement durable."},ODD_4:{description:"Une <strong>éducation de qualité</strong>, inclusive et équitable est le socle qui permet d'améliorer durablement la vie des populations."},ODD_5:{description:"L'égalité des sexes n'est pas seulement un droit fondamental : c'est aussi une condition nécessaire à un monde <strong>pacifique et prospère</strong>."},ODD_6:{description:"Une eau propre et un assainissement accessibles à tous sont des éléments essentiels du monde dans lequel nous voulons vivre, indispensables à la <strong>santé publique</strong>."},ODD_7:{description:"L'énergie durable est une opportunité qui transforme les vies, les économies et la planète en garantissant un accès <strong>fiable et abordable</strong> à l'énergie pour tous."},ODD_8:{description:"Il s'agit de promouvoir une <strong>croissance économique</strong> soutenue, partagée et durable, ainsi qu'un emploi productif et un travail décent pour tous."},ODD_9:{description:"Les investissements dans une <strong>infrastructure résiliente</strong> et une industrialisation durable sont essentiels pour stimuler l'innovation."},ODD_10:{description:"Réduire les inégalités <strong>au sein des pays et entre les nations</strong> est une condition indispensable à un développement durable et partagé."},ODD_11:{description:"L'avenir que nous voulons passe par des villes et des établissements humains <strong>ouverts, sûrs, résilients</strong> et durables pour tous."},ODD_12:{description:"Une consommation et une production durables visent à <strong>« faire plus et mieux avec moins »</strong>, en dissociant croissance économique et dégradation de l'environnement."},ODD_13:{description:"La lutte contre le <strong>réchauffement climatique</strong> et ses répercussions est devenue indissociable de la réalisation du développement durable."},ODD_14:{description:"La gestion prudente des <strong>océans et des mers</strong>, ressources vitales pour l'humanité, est essentielle à un avenir durable."},ODD_15:{description:"La déforestation et la désertification posent des défis majeurs : préserver et restaurer les <strong>écosystèmes terrestres</strong> est vital pour la biodiversité."},ODD_16:{description:"Promouvoir des sociétés <strong>pacifiques et inclusives</strong>, garantir l'accès à la justice pour tous et bâtir des institutions efficaces à tous les niveaux."},ODD_17:{description:"Des <strong>partenariats inclusifs</strong>, construits sur des valeurs et une vision communes, sont nécessaires pour mettre en œuvre les objectifs de développement durable."}}},8100(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.oddLabelsFr=void 0,t.oddLabelsFr={ODD_1:{label:"Pas de pauvreté",shortLabel:"Pauvreté"},ODD_2:{label:"Faim zéro",shortLabel:"Faim zéro"},ODD_3:{label:"Bonne santé et bien-être",shortLabel:"Santé"},ODD_4:{label:"Éducation de qualité",shortLabel:"Éducation"},ODD_5:{label:"Égalité entre les sexes",shortLabel:"Égalité sexes"},ODD_6:{label:"Eau propre et assainissement",shortLabel:"Eau propre"},ODD_7:{label:"Énergie propre et accessible",shortLabel:"Énergie propre"},ODD_8:{label:"Travail décent et croissance économique",shortLabel:"Travail & croissance"},ODD_9:{label:"Industrie, innovation et infrastructure",shortLabel:"Industrie & innovation"},ODD_10:{label:"Inégalités réduites",shortLabel:"Inégalités"},ODD_11:{label:"Villes et communautés durables",shortLabel:"Villes durables"},ODD_12:{label:"Consommation et production responsables",shortLabel:"Conso/Prod responsables"},ODD_13:{label:"Agir pour le climat",shortLabel:"Action climat"},ODD_14:{label:"Vie aquatique",shortLabel:"Vie aquatique"},ODD_15:{label:"Vie terrestre",shortLabel:"Vie terrestre"},ODD_16:{label:"Paix, justice et institutions efficaces",shortLabel:"Paix & justice"},ODD_17:{label:"Partenariats mondiaux",shortLabel:"Partenariats"}}},6982(e,t,n){function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}Object.defineProperty(t,"__esModule",{value:!0}),t.yasuniActions=void 0,t.isAdverseAction=function(e){return e.baseDelta<0};var r,a=n(9359);t.yasuniActions=[].concat([{id:"gen_bhf_moratoire_infra",name:"Geler les chantiers en zone fragile",shortDescription:"Plus aucun chantier dans les corridors écologiques — jusqu'à preuve que c'est sans danger.",description:"On arrête tout : plus une route, plus un tuyau, plus un chantier dans les couloirs où circulent les animaux, tant qu'on n'a pas prouvé que c'est sans danger. La forêt cesse d'être découpée.",baseDelta:6,weightDelta:-1,targeting:"shared",combos:[{condition:{requires:["gen_bhf_surveillance_satellite"],withinLastN:8},effect:{type:"stabilisation",name:"Moratoire ciblé",comboId:"C-STAB-MORATOIRE",description:"Suspendre là où c'est prouvé"}},{condition:{requires:["gen_bhf_surveillance_satellite","gen_bhf_monitoring_biodiversite"],withinLastN:10},effect:{type:"dangereux",name:"Moratoire à l'aveugle",comboId:"C-DANG-MORATOIRE-AVEUGLE",description:"Sans données, la contestation juridique est probable"}}]},{id:"gen_bhf_reforestation",name:"Replanter, restaurer, reconstruire",shortDescription:"Des espèces locales reprennent leur place là où l'extraction a tout rasé.",description:"On replante les arbres d'ici, ceux qui poussaient avant les forages, sur les zones abîmées. La forêt reprend du terrain, absorbe à nouveau du carbone, et les animaux retrouvent un toit.",baseDelta:5,targeting:"shared",combos:[{condition:{requires:["gen_bhf_monitoring_biodiversite"],withinLastN:10},effect:{type:"preparation",name:"Reforestation éclairée",comboId:"C-PREP-REFOREST",description:"Replanter là où c'est nécessaire"}}]},{id:"gen_bhf_surveillance_satellite",name:"Ouvrir l'œil depuis l'espace",shortDescription:"Des satellites scrutent la forêt en temps réel — chaque coupe est détectée en heures.",description:"Des satellites photographient la forêt en continu et repèrent chaque coupe en quelques heures. Ça ne répare rien tout seul, mais sans ça, on ne voit rien venir.",baseDelta:3,weightDelta:2,targeting:"shared",combos:[{condition:{requires:["gen_bhf_monitoring_biodiversite"],withinLastN:8},effect:{type:"preparation",name:"Connaissance terrain complète",comboId:"C-PREP-CONNAISSANCE",description:"Vue aérienne + présence terrain — rien ne passe inaperçu"}}]},{id:"gen_bhf_patrouilles_antibraconnage",name:"Renforcer les gardes forestiers",shortDescription:"Plus de rangers, mieux équipés, couvrant plus de terrain.",description:"Plus de gardes, mieux équipés, mieux formés, qui couvrent plus de terrain. Résultat direct : moins d'animaux braconnés, sur terre comme dans les rivières.",baseDelta:4,targeting:"shared",combos:[{condition:{requires:["gen_bhf_monitoring_biodiversite"],withinLastN:10},effect:{type:"preparation",name:"Patrouille ciblée",comboId:"C-PREP-PATROL",description:"Patrouiller là où les espèces sont menacées"}},{condition:{requires:["spec_bhf_reconversion_chasseurs"],withinLastN:12},effect:{type:"exploitation",name:"Double levier anti-braconnage",comboId:"C-EXPL-BRACONNAGE",description:"Réduire l'offre ET la demande de braconnage en même temps"}}]},{id:"gen_bhf_zones_tampons",name:"Créer des zones bouclier",shortDescription:"Une bande de protection entre les puits de pétrole et les forêts irremplaçables.",description:"On impose une bande de sécurité entre les puits et les forêts les plus précieuses. Les couloirs des animaux sont moins coupés, et les espèces rares sont à l'abri du bruit et des machines.",baseDelta:5,weightDelta:-1,targeting:"shared",combos:[{condition:{requires:["gen_bhf_surveillance_satellite"],withinLastN:8},effect:{type:"preparation",name:"Délimitation satellitaire",comboId:"C-PREP-ZONES",description:"Délimiter avec précision satellitaire"}}]},{id:"gen_bhf_monitoring_biodiversite",name:"Observer avant d'agir",shortDescription:"Pièges photo, micros, comptages — savoir qui vit encore là avant qu'il ne soit trop tard.",description:"Pièges photo, micros dans la forêt, comptages réguliers : des scientifiques mesurent qui vit encore là et en quel nombre. On sait ce qui marche et on corrige le tir à temps.",baseDelta:2,weightDelta:2,targeting:"shared"},{id:"spec_bhf_restauration_corridors",name:"Recoudre les corridors brisés",shortDescription:"Intervention chirurgicale sur les points de rupture : replantation, passages faunistiques, suppression des barrières.",description:"On intervient pile là où la forêt est coupée en deux : replanter les lisières, enlever les clôtures et les obstacles, construire des passages pour les animaux. La circulation reprend.",baseDelta:7,targeting:"unique",combos:[{condition:{requires:["gen_bhf_monitoring_biodiversite","gen_bhf_surveillance_satellite"],withinLastN:10},effect:{type:"preparation",name:"Carte avant action",comboId:"C-PREP-01",description:"Cartographier avant d'agir"}},{condition:{requires:["gen_bhf_monitoring_biodiversite"],withinLastN:8},effect:{type:"dangereux",name:"Corridors sans données",comboId:"C-DANG-BLIND-CORRIDORS",description:"Intervenir sans données — efficacité très réduite"}}]},{id:"spec_bhf_deviations_routieres",name:"Tracer les routes autour, pas à travers",shortDescription:"Les camions pétroliers prennent un autre chemin — les forêts ne servent pas d'autoroutes.",description:"On redessine les routes vers les puits pour qu'elles contournent les forêts les plus riches au lieu de les traverser. Avant tout tracé, une étude d'impact obligatoire.",baseDelta:6,weightDelta:-1,targeting:"unique",combos:[{condition:{requires:["gen_bhf_surveillance_satellite"],withinLastN:8},effect:{type:"preparation",name:"Déviation vérifiée",comboId:"C-PREP-ROUTES",description:"Dévier là où la forêt est prouvée dense"}},{condition:{requires:["gen_bhf_moratoire_infra"],withinLastN:12},effect:{type:"stabilisation",name:"Stop & redirection",comboId:"C-STAB-INFRA",description:"Arrêter puis rediriger"}}]},{id:"spec_bhf_reconversion_chasseurs",name:"Offrir une alternative aux chasseurs",shortDescription:"Écoturisme, emplois de rangers, agriculture durable — le braconnage perd son attrait économique.",description:"On propose un autre gagne-pain à ceux qui braconnent pour nourrir leur famille : guide, ranger, agriculteur. Quand on a le choix, le piège reste au placard.",baseDelta:5,weightDelta:-1,targeting:"unique",combos:[{condition:{requires:["gen_ir_developpement_alternatif"],withinLastN:12},effect:{type:"preparation",name:"Reconversion écosystémique",comboId:"C-PREP-RECONVERSION",description:"Reconvertir dans un écosystème alternatif déjà en place"}}]},{id:"spec_bhf_barrieres_flottantes",name:"Bloquer la pollution à la source",shortDescription:"Des barrières absorbantes stoppent l'hydrocarbure avant qu'il ne contamine toute la rivière.",description:"Là où le pétrole coule dans les rivières, on pose des barrières absorbantes qui l'arrêtent net. Un pansement d'urgence, en attendant de traiter le mal à la racine.",baseDelta:4,targeting:"unique",combos:[{condition:{requires:["gen_wsp_alerte_precoce"],withinLastN:8},effect:{type:"exploitation",name:"Détection & confinement",comboId:"C-EXPL-POLLUTION-EAU",description:"Détecter et confiner en temps réel"}}]},{id:"spec_bhf_plan_especes_aquatiques",name:"Protéger les espèces aquatiques en danger",shortDescription:"Zones de repos, périodes sans bruit industriel, suivi dédié — les espèces les plus fragiles sont protégées.",description:"On identifie les espèces de rivière les plus fragiles et on leur offre des zones de calme, des périodes sans machines, et un suivi attentif.",baseDelta:4,weightDelta:1,targeting:"unique",combos:[{condition:{requires:["gen_bhf_monitoring_biodiversite"],withinLastN:10},effect:{type:"preparation",name:"Espèces cartographiées",comboId:"C-PREP-AQUATIQUE",description:"Protéger les espèces qu'on connaît"}}]},{id:"spec_bhf_redd_local",name:"Faire payer ceux qui brûlent, payer ceux qui protègent",shortDescription:"La forêt vaut plus debout que coupée — le carbone stocké génère des revenus directs.",description:"La forêt qui reste debout stocke du carbone, et ce carbone vaut de l'argent. Un mécanisme paie ceux qui protègent la forêt avec l'argent de ceux qui polluent. Ne pas forer devient rentable.",baseDelta:6,weightDelta:-1,targeting:"shared",combos:[{condition:{requires:["gen_bhf_surveillance_satellite","gen_bhf_reforestation"],withinLastN:12},effect:{type:"exploitation",name:"Carbone valorisé",comboId:"C-STAB-04-REDD",description:"Carbone mesuré, compensé, valorisé"}},{condition:{requires:["spec_cep_zero_torchage","spec_cep_moratoire_permis"],withinLastN:10},effect:{type:"dangereux",name:"Greenwashing",comboId:"C-DANG-05",description:"Compenser sur papier sans réduire les émissions réelles"}}]},{id:"gen_wsp_audit_installations",name:"Auditer sans complaisance",shortDescription:"Des experts indépendants vérifient tout — pipelines, bassins, rejets. Et publient leurs conclusions.",description:"Des inspecteurs extérieurs, sans lien avec les compagnies, passent régulièrement au crible tuyaux, bassins et rejets. Leurs rapports sont publics, et une mauvaise note peut faire perdre le droit d'exploiter.",baseDelta:5,weightDelta:1,targeting:"shared",combos:[{condition:{requires:["gen_wsp_alerte_precoce","gen_gt_plateforme_citoyenne"],withinLastN:12},effect:{type:"exploitation",name:"Audit citoyen",comboId:"C-EXPL-04-AUDIT",description:"Preuve documentée → pression citoyenne → loi"}},{condition:{requires:["gen_wsp_formation_normes_env"],withinLastN:10},effect:{type:"stabilisation",name:"Former pour vérifier",comboId:"C-STAB-AUDIT",description:"Former puis vérifier"}}]},{id:"gen_wsp_depollution",name:"Nettoyer ce qui a été souillé",shortDescription:"Biorestauration, excavation, traitement chimique — les sols et rivières contaminés retrouvent leur état d'origine.",description:"On nettoie les sites souillés : on retire la terre imbibée, on traite l'eau, on laisse les bactéries digérer le reste. Long et coûteux, mais c'est le seul moyen de rendre la terre habitable.",baseDelta:6,targeting:"shared",combos:[{condition:{requires:["gen_wsp_alerte_precoce","spec_wsp_piezometres"],withinLastN:10},effect:{type:"preparation",name:"Détecter avant dépolluer",comboId:"C-PREP-02",description:"Détecter avant de dépolluer"}},{condition:{requires:["gen_wsp_alerte_precoce"],withinLastN:8},effect:{type:"dangereux",name:"Dépollution aveugle",comboId:"C-DANG-DEPOLLUTION-AVEUGLE",description:"Dépolluer sans savoir où — des ressources gaspillées"}}]},{id:"gen_wsp_alerte_precoce",name:"Détecter la pollution en temps réel",shortDescription:"Des capteurs chimiques sur les rivières et nappes — toute fuite déclenche une alerte en moins de 24h.",description:"Des capteurs le long des rivières et près des nappes détectent la moindre trace de pollution. Une alerte part automatiquement, et une équipe intervient dans la journée.",baseDelta:4,weightDelta:2,targeting:"shared"},{id:"gen_wsp_sante_communautaire",name:"Soigner les populations exposées",shortDescription:"Dépistage, suivi médical, information — les riverains ne sont plus seuls face à la pollution.",description:"Dépistage, suivi médical, information et soins pour les familles qui vivent au bord des puits. Un vrai programme, pas des visites au coup par coup.",baseDelta:5,targeting:"shared",combos:[{condition:{requires:["gen_wsp_depollution"],withinLastN:12},effect:{type:"stabilisation",name:"Santé intégrée",comboId:"C-STAB-SANTE",description:"Assainir l'environnement ET soigner les personnes"}}]},{id:"gen_wsp_formation_normes_env",name:"Former les opérateurs aux normes vertes",shortDescription:"Les équipes sur le terrain savent comment gérer les rejets sans polluer — ça s'apprend.",description:"Chaque employé sur le terrain apprend obligatoirement comment gérer les rejets, les déchets et une fuite. Moins d'accidents par ignorance ou par négligence.",baseDelta:3,targeting:"shared",combos:[{condition:{requires:["spec_wsp_iso14001"],withinLastN:10},effect:{type:"stabilisation",name:"Qualité durable",comboId:"C-STAB-FORMATION-ISO",description:"Normer puis former — une culture qualité qui dure"}}]},{id:"spec_wsp_inspection_pipelines",name:"Vérifier les pipelines avant qu'ils fuient",shortDescription:"Des robots inspectent les pipelines de l'intérieur — corrosion, fissures, soudures défectueuses détectées avant la catastrophe.",description:"On envoie des robots à l'intérieur des tuyaux pour repérer la rouille et les fissures avant qu'elles ne cèdent. On répare avant la fuite, pas après.",baseDelta:7,weightDelta:1,targeting:"unique",combos:[{condition:{requires:["gen_wsp_alerte_precoce"],withinLastN:8},effect:{type:"preparation",name:"Zéro fuite",comboId:"C-PREP-PIPELINE",description:"Surveiller et inspecter — zéro fuite"}}]},{id:"spec_wsp_piezometres",name:"Surveiller les nappes sous la surface",shortDescription:"Un réseau de sondes mesure en continu la qualité de l'eau souterraine autour des sites d'extraction.",description:"Des sondes plantées autour des puits surveillent l'eau souterraine en continu. Si le pétrole s'infiltre, on le sait avant qu'il n'atteigne les sources où les gens boivent.",baseDelta:5,weightDelta:1,targeting:"unique"},{id:"spec_wsp_traitement_eaux_production",name:"Traiter l'eau avant de la rejeter",shortDescription:"Zéro rejet brut : toute eau de production passe par des unités de traitement avant de toucher la nature.",description:"L'eau sale qui remonte avec le pétrole doit obligatoirement être nettoyée avant d'être rejetée. Plus question de la déverser telle quelle dans la nature.",baseDelta:7,weightDelta:-1,targeting:"unique",combos:[{condition:{requires:["gen_wsp_formation_normes_env"],withinLastN:10},effect:{type:"stabilisation",name:"Opérateurs formés",comboId:"C-STAB-TRAITEMENT",description:"Former les opérateurs avant de déployer les unités"}}]},{id:"spec_wsp_agence_controle",name:"Créer un chien de garde indépendant",shortDescription:"Une agence qui ne rend de comptes qu'à la loi — elle inspecte, sanctionne, et publie ses résultats.",description:"On crée un gendarme de l'environnement qui ne dépend pas du ministère du pétrole. Il inspecte, sanctionne et publie ses résultats. Fini le juge et partie.",baseDelta:8,weightDelta:-2,targeting:"shared",combos:[{condition:{requires:["gen_gt_renforcement_institutions","gen_gt_publication_donnees"],withinLastN:12},effect:{type:"preparation",name:"Base institutionnelle solide",comboId:"C-PREP-04-AGENCE",description:"Institutions solides avant agence sectorielle"}},{condition:{requires:["spec_gt_loi_anticorruption"],withinLastN:10},effect:{type:"dangereux",name:"Agence sans cadre légal",comboId:"C-DANG-03-AGENCE",description:"Sans loi derrière, l'agence n'a aucun pouvoir réel"}}]},{id:"spec_wsp_depistage_dermato",name:"Diagnostiquer les maladies de la pollution",shortDescription:"Les pathologies cutanées liées aux hydrocarbures sont documentées, cartographiées — les données deviennent des preuves.",description:"Des médecins parcourent les villages pour examiner la peau des habitants, compter les cas et les suivre dans le temps. Les chiffres deviennent des preuves.",baseDelta:4,weightDelta:1,targeting:"unique",combos:[{condition:{requires:["gen_wsp_alerte_precoce"],withinLastN:10},effect:{type:"exploitation",name:"Épidémio comme levier politique",comboId:"C-EXPL-EPIDEMIO",description:"Données sanitaires transformées en levier politique"}}]},{id:"spec_wsp_protocole_exposition",name:"Protéger les travailleurs au contact des hydrocarbures",shortDescription:"Équipements adaptés, rotation des postes à risque, surveillance biologique — les travailleurs sont protégés.",description:"Équipements de protection, rotation sur les postes dangereux, prises de sang régulières : les ouvriers au contact du pétrole ne sont plus laissés sans protection.",baseDelta:5,weightDelta:1,targeting:"unique",combos:[{condition:{requires:["gen_wsp_formation_normes_env"],withinLastN:8},effect:{type:"stabilisation",name:"Former avant de protocoliser",comboId:"C-STAB-PROTO-EXP",description:"Former avant de protocoliser"}}]},{id:"spec_wsp_centres_soins_mobiles",name:"Amener les soins là où les gens vivent",shortDescription:"Des cliniques mobiles sillonnent les zones reculées — personne n'est trop loin pour être soigné.",description:"Des cliniques sur pirogue ou sur camion vont jusqu'aux villages les plus reculés. La distance n'est plus une raison de ne pas se soigner.",baseDelta:5,targeting:"unique",combos:[{condition:{requires:["gen_wsp_sante_communautaire"],withinLastN:10},effect:{type:"stabilisation",name:"Santé terrain",comboId:"C-STAB-SOINS",description:"Programme de santé + présence terrain"}}]},{id:"spec_wsp_iso14001",name:"Imposer la norme verte aux opérateurs",shortDescription:"Pas de label environnemental, pas de forage. La norme devient une obligation.",description:"Toute compagnie qui veut travailler dans la zone doit décrocher un label environnemental international, avec des règles à suivre et des contrôles réguliers. Sans label, pas de forage.",baseDelta:5,targeting:"unique",combos:[{condition:{requires:["gen_wsp_audit_installations"],withinLastN:10},effect:{type:"stabilisation",name:"Double garantie qualité",comboId:"C-STAB-ISO-AUDIT",description:"Audit externe + système interne — double garantie"}}]},{id:"gen_ir_renforcement_juridique",name:"Donner aux communautés les clés du droit",shortDescription:"Droits fonciers, consentement, recours — les leaders communautaires apprennent à se défendre par la loi.",description:"On forme les représentants des communautés à leurs droits : la terre, le droit d'être consulté, comment porter plainte. Avec des supports dans leur propre langue.",baseDelta:5,targeting:"shared",combos:[{condition:{requires:["spec_ir_cadastre_participatif"],withinLastN:10},effect:{type:"preparation",name:"Droits fonciers opposables",comboId:"C-PREP-03-JURIDIQUE",description:"Preuve foncière + capacité juridique = droits opposables"}}]},{id:"gen_ir_mediation_interculturelle",name:"Mettre tout le monde autour de la table",shortDescription:"Des médiateurs formés aux cultures locales facilitent un dialogue permanent entre communautés, État et compagnies.",description:"Une table permanente réunit communautés, État et compagnies, avec des médiateurs qui connaissent les cultures locales. On se parle avant que ça n'explose.",baseDelta:5,targeting:"shared",combos:[{condition:{requires:["spec_ir_protection_defenseurs"],withinLastN:8},effect:{type:"stabilisation",name:"Médiation sécurisée",comboId:"C-STAB-MEDIATION",description:"Protéger les interlocuteurs avant de dialoguer"}},{condition:{requires:["spec_ir_protection_defenseurs"],withinLastN:8},effect:{type:"dangereux",name:"Médiation sans filet",comboId:"C-DANG-MEDIATION-SANS-PROTECTION",description:"Dialoguer sans protéger les leaders — ils restent vulnérables"}}]},{id:"gen_ir_acces_services_base",name:"Garantir l'accès aux services essentiels",shortDescription:"Éducation, santé, services administratifs — les communautés isolées y ont droit autant que n'importe qui.",description:"L'État s'engage à ce que chaque communauté isolée ait une école, un dispensaire et un accès aux services administratifs. Pas sur le papier : sur place.",baseDelta:5,targeting:"shared",combos:[{condition:{requires:["spec_ir_infrastructures_sociales"],withinLastN:10},effect:{type:"stabilisation",name:"Équipements & services",comboId:"C-STAB-SERVICES",description:"Construire les équipements ET déployer les services"}}]},{id:"gen_ir_developpement_alternatif",name:"Construire une économie hors pétrole",shortDescription:"Agroforesterie, écoturisme, artisanat — les communautés cessent de dépendre d'un seul employeur : la compagnie pétrolière.",description:"On soutient sérieusement d'autres façons de vivre de la forêt : agriculture sous les arbres, tourisme géré par les villages, artisanat, recyclage local.",baseDelta:5,weightDelta:-1,targeting:"shared",combos:[{condition:{requires:["spec_ir_fonds_souverain_local"],withinLastN:12},effect:{type:"exploitation",name:"Rente pour la transition",comboId:"C-EXPL-DEV-ALT",description:"Argent pétrolier → économie non-pétrolière"}}]},{id:"spec_ir_protocole_clip",name:"Rendre le consentement libre irréversible",shortDescription:"Le droit de dire non devient un bouclier : aucun projet ne démarre sans l'accord écrit des communautés.",description:"Le droit des communautés de dire non devient une règle stricte : étapes écrites, délais garantis, contrôle extérieur. Pas de consentement, pas de permis.",baseDelta:8,weightDelta:-2,targeting:"unique",combos:[{condition:{requires:["spec_ir_cadastre_participatif","gen_ir_renforcement_juridique"],withinLastN:12},effect:{type:"preparation",name:"Légitimité avant revendication",comboId:"C-PREP-03",description:"Légitimer avant de revendiquer"}},{condition:{requires:["spec_ir_protection_defenseurs"]},effect:{type:"dangereux",name:"Pression sans protection",comboId:"C-DANG-01",description:"Pression publique sans défenseurs protégés — retour de bâton sur les leaders"}}]},{id:"spec_ir_protection_defenseurs",name:"Protéger ceux qui défendent leur territoire",shortDescription:"Avocats d'urgence, alerte à l'ONU — les défenseurs ne sont plus seuls.",description:"Avocats d'urgence, alerte aux instances internationales, système de signalement rapide : ceux qui défendent leur territoire ne sont plus seuls face aux menaces.",baseDelta:7,weightDelta:2,targeting:"unique"},{id:"spec_ir_cadastre_participatif",name:"Cartographier les terres ancestrales",shortDescription:"Les communautés dessinent elles-mêmes leurs territoires — et obtiennent un titre de propriété incontestable.",description:"Les communautés dessinent elles-mêmes la carte de leurs terres, avec l'aide du GPS et de leurs anciens. À la fin : un titre de propriété collectif que personne ne peut contester.",baseDelta:7,weightDelta:1,targeting:"unique"},{id:"spec_ir_unites_juridiques_mobiles",name:"Amener les avocats jusqu'aux communautés",shortDescription:"Des équipes d'avocats spécialisés se déplacent dans les villages enclavés — la justice vient à eux.",description:"Des avocats spécialisés se déplacent jusque dans les villages les plus enclavés. Défendre ses droits ne dépend plus de la distance jusqu'au tribunal.",baseDelta:6,targeting:"unique",combos:[{condition:{requires:["gen_ir_renforcement_juridique"],withinLastN:10},effect:{type:"preparation",name:"Expertise juridique mobile",comboId:"C-PREP-JURIDIQUE-MOBILE",description:"Compétence locale + expertise mobile"}}]},{id:"spec_ir_quota_emploi_local",name:"Réserver des emplois aux communautés locales",shortDescription:"Chaque contrat pétrolier doit garantir un quota d'emplois aux membres des communautés riveraines.",description:"Chaque contrat pétrolier réserve obligatoirement une part des emplois aux habitants des communautés voisines. Pas négociable.",baseDelta:5,targeting:"unique",combos:[{condition:{requires:["spec_gt_registre_contrats"],withinLastN:12},effect:{type:"exploitation",name:"Quota imposé",comboId:"C-EXPL-QUOTA",description:"Contrats publics + quota = obligation transparente et opposable"}}]},{id:"spec_ir_infrastructures_sociales",name:"Construire écoles et dispensaires là où ça manque",shortDescription:"Les communautés directement affectées par l'extraction reçoivent des infrastructures concrètes en retour.",description:"On construit ce qui manque là où le pétrole a tout pris : écoles, dispensaires, accès à l'eau potable, dans les villages directement touchés.",baseDelta:6,weightDelta:-1,targeting:"unique",combos:[{condition:{requires:["spec_cep_electrification_rural"],withinLastN:10},effect:{type:"exploitation",name:"Territoire autonome",comboId:"C-EXPL-03-INFRA",description:"Énergie + services — territoire autonome"}}]},{id:"spec_ir_fonds_souverain_local",name:"Créer un fonds pour l'après-pétrole",shortDescription:"Une part des revenus pétroliers est mise de côté et réservée à la construction d'une économie sans pétrole.",description:"Une part de l'argent du pétrole est mise de côté dans un fonds réservé à l'après : nouvelles activités, formations, projets locaux. Le pétrole finance sa propre sortie.",baseDelta:7,weightDelta:-1,targeting:"unique",combos:[{condition:{requires:["gen_gt_publication_donnees","spec_gt_registre_contrats"],withinLastN:10},effect:{type:"dangereux",name:"Fonds opaque",comboId:"C-DANG-04-FONDS-LOCAL",description:"Un fonds sans transparence est un fonds capturé"}},{condition:{requires:["spec_le_redistribution_royalties"],withinLastN:12},effect:{type:"exploitation",name:"Royalties communautaires",comboId:"C-EXPL-02-FONDS",description:"Royalties locales alimentent le fonds communautaire"}}]},{id:"gen_gt_publication_donnees",name:"Rendre les données publiques, par la loi",shortDescription:"Contrats, paiements, données environnementales — tout est accessible à tous, en format ouvert.",description:"La loi oblige à publier les contrats, l'argent versé à l'État et les données de pollution, dans un format que n'importe qui peut lire. Plus rien ne reste dans un tiroir.",baseDelta:6,weightDelta:2,targeting:"shared"},{id:"gen_gt_renforcement_institutions",name:"Donner des dents aux institutions de contrôle",shortDescription:"Budget autonome, agents protégés, accès illimité aux données — les contrôleurs peuvent enfin contrôler.",description:"Les organismes de contrôle reçoivent leur propre budget, une protection pour leurs agents et un accès total aux données des compagnies. Ils peuvent enfin mordre.",baseDelta:6,weightDelta:-1,targeting:"shared",combos:[{condition:{requires:["gen_gt_publication_donnees"],withinLastN:8},effect:{type:"preparation",name:"Transparence institutionnelle",comboId:"C-PREP-04-INSTIT",description:"Transparence avant renforcement institutionnel"}}]},{id:"gen_gt_plateforme_citoyenne",name:"Ouvrir un canal citoyen sécurisé",shortDescription:"Signaler une anomalie, suivre une décision, déposer une contribution — anonymement et en sécurité.",description:"Un site sécurisé où chacun peut signaler une irrégularité, suivre les décisions en cours et donner son avis, sans craindre de représailles.",baseDelta:4,weightDelta:1,targeting:"shared",combos:[{condition:{requires:["spec_ir_protection_defenseurs"],withinLastN:10},effect:{type:"exploitation",name:"Pression citoyenne structurée",comboId:"C-EXPL-01-PLATEFORME",description:"Défenseurs protégés + canal citoyen = pression structurée"}}]},{id:"spec_gt_registre_contrats",name:"Rendre chaque contrat public et consultable",shortDescription:"Chaque contrat pétrolier, chaque clause, chaque avenant — en ligne, consultable par n'importe qui.",description:"Tous les contrats pétroliers, avec leurs clauses financières et leurs engagements environnementaux, sont rassemblés dans un registre public en ligne.",baseDelta:7,weightDelta:2,targeting:"unique",combos:[{condition:{requires:["gen_wsp_alerte_precoce","gen_gt_plateforme_citoyenne"],withinLastN:12},effect:{type:"exploitation",name:"Du scandale à la loi",comboId:"C-EXPL-04",description:"Preuve documentée → pression citoyenne → loi"}}]},{id:"spec_gt_loi_anticorruption",name:"Punir vraiment la corruption pétrolière",shortDescription:"Conflit d'intérêts interdit, sanctions pénales réelles, avantages indus confisqués — la corruption a un prix.",description:"Une loi spéciale pour le pétrole : interdiction de mélanger intérêts publics et privés, prison pour les corrompus, et confiscation de ce qu'ils ont gagné.",baseDelta:7,weightDelta:-1,targeting:"unique",combos:[{condition:{requires:["gen_gt_renforcement_institutions","gen_gt_publication_donnees"],withinLastN:12},effect:{type:"preparation",name:"Normer avant sanctionner",comboId:"C-PREP-04",description:"Normer avant de sanctionner"}},{condition:{requires:["gen_gt_renforcement_institutions","spec_wsp_agence_controle"],withinLastN:10},effect:{type:"dangereux",name:"Loi inapplicable",comboId:"C-DANG-03",description:"Une loi sans institution pour l'appliquer reste lettre morte"}}]},{id:"spec_gt_protection_elus_integres",name:"Protéger les élus qui résistent",shortDescription:"Les élus et fonctionnaires qui refusent de céder aux compagnies pétrolières ont un bouclier juridique et physique.",description:"Un dispositif protège les élus et fonctionnaires qui refusent de céder aux pressions des compagnies. Être honnête ne doit pas être dangereux.",baseDelta:6,targeting:"unique",combos:[{condition:{requires:["spec_ir_protection_defenseurs"],withinLastN:10},effect:{type:"exploitation",name:"Protection civile & institutionnelle",comboId:"C-EXPL-01-PROTECTION",description:"Protéger société civile ET institutions — un front uni"}}]},{id:"spec_gt_assemblees_citoyennes",name:"Impliquer les citoyens dans les grandes décisions",shortDescription:"Des citoyens tirés au sort, informés par des experts indépendants, rendent des avis formels sur l'avenir des puits.",description:"Des citoyens tirés au sort, informés par des experts indépendants, donnent leur avis sur les grandes décisions pétrolières. La démocratie s'applique aussi au sous-sol.",baseDelta:5,targeting:"unique",combos:[{condition:{requires:["gen_gt_plateforme_citoyenne"],withinLastN:10},effect:{type:"exploitation",name:"Double canal participatif",comboId:"C-EXPL-01-ASSEMBLEE",description:"Numérique + présentiel — participation maximale"}}]},{id:"spec_gt_adhesion_itie",name:"Rejoindre le standard mondial de transparence",shortDescription:"Le pays adopte les règles mondiales de transparence : audits indépendants et rapports publics obligatoires.",description:"L'Équateur rejoint le standard mondial de transparence des industries minières et pétrolières : publication des paiements, audits indépendants, rapports partagés.",baseDelta:6,targeting:"unique",combos:[{condition:{requires:["spec_gt_registre_contrats"],withinLastN:10},effect:{type:"exploitation",name:"Transparence internationale",comboId:"C-EXPL-ITIE",description:"Registre national + standard international"}},{condition:{requires:["gen_gt_publication_donnees"],withinLastN:10},effect:{type:"dangereux",name:"Vitrine sans transparence locale",comboId:"C-DANG-ITIE-FACADE",description:"Rejoindre l'ITIE sans transparence locale — une façade"}}]},{id:"gen_cep_sortie_fossiles",name:"Planifier la sortie du pétrole",shortDescription:"Un calendrier contraignant : dates de fermeture des puits, plafonds décroissants, compensations budgétaires prévues.",description:"Un plan national fixe la fin du pétrole : calendrier de fermeture des puits, plafond d'extraction qui baisse chaque année, et budget prévu pour compenser. La sortie devient inévitable — et organisée.",baseDelta:7,weightDelta:-1,targeting:"shared",combos:[{condition:{requires:["spec_cep_loi_programmation_energetique"],withinLastN:8},effect:{type:"preparation",name:"Loi contraignante",comboId:"C-PREP-SORTIE-LOI",description:"Plan soutenu par la loi — contraignant et opposable"}}]},{id:"gen_cep_tarification_carbone",name:"Faire payer le carbone émis",shortDescription:"Torchage, émissions fugitives, consommation énergétique — chaque tonne de CO₂ a désormais un prix.",description:"Chaque tonne de CO₂ émise par les puits — gaz brûlé, fuites, machines — a un prix. Polluer coûte plus cher, et les énergies propres deviennent plus compétitives.",baseDelta:6,targeting:"shared",combos:[{condition:{requires:["spec_cep_moratoire_permis"],withinLastN:10},effect:{type:"exploitation",name:"Coût + interdiction",comboId:"C-EXPL-CARBONE-MORATOIRE",description:"Renchérir ET interdire — l'extraction devient structurellement non viable"}}]},{id:"gen_cep_investissement_renouvelables",name:"Mobiliser les capitaux vers le renouvelable",shortDescription:"Financements publics, garanties d'État, incitations fiscales — les investisseurs privés rejoignent la transition.",description:"L'État met de l'argent public, des garanties et des avantages fiscaux sur la table pour attirer les investisseurs vers le solaire, l'éolien et l'hydraulique.",baseDelta:6,weightDelta:-1,targeting:"shared",combos:[{condition:{requires:["spec_cep_ppa_renouvelables"],withinLastN:10},effect:{type:"exploitation",name:"Marché renouvelable structuré",comboId:"C-EXPL-03-INVEST",description:"PPA + programme national — un marché renouvelable qui se tient tout seul"}}]},{id:"gen_cep_reforme_fiscalite",name:"Taxer le pétrole, financer l'avenir",shortDescription:"Les redevances augmentent, les subventions fossiles disparaissent, l'argent va directement au fonds de transition.",description:"Les compagnies pétrolières paient plus d'impôts. Les aides au pétrole disparaissent. L'argent va directement financer la transition énergétique.",baseDelta:6,weightDelta:-1,targeting:"shared",combos:[{condition:{requires:["spec_cep_fonds_stabilisation","spec_le_redistribution_royalties"],withinLastN:14},effect:{type:"exploitation",name:"Rente au service de la transition",comboId:"C-EXPL-02",description:"Rente au service de la transition"}},{condition:{requires:["gen_gt_publication_donnees"],withinLastN:10},effect:{type:"dangereux",name:"Réforme fiscale opaque",comboId:"C-DANG-FISCALITE-OPAQUE",description:"Réforme sans transparence — l'argent risque de disparaître ailleurs"}}]},{id:"spec_cep_zero_torchage",name:"Interdire le torchage, récupérer le gaz",shortDescription:"Le gaz est récupéré, transformé en électricité ou renvoyé sous terre — plus question de le brûler à ciel ouvert.",description:"Interdiction de brûler le gaz sur les puits : il doit être récupéré, transformé en électricité ou renvoyé sous terre. Amendes progressives et surveillance par satellite.",baseDelta:7,weightDelta:-1,targeting:"shared",combos:[{condition:{requires:["gen_wsp_formation_normes_env"],withinLastN:10},effect:{type:"stabilisation",name:"Zéro torchage progressif",comboId:"C-STAB-TORCHAGE",description:"Former avant d'imposer la norme — adoption réelle"}},{condition:{requires:["gen_bhf_surveillance_satellite"],withinLastN:10},effect:{type:"stabilisation",name:"Mesurer & interdire",comboId:"C-STAB-04-TORCHAGE",description:"Mesurer les émissions + interdire le torchage"}}]},{id:"spec_cep_moratoire_permis",name:"Fermer le robinet des nouveaux permis",shortDescription:"Stop. Plus aucun nouveau permis de forage — immédiat, et c'est la loi.",description:"Plus aucun nouveau permis de forage ni d'exploration, nulle part dans le pays. Ce qui existe continue — mais rien de neuf ne commence.",baseDelta:8,weightDelta:-2,targeting:"unique",combos:[{condition:{requires:["gen_le_transition_juste","spec_le_requalification_renouvelables"],withinLastN:10},effect:{type:"dangereux",name:"Transition sans filet",comboId:"C-DANG-02",description:"Stopper sans plan social — effondrement économique local probable"}},{condition:{requires:["gen_cep_tarification_carbone"],withinLastN:10},effect:{type:"exploitation",name:"Interdire & renchérir",comboId:"C-EXPL-MORATOIRE-CARBONE",description:"Interdire et renchérir — l'extraction devient structurellement impossible"}}]},{id:"spec_cep_loi_programmation_energetique",name:"Graver la transition dans la loi",shortDescription:"Des objectifs chiffrés de renouvelables et de réduction fossile, inscrits dans la loi — pas question de revenir en arrière.",description:"Une loi fixe des objectifs chiffrés et obligatoires : tant de renouvelables, tant de fossile en moins, à telle date. La transition n'est plus une promesse, c'est la loi.",baseDelta:7,targeting:"unique",combos:[{condition:{requires:["gen_cep_sortie_fossiles"],withinLastN:10},effect:{type:"preparation",name:"Transition contraignante",comboId:"C-PREP-LOI-PLAN",description:"Loi + plan = transition contraignante et planifiée"}}]},{id:"spec_cep_fonds_stabilisation",name:"Mettre de côté pour l'après-pétrole",shortDescription:"Quand le pétrole rapporte beaucoup, une part est mise de côté. Quand il rapporte moins, le fonds compense.",description:"Quand le pétrole rapporte gros, on met de côté. Quand les recettes baissent, on puise dans la réserve. Le pays n'est plus à la merci du prix du baril.",baseDelta:6,weightDelta:-1,targeting:"unique",combos:[{condition:{requires:["gen_gt_publication_donnees","spec_gt_registre_contrats"],withinLastN:10},effect:{type:"dangereux",name:"Fonds capturé",comboId:"C-DANG-04",description:"Un fonds sans transparence est un fonds capturé"}}]},{id:"spec_cep_ppa_renouvelables",name:"Garantir un prix d'achat aux producteurs verts",shortDescription:"L'État garantit un prix stable sur 15-20 ans — les investisseurs en renouvelable savent à quoi s'en tenir.",description:"L'État garantit aux producteurs d'énergie propre un prix d'achat fixe pendant 15 à 20 ans. Avec cette visibilité, les investisseurs osent se lancer.",baseDelta:6,targeting:"unique",combos:[{condition:{requires:["gen_cep_investissement_renouvelables"],withinLastN:10},effect:{type:"exploitation",name:"Garantie prix & investisseurs",comboId:"C-EXPL-03-PPA",description:"Programme national + garantie prix = investisseurs privés attirés"}}]},{id:"spec_cep_electrification_rural",name:"Apporter l'électricité solaire aux villages isolés",shortDescription:"Panneaux solaires, mini-réseaux, techniciens locaux formés — les villages amazoniens ont leur propre électricité propre.",description:"Des panneaux solaires arrivent dans les villages non raccordés, avec des techniciens formés sur place pour l'entretien. L'électricité arrive, et elle reste.",baseDelta:6,targeting:"unique",combos:[{condition:{requires:["gen_cep_investissement_renouvelables","spec_le_requalification_renouvelables"],withinLastN:14},effect:{type:"exploitation",name:"Territoire vert autonome",comboId:"C-EXPL-03",description:"Emplois verts + énergie propre — territoire autonome"}}]},{id:"spec_cep_diversification_economique",name:"Inventer l'économie d'après",shortDescription:"Tourisme durable, agriculture d'exportation, économie verte — des secteurs entiers émergent pour remplacer le pétrole.",description:"Une stratégie nationale soutient les secteurs qui remplaceront le pétrole : tourisme durable, agriculture d'export, économie verte. Le pays ne dépend plus d'un seul puits.",baseDelta:6,targeting:"unique",combos:[{condition:{requires:["gen_cep_reforme_fiscalite"],withinLastN:12},effect:{type:"exploitation",name:"Macro-transition économique",comboId:"C-EXPL-DIVERSIF",description:"Rente réorientée + stratégie alternative = transition macro cohérente"}}]},{id:"gen_le_transition_juste",name:"Accompagner les travailleurs vers l'après",shortDescription:"Maintien des revenus, formation aux nouveaux métiers, droits sociaux portables — personne ne perd tout du jour au lendemain.",description:"Pendant la reconversion, les travailleurs du pétrole gardent leur revenu, sont formés à un nouveau métier et conservent leurs droits sociaux. Personne n'est laissé sur le bord de la route.",baseDelta:5,targeting:"shared",combos:[{condition:{requires:["spec_le_requalification_renouvelables"],withinLastN:10},effect:{type:"stabilisation",name:"Transition emploi douce",comboId:"C-STAB-01",description:"Transition douce pour l'emploi"}},{condition:{requires:["spec_cep_moratoire_permis"],withinLastN:12},effect:{type:"stabilisation",name:"Arrêt avec filet social",comboId:"C-STAB-MORATOIRE-JUSTE",description:"Arrêter l'extraction avec un filet social — le choc est amorti"}}]},{id:"gen_le_ancrage_benefices",name:"Garder la richesse pétrolière sur le territoire",shortDescription:"Un pourcentage minimum de contrats doit rester local, une part des revenus fiscaux doit aller aux budgets locaux.",description:"Une part minimum des contrats doit aller à des entreprises locales, et une part des impôts du pétrole revient aux communes. La richesse profite aussi à ceux qui vivent à côté des puits.",baseDelta:5,weightDelta:-1,targeting:"shared",combos:[{condition:{requires:["spec_gt_registre_contrats"],withinLastN:10},effect:{type:"exploitation",name:"Retombées garanties",comboId:"C-EXPL-ANCRAGE",description:"Contrats publics + obligation locale = retombées garanties et vérifiables"}}]},{id:"gen_le_amenagement_territorial",name:"Planifier l'espace autour des puits",shortDescription:"Les puits de pétrole, les routes, les logements, les espaces publics — tout planifié ensemble pour un développement cohérent.",description:"Un plan d'ensemble organise l'espace autour des puits : où construire, où circuler, où réserver de la place pour les logements et les services publics.",baseDelta:5,weightDelta:-1,targeting:"shared",combos:[{condition:{requires:["spec_le_conditionnalite_infra"],withinLastN:8},effect:{type:"stabilisation",name:"Territoire maîtrisé",comboId:"C-STAB-02-AMENAGEMENT",description:"Conditionner puis planifier — territoire maîtrisé"}}]},{id:"spec_le_requalification_renouvelables",name:"Recycler les compétences pétrolières vers le vert",shortDescription:"Techniciens pétroliers devenus installateurs solaires ou éoliens — les compétences se transfèrent, les emplois aussi.",description:"Un soudeur de pipeline sait aussi monter une éolienne. Un programme repère les compétences transférables, forme aux métiers du solaire et de l'éolien, et place les gens dans les projets locaux.",baseDelta:6,weightDelta:-1,targeting:"unique",combos:[{condition:{requires:["spec_cep_electrification_rural","gen_cep_investissement_renouvelables"],withinLastN:12},effect:{type:"exploitation",name:"Emploi vert durable",comboId:"C-EXPL-03-REQUALIF",description:"Compétences vertes + projets locaux = emploi durable"}},{condition:{requires:["gen_le_transition_juste"],withinLastN:8},effect:{type:"stabilisation",name:"Reconversion sans rupture",comboId:"C-STAB-01-REQUALIF",description:"Filet social + formation = reconversion sans rupture"}}]},{id:"spec_le_redistribution_royalties",name:"Reverser les royalties aux communes affectées",shortDescription:"Un pourcentage fixe des royalties atterrit directement dans les caisses des communes qui vivent à côté des puits.",description:"Un pourcentage fixe de l'argent du pétrole revient directement aux communes touchées, à condition de l'investir dans des projets utiles, avec des comptes publics chaque année.",baseDelta:6,weightDelta:-1,targeting:"unique",combos:[{condition:{requires:["spec_ir_fonds_souverain_local"],withinLastN:12},effect:{type:"exploitation",name:"Cascade vertueuse",comboId:"C-EXPL-02-ROYALTIES",description:"Redistribution locale + fonds communautaire = cascade vertueuse"}},{condition:{requires:["gen_gt_publication_donnees"],withinLastN:10},effect:{type:"dangereux",name:"Royalties opaques",comboId:"C-DANG-ROYALTIES-OPAQUE",description:"Royalties sans transparence — détournement local probable"}}]},{id:"spec_le_conditionnalite_infra",name:"Rendre les routes pétrolières utiles à tous",shortDescription:"Routes, ponts, réseaux — conçus dès le départ pour servir aussi les habitants, et transférés à la collectivité en fin de concession.",description:"Toute nouvelle route ou ligne construite pour le pétrole doit aussi servir aux habitants, et revenir à la collectivité quand la compagnie s'en va.",baseDelta:6,targeting:"unique",combos:[{condition:{requires:["gen_le_amenagement_territorial"],withinLastN:8},effect:{type:"stabilisation",name:"Infrastructure durable",comboId:"C-STAB-02",description:"Infrastructure utile sur la durée"}},{condition:{requires:["spec_gt_registre_contrats"],withinLastN:10},effect:{type:"exploitation",name:"Cahier des charges opposable",comboId:"C-EXPL-INFRA-CONTRAT",description:"Contrats publics + conditions multi-usage = obligation transparente"}}]},{id:"spec_le_plu_extractif",name:"Éviter les villes-dortoirs pétrolières",shortDescription:"Des règles d'urbanisme strictes évitent que des quartiers précaires poussent anarchiquement autour des puits.",description:"Des règles d'urbanisme strictes autour des puits : où on construit, à quelle densité, où on garde de la place pour les écoles et les parcs. La ville pousse là où on l'a décidé, pas là où les puits s'imposent.",baseDelta:5,targeting:"unique",combos:[{condition:{requires:["gen_le_amenagement_territorial"],withinLastN:8},effect:{type:"stabilisation",name:"Urbanisme maîtrisé",comboId:"C-STAB-PLU",description:"Schéma directeur + PLU local = urbanisme maîtrisé"}}]},{id:"gen_ip_financement_gardes",name:"Financer des postes de gardes forestiers",shortDescription:"Des gardes recrutés et payés en nombre suffisant pour couvrir le territoire protégé.",description:"Un budget dédié paie des gardes, leur équipement et leur présence permanente sur tout le parc. La protection n'est plus un mot sur un papier, c'est des gens sur le terrain.",baseDelta:6,targeting:"shared",combos:[{condition:{requires:["gen_ip_demarcation_terrain"],withinLastN:8},effect:{type:"stabilisation",name:"Protection opérationnelle",comboId:"C-STAB-IP-PROTECTION-OP",description:"Limites visibles + présence humaine = zone tenable"}}]},{id:"gen_ip_demarcation_terrain",name:"Matérialiser les limites sur le terrain",shortDescription:"Bornes, balisage GPS et panneaux rendent visible ce qui n'existait que sur une carte.",description:"On pose des bornes et des balises GPS le long des limites du parc et de la zone interdite. Habitants, compagnies et contrôleurs savent enfin où elles passent.",baseDelta:5,weightDelta:1,targeting:"shared"},{id:"gen_ip_financement_international",name:"Débloquer un financement international dédié",shortDescription:"Les engagements diplomatiques se traduisent enfin en flux financiers réels et suivis.",description:"Des pays et fondations s'engagent par contrat à financer la protection du parc, avec des versements par étapes, vérifiables. Les plans ont enfin les moyens de leurs ambitions.",baseDelta:7,targeting:"shared",combos:[{condition:{requires:["gen_ip_suivi_independant"],withinLastN:8},effect:{type:"preparation",name:"Financement conditionné à l'audit",comboId:"C-PREP-IP-FINANCEMENT-AUDITE",description:"Financer après avoir prouvé le besoin par un audit"}},{condition:{requires:["gen_ip_suivi_independant"],withinLastN:4},effect:{type:"dangereux",name:"Promesse sans garantie",comboId:"C-DANG-IP-PROMESSE-SANS-GARANTIE",description:"Réengager des fonds sur la seule base diplomatique, sans mécanisme de contrôle, expose au scénario de 2013"}}]},{id:"gen_ip_suivi_independant",name:"Mettre en place un suivi indépendant",shortDescription:"Un organe extérieur audite régulièrement l'écart entre engagements et réalité de terrain.",description:"Un organisme extérieur, ni compagnie ni État, vérifie régulièrement l'écart entre ce qui a été promis et ce qui est réellement fait sur le terrain.",baseDelta:4,weightDelta:1,targeting:"shared"},{id:"gen_ip_operationnalisation_surveillance",name:"Transformer les alertes satellite en actions",shortDescription:"Chaque alerte satellite déclenche une vérification et une réponse tracée, pas un simple enregistrement.",description:"Chaque alerte satellite — coupe, intrusion, activité suspecte — déclenche automatiquement une vérification sur place et une réponse coordonnée. Les images deviennent des actes.",baseDelta:5,weightDelta:1,targeting:"shared",combos:[{condition:{requires:["gen_ip_financement_gardes"],withinLastN:8},effect:{type:"stabilisation",name:"Boucle détection-réponse",comboId:"C-STAB-IP-DETECTION-REPONSE",description:"Une alerte n'a de valeur que si quelqu'un peut y répondre"}}]},{id:"spec_ip_corps_rangers_autochtones",name:"Recruter des gardes parmi les communautés locales",shortDescription:"Des gardes issus des communautés riveraines, qui connaissent le terrain mieux que quiconque.",description:"On recrute et on forme des gardes parmi les <strong>communautés riveraines</strong> du parc. Ils connaissent la forêt mieux que personne, ils y sont légitimes, et leurs familles ont un revenu stable.",baseDelta:4,targeting:"unique"},{id:"spec_ip_protocole_intrusion_zi",name:"Créer un protocole d'alerte pour la zone intangible",shortDescription:"Toute intrusion détectée déclenche une réponse coordonnée immédiate, pas un simple rapport.",description:"Dès qu'une intrusion est détectée dans la <strong>zone interdite</strong> des peuples isolés, tout le monde sait quoi faire : alerte immédiate, gardes, autorités et communautés voisines coordonnés, réponse tracée.",baseDelta:5,targeting:"unique"},{id:"spec_ip_relance_itt",name:"Relancer une coalition de bailleurs pour l'ITT",shortDescription:"Remobiliser la communauté internationale autour de la promesse initiale de compensation.",description:"Une nouvelle campagne diplomatique remobilise gouvernements, fondations et banques autour de l'idée de départ : laisser le pétrole sous terre contre compensation. En tirant les leçons de l'échec de 2013.",baseDelta:5,targeting:"unique"},{id:"spec_ip_budget_plans_gestion",name:"Sanctuariser une ligne budgétaire pour les plans de gestion",shortDescription:"Un budget protégé, année après année, pour que les plans validés cessent d'attendre leurs moyens.",description:"Une ligne budgétaire réservée, sur plusieurs années, intouchable en cas de coupes : les <strong>plans de gestion</strong> déjà validés sont enfin financés, au lieu d'être seulement rédigés.",baseDelta:4,targeting:"unique"},{id:"spec_ip_integration_alertes_terrain",name:"Connecter les alertes aux équipes de terrain",shortDescription:"Les alertes technologiques arrivent directement aux équipes mobilisables, sans intermédiaire ni délai.",description:"Les alertes automatiques arrivent directement sur le téléphone des gardes et des équipes mobiles. Entre la détection et l'intervention, le délai fond.",baseDelta:4,weightDelta:1,targeting:"unique"}],function(e){if(Array.isArray(e))return i(e)}(r=a.yasuniAdverseActions)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())},9359(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.yasuniAdverseActions=void 0,t.yasuniAdverseActions=[{id:"adv_bhf_prolonger_exploitation",name:"Prolonger l'exploitation au nom de l'urgence",origin:"Pouvoir politique",shortDescription:"Le référendum attendra. Chaque mois gagné livre encore son pétrole.",description:"Le gouvernement agite la crise pour dire : pas maintenant. Le vote de fermeture reste au fond d'un tiroir pendant que les puits tournent. Chaque mois de retard, c'est du pétrole en plus qui sort du parc.",baseDelta:-4,weightDelta:1,targeting:"unique"},{id:"adv_bhf_routes_ouvertes",name:"Maintenir les routes pétrolières ouvertes",origin:"Industrie pétrolière",shortDescription:"La route demeure ; la forêt continue de se fragmenter autour d'elle.",description:"Officiellement, on garde les routes pour entretenir puis démonter les installations. Dans les faits, une route dans la forêt, c'est une porte ouverte : chasseurs, tronçonneuses et nouveaux arrivants s'y engouffrent.",baseDelta:-5,targeting:"unique"},{id:"adv_ip_mission_zone_intangible",name:"Envoyer une équipe chez les peuples isolés",origin:"Ministère du pétrole",shortDescription:"Une simple visite d'inspection, et l'isolement est brisé.",description:"Au fond du parc vivent des peuples qui ont choisi de ne jamais avoir de contact avec le monde extérieur. Une équipe y entre quand même, sous prétexte de vérifier ou de sécuriser. Un seul contact peut leur apporter des maladies contre lesquelles ils n'ont aucune défense, ou les chasser de chez eux.",baseDelta:-6,targeting:"unique",combos:[{condition:{requires:["kadv_ip_parc_sans_temoins"],withinLastN:8},effect:{type:"exploitation",name:"Zone sans témoins",comboId:"C-ADV-SANS-TEMOINS",description:"Personne pour voir, personne pour signaler"}}]},{id:"adv_wsp_espacer_maintenance",name:"Espacer la maintenance des pipelines",origin:"Industrie pétrolière",shortDescription:"Les conduites tiendront encore une saison. Probablement.",description:"Puisque tout doit fermer, à quoi bon réparer ? La compagnie espace les contrôles et laisse vieillir les tuyaux. C'est justement pendant ces derniers mois que les fuites deviennent le plus probables.",baseDelta:-6,weightDelta:1,targeting:"unique",combos:[{condition:{requires:["adv_bhf_prolonger_exploitation"],withinLastN:8},effect:{type:"exploitation",name:"Exploiter sans entretenir",comboId:"C-ADV-SANS-ENTRETIEN",description:"Des puits prolongés, des conduites qui vieillissent"}}]},{id:"adv_wsp_fermer_sans_reparer",name:"Fermer les puits sans réparer les dégâts",origin:"Gouvernement et compagnie",shortDescription:"On retire les machines et on laisse la pollution derrière.",description:"Le jour où le dernier puits s'arrête, on annonce : c'est fini, mission accomplie. Sauf que le sol reste imbibé de pétrole, les déchets restent sur place et personne ne vient vérifier l'eau des rivières.",baseDelta:-5,weightDelta:1,targeting:"unique",combos:[{condition:{requires:["kadv_gt_sceau_du_secret"],withinLastN:10},effect:{type:"exploitation",name:"Dégâts invisibles",comboId:"C-ADV-DEGATS-INVISIBLES",description:"Ce qui n'est pas documenté n'a pas à être réparé"}}]},{id:"adv_ir_diviser_villages",name:"Diviser les villages par les contrats",origin:"Industrie pétrolière",shortDescription:"Les emplois vont à ceux qui acceptent que les puits restent ouverts.",description:"Les emplois, les camions et les contrats vont d'abord aux villages qui disent oui au pétrole. Ceux qui disent non se retrouvent seuls. Petit à petit, plus personne n'ose faire front ensemble.",baseDelta:-5,targeting:"unique",combos:[{condition:{requires:["kadv_le_peur_du_chomage"],withinLastN:8},effect:{type:"exploitation",name:"La peur puis la division",comboId:"C-ADV-PEUR-DIVISION",description:"Des familles inquiètes acceptent plus facilement de se désolidariser"}}]},{id:"adv_gt_calendrier_incontrolable",name:"Publier un calendrier impossible à contrôler",origin:"Pouvoir politique",shortDescription:"Les dates sont publiques ; les critères de réussite ne le sont pas.",description:"Le gouvernement affiche fièrement un calendrier de fermeture. Mais combien de puits, combien d'argent, dans quel état sont les sites ? Mystère. Il peut donc annoncer des progrès sans que personne puisse les vérifier.",baseDelta:-4,weightDelta:1,targeting:"unique",combos:[{condition:{requires:["kadv_ip_fermeture_sans_horizon"],withinLastN:8},effect:{type:"preparation",name:"Report habillé de dates",comboId:"C-ADV-REPORT-DATES",description:"Un calendrier public donne au report l'apparence d'un plan"}}]},{id:"adv_cep_expansion_voisine",name:"Compenser les puits fermés par une expansion voisine",origin:"Pouvoir politique",shortDescription:"Le bloc 43 recule ; la frontière pétrolière avance ailleurs.",description:"Pour ne pas perdre un baril, l'État ouvre de nouveaux puits juste à côté du parc. Les forêts et les peuples voisins prennent alors ce que le Yasuní ne prend plus : le problème ne disparaît pas, il déménage.",baseDelta:-5,weightDelta:1,targeting:"unique",combos:[{condition:{requires:["adv_le_depenser_recettes"],withinLastN:10},effect:{type:"exploitation",name:"Fuite en avant",comboId:"C-ADV-FUITE-EN-AVANT",description:"Un budget sans réserve exige de nouveaux puits"}}]},{id:"adv_le_depenser_recettes",name:"Dépenser les dernières recettes au lieu de préparer l'après",origin:"Pouvoir politique",shortDescription:"Tout pour le budget présent, rien pour l'économie suivante.",description:"Le pétrole rapporte encore quelques années d'argent. Tout part dans les factures du moment. Rien n'est mis de côté pour former les gens à d'autres métiers, faire vivre les villages ou soigner la forêt.",baseDelta:-5,weightDelta:1,targeting:"unique"}]},8483(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.yasuniAdverseKeyEvents=void 0,t.yasuniAdverseKeyEvents=[{id:"kadv_ip_fermeture_sans_horizon",name:"Fermeture sans horizon",origin:"Pouvoir politique",shortDescription:"Une nouvelle commission, un nouveau rapport, aucun puits fermé.",description:"Fermer les puits ? Oui, bien sûr… mais d'abord une étude. Puis une autre. La décision est votée, tout le monde l'applaudit, et elle recule d'un mois à chaque réunion. Pendant ce temps, l'argent promis pour l'après reste bloqué.",originComposanteId:"institutional_protection",targetedActionIds:["spec_ip_budget_plans_gestion","gen_ip_financement_international"],withinNextN:8,effect:{scoreBonus:-2,weightBonus:0}},{id:"kadv_ip_parc_sans_temoins",name:"Parc sans témoins",origin:"Pouvoir politique",shortDescription:"Moins de gardes, moins de contrôles, davantage de territoire invisible.",description:"Les budgets des gardes fondent, les patrouilles s'arrêtent, les capteurs ne sont plus relevés. Le parc devient un immense angle mort : on peut y couper, y chasser, y entrer chez les peuples isolés, personne ne le saura.",originComposanteId:"institutional_protection",targetedActionIds:["gen_ip_financement_gardes","gen_ip_suivi_independant","gen_ip_operationnalisation_surveillance","spec_ip_integration_alertes_terrain","spec_ip_protocole_intrusion_zi"],withinNextN:10,effect:{scoreBonus:-2,weightBonus:-1}},{id:"kadv_gt_sceau_du_secret",name:"Sceau du secret industriel",origin:"Industrie pétrolière",shortDescription:"La sécurité industrielle justifie désormais le secret.",description:"Combien de fuites ? Combien ça coûte ? Qu'est-ce qui reste dans le sol ? Désolé, secret industriel. Les chiffres disparaissent du débat, et ceux qui voulaient les publier se heurtent à un mur.",originComposanteId:"governance_transparency",targetedActionIds:["spec_gt_registre_contrats","gen_gt_publication_donnees"],withinNextN:8,effect:{scoreBonus:-2,weightBonus:-1}},{id:"kadv_le_peur_du_chomage",name:"La peur du chômage",origin:"Compagnie et notables locaux",shortDescription:"Sans les puits, plus de salaire, plus de route, plus de dispensaire.",description:"Dans les villages, une seule question compte : et demain, on vit de quoi ? Tant que personne n'y répond, fermer les puits ressemble à une menace. La peur fait accepter le pétrole, et tout ce qu'on tente pour préparer l'après tombe à plat.",originComposanteId:"local_economy",targetedActionIds:["gen_le_transition_juste","spec_le_requalification_renouvelables","gen_le_ancrage_benefices","spec_le_redistribution_royalties"],withinNextN:10,effect:{scoreBonus:-2,weightBonus:-1}}]},14(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.yasuniCause=t.yasuniSphere=void 0,t.yasuniSphere={name:"Le Yasuni face à l'industrie pétrolière",description:"Au cœur de l'<strong>Amazonie équatorienne</strong>, le <strong>Yasuni</strong> est l'un des endroits les plus vivants de la planète — et l'<strong>industrie pétrolière</strong> y creuse. Elle découpe la forêt, salit les rivières, écarte les <strong>peuples autochtones</strong> et réchauffe le climat. Ce jeu montre les six faces du problème, et comment chaque décision fait boule de neige.",composantes:[{id:"biodiversity_habitat_fragmentation",name:"Biodiversité & forêts",orientation:"yang",description:"Un seul hectare du <strong>Yasuni</strong> abrite plus d'espèces d'arbres que toute l'Amérique du Nord. Le <strong>pétrole</strong> y ouvre des routes, coupe la forêt en morceaux et accélère la <strong>déforestation</strong>. Des milliers d'<strong>espèces qu'on ne trouve nulle part ailleurs</strong> sont en jeu — et avec elles, tout ce que la forêt donne aux gens qui y vivent.",odds:[{id:"ODD_15",name:"Vie terrestre",description:"Ici, l'<strong>ODD 15</strong> veut dire : garder la <strong>forêt d'origine</strong> intacte, laisser aux animaux des <strong>passages</strong> pour circuler, et protéger les espèces uniques face aux chantiers pétroliers.",cuttings:[{id:1,name:"Corridors brisés",score:.9,weight:10,description:"Les <strong>routes et installations pétrolières</strong> découpent la forêt en îlots. Les animaux ne peuvent plus circuler, se rencontrer ni trouver de quoi manger : chaque îlot devient une petite prison.",actionIds:["gen_bhf_moratoire_infra","gen_bhf_surveillance_satellite","gen_bhf_zones_tampons","spec_bhf_restauration_corridors"]},{id:2,name:"Routes qui dévastent la forêt",score:.88,weight:10,description:"Une route dans la <strong>forêt vierge</strong>, c'est une invitation. Dans les mois qui suivent, braconniers, colons et bûcherons illégaux s'y engouffrent : la <strong>déforestation</strong> suit le bitume.",actionIds:["gen_bhf_moratoire_infra","gen_bhf_reforestation","gen_bhf_surveillance_satellite","spec_bhf_deviations_routieres","adv_bhf_routes_ouvertes"]},{id:3,name:"Espèces endémiques sous pression",score:.85,weight:8,description:"Des centaines d'espèces du <strong>Yasuni</strong> n'existent nulle part ailleurs sur Terre. Quand leur bout de forêt rétrécit, elles disparaissent sans bruit — une <strong>extinction silencieuse</strong>, souvent avant même qu'on les ait décrites.",actionIds:["gen_bhf_patrouilles_antibraconnage","gen_bhf_zones_tampons","gen_bhf_monitoring_biodiversite"]},{id:4,name:"Braconnage en hausse",score:.7,weight:4,description:"Les <strong>camps pétroliers</strong> et leurs pistes ouvrent aux <strong>braconniers</strong> des coins de forêt jusque-là hors d'atteinte. Premières victimes : les <strong>grands mammifères</strong> et les oiseaux rares.",actionIds:["gen_bhf_patrouilles_antibraconnage","gen_bhf_monitoring_biodiversite","spec_bhf_reconversion_chasseurs"]},{id:5,name:"Habitats primordiaux en danger",score:.92,weight:10,description:"Certains coins de <strong>forêt vierge</strong> du Yasuni ont mis des milliers d'années à devenir ce qu'ils sont. Une fois abîmés, on ne les replante pas : leur perte est <strong>définitive à l'échelle d'une vie humaine</strong>.",actionIds:["gen_bhf_moratoire_infra","gen_bhf_reforestation","gen_bhf_surveillance_satellite","gen_bhf_zones_tampons","adv_bhf_prolonger_exploitation"]}]},{id:"ODD_14",name:"Vie aquatique",description:"Les <strong>rivières</strong> sont les artères de la forêt. Le <strong>pétrole</strong> et la boue des terres déboisées y tuent les poissons et tout ce qui en dépend — y compris les <strong>communautés</strong> qui en vivent.",cuttings:[{id:1,name:"Rivières amazoniennes polluées",score:.65,weight:8,description:"Une <strong>fuite de pétrole</strong> ou un rejet d'eaux sales empoisonne une rivière sur des dizaines de kilomètres. Et comme tout coule vers l'aval, c'est <strong>toute l'Amazonie</strong> qui trinque.",actionIds:["gen_wsp_alerte_precoce","gen_wsp_depollution","spec_bhf_barrieres_flottantes"]},{id:2,name:"Faune aquatique menacée",score:.6,weight:4,description:"<strong>Dauphins roses, loutres géantes, tortues et poissons migrateurs</strong> : tous encaissent la pollution, et se retrouvent bloqués quand les <strong>installations pétrolières</strong> coupent leurs rivières.",actionIds:["gen_bhf_patrouilles_antibraconnage","gen_bhf_monitoring_biodiversite","spec_bhf_plan_especes_aquatiques"]}]},{id:"ODD_13",name:"Agir pour le climat",description:"Côté biodiversité, l'<strong>ODD 13</strong> rappelle que la <strong>forêt vierge</strong> est une immense <strong>éponge à carbone</strong>. L'abîmer, c'est relâcher dans l'air du CO₂ stocké depuis des siècles.",cuttings:[{id:1,name:"Puits de carbone qui disparaissent",score:.75,weight:10,description:"La <strong>forêt amazonienne</strong> garde des milliards de tonnes de carbone enfermées dans ses arbres. Chaque hectare rasé les relâche dans l'air, et il y a un peu moins de forêt pour absorber les <strong>émissions de demain</strong>.",actionIds:["gen_bhf_surveillance_satellite","gen_bhf_reforestation","gen_bhf_monitoring_biodiversite","spec_bhf_redd_local"]},{id:2,name:"Déforestation = émissions cachées",score:.7,weight:6,description:"Le CO₂ des arbres coupés pour le <strong>pétrole</strong> n'apparaît dans aucun bilan officiel du secteur. Sur le papier, tout va bien ; dans l'air, <strong>les comptes sont faux</strong>.",actionIds:["gen_bhf_reforestation","gen_bhf_surveillance_satellite","spec_bhf_redd_local","spec_cep_zero_torchage"]}]}]},{id:"institutional_protection",name:"Protection institutionnelle",orientation:"yin",description:"Sur le papier, le <strong>Yasuni</strong> est ultra-protégé : <strong>parc national</strong>, <strong>réserve UNESCO</strong>, <strong>zone interdite</strong> pour les peuples isolés, plans de gestion, financements internationaux, gardes, satellites. Cette facette regarde l'écart entre ce qui est écrit et ce qui se passe vraiment dans la forêt.",odds:[{id:"ODD_15",name:"Vie terrestre",description:"Ici, l'<strong>ODD 15</strong> compare les protections accordées au <strong>Yasuni</strong> — statut de parc, réserve, outils de détection — avec les gens et les moyens réellement sur place pour les faire respecter.",cuttings:[{id:1,name:"Vaste périmètre, maillage humain restreint",score:.7,weight:8,description:"Le <strong>parc</strong> est immense — plus grand que certains pays. Les <strong>gardes</strong> pour le parcourir se comptent sur quelques dizaines. Chacun devrait surveiller une surface plus grande qu'une ville.",actionIds:["gen_ip_financement_gardes","gen_ip_suivi_independant","spec_ip_corps_rangers_autochtones"]},{id:2,name:"Frontières cartographiques",score:.55,weight:4,description:"Les limites du parc existent sur les <strong>cartes</strong> et dans les <strong>dossiers</strong>. Mais en marchant dans la forêt, rien — pas une borne, pas un panneau — ne dit où commence la zone protégée.",actionIds:["gen_ip_demarcation_terrain","gen_ip_suivi_independant"]},{id:3,name:"Détection déployée, réponse au sol incertaine",score:.6,weight:6,description:"Les <strong>satellites</strong> voient les coupes et les intrusions presque en direct. Mais une alerte sur un écran ne fait pas venir une équipe : bien souvent, personne ne se déplace.",actionIds:["gen_ip_operationnalisation_surveillance","gen_ip_financement_gardes","spec_ip_integration_alertes_terrain"]}]},{id:"ODD_16",name:"Paix, justice et institutions efficaces",description:"Ici, l'<strong>ODD 16</strong> pose une question simple : la <strong>zone interdite</strong> et les plans de gestion changent-ils quelque chose sur le terrain, ou restent-ils des documents ?",cuttings:[{id:1,name:"Protection absolue, présence variable",score:.85,weight:10,description:"La <strong>zone interdite</strong> où vivent les <strong>Tagaeri</strong> et <strong>Taromenane</strong>, des peuples qui refusent tout contact, a la protection la plus forte de la loi équatorienne. Mais sur le terrain, la surveillance va et vient selon les budgets et les années.",actionIds:["gen_ip_demarcation_terrain","gen_ip_financement_gardes","spec_ip_protocole_intrusion_zi","adv_ip_mission_zone_intangible"]},{id:2,name:"Plans validés, mise en œuvre partielle",score:.55,weight:4,description:"Les <strong>plans de gestion</strong> du parc sont écrits, validés, publiés. Ensuite ils manquent d'argent et de suivi : une bonne partie reste dans les tiroirs.",actionIds:["gen_ip_financement_international","spec_ip_budget_plans_gestion"]}]},{id:"ODD_17",name:"Partenariats mondiaux",description:"Ici, l'<strong>ODD 17</strong> demande si les partenariats internationaux — label <strong>UNESCO</strong>, promesses de compensation — apportent vraiment de l'argent durable à ceux qui protègent le parc.",cuttings:[{id:1,name:"Initiative internationale, financement incomplet",score:.65,weight:6,description:"En 2007, l'Équateur a proposé un marché au monde : on laisse le pétrole sous terre, vous nous <strong>compensez</strong>. L'<strong>initiative Yasuní-ITT</strong> a été applaudie partout… et l'argent n'est jamais vraiment arrivé. En 2013, les forages ont repris.",actionIds:["gen_ip_financement_international","gen_ip_suivi_independant","spec_ip_relance_itt"]}]}]},{id:"water_soil_pollution",name:"Eau & santé des sols",orientation:"yang",description:"Là où on <strong>pompe le pétrole</strong>, l'eau et la terre trinquent. <strong>Fuites, eaux sales rejetées, déchets</strong> mal stockés : la pollution s'infiltre partout, lentement, et les familles qui boivent cette eau et cultivent cette terre en subissent les effets sur plusieurs générations.",odds:[{id:"ODD_6",name:"Eau propre et assainissement",description:"Ici, les gens boivent l'eau des <strong>rivières et des sources</strong>. L'<strong>ODD 6</strong> vise à empêcher le <strong>pétrole</strong> d'y entrer, et à nettoyer là où c'est déjà fait.",cuttings:[{id:1,name:"Pipelines qui fuient dans les rivières",score:.85,weight:10,description:"Les <strong>tuyaux vieillissent</strong>, et ils fuient de plus en plus souvent. À chaque fois, des centaines de barils de pétrole partent dans la rivière — celle où les villages d'en bas puisent leur eau.",actionIds:["gen_wsp_audit_installations","gen_wsp_depollution","gen_wsp_alerte_precoce","spec_wsp_inspection_pipelines","adv_wsp_espacer_maintenance"]},{id:2,name:"Nappes phréatiques contaminées",score:.8,weight:8,description:"Les <strong>produits chimiques des forages</strong> s'enfoncent lentement dans le sol jusqu'aux <strong>réserves d'eau souterraines</strong>. Des sources où l'on boit depuis des générations deviennent toxiques sans que rien ne se voie.",actionIds:["gen_wsp_depollution","gen_wsp_alerte_precoce","spec_wsp_piezometres"]},{id:3,name:"Eaux toxiques rejetées",score:.75,weight:6,description:"Avec le pétrole remonte une <strong>eau très sale</strong>, pleine de <strong>métaux lourds et de substances toxiques</strong>. Faute de traitement, elle est simplement rejetée dans la nature.",actionIds:["gen_wsp_audit_installations","gen_wsp_formation_normes_env","spec_wsp_traitement_eaux_production","adv_wsp_fermer_sans_reparer"]},{id:4,name:"Personne pour surveiller les pollueurs",score:.7,weight:10,description:"Aucun <strong>gendarme indépendant</strong> ne vérifie ce que font les compagnies. Elles peuvent ignorer les <strong>règles environnementales</strong> sans risque : personne ne regarde, personne ne punit.",actionIds:["gen_wsp_audit_installations","gen_wsp_alerte_precoce","gen_gt_renforcement_institutions","spec_wsp_agence_controle"]}]},{id:"ODD_3",name:"Bonne santé et bien-être",description:"Vivre au bord des puits rend malade, c'est documenté. L'<strong>ODD 3</strong> demande deux choses : moins de <strong>pollution</strong>, et des <strong>soins accessibles</strong> même à des heures de pirogue du premier dispensaire.",cuttings:[{id:1,name:"Maladies de peau en hausse",score:.6,weight:2,description:"Dans les villages au bord des rivières polluées, les <strong>maladies de peau</strong> explosent : se laver ou faire la lessive dans une eau chargée en <strong>pétrole</strong> laisse des traces sur le corps.",actionIds:["gen_wsp_sante_communautaire","spec_wsp_depistage_dermato"]},{id:2,name:"Populations exposées aux hydrocarbures",score:.7,weight:8,description:"Boire l'eau, respirer la <strong>fumée des torchères</strong>, se baigner : au quotidien, les habitants absorbent des <strong>substances qui donnent le cancer</strong> et dérèglent l'organisme.",actionIds:["gen_wsp_sante_communautaire","gen_wsp_formation_normes_env","spec_wsp_protocole_exposition"]},{id:3,name:"Soins inaccessibles",score:.65,weight:4,description:"Le <strong>dispensaire le plus proche</strong> est souvent à plusieurs heures de pirogue ou de piste. Se faire soigner, c'est arriver tard, payer cher — ou renoncer.",actionIds:["gen_wsp_sante_communautaire","spec_wsp_centres_soins_mobiles"]}]},{id:"ODD_12",name:"Consommation et production responsables",description:"Ici, l'<strong>ODD 12</strong> parle des <strong>déchets du pétrole</strong> : où on les met, comment on les traite, et si les compagnies sont contrôlées sur ce qu'elles laissent derrière elles.",cuttings:[{id:1,name:"Déchets industriels mal gérés",score:.6,weight:6,description:"<strong>Boues de forage</strong>, solvants, vieux équipements : ces déchets finissent trop souvent dans une fosse à ciel ouvert. Le poison s'en échappe vers la <strong>terre et les rivières</strong> pendant des années.",actionIds:["gen_wsp_formation_normes_env","gen_wsp_audit_installations","spec_wsp_iso14001"]}]}]},{id:"indigenous_rights",name:"Droits des communautés",orientation:"yang",description:"Les <strong>peuples autochtones</strong> du Yasuni sont les premiers à subir le pétrole et les derniers à être consultés. Cette facette réunit tout ce qui les empêche de défendre leurs terres et leur avenir : <strong>mise à l'écart, menaces, pauvreté organisée</strong>.",odds:[{id:"ODD_16",name:"Paix, justice et institutions efficaces",description:"Ici, l'<strong>ODD 16</strong> veut dire : les communautés peuvent défendre leurs <strong>droits</strong> sans avoir peur, leur avis compte vraiment, et la <strong>justice</strong> est accessible même si on parle une autre langue, qu'on habite loin ou qu'on n'a pas d'argent.",cuttings:[{id:1,name:"Consentement bafoué",score:.8,weight:10,description:"La loi internationale dit que les communautés doivent être <strong>consultées et pouvoir dire non</strong> avant un projet. En pratique, on leur organise une réunion pour leur annoncer ce qui est déjà décidé.",actionIds:["gen_ir_renforcement_juridique","gen_ir_mediation_interculturelle","spec_ir_protocole_clip","adv_ir_diviser_villages"]},{id:2,name:"Leaders communautaires menacés",score:.85,weight:10,description:"Ceux qui <strong>s'opposent au pétrole</strong> le paient cher : <strong>menaces, procès à répétition</strong>, et parfois des coups. Défendre sa forêt peut coûter la vie.",actionIds:["gen_ir_mediation_interculturelle","gen_gt_plateforme_citoyenne","spec_ir_protection_defenseurs"]},{id:3,name:"Terres ancestrales disputées",score:.75,weight:8,description:"Les communautés vivent sur ces <strong>terres depuis toujours</strong>. L'État et les compagnies les revendiquent aussi. Résultat : des <strong>batailles juridiques</strong> qui durent des décennies, pendant que les forages avancent.",actionIds:["gen_ir_renforcement_juridique","gen_ir_mediation_interculturelle","spec_ir_cadastre_participatif"]},{id:4,name:"Justice hors de portée",score:.7,weight:4,description:"Le tribunal est à des centaines de kilomètres, tout se passe en espagnol, ça dure des années et ça coûte une fortune. Pour des familles qui <strong>parlent une autre langue et vivent de peu</strong>, la justice est un mirage.",actionIds:["gen_ir_renforcement_juridique","spec_ir_unites_juridiques_mobiles"]}]},{id:"ODD_10",name:"Inégalités réduites",description:"L'<strong>argent du pétrole</strong> part vers les grandes villes, et les <strong>villages amazoniens</strong> restent les plus pauvres du pays. L'<strong>ODD 10</strong> demande un partage plus juste et les mêmes services publics pour tous.",cuttings:[{id:1,name:"Communautés économiquement exclues",score:.65,weight:6,description:"Le <strong>pétrole sort de leurs terres</strong>, mais l'argent passe au-dessus de leurs têtes. Les puits fonctionnent comme une <strong>bulle</strong> : tout entre et sort sans rien laisser autour.",actionIds:["gen_ir_acces_services_base","gen_ir_developpement_alternatif","spec_ir_quota_emploi_local"]},{id:2,name:"Services publics à deux vitesses",score:.6,weight:2,description:"<strong>Écoles, eau potable, électricité</strong> : les villages autochtones isolés reçoivent toujours moins que le reste du pays. Le fossé se creuse d'année en année.",actionIds:["gen_ir_acces_services_base","spec_ir_infrastructures_sociales"]}]},{id:"ODD_1",name:"Pas de pauvreté",description:"Ici, la pauvreté n'est pas un manque de richesse : c'est que la <strong>richesse part ailleurs</strong>. L'<strong>ODD 1</strong> vise à créer <strong>d'autres façons de gagner sa vie</strong> pour ne plus dépendre d'un pétrole qui appauvrit ceux qui vivent dessus.",cuttings:[{id:1,name:"Économie captive du pétrole",score:.55,weight:6,description:"Quand tout l'emploi local dépend du <strong>pétrole</strong>, le village vit au rythme des <strong>prix mondiaux</strong> — et le jour où le puits se tarit, il n'y a plus rien.",actionIds:["gen_ir_developpement_alternatif","spec_ir_fonds_souverain_local"]}]}]},{id:"governance_transparency",name:"Gouvernance & transparence",orientation:"yang",description:"L'<strong>argent du pétrole</strong> circule dans l'ombre : <strong>contrats secrets, institutions faibles</strong>, personne pour dire non. Cette facette regarde tout ce qui permet la corruption et empêche les citoyens de savoir ce qu'on fait de <strong>leurs ressources</strong>.",odds:[{id:"ODD_16",name:"Paix, justice et institutions efficaces",description:"Ici, l'<strong>ODD 16</strong> veut des institutions <strong>transparentes</strong>, une vraie lutte contre la corruption et des citoyens qui ont leur mot à dire. En résumé : que ceux qui gèrent le pétrole <strong>rendent des comptes</strong>.",cuttings:[{id:1,name:"Contrats pétroliers secrets",score:.75,weight:10,description:"Les <strong>contrats</strong> entre l'État et les compagnies restent secrets. Qui gagne combien, à quelles conditions ? Impossible pour un <strong>citoyen</strong> de le savoir.",actionIds:["gen_gt_publication_donnees","gen_gt_renforcement_institutions","spec_gt_registre_contrats"]},{id:2,name:"Contrôle citoyen inexistant",score:.7,weight:10,description:"Combien de barils, combien de fuites, quels contrôles ? Les <strong>chiffres ne sont pas publiés</strong>. Les citoyens doivent croire les compagnies sur parole.",actionIds:["gen_gt_publication_donnees","gen_gt_renforcement_institutions","spec_wsp_agence_controle","spec_gt_loi_anticorruption","adv_gt_calendrier_incontrolable"]},{id:3,name:"Élus sous pression des compagnies",score:.72,weight:6,description:"<strong>Financement des campagnes</strong>, promesses d'investissements, pressions en coulisses : les <strong>compagnies pétrolières</strong> pèsent lourd sur les décisions des élus.",actionIds:["gen_gt_renforcement_institutions","gen_gt_plateforme_citoyenne","spec_gt_protection_elus_integres"]},{id:4,name:"Citoyens exclus des décisions",score:.68,weight:6,description:"Ouvrir un puits, dépenser l'argent du pétrole : ces <strong>grandes décisions</strong> se prennent sans demander leur avis aux gens qui vivent sur place.",actionIds:["gen_gt_plateforme_citoyenne","spec_gt_assemblees_citoyennes"]}]},{id:"ODD_17",name:"Partenariats mondiaux",description:"Les <strong>investisseurs étrangers</strong> peuvent aggraver le secret ou imposer des <strong>règles de transparence</strong>. L'<strong>ODD 17</strong> pousse l'Équateur à rejoindre les standards mondiaux et à renégocier ses accords.",cuttings:[{id:1,name:"Accords internationaux opaques",score:.6,weight:6,description:"Les accords avec les <strong>investisseurs étrangers</strong> restent flous sur une question clé : <strong>qui paie</strong> quand ça pollue, et devant quel tribunal.",actionIds:["gen_gt_publication_donnees","spec_gt_adhesion_itie"]}]}]},{id:"climate_energy_path",name:"Climat & énergie",orientation:"yang",description:"L'Équateur est <strong>accro au pétrole</strong>, et ça l'empêche de passer aux <strong>énergies propres</strong>. Cette facette montre comment le <strong>gaz brûlé</strong> à ciel ouvert, les nouveaux puits et le manque d'investissement dans le solaire enferment le pays loin de ses <strong>promesses climatiques</strong>.",odds:[{id:"ODD_13",name:"Agir pour le climat",description:"Ici, l'<strong>ODD 13</strong> vise les <strong>gaz à effet de serre du pétrole</strong> — gaz brûlé, fuites, forêt coupée — et demande à l'Équateur une <strong>politique énergétique</strong> compatible avec un réchauffement limité à <strong>1,5 °C</strong>.",cuttings:[{id:1,name:"Torchage : CO₂ brûlé à ciel ouvert",score:.8,weight:6,description:"Le gaz qui remonte avec le pétrole est <strong>brûlé sur place</strong>, jour et nuit. Ça crache du <strong>CO₂ et des fumées toxiques</strong> — et ça <strong>gaspille</strong> une énergie qui pourrait éclairer les villages voisins.",actionIds:["gen_cep_tarification_carbone","gen_wsp_formation_normes_env","spec_cep_zero_torchage"]},{id:2,name:"Nouvelles réserves fossiles exploitées",score:.9,weight:10,description:"Chaque <strong>nouveau puits</strong> ouvert dans une zone protégée, c'est des décennies d'émissions en plus. Difficile de tenir l'<strong>Accord de Paris</strong> en creusant toujours plus.",actionIds:["gen_cep_sortie_fossiles","gen_cep_tarification_carbone","spec_cep_moratoire_permis"]},{id:3,name:"Transition énergétique au point mort",score:.5,weight:8,description:"L'Équateur a du <strong>soleil, des rivières et des volcans</strong> à revendre. Pourtant le pays reste accroché au pétrole pour son <strong>énergie</strong> et son budget, et la transition ne démarre jamais vraiment.",actionIds:["gen_cep_sortie_fossiles","gen_cep_investissement_renouvelables","spec_cep_loi_programmation_energetique"]},{id:4,name:"L'État accro au pétrole",score:.7,weight:10,description:"Une grosse part du <strong>budget de l'État</strong> vient du <strong>pétrole</strong>. Laisser le brut sous terre, c'est se priver de cet argent : aucun gouvernement n'ose vraiment.",actionIds:["gen_cep_sortie_fossiles","gen_cep_reforme_fiscalite","spec_cep_fonds_stabilisation","adv_cep_expansion_voisine"]}]},{id:"ODD_7",name:"Énergie propre et accessible",description:"L'Amazonie a du <strong>soleil et de l'eau</strong> à ne plus savoir qu'en faire, mais l'argent public va au <strong>pétrole</strong>. L'<strong>ODD 7</strong> veut des <strong>énergies propres et abordables</strong> pour les villages qui, aujourd'hui, n'ont même pas l'électricité.",cuttings:[{id:1,name:"Renouvelables en manque d'investisseurs",score:.9,weight:6,description:"Les <strong>règles et garanties</strong> actuelles ne rassurent pas les investisseurs : personne ne veut mettre de l'argent dans le <strong>solaire ou l'éolien</strong> en Amazonie sans savoir s'il le reverra.",actionIds:["gen_cep_investissement_renouvelables","spec_cep_ppa_renouvelables"]},{id:2,name:"Énergie propre hors de portée",score:.1,weight:6,description:"Des milliers de <strong>villages amazoniens</strong> n'ont pas d'électricité, ou tournent au <strong>diesel</strong> hors de prix. Quelques <strong>panneaux solaires</strong> suffiraient — et coûteraient moins cher.",actionIds:["gen_cep_investissement_renouvelables","spec_cep_electrification_rural"]}]},{id:"ODD_12",name:"Consommation et production responsables",description:"Ici, l'<strong>ODD 12</strong> pointe les <strong>subventions, impôts et investissements publics</strong> qui favorisent toujours le pétrole, au détriment de tout ce qui pourrait durer.",cuttings:[{id:1,name:"Tout pour l'extraction, rien pour le reste",score:.65,weight:6,description:"<strong>Impôts, aides, investissements publics</strong> : tout est calibré pour le pétrole. L'<strong>agriculture durable, le tourisme ou la forêt</strong> se contentent des miettes.",actionIds:["gen_cep_tarification_carbone","gen_cep_reforme_fiscalite","spec_cep_diversification_economique"]}]}]},{id:"local_economy",name:"Économie locale & emploi",orientation:"yang",description:"Autour des puits du <strong>Yasuni</strong>, on est pauvre au milieu de la richesse. Cette facette montre comment le <strong>pétrole</strong> fonctionne en <strong>vase clos</strong> : peu d'emplois pour les gens du coin, précaires, et plus rien du tout le jour où le puits se tarit.",odds:[{id:"ODD_8",name:"Travail décent et croissance économique",description:"Ici, l'<strong>ODD 8</strong> veut que le pétrole crée de <strong>vrais emplois</strong> pour les gens du coin, pas des petits contrats. Et que la <strong>sortie du pétrole</strong> se prépare sans laisser personne sur le carreau.",cuttings:[{id:1,name:"Emplois liés à l'extraction",score:.6,weight:6,description:"Les <strong>bons postes</strong> vont à des gens venus d'ailleurs. Aux locaux restent les petits boulots, les premiers à sauter quand le <strong>prix du baril chute</strong> ou qu'une machine les remplace.",actionIds:["gen_le_transition_juste","spec_le_requalification_renouvelables"]},{id:2,name:"Budget public dépendant du pétrole",score:.65,weight:6,description:"Quand le <strong>baril monte</strong>, les provinces dépensent ; quand il chute, elles coupent tout. Écoles et dispensaires vivent au rythme des <strong>montagnes russes</strong> du pétrole.",actionIds:["gen_le_transition_juste","gen_le_ancrage_benefices","spec_le_redistribution_royalties","adv_le_depenser_recettes"]}]},{id:"ODD_9",name:"Industrie, innovation et infrastructure",description:"Les routes et réseaux construits pour le <strong>pétrole</strong> servent rarement aux habitants. L'<strong>ODD 9</strong> pose une <strong>condition</strong> : tout ce qu'on construit doit aussi être utile à la région, après le pétrole.",cuttings:[{id:1,name:"Infrastructures au service du pétrole",score:.6,weight:6,description:"<strong>Routes, ports, lignes électriques</strong> : tout est pensé pour les camions et les puits, pas pour les gens. La <strong>région</strong> n'en tire presque rien.",actionIds:["gen_le_ancrage_benefices","gen_le_amenagement_territorial","spec_le_conditionnalite_infra"]}]},{id:"ODD_11",name:"Villes et communautés durables",description:"Autour des puits, des villes poussent <strong>n'importe comment</strong> : <strong>quartiers précaires</strong>, services débordés, vie difficile. L'<strong>ODD 11</strong> demande de <strong>penser la ville</strong> avant d'ouvrir le puits, pas après.",cuttings:[{id:1,name:"Villes-champignons autour des puits",score:.55,weight:2,description:"Des milliers de <strong>travailleurs</strong> débarquent d'un coup autour d'un site. Une ville sort de terre en quelques mois, <strong>sans plan</strong>, sans école, sans eau, sans égouts.",actionIds:["gen_le_amenagement_territorial","spec_le_plu_extractif"]}]}]}]},t.yasuniCause=t.yasuniSphere.composantes},5465(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.yasuniInterconnectionGraph=void 0,t.yasuniInterconnectionGraph={"biodiversity_habitat_fragmentation::ODD_13":[{to:"climate_energy_path::ODD_13",targetedCutting:4,w:.4,rationale:"Effet domino : une forêt en bonne santé stocke plus de carbone."},{to:"biodiversity_habitat_fragmentation::ODD_15",targetedCutting:2,w:.4,rationale:"Effet domino : ce qui aide « climat » fait aussi du bien à « vie terrestre » (biodiversité)."}],"biodiversity_habitat_fragmentation::ODD_14":[{to:"water_soil_pollution::ODD_6",targetedCutting:2,w:.4,rationale:"Effet domino : ce qui aide « vie aquatique » fait aussi du bien à « eau propre » (eau & sols)."},{to:"indigenous_rights::ODD_1",w:.2,rationale:"Effet domino : ce qui aide « vie aquatique » fait aussi du bien à « lutte contre la pauvreté » (droits autochtones)."},{to:"biodiversity_habitat_fragmentation::ODD_2",w:.4,rationale:"Effet domino : ce qui aide « vie aquatique » fait aussi du bien à « faim zéro » (biodiversité)."}],"biodiversity_habitat_fragmentation::ODD_15":[{to:"biodiversity_habitat_fragmentation::ODD_13",targetedCutting:2,w:.6,rationale:"Effet domino : ce qui aide « vie terrestre » fait aussi du bien à « climat » (biodiversité)."},{to:"climate_energy_path::ODD_13",targetedCutting:4,w:.4,rationale:"Effet domino : une forêt en bonne santé stocke plus de carbone."},{to:"water_soil_pollution::ODD_6",targetedCutting:2,w:.2,rationale:"Effet domino : ce qui aide « vie terrestre » fait aussi du bien à « eau propre » (eau & sols)."},{to:"indigenous_rights::ODD_16",targetedCutting:2,w:.4,rationale:"Effet domino : ce qui aide « vie terrestre » fait aussi du bien à « institutions » (droits autochtones)."},{to:"indigenous_rights::ODD_1",w:.2,rationale:"Effet domino : ce qui aide « vie terrestre » fait aussi du bien à « lutte contre la pauvreté » (droits autochtones)."},{to:"biodiversity_habitat_fragmentation::ODD_2",w:.4,rationale:"Effet domino : ce qui aide « vie terrestre » fait aussi du bien à « faim zéro » (biodiversité)."}],"biodiversity_habitat_fragmentation::ODD_2":[{to:"indigenous_rights::ODD_1",w:.6,rationale:"Effet domino : ce qui aide « faim zéro » fait aussi du bien à « lutte contre la pauvreté » (droits autochtones)."},{to:"indigenous_rights::ODD_10",targetedCutting:2,w:.4,rationale:"Effet domino : ce qui aide « faim zéro » fait aussi du bien à « réduction des inégalités » (droits autochtones)."}],"climate_energy_path::ODD_12":[{to:"climate_energy_path::ODD_13",targetedCutting:4,w:-.6,rationale:"Revers de la médaille : les deux se disputent le même espace."},{to:"local_economy::ODD_8",targetedCutting:2,w:.2,rationale:"Effet domino : ce qui aide « consommation responsable » fait aussi du bien à « emploi » (économie locale)."},{to:"governance_transparency::ODD_16",targetedCutting:2,w:.2,rationale:"Effet domino : ce qui aide « consommation responsable » fait aussi du bien à « institutions » (gouvernance)."}],"climate_energy_path::ODD_13":[{to:"biodiversity_habitat_fragmentation::ODD_15",targetedCutting:2,w:.6,rationale:"Effet domino : moins de réchauffement, des habitats moins stressés."},{to:"biodiversity_habitat_fragmentation::ODD_14",targetedCutting:2,w:.4,rationale:"Effet domino : moins de réchauffement, des habitats moins stressés."},{to:"water_soil_pollution::ODD_6",targetedCutting:2,w:.2,rationale:"Effet domino : ce qui aide « climat » fait aussi du bien à « eau propre » (eau & sols)."},{to:"climate_energy_path::ODD_12",w:-.4,rationale:"Revers de la médaille : les deux se disputent le même espace."}],"climate_energy_path::ODD_7":[{to:"climate_energy_path::ODD_13",targetedCutting:4,w:-.6,rationale:"Revers de la médaille : les deux se disputent le même espace."},{to:"water_soil_pollution::ODD_12",w:.4,rationale:"Effet domino : ce qui aide « énergie propre » fait aussi du bien à « consommation responsable » (eau & sols)."}],"governance_transparency::ODD_16":[{to:"indigenous_rights::ODD_16",targetedCutting:2,w:.8,rationale:"Effet domino : des institutions qui font vraiment respecter les droits."},{to:"water_soil_pollution::ODD_6",targetedCutting:2,w:.6,rationale:"Effet domino : ce qui aide « institutions » fait aussi du bien à « eau propre » (eau & sols)."},{to:"water_soil_pollution::ODD_3",w:.4,rationale:"Effet domino : des règles environnementales enfin appliquées, tout le monde respire mieux."},{to:"local_economy::ODD_9",w:.2,rationale:"Effet domino : ce qui aide « institutions » fait aussi du bien à « infrastructures » (économie locale)."},{to:"local_economy::ODD_8",targetedCutting:2,w:.2,rationale:"Effet domino : ce qui aide « institutions » fait aussi du bien à « emploi » (économie locale)."},{to:"climate_energy_path::ODD_13",targetedCutting:4,w:.2,rationale:"Effet domino : ce qui aide « institutions » fait aussi du bien à « climat » (climat & énergie)."},{to:"governance_transparency::ODD_17",w:.4,rationale:"Effet domino : ce qui aide « institutions » fait aussi du bien à « partenariats » (gouvernance)."},{to:"institutional_protection::ODD_16",targetedCutting:2,w:.2,rationale:"Effet domino : l'argent public arrive enfin jusqu'aux plans de gestion du parc."}],"governance_transparency::ODD_17":[{to:"governance_transparency::ODD_16",targetedCutting:2,w:.6,rationale:"Effet domino : ce qui aide « partenariats » fait aussi du bien à « institutions » (gouvernance)."},{to:"climate_energy_path::ODD_7",targetedCutting:2,w:.4,rationale:"Effet domino : ce qui aide « partenariats » fait aussi du bien à « énergie propre » (climat & énergie)."},{to:"indigenous_rights::ODD_16",targetedCutting:2,w:.4,rationale:"Effet domino : des institutions qui font vraiment respecter les droits."},{to:"water_soil_pollution::ODD_12",w:.2,rationale:"Effet domino : ce qui aide « partenariats » fait aussi du bien à « consommation responsable » (eau & sols)."}],"indigenous_rights::ODD_1":[{to:"indigenous_rights::ODD_16",targetedCutting:2,w:.4,rationale:"Effet domino : ce qui aide « lutte contre la pauvreté » fait aussi du bien à « institutions » (droits autochtones)."},{to:"local_economy::ODD_8",targetedCutting:2,w:.2,rationale:"Effet domino : ce qui aide « lutte contre la pauvreté » fait aussi du bien à « emploi » (économie locale)."},{to:"indigenous_rights::ODD_3",w:.4,rationale:"Effet domino : ce qui aide « lutte contre la pauvreté » fait aussi du bien à « santé » (droits autochtones)."}],"indigenous_rights::ODD_10":[{to:"indigenous_rights::ODD_1",w:.6,rationale:"Effet domino : ce qui aide « réduction des inégalités » fait aussi du bien à « lutte contre la pauvreté » (droits autochtones)."},{to:"indigenous_rights::ODD_16",targetedCutting:2,w:.2,rationale:"Effet domino : ce qui aide « réduction des inégalités » fait aussi du bien à « institutions » (droits autochtones)."},{to:"indigenous_rights::ODD_4",w:.4,rationale:"Effet domino : ce qui aide « réduction des inégalités » fait aussi du bien à « éducation » (droits autochtones)."}],"indigenous_rights::ODD_11":[{to:"indigenous_rights::ODD_16",targetedCutting:2,w:.4,rationale:"Effet domino : ce qui aide « villes » fait aussi du bien à « institutions » (droits autochtones)."},{to:"indigenous_rights::ODD_10",targetedCutting:2,w:.2,rationale:"Effet domino : ce qui aide « villes » fait aussi du bien à « réduction des inégalités » (droits autochtones)."}],"indigenous_rights::ODD_16":[{to:"governance_transparency::ODD_16",targetedCutting:2,w:.6,rationale:"Effet domino : ce qui aide « institutions » fait aussi du bien à « institutions » (gouvernance)."},{to:"biodiversity_habitat_fragmentation::ODD_15",targetedCutting:2,w:.6,rationale:"Effet domino : ce qui aide « institutions » fait aussi du bien à « vie terrestre » (biodiversité)."},{to:"local_economy::ODD_8",targetedCutting:2,w:.2,rationale:"Effet domino : ce qui aide « institutions » fait aussi du bien à « emploi » (économie locale)."},{to:"indigenous_rights::ODD_1",w:.4,rationale:"Effet domino : ce qui aide « institutions » fait aussi du bien à « lutte contre la pauvreté » (droits autochtones)."},{to:"indigenous_rights::ODD_10",targetedCutting:2,w:.4,rationale:"Effet domino : ce qui aide « institutions » fait aussi du bien à « réduction des inégalités » (droits autochtones)."},{to:"institutional_protection::ODD_16",targetedCutting:1,w:.4,rationale:"Effet domino : des communautés mobilisées, ce sont des yeux en plus sur la zone interdite."}],"indigenous_rights::ODD_3":[{to:"indigenous_rights::ODD_1",w:.6,rationale:"Effet domino : ce qui aide « santé » fait aussi du bien à « lutte contre la pauvreté » (droits autochtones)."},{to:"indigenous_rights::ODD_10",targetedCutting:2,w:.4,rationale:"Effet domino : ce qui aide « santé » fait aussi du bien à « réduction des inégalités » (droits autochtones)."}],"indigenous_rights::ODD_4":[{to:"indigenous_rights::ODD_1",w:.4,rationale:"Effet domino : ce qui aide « éducation » fait aussi du bien à « lutte contre la pauvreté » (droits autochtones)."},{to:"governance_transparency::ODD_16",targetedCutting:2,w:.2,rationale:"Effet domino : ce qui aide « éducation » fait aussi du bien à « institutions » (gouvernance)."}],"institutional_protection::ODD_15":[{to:"biodiversity_habitat_fragmentation::ODD_15",targetedCutting:1,w:.6,rationale:"Effet domino : des gardes et des bornes sur le terrain, et la forêt est moins découpée."},{to:"biodiversity_habitat_fragmentation::ODD_13",targetedCutting:1,w:.4,rationale:"Effet domino : là où quelqu'un surveille, on coupe moins."},{to:"indigenous_rights::ODD_16",targetedCutting:2,w:.2,rationale:"Effet domino : plus de gardes autour, et les défenseurs sont moins seuls face aux intrus."}],"institutional_protection::ODD_16":[{to:"indigenous_rights::ODD_16",targetedCutting:2,w:.6,rationale:"Effet domino : une zone interdite vraiment gardée, c'est moins d'intrusions sur les terres des communautés."},{to:"biodiversity_habitat_fragmentation::ODD_15",targetedCutting:5,w:.4,rationale:"Effet domino : protéger la zone interdite, c'est protéger la forêt vierge qu'elle contient."},{to:"governance_transparency::ODD_16",targetedCutting:2,w:.2,rationale:"Effet domino : des institutions qui tiennent leurs promesses sur le terrain inspirent confiance."}],"institutional_protection::ODD_17":[{to:"institutional_protection::ODD_16",targetedCutting:2,w:.6,rationale:"Effet domino : l'argent international débloque enfin les plans de gestion restés dans les tiroirs."},{to:"climate_energy_path::ODD_13",targetedCutting:2,w:.2,rationale:"Effet domino : quand la compensation arrive, on a moins besoin d'ouvrir de nouveaux puits."},{to:"governance_transparency::ODD_17",targetedCutting:1,w:.2,rationale:"Effet domino : un pays qui tient parole trouve plus facilement des partenaires."}],"local_economy::ODD_11":[{to:"indigenous_rights::ODD_10",targetedCutting:2,w:-.4,rationale:"Revers de la médaille : les deux se disputent le même espace."},{to:"indigenous_rights::ODD_11",w:-.6,rationale:"Revers de la médaille : les deux se disputent le même espace."},{to:"water_soil_pollution::ODD_12",w:-.2,rationale:"Revers de la médaille : les deux se disputent le même espace."}],"local_economy::ODD_8":[{to:"local_economy::ODD_9",w:.6,rationale:"Effet domino : ce qui aide « emploi » fait aussi du bien à « infrastructures » (économie locale)."},{to:"local_economy::ODD_11",w:.4,rationale:"Effet domino : ce qui aide « emploi » fait aussi du bien à « villes » (économie locale)."},{to:"climate_energy_path::ODD_13",targetedCutting:4,w:-.6,rationale:"Revers de la médaille : plus d'activité, plus de fumée."},{to:"water_soil_pollution::ODD_6",targetedCutting:2,w:-.6,rationale:"Revers de la médaille : les deux se disputent le même espace."},{to:"biodiversity_habitat_fragmentation::ODD_15",targetedCutting:2,w:-.6,rationale:"Revers de la médaille : plus de routes, une forêt plus découpée."},{to:"indigenous_rights::ODD_16",targetedCutting:2,w:-.4,rationale:"Revers de la médaille : les deux se disputent le même espace."},{to:"governance_transparency::ODD_16",targetedCutting:2,w:.4,rationale:"Effet domino : ce qui aide « emploi » fait aussi du bien à « institutions » (gouvernance)."}],"local_economy::ODD_9":[{to:"water_soil_pollution::ODD_6",targetedCutting:2,w:-.6,rationale:"Revers de la médaille : les deux se disputent le même espace."},{to:"water_soil_pollution::ODD_12",w:-.4,rationale:"Revers de la médaille : les deux se disputent le même espace."},{to:"biodiversity_habitat_fragmentation::ODD_14",targetedCutting:2,w:-.4,rationale:"Revers de la médaille : plus de routes, une forêt plus découpée."},{to:"biodiversity_habitat_fragmentation::ODD_15",targetedCutting:2,w:-.6,rationale:"Revers de la médaille : plus de routes, une forêt plus découpée."},{to:"governance_transparency::ODD_16",targetedCutting:2,w:.2,rationale:"Effet domino : ce qui aide « infrastructures » fait aussi du bien à « institutions » (gouvernance)."},{to:"institutional_protection::ODD_15",targetedCutting:2,w:-.4,rationale:"Revers de la médaille : plus de chantiers, et les limites du parc deviennent plus dures à surveiller."}],"water_soil_pollution::ODD_12":[{to:"water_soil_pollution::ODD_6",targetedCutting:2,w:.6,rationale:"Effet domino : ce qui aide « consommation responsable » fait aussi du bien à « eau propre » (eau & sols)."},{to:"water_soil_pollution::ODD_3",targetedCutting:1,w:.4,rationale:"Effet domino : ce qui aide « consommation responsable » fait aussi du bien à « santé » (eau & sols)."},{to:"climate_energy_path::ODD_13",targetedCutting:4,w:.4,rationale:"Effet domino : ce qui aide « consommation responsable » fait aussi du bien à « climat » (climat & énergie)."},{to:"governance_transparency::ODD_16",targetedCutting:2,w:.4,rationale:"Effet domino : ce qui aide « consommation responsable » fait aussi du bien à « institutions » (gouvernance)."}],"water_soil_pollution::ODD_3":[{to:"indigenous_rights::ODD_1",w:.6,rationale:"Effet domino : des gens en meilleure santé, avec de l'eau propre au robinet."},{to:"indigenous_rights::ODD_10",targetedCutting:2,w:.4,rationale:"Effet domino : des gens en meilleure santé, avec de l'eau propre au robinet."},{to:"indigenous_rights::ODD_16",targetedCutting:2,w:.2,rationale:"Effet domino : des gens en meilleure santé, avec de l'eau propre au robinet."}],"water_soil_pollution::ODD_6":[{to:"water_soil_pollution::ODD_3",targetedCutting:1,w:.8,rationale:"Effet domino : ce qui aide « eau propre » fait aussi du bien à « santé » (eau & sols)."},{to:"biodiversity_habitat_fragmentation::ODD_14",targetedCutting:2,w:.6,rationale:"Effet domino : une eau propre, et des rivières qui revivent."},{to:"biodiversity_habitat_fragmentation::ODD_15",targetedCutting:2,w:.4,rationale:"Effet domino : une eau propre, et des rivières qui revivent."},{to:"indigenous_rights::ODD_3",w:.6,rationale:"Effet domino : des gens en meilleure santé, avec de l'eau propre au robinet."},{to:"indigenous_rights::ODD_1",w:.4,rationale:"Effet domino : des gens en meilleure santé, avec de l'eau propre au robinet."}]},t.default=t.yasuniInterconnectionGraph},5463(e,t,n){function i(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}Object.defineProperty(t,"__esModule",{value:!0}),t.yasuniKeyEventMap=t.yasuniKeyEvents=void 0,t.isAdverseKeyEvent=function(e){return e.effect.scoreBonus<0||e.effect.weightBonus<0};var a=n(8483);t.yasuniKeyEvents=[{id:"key_bhf_sanctuaire_inviolable",name:"Sanctuaire inviolable",shortDescription:"Le parc passe sous cloche : tout ce qui bloque ou dévie les chantiers pèse plus lourd.",description:"Le Yasuní obtient le plus haut niveau de protection qui existe. Interdire les chantiers, garder une distance avec les puits, recoudre la forêt, détourner les routes : ce ne sont plus des mesures au coup par coup, c'est la loi, et on peut la faire respecter.",originComposanteId:"biodiversity_habitat_fragmentation",targetedActionIds:["gen_bhf_moratoire_infra","gen_bhf_zones_tampons","spec_bhf_restauration_corridors","spec_bhf_deviations_routieres"],withinNextN:12,effect:{scoreBonus:2,weightBonus:2}},{id:"key_bhf_oeil_global_foret",name:"Œil global sur la forêt",shortDescription:"Des scientifiques du monde entier braquent leurs instruments sur la forêt.",description:"Des labos étrangers viennent renforcer la surveillance du parc. Les images satellite et le suivi des espèces ne sont plus des outils isolés : ils alimentent un réseau mondial qui regarde la forêt en continu.",originComposanteId:"biodiversity_habitat_fragmentation",targetedActionIds:["gen_bhf_surveillance_satellite","spec_bhf_plan_especes_aquatiques"],withinNextN:8,effect:{scoreBonus:1,weightBonus:2}},{id:"key_bhf_foret_qui_rapporte",name:"Forêt qui rapporte plus debout que coupée",shortDescription:"Garder les arbres debout devient plus rentable que les couper.",description:"Sur les marchés internationaux, le prix payé pour la forêt préservée grimpe en flèche. Chaque hectare replanté ou laissé intact rapporte de l'argent. Soudain, protéger la forêt n'est plus une dépense, c'est un placement.",originComposanteId:"biodiversity_habitat_fragmentation",targetedActionIds:["spec_bhf_redd_local","gen_bhf_reforestation"],withinNextN:8,effect:{scoreBonus:2,weightBonus:2}},{id:"key_bhf_rangers_renforces",name:"Rangers renforcés",shortDescription:"Les pays voisins s'unissent contre le braconnage : patrouilles et reconversion changent d'échelle.",description:"Les pays d'Amazonie décident de traquer ensemble les braconniers qui passent les frontières. Les patrouilles et les programmes pour offrir un autre métier aux chasseurs ne s'arrêtent plus à la limite du parc.",originComposanteId:"biodiversity_habitat_fragmentation",targetedActionIds:["gen_bhf_patrouilles_antibraconnage","spec_bhf_reconversion_chasseurs"],withinNextN:8,effect:{scoreBonus:2,weightBonus:2}},{id:"key_wsp_reseau_detection_totale",name:"Réseau de détection totale",shortDescription:"Des capteurs partout : la moindre goutte de pétrole est repérée.",description:"Le réseau de capteurs couvre désormais toutes les rivières du bassin. Alertes, sondes dans les nappes et inspections des tuyaux ne sont plus des points isolés sur une carte : rien ne peut fuir sans être vu.",originComposanteId:"water_soil_pollution",targetedActionIds:["gen_wsp_alerte_precoce","spec_wsp_piezometres","spec_wsp_inspection_pipelines"],withinNextN:10,effect:{scoreBonus:2,weightBonus:1}},{id:"key_wsp_zero_impunite_industrielle",name:"Zéro impunité industrielle",shortDescription:"L'agence de contrôle a enfin des dents : les pollueurs paient.",description:"Jusqu'ici, l'agence chargée de contrôler les sites pollués n'osait pas frapper fort. Une nouvelle loi la protège des pressions politiques. Les audits ne sont plus pour la forme, et les amendes tombent vraiment.",originComposanteId:"water_soil_pollution",targetedActionIds:["gen_wsp_audit_installations","spec_wsp_agence_controle","spec_gt_loi_anticorruption"],withinNextN:10,effect:{scoreBonus:2,weightBonus:1}},{id:"key_wsp_sante_pour_tous",name:"Santé pour tous, partout",shortDescription:"Un plan santé national pour tous les villages au bord des puits.",description:"Le ministère de la santé réserve un budget aux zones pétrolières. Dépistages, cliniques mobiles et suivi des personnes exposées ne dépendent plus de la bonne volonté d'une ONG : c'est un programme qui tourne toute l'année.",originComposanteId:"water_soil_pollution",targetedActionIds:["gen_wsp_sante_communautaire","spec_wsp_depistage_dermato","spec_wsp_centres_soins_mobiles","spec_wsp_protocole_exposition"],withinNextN:12,effect:{scoreBonus:2,weightBonus:2}},{id:"key_wsp_remediation_totale",name:"Remédiation totale",shortDescription:"Un fonds d'urgence pour nettoyer, vite et à grande échelle.",description:"Un fonds d'urgence débloque des moyens massifs pour dépolluer les sites les plus abîmés. Les chantiers de nettoyage et les stations de traitement des eaux passent à la vitesse supérieure.",originComposanteId:"water_soil_pollution",targetedActionIds:["gen_wsp_depollution","spec_wsp_traitement_eaux_production"],withinNextN:8,effect:{scoreBonus:2,weightBonus:2}},{id:"key_ir_souverainete_territoriale",name:"Souveraineté territoriale reconnue",shortDescription:"La justice reconnaît le territoire des peuples : cartes, droits et consentement font bloc.",description:"La plus haute cour du pays tranche : les cartes que les communautés ont dessinées de leur territoire ont force de loi. Cartographier, défendre ses droits et exiger d'être consulté ne sont plus trois combats séparés, mais un seul.",originComposanteId:"indigenous_rights",targetedActionIds:["spec_ir_cadastre_participatif","gen_ir_renforcement_juridique","spec_ir_protocole_clip"],withinNextN:10,effect:{scoreBonus:3,weightBonus:2}},{id:"key_ir_bouclier_defenseurs",name:"Bouclier des défenseurs",shortDescription:"Le monde entier veille sur ceux qui défendent la forêt.",description:"Une résolution internationale place les défenseurs de l'environnement sous protection diplomatique. Menacer un militant, un citoyen engagé ou un élu honnête devient un incident international.",originComposanteId:"indigenous_rights",targetedActionIds:["spec_ir_protection_defenseurs","gen_gt_plateforme_citoyenne","spec_gt_protection_elus_integres"],withinNextN:10,effect:{scoreBonus:3,weightBonus:2}},{id:"key_ir_economie_post_petrole",name:"Économie post-pétrole communautaire",shortDescription:"Un grand plan pour vivre sans pétrole, à commencer par les communautés.",description:"L'État lance un programme national pour créer d'autres sources de revenus, en priorité chez les peuples autochtones. Nouvelles activités, fonds local et emplois réservés ne sont plus des essais : c'est le socle d'une économie qui ne dépend plus des puits.",originComposanteId:"indigenous_rights",targetedActionIds:["gen_ir_developpement_alternatif","spec_ir_fonds_souverain_local","spec_ir_quota_emploi_local"],withinNextN:10,effect:{scoreBonus:3,weightBonus:2}},{id:"key_ir_territoires_equipes",name:"Territoires équipés",shortDescription:"Un plan d'investissement pour les villages les plus isolés.",description:"Un plan sur plusieurs années cible les territoires les plus reculés. Eau, électricité, écoles, dispensaires : les équipements n'arrivent plus au compte-gouttes, mais selon un programme.",originComposanteId:"indigenous_rights",targetedActionIds:["gen_ir_acces_services_base","spec_ir_infrastructures_sociales"],withinNextN:8,effect:{scoreBonus:2,weightBonus:2}},{id:"key_gt_transparence_totale",name:"Transparence totale, sans exception",shortDescription:"Tout doit être public : plus aucun chiffre du pétrole ne reste caché.",description:"La transparence sur le pétrole entre dans la constitution. Publier les données, rendre les contrats visibles, se plier aux règles internationales : ce ne sont plus des promesses, c'est une obligation qu'on peut faire valoir devant un juge.",originComposanteId:"governance_transparency",targetedActionIds:["gen_gt_publication_donnees","spec_gt_registre_contrats","spec_gt_adhesion_itie"],withinNextN:10,effect:{scoreBonus:3,weightBonus:2}},{id:"key_gt_institutions_epreuve_corruption",name:"Institutions à l'épreuve de la corruption",shortDescription:"Les institutions de contrôle deviennent intouchables.",description:"Une grande réforme donne aux organismes de contrôle des moyens et une indépendance qu'ils n'ont jamais eus. Renforcer les institutions, publier les contrats, protéger les élus honnêtes : tout repose désormais sur la même fondation solide.",originComposanteId:"governance_transparency",targetedActionIds:["gen_gt_renforcement_institutions","spec_gt_registre_contrats","spec_gt_protection_elus_integres"],withinNextN:10,effect:{scoreBonus:2,weightBonus:2}},{id:"key_gt_democratie_directe",name:"Démocratie directe sur le pétrole",shortDescription:"Les citoyens ont leur mot à dire sur chaque décision pétrolière.",description:"Le droit d'être consulté avant toute grande décision sur le pétrole est inscrit dans la constitution. La plateforme en ligne et les assemblées citoyennes deviennent les deux voies officielles pour exercer ce droit.",originComposanteId:"governance_transparency",targetedActionIds:["gen_gt_plateforme_citoyenne","spec_gt_assemblees_citoyennes"],withinNextN:8,effect:{scoreBonus:2,weightBonus:2}},{id:"key_cep_sortie_petrole_loi",name:"Sortie du pétrole actée par la loi",shortDescription:"La sortie du pétrole est gravée dans la loi : impossible de revenir en arrière.",description:"Un référendum national fixe une date de sortie du pétrole, et l'inscrit dans la constitution. Le plan de sortie, le gel des nouveaux permis et la loi sur l'énergie ne peuvent plus être détricotés un par un : ils forment un seul engagement.",originComposanteId:"climate_energy_path",targetedActionIds:["gen_cep_sortie_fossiles","spec_cep_moratoire_permis","spec_cep_loi_programmation_energetique"],withinNextN:10,effect:{scoreBonus:3,weightBonus:2}},{id:"key_cep_carbone_hors_la_loi",name:"Carbone hors-la-loi",shortDescription:"Polluer coûte cher, et de plus en plus.",description:"Le pays s'aligne sur les règles les plus strictes du monde : chaque tonne de CO2 a un prix plancher élevé. La taxe carbone et l'interdiction de brûler le gaz sur les puits sont désormais arrimées à des règles internationales.",originComposanteId:"climate_energy_path",targetedActionIds:["gen_cep_tarification_carbone","spec_cep_zero_torchage"],withinNextN:8,effect:{scoreBonus:2,weightBonus:2}},{id:"key_cep_boom_renouvelables",name:"Boom des renouvelables",shortDescription:"L'argent afflue pour le solaire et l'éolien en Amazonie.",description:"Un grand fonds international se lance sur les énergies renouvelables en Amazonie. Investissements, prix garantis et électricité pour les villages avancent désormais ensemble, à toute allure.",originComposanteId:"climate_energy_path",targetedActionIds:["gen_cep_investissement_renouvelables","spec_cep_ppa_renouvelables","spec_cep_electrification_rural"],withinNextN:10,effect:{scoreBonus:3,weightBonus:2}},{id:"key_cep_budget_vert_souverain",name:"Budget vert souverain",shortDescription:"L'argent du pétrole finance enfin l'après-pétrole.",description:"Une loi de finances sur plusieurs années réoriente l'argent du pétrole vers la transition. Réforme des impôts, réserve pour les coups durs et nouvelles activités ne sont plus gérés chacun dans leur coin : c'est un seul budget, pensé sur le long terme.",originComposanteId:"climate_energy_path",targetedActionIds:["gen_cep_reforme_fiscalite","spec_cep_fonds_stabilisation","spec_cep_diversification_economique"],withinNextN:10,effect:{scoreBonus:3,weightBonus:2}},{id:"key_le_reconversion_pro_garantie",name:"Reconversion professionnelle garantie",shortDescription:"Chaque travailleur du pétrole a droit à un nouveau métier.",description:"État, syndicats et compagnies signent un accord : tout salarié du pétrole aura droit à une reconversion. Accompagnement et formation aux énergies renouvelables forment un seul parcours, garanti pour chacun.",originComposanteId:"local_economy",targetedActionIds:["gen_le_transition_juste","spec_le_requalification_renouvelables"],withinNextN:8,effect:{scoreBonus:2,weightBonus:2}},{id:"key_le_richesse_ancree_localement",name:"Richesse pétrolière ancrée localement",shortDescription:"La loi oblige le pétrole à laisser de l'argent sur place.",description:"Une loi impose que chaque contrat pétrolier reverse une part minimum à la région, sinon il est annulé. Faire rester les bénéfices, partager les royalties, construire des équipements en échange : ce n'est plus optionnel, c'est écrit dans chaque contrat.",originComposanteId:"local_economy",targetedActionIds:["gen_le_ancrage_benefices","spec_le_redistribution_royalties","spec_le_conditionnalite_infra"],withinNextN:10,effect:{scoreBonus:3,weightBonus:2}},{id:"key_le_territoire_planifie",name:"Territoire planifié, pas subi",shortDescription:"Une vision d'ensemble pour les villes autour des puits.",description:"Un plan national organise le développement de toutes les communes proches des puits. Fini le chacun pour soi : l'aménagement du territoire et les règles d'urbanisme suivent une même vision régionale.",originComposanteId:"local_economy",targetedActionIds:["gen_le_amenagement_territorial","spec_le_plu_extractif"],withinNextN:8,effect:{scoreBonus:2,weightBonus:2}},{id:"key_ip_presence_humaine_totale",name:"Présence humaine totale sur le terrain",shortDescription:"Des gardes partout : financement, bornes et recrutement local à fond.",description:"Un plan d'urgence pour le parc débloque des moyens jamais vus. Payer les gardes, poser des bornes aux frontières du parc, recruter des rangers dans les communautés : c'est devenu la priorité numéro un.",originComposanteId:"institutional_protection",targetedActionIds:["gen_ip_financement_gardes","gen_ip_demarcation_terrain","spec_ip_corps_rangers_autochtones"],withinNextN:10,effect:{scoreBonus:2,weightBonus:2}},{id:"key_ip_alerte_reponse_sans_delai",name:"Alerte → réponse, sans délai",shortDescription:"Une alerte, une réponse immédiate : plus de temps mort.",description:"Un protocole d'urgence relie chaque alerte à une intervention suivie en temps réel. Surveillance, protection des peuples isolés et remontées du terrain ne sont plus des maillons séparés : c'est une seule chaîne, sans délai.",originComposanteId:"institutional_protection",targetedActionIds:["gen_ip_operationnalisation_surveillance","spec_ip_protocole_intrusion_zi","spec_ip_integration_alertes_terrain"],withinNextN:10,effect:{scoreBonus:2,weightBonus:2}},{id:"key_ip_financement_international_securise",name:"Financement international sécurisé",shortDescription:"L'argent promis par les pays étrangers ne peut plus s'évaporer.",description:"Un mécanisme international garantit les engagements financiers pris pour le Yasuní. Financements étrangers, contrôle indépendant, budget des plans de gestion et relance de l'initiative Yasuní-ITT ne sont plus des promesses en l'air : chaque versement est vérifiable.",originComposanteId:"institutional_protection",targetedActionIds:["gen_ip_financement_international","gen_ip_suivi_independant","spec_ip_budget_plans_gestion","spec_ip_relance_itt"],withinNextN:12,effect:{scoreBonus:2,weightBonus:2}}],t.yasuniKeyEventMap=new Map([].concat(i(t.yasuniKeyEvents),i(a.yasuniAdverseKeyEvents)).map(function(e){return[e.id,e]}))},616(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.yasuniPropagationLayers=void 0,t.yasuniPropagationLayers={intraOddByComponent:{biodiversity_habitat_fragmentation:{ODD_15:[{toCuttingId:2,w:.8,targetedCuttings:[{cuttingId:5,rationale:"Une forêt découpée, c'est une forêt où l'on entre plus facilement — et les animaux en paient le prix."}]},{toCuttingId:5,w:.7,targetedCuttings:[{cuttingId:3,rationale:"Plus de monde dans la forêt, et les espèces uniques disparaissent plus vite."}]},{toCuttingId:3,w:.6,targetedCuttings:[{cuttingId:4,rationale:"Chaque espèce perdue rend la forêt plus fragile face au prochain choc."}]},{toCuttingId:4,w:.55}],ODD_14:[{toCuttingId:2,w:.6}],ODD_13:[{toCuttingId:2,w:.5}]},water_soil_pollution:{ODD_6:[{toCuttingId:2,w:.75,targetedCuttings:[{cuttingId:3,rationale:"Une eau souterraine polluée finit par empoisonner les champs qu'elle arrose."}]},{toCuttingId:3,w:.7,targetedCuttings:[{cuttingId:4,rationale:"Une terre abîmée nourrit moins de monde."}]},{toCuttingId:4,w:.55}],ODD_3:[{toCuttingId:1,w:.6,targetedCuttings:[{cuttingId:2,rationale:"Boire une eau polluée, c'est tomber malade."}]},{toCuttingId:2,w:.55,targetedCuttings:[{cuttingId:3,rationale:"À force d'être exposé, le corps se défend de moins en moins bien."}]},{toCuttingId:3,w:.55}]},indigenous_rights:{ODD_16:[{toCuttingId:2,w:.7,targetedCuttings:[{cuttingId:3,rationale:"Perdre ses terres, c'est perdre son poids dans les décisions."}]},{toCuttingId:3,w:.6,targetedCuttings:[{cuttingId:4,rationale:"Quand les institutions lâchent, les tensions montent."}]},{toCuttingId:4,w:.5}],ODD_10:[{toCuttingId:2,w:.65}]},governance_transparency:{ODD_16:[{toCuttingId:2,w:.6,targetedCuttings:[{cuttingId:3,rationale:"Sans contrôle, les forages hors-la-loi se multiplient."}]},{toCuttingId:3,w:.5,targetedCuttings:[{cuttingId:4,rationale:"Là où l'on fore illégalement, on bafoue aussi les gens."}]},{toCuttingId:4,w:.45}]},climate_energy_path:{ODD_13:[{toCuttingId:4,w:.7,targetedCuttings:[{cuttingId:3,rationale:"Plus il fait chaud, plus la forêt est fragile."}]},{toCuttingId:3,w:.6}],ODD_7:[{toCuttingId:2,w:.5}]},local_economy:{ODD_8:[{toCuttingId:2,w:.6}]},institutional_protection:{ODD_15:[{toCuttingId:1,w:.5,targetedCuttings:[{cuttingId:2,rationale:"Trop peu de gardes pour que les limites du parc existent ailleurs que sur les cartes."}]},{toCuttingId:2,w:.5,targetedCuttings:[{cuttingId:3,rationale:"Sans borne sur le terrain, difficile de vérifier une alerte satellite — et la réponse traîne."}]},{toCuttingId:3,w:.45}],ODD_16:[{toCuttingId:1,w:.5,targetedCuttings:[{cuttingId:2,rationale:"Le même manque de moyens qui laisse la zone interdite sans surveillance freine aussi les plans de gestion."}]},{toCuttingId:2,w:.45}]}},bridgeEdgesByComponent:{climate_energy_path:[{fromOddId:"ODD_7",fromCuttingId:1,toOddId:"ODD_13",toCuttingId:3,w:-.8,rationale:"Plus de pétrole brûlé, plus de gaz à effet de serre."},{fromOddId:"ODD_13",fromCuttingId:2,toOddId:"ODD_7",toCuttingId:2,w:.5,rationale:"Un climat déréglé fait grimper les besoins en énergie."},{fromOddId:"ODD_13",fromCuttingId:4,toComponentId:"local_economy",toOddId:"ODD_8",toCuttingId:2,w:-.5,rationale:"Se sevrer du pétrole, c'est aussi voir fondre les recettes qu'il rapportait."}],indigenous_rights:[{fromOddId:"ODD_16",fromCuttingId:1,toOddId:"ODD_10",toCuttingId:1,w:.6,rationale:"Passer outre l'avis des communautés, c'est aussi les appauvrir."},{fromOddId:"ODD_16",fromCuttingId:2,toOddId:"ODD_10",toCuttingId:1,w:.65,rationale:"Des institutions faibles creusent le fossé entre riches et pauvres."},{fromOddId:"ODD_10",fromCuttingId:2,toOddId:"ODD_1",toCuttingId:1,w:.6,rationale:"Plus d'inégalités, moins de moyens pour vivre."}],water_soil_pollution:[{fromOddId:"ODD_6",fromCuttingId:1,toOddId:"ODD_3",toCuttingId:2,w:.7,rationale:"Une rivière polluée, ce sont des malades en aval."}],institutional_protection:[{fromOddId:"ODD_16",fromCuttingId:1,toComponentId:"indigenous_rights",toOddId:"ODD_16",toCuttingId:2,w:.55,rationale:"Quand la zone interdite n'est pas gardée, ce sont les défenseurs communautaires qui prennent les risques à sa place."}]},localK:.65,bridgeK:.9},t.default=t.yasuniPropagationLayers},3967(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),n(102),n(4899),n(6299),n(3318),n(7421),n(5649),n(7739),r(n(7844),t);var o=n(4578),s=n(14),l=a(n(5465)),c=n(8317),d=n(5125),u=n(5533),p=n(1123),h=n(6982),f=n(5463),g=n(951),v=n(6949),m=n(4468),y=n(996);n(9560);var b,I,C=n(4543),w=n(3466),x=n(6665),k=n(1782);b=new Set(h.yasuniActions.map(function(e){return e.id})),I=new Map,h.yasuniActions.forEach(function(e){var t;return null===(t=e.combos)||void 0===t?void 0:t.forEach(function(t){var n;return(null!==(n=t.condition.requires)&&void 0!==n?n:[]).forEach(function(t){b.has(t)||f.yasuniKeyEventMap.has(t)||console.error('[combo-engine] Combo ID inconnu "'.concat(t,'" dans action "').concat(e.id,'"'))})})}),s.yasuniCause.forEach(function(e){return e.odds.forEach(function(e){return e.cuttings.forEach(function(e){new Set(e.actionIds).forEach(function(t){var n;b.has(t)||console.error("[yasuniCause] Cutting ".concat(e.id,' ("').concat(e.name,'"): actionId inconnu "').concat(t,'"')),I.set(t,(null!==(n=I.get(t))&&void 0!==n?n:0)+1)})})})}),h.yasuniActions.forEach(function(e){var t,n=null!==(t=I.get(e.id))&&void 0!==t?t:0;if(0!==n){var i=1===n?"unique":"shared";e.targeting!==i&&console.error('[yasuniActions] targeting incohérent pour "'.concat(e.id,'" (déclaré="').concat(e.targeting,'", attendu="').concat(i,'", occurrences=').concat(n,")"))}else console.error('[yasuniActions] Action non référencée dans yasuniCause "'.concat(e.id,'"'))}),console.info("✅ Action catalog coherence check passed"),document.addEventListener("DOMContentLoaded",function(){var e;new k.ActionImageModal;var t=function(t){if(document.querySelectorAll(".ff-tab-btn").forEach(function(e){e.classList.toggle("ff-tab-active",e.dataset.tab===t)}),document.querySelectorAll(".ff-panel-tab-pane").forEach(function(e){e.classList.toggle("ff-tab-active",e.id===t)}),"ff-tab-recherche"===t){var n=document.getElementById("global-search-input");null==n||n.focus()}"ff-tab-stack"===t&&(null==e||e())};document.querySelectorAll(".ff-tab-btn").forEach(function(e){e.addEventListener("click",function(){var n=e.dataset.tab;n&&t(n)})});try{var n=document.getElementById("resizer-details-panel"),i=document.getElementById("resizer-action-stack"),r=document.getElementById("resizer-recherche-split"),a=document.getElementById("resizer-recherche-context"),f=document.getElementById("cause-diagram-with-panel"),b=document.getElementById("toggle-cause-details-panel"),I=document.getElementById("details-panel-width"),S=document.getElementById("details-panel-width-value"),_=function(e,t,n){return Math.min(Math.max(e,t),n)},A={detailsPanelWidth:Math.round(.5*window.innerWidth),actionStackColumnWidth:Math.round(.5*window.innerWidth*.35),rechercheLeftWidth:260,rechercheContextHeight:280,detailsPanelIsMaximized:!1},E=function(e){var t=f?Math.max(260,Math.floor(.6*f.clientWidth)):520,n=_(Math.round(e),220,t);A.detailsPanelWidth=n,S&&(S.textContent="".concat(n,"px")),I&&(I.value="".concat(n)),document.documentElement.style.setProperty("--details-panel-width","".concat(n,"px"))},O=function(e){n&&(n.title=e?"Double-clic pour restaurer":"Glisser pour redimensionner · Double-clic pour plein écran")},D=function(e){var t=Math.max(80,A.detailsPanelWidth-80),n=_(Math.round(e),60,t);A.actionStackColumnWidth=n,document.documentElement.style.setProperty("--action-stack-column-width","".concat(n,"px"))},M=function(e){var t=Math.min(520,Math.max(180,Math.round(e)));A.rechercheContextHeight=t,document.documentElement.style.setProperty("--gs-recherche-context-height","".concat(t,"px"))},L=function(){E(A.detailsPanelWidth),D(A.actionStackColumnWidth)},F=function(){L()},T=function(e){f&&f.classList.toggle("details-collapsed",!e)},P=function(e,t,n,i,r){e&&e.addEventListener("pointerdown",function(a){a.preventDefault();var o="x"===t?a.clientX:a.clientY,s=i();e.classList.add("is-active"),document.body.classList.add("layout-resizing"),document.body.style.cursor=n;var l=function(e){var n="x"===t?e.clientX:e.clientY;r("x"===t?s+(n-o):s+(o-n))},c=function(){e.classList.remove("is-active"),document.body.classList.remove("layout-resizing"),document.body.style.cursor="",window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",c),window.removeEventListener("pointercancel",c)};window.addEventListener("pointermove",l),window.addEventListener("pointerup",c),window.addEventListener("pointercancel",c)})};F(),b&&(T(b.checked),b.addEventListener("change",function(e){T(e.target.checked)})),I&&(I.value="".concat(A.detailsPanelWidth),S&&(S.textContent="".concat(A.detailsPanelWidth,"px")),I.addEventListener("input",function(e){var t=parseInt(e.target.value,10)||600;E(t)})),n&&(O(A.detailsPanelIsMaximized),n.addEventListener("pointerdown",function(e){e.preventDefault();var t=e.clientX,i=A.detailsPanelWidth,r=!1;n.classList.add("is-active"),document.body.classList.add("layout-resizing"),document.body.style.cursor="col-resize";var a=function(e){r||(r=!0,A.detailsPanelIsMaximized&&(A.detailsPanelIsMaximized=!1,null==f||f.classList.remove("is-maximized"),n.classList.remove("is-maximized"),O(!1)));var a=e.clientX-t;E(i-a)},o=function(){n.classList.remove("is-active"),document.body.classList.remove("layout-resizing"),document.body.style.cursor="",window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",o),window.removeEventListener("pointercancel",o)};window.addEventListener("pointermove",a),window.addEventListener("pointerup",o),window.addEventListener("pointercancel",o)}),n.addEventListener("dblclick",function(e){e.preventDefault(),f&&(A.detailsPanelIsMaximized=!A.detailsPanelIsMaximized,f.classList.add("is-animating-width"),f.classList.toggle("is-maximized",A.detailsPanelIsMaximized),null==n||n.classList.toggle("is-maximized",A.detailsPanelIsMaximized),O(A.detailsPanelIsMaximized),window.setTimeout(function(){f.classList.remove("is-animating-width")},240))})),P(i,"x","col-resize",function(){return A.actionStackColumnWidth},function(e){D(e)}),P(r,"x","col-resize",function(){return A.rechercheLeftWidth},function(e){var t,n;t=e,n=Math.min(600,Math.max(160,Math.round(t))),A.rechercheLeftWidth=n,document.documentElement.style.setProperty("--gs-recherche-left-width","".concat(n,"px"))}),P(a,"y","row-resize",function(){return A.rechercheContextHeight},function(e){M(e)}),M(A.rechercheContextHeight),requestAnimationFrame(function(){var e=document.querySelector("#ff-tab-recherche .gs-search-stack");e&&e.clientHeight>50&&M(Math.round(.4*e.clientHeight))}),window.addEventListener("resize",function(){F()});var B=document.getElementById("svg-container-cause");if(!B)throw new Error("#svg-container-cause non trouvé");var G=B.clientWidth,R=B.clientHeight,q=Math.min(G,R),z={id:"yasuni",name:"Yasuni",components:s.yasuniCause.map(function(e){var t,n=e.odds.map(function(e){return{id:e.id,name:e.name,oddCutting:e.cuttings.map(function(e){var t,n;return{id:e.id,libelle:e.name,score:null!==(t=e.score)&&void 0!==t?t:.5,weight:(0,y.clampWeight)(null!==(n=e.weight)&&void 0!==n?n:1)}})}}),i=n.reduce(function(e,t){return e+t.oddCutting.reduce(function(e,t){return e+t.weight},0)},0);return{id:e.id,name:e.name,orientation:null!==(t=e.orientation)&&void 0!==t?t:"yin",odds:n,perimeterWeight:i}})},N=(0,u.validateCauseGraph)(z,l.default);N.length>0?console.error("❌ Invalid Yasuní interconnection graph",N):console.info("✅ Yasuní graph loaded (".concat(Object.keys(l.default).length," source nodes, ").concat((0,u.countEdges)(l.default)," edges)"));var j=(0,d.mapCauseToInternalModel)(z),H={minEdge:q,containerId:"svg-container-cause",borderAnimationDuration:p.animationConfig.borderColorCycleDurationMs},K=new c.D3GraphicsStrategy,V=new o.YinYangAppFactory(K),Y=V.create(j,H);Y.clearForceFieldDetails(),Y.initIdleDefault(),Y.applyChildrenFitScale(),Y.createFacetteImageRing();var W=new g.GlobalSearchController({onNavigate:function(){}});W.mount("global-search-widget"),W.setDetailPanel(document.getElementById("gs-recherche-right")),W.setSphereInfo(s.yasuniSphere.name,s.yasuniSphere.description),W.setOnHover(function(e){Y.searchPreviewHover(e)}),Y.setOnDiagramOddArcHover(function(e){W.highlightOddLegendChip(e)}),W.setOnOddLegendActiveChange(function(e,t,n){Y.searchActivateOdd(e,t,n)});var U,X,Z,Q,$=new Map(h.yasuniActions.map(function(e){return[e.id,e.name]})),J=new C.PanelManager({controllerCause:Y,yasuniCause:s.yasuniCause,actionNameMap:$,globalSearch:W,switchToTab:t,attachAxisResizer:P,layoutState:A,applyRechercheContextHeight:M,resizerRechercheContext:a});J.init(),new w.DiagramPanelBridge({panelManager:J,controllerCause:Y,switchToTab:t,yasuniCause:s.yasuniCause,actionNameMap:$,causeOddColors:m.causeOddColors,onDiagramCuttingNav:function(e){return null==U?void 0:U(e)},onDiagramComposanteNav:function(e){return null==X?void 0:X(e)},onDiagramActionDragIntent:function(){return null==Z?void 0:Z()},onStackPropagationNav:function(e,t,n){return null==Q?void 0:Q(e,t,n)}}).wire();var ee=document.getElementById("stack-nav-header");if(ee){var te=[],ne=-1,ie=!1,re=document.getElementById("stack-nav-back"),ae=document.getElementById("stack-nav-fwd"),oe=function(){re&&(re.disabled=ne<=0),ae&&(ae.disabled=ne>=te.length-1)},se=function(e){if(!ie){var t,n,i=te[ne];i&&(n=e,(t=i).type===n.type&&t.componentIndex===n.componentIndex&&("composante"===t.type||t.oddId===n.oddId&&t.cuttingIndex===n.cuttingIndex))||(te.splice(ne+1),te.push(e),te.length>30&&te.shift(),ne=te.length-1,oe())}},le=0,ce=function(e,t){var n=function(){var i;if(t===le)if(Y.view.viewInitializer.isComponentSwitching())window.setTimeout(n,60);else if("composante"!==e.type){var r=null===(i=s.yasuniCause[e.componentIndex])||void 0===i?void 0:i.id;r&&Y.showPropagationForContextCutting(r,e.oddId,e.cuttingIndex)||Y.searchNavigateToCutting(e.componentIndex,e.oddId,e.cuttingIndex,!0)}else Y.searchHandleComposanteClick(e.componentIndex)};n()},de=new v.StackNavOverlay({containerEl:ee,composantes:s.yasuniCause,onNavigate:function(e){J.syncDiagramToTarget(e),"cutting"===e.type&&se({type:"cutting",componentIndex:e.componentIndex,oddId:e.oddId,cuttingIndex:e.cuttingIndex})},onDeselect:function(e){"composante"===e?Y.deactivateComposanteFromHierarchy():Y.deactivateChildMenuFromHierarchy()}});de.setOnHover(function(e){Y.searchPreviewHover(e)});var ue=null,pe=function(){var e,t,n,i=Y.getActiveChildMeta();if(i){ue=null;var r=s.yasuniCause.find(function(e){return e.id===i.componentId});if(r){var a=s.yasuniCause.indexOf(r),o=r.odds.find(function(e){return e.id===i.oddId}),l=null==o?void 0:o.cuttings[i.cuttingIndex];l?(de.syncToActiveChild({label:l.name,oddColor:null!==(e=m.causeOddColors[i.oddId])&&void 0!==e?e:"#3a7abf",compId:r.id,oddId:i.oddId,cutIdx:i.cuttingIndex,stateValue:(0,y.stateFromTension)(null!==(t=l.score)&&void 0!==t?t:.5),weightValue:(0,y.clampWeight)(null!==(n=l.weight)&&void 0!==n?n:1)}),se({type:"cutting",componentIndex:a,oddId:i.oddId,cuttingIndex:i.cuttingIndex})):de.syncToActiveChild(null)}else de.syncToActiveChild(null)}else"composante"===(null==ue?void 0:ue.kind)?de.syncToActiveComposante(ue.name):"odd"===(null==ue?void 0:ue.kind)?de.syncToActiveOdd(ue.name):"sphere"===(null==ue?void 0:ue.kind)?de.syncToSphere(ue.name):"cutting"===(null==ue?void 0:ue.kind)?de.syncToActiveChild({label:ue.label,oddColor:ue.oddColor,compId:ue.compId,oddId:ue.oddId,cutIdx:ue.cutIdx,stateValue:ue.stateValue,weightValue:ue.weightValue}):de.syncToActiveChild(null)};Y.setOnActiveChildChange(pe),e=pe,Z=function(){return de.close()},Q=function(e,t,n){var i,r,a,o,l=s.yasuniCause.findIndex(function(t){return t.id===e});if(!(l<0)){var c=s.yasuniCause[l],d=null===(i=null==c?void 0:c.odds.find(function(e){return e.id===t}))||void 0===i?void 0:i.cuttings[n];if(d){var u=null!==(r=m.causeOddColors[t])&&void 0!==r?r:"#3a7abf",p=(0,y.stateFromTension)(null!==(a=d.score)&&void 0!==a?a:.5),h=(0,y.clampWeight)(null!==(o=d.weight)&&void 0!==o?o:1);ue={kind:"cutting",compId:e,oddId:t,cutIdx:n,label:d.name,oddColor:u,stateValue:p,weightValue:h},de.syncToActiveChild({label:d.name,oddColor:u,compId:e,oddId:t,cutIdx:n,stateValue:p,weightValue:h})}se({type:"cutting",componentIndex:l,oddId:t,cuttingIndex:n})}},X=function(e){var t;if(null===(t=document.getElementById("ff-tab-stack"))||void 0===t?void 0:t.classList.contains("ff-tab-active")){var n=s.yasuniCause[e];n&&(ue={kind:"composante",name:n.name},de.syncToActiveComposante(n.name),se({type:"composante",componentIndex:e}))}},Y.setOnHeaderUpdate(function(e,t){"d1"===(null==e?void 0:e.cssClass)&&t?(ue={kind:"composante",name:t},de.syncToActiveComposante(t)):"d2"===(null==e?void 0:e.cssClass)&&t?(ue={kind:"odd",name:t},de.syncToActiveOdd(t)):"d0"===(null==e?void 0:e.cssClass)&&t&&(ue={kind:"sphere",name:t},de.syncToSphere(t))}),Y.clearForceFieldDetails(),U=function(e){var t,n,i,r;if(null===(t=document.getElementById("ff-tab-stack"))||void 0===t?void 0:t.classList.contains("ff-tab-active")){var a=s.yasuniCause[e.componentIndex];if(a){var o=a.odds.find(function(t){return t.id===e.oddId}),l=null==o?void 0:o.cuttings[e.cuttingIndex];if(l){var c=null!==(n=m.causeOddColors[e.oddId])&&void 0!==n?n:"#3a7abf",d=(0,y.stateFromTension)(null!==(i=l.score)&&void 0!==i?i:.5),u=(0,y.clampWeight)(null!==(r=l.weight)&&void 0!==r?r:1);ue={kind:"cutting",compId:a.id,oddId:e.oddId,cutIdx:e.cuttingIndex,label:l.name,oddColor:c,stateValue:d,weightValue:u},de.syncToActiveChild({label:l.name,oddColor:c,compId:a.id,oddId:e.oddId,cutIdx:e.cuttingIndex,stateValue:d,weightValue:u}),se({type:"cutting",componentIndex:e.componentIndex,oddId:e.oddId,cuttingIndex:e.cuttingIndex})}}}},null==re||re.addEventListener("click",function(){ne<=0||(ne--,ie=!0,de.open(),ce(te[ne],++le),ie=!1,oe())}),null==ae||ae.addEventListener("click",function(){ne>=te.length-1||(ne++,ie=!0,de.open(),ce(te[ne],++le),ie=!1,oe())})}(0,x.mountVizControls)({controllerCause:Y,factory:V,layoutState:A,renderColumnLayouts:L,animationConfig:p.animationConfig})}catch(e){}})},1204(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getActionImageUrl=function(e,t){return"assets/actions/".concat(t,"/").concat(e,".webp")},t.getActionIconUrl=function(e){return"assets/icons/svg/".concat(e,".svg")},t.getOddIconUrl=function(e){return"assets/icons/odd/".concat(e,".webp")}},8474(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t,n){return(t=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(e,t)||s(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=s(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){l=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(l)throw a}}}}function s(e,t){if(e){if("string"==typeof e)return l(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}Object.defineProperty(t,"__esModule",{value:!0}),t.clampState=u,t.tensionFromState=function(e){return(0,d.clampScore)(1-u(e)/100)},t.absorptionMultiplier=p,t.gapMultiplier=h,t.absorptionRuleExplanation=function(e){return e<=39?"abs = 0.5 car state(to) ≤ 39 (faible capacité d’absorption).":e<=45?"abs = 1.0 car 39 < state(to) ≤ 45 (zone nominale basse).":e<=55?"abs = 1.2 car 45 < state(to) ≤ 55 (fenêtre optimale, effet bonifié).":e<=69?"abs = 1.0 car 55 < state(to) ≤ 69 (zone nominale haute).":"abs = 0.8 car state(to) > 69 (absorption modérée)."},t.gapRuleExplanation=function(e,t){return e>t+10?"gap = 1.2 car state(from) > state(to) + 10 (effet amplifié).":e<t-10?"gap = 0.6 car state(from) < state(to) - 10 (effet atténué).":"gap = 1.0 car |state(from) - state(to)| ≤ 10 (effet neutre)."},t.deriveOddStates=f,t.deriveCuttingStates=v,t.findNodeInTree=C,t.propagateActionInComponent=function(e,t,n,i,r){var a=f(e);return F(e.id,t,n,i,a)},t.computeActionPropagationDetails=T,t.propagateForceFieldActionInComponent=function(e,t,n,i,r,a,o,s){return T(e,t,n,i,r,0,o,s).edges},t.projectActionStateDetailsInComponent=P,t.projectActionStatesInComponent=function(e,t,n,i,r,a,o,s){return P(e,t,n,i,r,0,o,s).oddStates};var c=n(5533),d=n(996);function u(e){return Math.max(0,Math.min(100,e))}function p(e){return e<=39?.5:e<=45?1:e<=55?1.2:e<=69?1:.8}function h(e,t){return e>t+10?1.2:e<t-10?.6:1}function f(e){return Object.fromEntries(e.odds.map(function(e){var t=(0,d.oddTensionFromCuttings)(e.cuttingScores,e.cuttingWeights);return[e.id,(0,d.stateFromTension)(t)]}))}function g(e){return Array.isArray(e.cuttingIds)&&e.cuttingIds.length===e.cuttingScores.length?e.cuttingIds:e.cuttingScores.map(function(e,t){return t+1})}function v(e){return Object.fromEntries(e.odds.map(function(e){var t=g(e),n=Object.fromEntries(e.cuttingScores.map(function(e,n){return[t[n],(0,d.stateFromTension)((0,d.clampScore)(e))]}));return[e.id,n]}))}function m(e){return Object.fromEntries(e.odds.map(function(e){var t=g(e);return[e.id,Object.fromEntries(t.map(function(e){return[e,0]}))]}))}function y(e,t,n,i){var r,a=i[e];a&&void 0!==a[t]&&(a[t]=(null!==(r=a[t])&&void 0!==r?r:0)+n)}function b(e,t,n,i){var r=i[e];r&&void 0!==r[t]&&(r[t]=u(r[t]+n))}function I(e,t,n){var i,r=Object.values(null!==(i=n[e])&&void 0!==i?i:{});if(0!==r.length){var a=r.reduce(function(e,t){return e+t},0)/r.length;t[e]=u(a)}}function C(e,t){var n;return null!==(n=e.find(function(e){return e.toCuttingId===t}))&&void 0!==n?n:null}function w(e){return e.map(function(e){return{edge:e,rationale:e.rationale}})}function x(e,t){var n,i=e.find(function(e){return e.toCuttingId===t});return i?(null!==(n=i.targetedCuttings)&&void 0!==n?n:[]).map(function(t){var n=e.find(function(e){return e.toCuttingId===t.cuttingId});return n?{edge:n,rationale:t.rationale}:null}).filter(function(e){return null!==e}):null}function k(e){var t=new Set(e.flatMap(function(e){var t;return(null!==(t=e.targetedCuttings)&&void 0!==t?t:[]).map(function(e){return e.cuttingId})}));return e.filter(function(e){return!t.has(e.toCuttingId)})}function S(e,t,n,i,r,a,s,l,c,d,f,g){var v,m,y=l[r],b=c[r];if(y&&b){var I,C=o(e);try{for(C.s();!(I=C.n()).done;){var w=I.value,x=w.edge,k=w.rationale;if(!d.has(x.toCuttingId)){d.add(x.toCuttingId);var _=y[x.toCuttingId];if(void 0!==_){var A=p(_),E=h(g,_),O=n*x.w*A*E;Math.abs(O)<1e-9||(null==f||f.push(Object.assign({layerType:"intra",fromComponentId:a.id,toComponentId:a.id,fromOddId:r,toOddId:r,fromCuttingId:i,toCuttingId:x.toCuttingId,weight:x.w,deltaTo:O,baseDelta:n,propagationFactor:1,fromState:g,toState:_,absorption:A,gap:E},k?{rationale:k}:{})),y[x.toCuttingId]=u(_+O),b[x.toCuttingId]=(null!==(v=b[x.toCuttingId])&&void 0!==v?v:0)+O,S((null!==(m=x.targetedCuttings)&&void 0!==m?m:[]).map(function(e){var n=t.find(function(t){return t.toCuttingId===e.cuttingId});return n?{edge:n,rationale:e.rationale}:null}).filter(function(e){return null!==e}),t,O,x.toCuttingId,r,a,s,l,c,d,f,g))}}}}catch(e){C.e(e)}finally{C.f()}}}function _(e,t,n,i,r,s,l){var c,d=arguments.length>7&&void 0!==arguments[7]?arguments[7]:{},u=arguments.length>8?arguments[8]:void 0,f=arguments.length>9?arguments[9]:void 0,g=arguments.length>10?arguments[10]:void 0,v=null!==(c=r.intraOddByComponent[e.id])&&void 0!==c?c:{};Object.entries(v).forEach(function(r){var c,v,m,_,A=a(r,2),E=A[0],O=A[1];if(O&&0!==O.length&&n[E]&&i[E]){var D=null!==(c=s[E])&&void 0!==c?c:0;if(0!==D){var M=null==f?void 0:f[E],L=function(r){var a,s,l,c,d,f=n[E],g=i[E],v=void 0!==r?null!==(s=null!==(a=f[r])&&void 0!==a?a:t[E])&&void 0!==s?s:0:null!==(l=t[E])&&void 0!==l?l:0,m=o(O);try{for(m.s();!(d=m.n()).done;){var C=d.value,w=f[C.toCuttingId];if(void 0!==w){var x=p(w),k=h(v,w),S=D*C.w*x*k;Math.abs(S)<1e-9||(null==u||u.push(Object.assign({layerType:"intra",fromComponentId:e.id,toComponentId:e.id,fromOddId:E,toOddId:E,fromCuttingId:r,toCuttingId:C.toCuttingId,weight:C.w,deltaTo:S,baseDelta:D,propagationFactor:1,fromState:v,toState:w,absorption:x,gap:k},C.rationale?{rationale:C.rationale}:{})),b(E,C.toCuttingId,S,n),y(E,C.toCuttingId,S,i),g[C.toCuttingId]=(null!==(c=g[C.toCuttingId])&&void 0!==c?c:0)+S)}}}catch(e){m.e(e)}finally{m.f()}I(E,t,n)};if((null==g?void 0:g.has(E))&&void 0===M)L();else{var F,T,P=l[E],B=d[E],G=new Set;if(void 0!==B&&G.add(B),void 0!==M){var R=C(O,M);F=R?[{edge:R,rationale:R.rationale}]:w(k(O)),T=void 0}else if(void 0!==P){var q=x(O,P);if(!q)return void L(P);F=q,T=P,G.add(P)}else F=w(k(O)),T=void 0;var z=n[E],N=void 0!==T?null!==(m=null!==(v=z[T])&&void 0!==v?v:t[E])&&void 0!==m?m:0:null!==(_=t[E])&&void 0!==_?_:0;S(F,O,D,T,E,e,t,n,i,G,u,N),I(E,t,n)}}}})}var A=new WeakMap,E=new WeakMap,O=new WeakMap;function D(e){var t=E.get(e);if(t)return t;var n=f(e);return E.set(e,n),n}function M(e){var t=O.get(e);if(t)return t;var n=v(e);return O.set(e,n),n}function L(e){var t={};for(var n in e)t[n]=Object.assign({},e[n]);return t}function F(e,t,n,i,r,o){var s,l=null!==(s=t[(0,c.makeCauseNodeId)(e,n)])&&void 0!==s?s:[],d=r[n];return void 0===d?[]:l.map(function(t){var s=a(t.to.split("::"),2),l=s[0],c=void 0===l?"":l,u=s[1],f=void 0===u?"":u,g=c===e?r[f]:function(){var e=null==o?void 0:o.find(function(e){return e.id===c});if(e)return D(e)[f]}();if(void 0===g)return null;var v=p(g),m=h(d,g),y=i*t.w*v*m;return Object.assign(Object.assign({layerType:"inter",fromComponentId:e,toComponentId:c,fromOddId:n,toOddId:f,weight:t.w,deltaTo:y,baseDelta:i,propagationFactor:1,fromState:d,toState:g,absorption:v,gap:m},t.rationale?{rationale:t.rationale}:{}),void 0!==t.targetedCutting?{targetedCutting:t.targetedCutting}:{})}).filter(function(e){return null!==e})}function T(e,t,n,i,a,c,d,f){var g=Object.assign({},D(e)),v=L(M(e)),C=m(e);if(void 0===g[n])return{edges:[],oddStates:g,cuttingStates:v};var w=[],k=function(e,t,n){if(void 0!==n){var i=t[e];return void 0!==(null==i?void 0:i[n])?n:null}return null}(n,v,i);if(null===k)return{edges:[],oddStates:g,cuttingStates:v};var S=r({},n,a),E=r({},n,k),O=m(e);if(b(n,k,a,v),y(n,k,a,C),y(n,k,a,O),d){_(e,g,v,C,d,S,E,r({},n,k),w);var T=w.length;!function(e,t,n,i,r){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:i,o=arguments.length>6?arguments[6]:void 0,s=arguments.length>7?arguments[7]:void 0,l=function(e){var t=A.get(e);return t||(t=Object.values(e.bridgeEdgesByComponent).flat(),A.set(e,t)),t}(r),c=new Map;c.set(e.id,e),(null!=s?s:[]).forEach(function(e){c.set(e.id,e)});var d=new Map;d.set(e.id,n);var f=new Map;f.set(e.id,i);var g=new Map;g.set(e.id,a);var v=function(e){c.has(e)&&(d.has(e)||d.set(e,L(M(c.get(e)))),f.has(e)||f.set(e,m(c.get(e))),g.has(e)||g.set(e,m(c.get(e))))};l.forEach(function(i){var r,a,s,l,c=null!==(r=i.fromComponentId)&&void 0!==r?r:e.id,m=null!==(a=i.toComponentId)&&void 0!==a?a:e.id;v(c),v(m);var y=d.get(c),b=d.get(m),C=g.get(c),w=f.get(m);if(y&&b&&C&&w){var x=y[i.fromOddId],k=b[i.toOddId],S=C[i.fromOddId],_=w[i.toOddId];if(x&&k&&S&&_){var A=x[i.fromCuttingId],E=k[i.toCuttingId];if(void 0!==A&&void 0!==E){var O=null!==(s=S[i.fromCuttingId])&&void 0!==s?s:0;if(0!==O){var D=O*i.w*p(E)*h(A,E);null==o||o.push(Object.assign({layerType:"bridge",fromComponentId:c,toComponentId:m,fromOddId:i.fromOddId,toOddId:i.toOddId,fromCuttingId:i.fromCuttingId,toCuttingId:i.toCuttingId,weight:i.w,deltaTo:D,baseDelta:O,propagationFactor:1,fromState:A,toState:E,absorption:p(E),gap:h(A,E)},i.rationale?{rationale:i.rationale}:{})),k[i.toCuttingId]=u(E+D),_[i.toCuttingId]=(null!==(l=_[i.toCuttingId])&&void 0!==l?l:0)+D,m===e.id&&I(i.toOddId,t,n)}}}}})}(e,g,v,C,d,O,w,f);var P=function(e,t,n){var i,r,a,s,l=null!==(i=n.intraOddByComponent[t])&&void 0!==i?i:{},c={},d={},u={},p=o(e);try{for(p.s();!(s=p.n()).done;){var h=s.value;if(h.toComponentId===t&&void 0!==h.toCuttingId){var f=l[h.toOddId];if(f){var g=x(f,h.toCuttingId);if(null!==g&&0!==g.length){c[h.toOddId]=(null!==(r=c[h.toOddId])&&void 0!==r?r:0)+h.deltaTo;var v=Math.abs(h.deltaTo);v>(null!==(a=d[h.toOddId])&&void 0!==a?a:0)&&(d[h.toOddId]=v,u[h.toOddId]=h.toCuttingId)}}}}}catch(e){p.e(e)}finally{p.f()}return{oddBudget:c,sourceCuttingByOdd:u}}(w.slice(T),e.id,d);Object.keys(P.oddBudget).length>0&&_(e,g,v,C,d,P.oddBudget,P.sourceCuttingByOdd,{},w)}var B,G=F(e.id,t,n,a,g,f);w.push.apply(w,function(e){if(Array.isArray(e))return l(e)}(B=G.map(function(e){return Object.assign(Object.assign({},e),{fromCuttingId:k})}))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(B)||s(B)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}());var R={},q={},z={},N=new Set;return G.forEach(function(t){var n;t.toComponentId===e.id&&(R[t.toOddId]=(null!==(n=R[t.toOddId])&&void 0!==n?n:0)+t.deltaTo,q[t.toOddId]=void 0,void 0!==t.targetedCutting?(z[t.toOddId]=t.targetedCutting,N.delete(t.toOddId)):void 0===z[t.toOddId]&&N.add(t.toOddId))}),d&&_(e,g,v,C,d,R,q,{},w,z,N),function(e,t){Object.keys(t).forEach(function(n){I(n,e,t)})}(g,v),{edges:w,oddStates:g,cuttingStates:v}}function P(e,t,n,i,r,a,o,s){var l=T(e,t,n,i,r,0,o,s);return{oddStates:l.oddStates,cuttingStates:l.cuttingStates}}},8286(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isStackModeActive=function(){var e,t;return null!==(t=null===(e=document.getElementById("ff-tab-stack"))||void 0===e?void 0:e.classList.contains("ff-tab-active"))&&void 0!==t&&t}},5533(e,t){function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function i(e,t){return"".concat(e,"::").concat(t)}function r(e){return e.components.flatMap(function(e){return e.odds.map(function(t){return i(e.id,t.id)})})}Object.defineProperty(t,"__esModule",{value:!0}),t.makeCauseNodeId=i,t.listCauseNodeIds=r,t.validateCauseGraph=function(e,t){var i=[],a=new Set(r(e));return Object.entries(t).forEach(function(e){var t,r,o=(r=2,function(e){if(Array.isArray(e))return e}(t=e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(t,r)||function(e,t){if(e){if("string"==typeof e)return n(e,t);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?n(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=o[0],l=o[1];a.has(s)||i.push("Unknown source node: ".concat(s)),l.forEach(function(e,t){a.has(e.to)||i.push("Unknown target node from ".concat(s,"[").concat(t,"]: ").concat(e.to)),(!Number.isFinite(e.w)||e.w<0||e.w>1)&&i.push("Invalid weight from ".concat(s,"[").concat(t,"] = ").concat(e.w," (expected [0..1])"))})}),i},t.countEdges=function(e){return Object.values(e).reduce(function(e,t){return e+t.length},0)}},996(e,t){function n(e){return 0===e.length?0:e.reduce(function(e,t){return e+t},0)/e.length}function i(e,t){var i=t.reduce(function(e,t){return e+Math.max(0,t)},0);return 0===i?n(e):e.reduce(function(e,n,i){var r;return e+n*Math.max(0,null!==(r=t[i])&&void 0!==r?r:0)},0)/i}function r(e){return Math.max(0,Math.min(1,e))}function a(e,t){return r(t&&t.length===e.length?i(e,t):n(e))}function o(e){return Math.max(t.WEIGHT_MIN,Math.min(t.WEIGHT_MAX,e))}Object.defineProperty(t,"__esModule",{value:!0}),t.WEIGHT_MAX=t.WEIGHT_MIN=t.oddTensionFromCuttings=void 0,t.average=n,t.weightedAverage=i,t.clampScore=r,t.tensionFromCuttings=a,t.stateFromTension=function(e){return Math.round(100*(1-r(e)))},t.clampWeight=o,t.effectiveWeightDelta=function(e,t){return o(e+t)-e},t.oddTensionFromCuttings=a,t.WEIGHT_MIN=0,t.WEIGHT_MAX=10},8214(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.syncChainCardHeight=i,t.watchChainCardHeight=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n;if(i(e,t),!e.__chainCardHeightObserver){var r=function(){if(!e.isConnected)return a.disconnect(),o.disconnect(),void(e.__chainCardHeightObserver=null);i(e,t)},a=new ResizeObserver(r);a.observe(e);var o=new MutationObserver(r);o.observe(e,{childList:!0}),e.__chainCardHeightObserver=a}};var n=".ff-cumulative-block, .gs-cutting-impact-block";function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n,i=e.querySelectorAll(t),r=e.querySelectorAll(".ff-chain-card");if(i.length<=1)return e.style.removeProperty("--ff-chain-card-height"),void r.forEach(function(e){return e.style.removeProperty("--ff-chain-card-height")});var a=i[0],o=a.querySelector(".ff-chain-card"),s=o?a.offsetHeight-o.offsetHeight:a.offsetHeight,l=e.clientHeight,c=Math.floor(l/2)-s,d=Math.max(110,Math.min(320,c)),u="".concat(d,"px");e.style.setProperty("--ff-chain-card-height",u),r.forEach(function(e){return e.style.setProperty("--ff-chain-card-height",u)})}},4620(e,t){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}function r(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.D3Animator=void 0;var a=function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)},(t=[{key:"applyColorAnimation",value:function(e,t,n){var i=document.createElementNS("http://www.w3.org/2000/svg","animate");i.setAttribute("attributeName","stop-color"),i.setAttribute("values",n.join(";")),i.setAttribute("dur","".concat(t,"ms")),i.setAttribute("repeatCount","indefinite"),e.appendChild(i)}}])&&i(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.D3Animator=a},601(e,t){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}function r(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.D3Element=void 0;var a=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.selection=t}return t=e,n=[{key:"appendElement",value:function(t){return new e(this.selection.append(t))}},{key:"setStyle",value:function(e,t){return this.selection.style(e,t),this}},{key:"setAttribute",value:function(e,t){return this.selection.attr(e,t),this}},{key:"addEventListener",value:function(e,t){this.selection.on(e,t)}},{key:"getSelection",value:function(){return this.selection}},{key:"select",value:function(t){return new e(this.selection.select(t))}},{key:"node",value:function(){return this.selection.node()}},{key:"getDimensions",value:function(){var e=this.selection.node();if(e instanceof SVGSVGElement){var t=e.getBoundingClientRect();return{width:t.width,height:t.height}}return{width:0,height:0}}},{key:"interruptAllAnimation",value:function(){this.selection.interrupt().selectAll("*").interrupt()}},{key:"applyContinuousRotation",value:function(e,t,n){var i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];this.selection.transition().duration(e).attrTween("transform",function(){return function(e){return"rotate(".concat(e*(i?360:-360),",").concat(t,",").concat(n,")")}})}},{key:"applyTranslationAndRotationAltogether",value:function(e,t,n,i,r,a){this.selection.transition().duration(e).attrTween("transform",function(){return function(e){var o=2*e*Math.PI*(r?1:-1),s=i*Math.sin(o),l=i-i*Math.cos(o),c=t+s,d=n+l,u="yang"===a?3:-1,p=180*o/Math.PI;return"rotate(".concat(u*p,", ").concat(c,", ").concat(d,") translate(").concat(s,", ").concat(l,")")}})}}],n&&i(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,n}();t.D3Element=a},8317(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function a(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,o(i.key),i)}}function o(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var s,l=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),c=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),d=this&&this.__importStar||(s=function(e){return s=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},s(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=s(e),i=0;i<n.length;i++)"default"!==n[i]&&l(t,e,n[i]);return c(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.D3GraphicsStrategy=void 0;var u=d(n(600)),p=n(601),h=n(4620),f=function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.animator=new h.D3Animator,this.currentScale=1,this.currentY=0,this.currentX=0,this.arcMaskCache=new Map,this.underlyingGradientCache=new Map,this.maskIdCurrentCacheKey=new Map},t=[{key:"initialize",value:function(e,t){var n=u.select("#".concat(e)).append("svg").attr("width",t).attr("height",t);return this.defs=new p.D3Element(n.append("defs")),new p.D3Element(n)}},{key:"resizeGroup",value:function(e,t,n,i){e.setAttribute("transform","translate(".concat(n,", ").concat(i,")\n scale(").concat(t,")\n translate(").concat(-n,", ").concat(-i,") "))}},{key:"drawArc",value:function(e,t,n,i,r,a,o,s){var l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=u.arc().innerRadius(i).outerRadius(r).startAngle(a).endAngle(o).cornerRadius(l);return e.appendElement("path").setAttribute("d",c).setAttribute("transform","translate(".concat(t,",").concat(n,")")).setStyle("fill",s)}},{key:"drawCircle",value:function(e,t,n,i,r){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;return e.appendElement("circle").setAttribute("cx",t.toString()).setAttribute("cy",n.toString()).setAttribute("r",i.toString()).setStyle("fill",r).setStyle("opacity",a.toString())}},{key:"escapeAttributeValue",value:function(e){return e.replace(/\\/g,"\\\\").replace(/\"/g,'\\"')}},{key:"getDefById",value:function(e){if(!this.defs)return null;var t=this.defs.node();if(!t)return null;if("undefined"!=typeof CSS&&"function"==typeof CSS.escape)return t.querySelector("#".concat(CSS.escape(e)));var n=this.escapeAttributeValue(e);return t.querySelector('[id="'.concat(n,'"]'))}},{key:"defExists",value:function(e){return!!this.getDefById(e)}},{key:"getCacheKey",value:function(e){return e.map(function(e){return"number"==typeof e?e.toFixed(4):String(e)}).join("|")}},{key:"createLinearGradient",value:function(e,t,n,i,r,a,o){var s=this.getDefById(e);if(s)return new p.D3Element(u.select(s));var l=this.defs.appendElement("linearGradient").setAttribute("id",e).setAttribute("x1",t).setAttribute("y1",n).setAttribute("x2",i).setAttribute("y2",r).setAttribute("gradientUnits",o);return a.forEach(function(e){l.appendElement("stop").setAttribute("offset",e.offset).setAttribute("stop-color",e.color).setAttribute("stop-opacity",e.opacity.toString())}),l}},{key:"createRadialGradient",value:function(e,t,n,i,r,a){var o=this.getDefById(e);if(o)return new p.D3Element(u.select(o));var s=this.defs.appendElement("radialGradient").setAttribute("id",e).setAttribute("cx",t).setAttribute("cy",n).setAttribute("r",i).setAttribute("gradientUnits",a);return r.forEach(function(e){s.appendElement("stop").setAttribute("offset",e.offset).setAttribute("stop-color",e.color).setAttribute("stop-opacity",e.opacity.toString())}),s}},{key:"createArc",value:function(e,t,n,i){return u.arc().innerRadius(e).outerRadius(t).startAngle(n).endAngle(i)}},{key:"createYinOrYangArcMask",value:function(e,t,n,i,r,a,o,s){var l,c=arguments.length>8&&void 0!==arguments[8]?arguments[8]:1,d=Math.max(0,Math.min(1,c)),u=this.getCacheKey(["arc-mask",e,t,n,i,r,a,o,s,d]),p=this.arcMaskCache.get(u);if(p&&this.maskIdCurrentCacheKey.get(e)===u&&this.defExists(p))return p;var h=Math.PI-a,f=Math.PI-o,g=this.createArc(i,r,"yang"===s?a:h,"yang"===s?o:f),v="".concat(e,"-start"),m="".concat(e,"-end"),y=this.getDefById(e);y&&(null===(l=y.parentNode)||void 0===l||l.removeChild(y)),this.createLinearGradient(v,"0%","0%","100%","0%",[{offset:"0%",color:"white",opacity:d},{offset:"100%",color:"white",opacity:0}],"objectBoundingBox"),this.createLinearGradient(m,"0%","0%","100%","0%",[{offset:"0%",color:"white",opacity:0},{offset:"100%",color:"white",opacity:d}],"objectBoundingBox");var b=this.defs.appendElement("mask").setAttribute("id",e),I=180+180*("yang"===s?a:h)/Math.PI,C=.1*r;b.appendElement("rect").setAttribute("x",(t-("yang"===s?0:C)).toString()).setAttribute("y",n.toString()).setAttribute("transform","rotate(".concat(I,",").concat(t,",").concat(n,")")).setAttribute("width",C.toString()).setAttribute("height",r.toString()).setAttribute("fill","url(#".concat("yang"===s?v:m,")"));var w=180+180*("yang"===s?o:f)/Math.PI;b.appendElement("rect").setAttribute("x",(t-("yang"===s?C:0)).toString()).setAttribute("y",n.toString()).setAttribute("transform","rotate(".concat(w,",").concat(t,",").concat(n.toString(),")")).setAttribute("width",C.toString()).setAttribute("height",r.toString()).setAttribute("fill","url(#".concat("yang"===s?m:v,")")),b.appendElement("path").setAttribute("d",g({})||"").setAttribute("transform","translate(".concat(t,", ").concat(n.toString(),")")).setAttribute("fill","white");var x=this.maskIdCurrentCacheKey.get(e);return x&&x!==u&&this.arcMaskCache.delete(x),this.arcMaskCache.set(u,e),this.maskIdCurrentCacheKey.set(e,u),e}},{key:"createBorderMask",value:function(e,t,n,i,r){var a=this.createArc(i,r,0,2*Math.PI),o=this.defs.appendElement("mask").setAttribute("id",e),s=this.defs.appendElement("radialGradient").setAttribute("id","borderMaskGradient").setAttribute("cx","50%").setAttribute("cy","50%").setAttribute("r","50%"),l=i/r,c=100*l,d=c+100*(1-l)*.7;s.appendElement("stop").setAttribute("offset","".concat(c,"%")).setAttribute("stop-color","white").setAttribute("stop-opacity","1"),s.appendElement("stop").setAttribute("offset","".concat(d,"%")).setAttribute("stop-color","white").setAttribute("stop-opacity","0"),o.appendElement("path").setAttribute("d",a({})||"").setAttribute("transform","translate(".concat(t,", ").concat(n,")")).setAttribute("fill","url(#borderMaskGradient)")}},{key:"changeBorderColors",value:function(e,t,n){var i=t;n.push(n[0]),this.animator.applyColorAnimation(e.select("stop:first-child").node(),i,n);var a=function(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(n).filter(function(e){return void 0!==e});a.length>0&&a.unshift(a.pop()),a.push(a[0]),this.animator.applyColorAnimation(e.select("stop:last-child").node(),i,a)}},{key:"drawLineWithGradient",value:function(e,t,n,i,r,a){e.appendElement("line").setAttribute("x1",t.toString()).setAttribute("y1",n.toString()).setAttribute("x2",i.toString()).setAttribute("y2",r.toString()).setStyle("stroke","url(#".concat(a,")"))}},{key:"createUnderlyingCircleGradient",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,r=Math.max(.2,Math.min(1,n)),a=Math.max(0,Math.min(1,i)),o=this.getCacheKey(["underlying-gradient",e,t,r,a]),s=this.underlyingGradientCache.get(o);if(s&&this.defExists(s))return s;var l=this.defs.appendElement("radialGradient").setAttribute("id",e).setAttribute("cx","50%").setAttribute("cy","50%").setAttribute("r","50%");return l.appendElement("stop").setAttribute("offset","0%").setAttribute("stop-color",t).setAttribute("stop-opacity",a.toString()),l.appendElement("stop").setAttribute("offset","".concat(Math.round(100*r),"%")).setAttribute("stop-color",t).setAttribute("stop-opacity","0"),r<1&&l.appendElement("stop").setAttribute("offset","100%").setAttribute("stop-color",t).setAttribute("stop-opacity","0"),this.underlyingGradientCache.set(o,e),e}},{key:"createUnderlyingCircleWithArcMask",value:function(e,t,n,i,r,a){var o=this.drawCircle(n,i,r,a,"url(#".concat(t,")"));e&&o.setAttribute("mask","url(#".concat(e,")"))}}],t&&a(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.D3GraphicsStrategy=f},6049(e,t){function n(e){return(Math.round(10*e)/10).toString().replace(".",",")}function i(e){return e<0?"−".concat(n(-e)):"+".concat(n(e))}function r(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",i=arguments.length>3?arguments[3]:void 0,r=arguments.length>4&&void 0!==arguments[4]&&arguments[4],a=n?" ".concat(n):"",o=i?' title="'.concat(i.replace(/"/g,"""),'"'):"",s=r?" dchip--neg":"",l=t?'<span class="dchip dchip--weight">'.concat(t,"</span>"):"";return'<span class="dchips'.concat(a,'"').concat(o,">")+'<span class="dchip dchip--score'.concat(s,'">').concat(e,"</span>").concat(l,"</span>")}Object.defineProperty(t,"__esModule",{value:!0}),t.formatDelta=n,t.formatSignedDelta=i,t.buildActionChipsHtml=function(e){return r(i(e.baseDelta),void 0===(t=e.weightDelta)||0===t?void 0:'<span class="dchip-arrow">'.concat(t>0?"▲":"▼","</span>")+n(Math.abs(t)),"",void 0,e.baseDelta<0);var t},t.buildKeyEventChipsHtml=function(e){return r(i(e.scoreBonus),0===e.weightBonus?void 0:i(e.weightBonus),"",void 0,e.scoreBonus<0)}},6255(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.buildScoreDeltaRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if("number"!=typeof e||Math.abs(e)<1e-9)return null;var n=(0,i.scoreDeltaColor)(e,t);return{text:"Δ ".concat(e>=0?"+":"").concat(e.toFixed(1)),fill:n.fill,glow:n.glow}},t.buildWeightDeltaRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return"number"!=typeof e||0===e?null:{text:"".concat(e<0?"▼":"▲"," ").concat(e>=0?"+":"").concat(e),fill:t?i.WEIGHT_DELTA_COLOR_ON_LIGHT:i.WEIGHT_DELTA_COLOR,glow:t?i.DELTA_GLOW_ON_LIGHT:i.WEIGHT_DELTA_GLOW_COLOR}},t.appendDeltaScrim=function(e,t){e.append("rect").attr("data-role","delta-scrim").attr("x",t.centerX-t.halfWidth).attr("y",t.centerY-t.halfHeight).attr("width",2*t.halfWidth).attr("height",2*t.halfHeight).attr("rx",t.cornerRadius).style("fill","rgba(4, 7, 14, 0.58)").style("filter","blur(".concat(t.blur,"px)"))},t.appendDeltaRow=function(e,t,n,i,r,a,o){e.append("text").attr("data-role",r).attr("text-anchor","middle").attr("x",t).attr("y",n).style("paint-order","stroke").style("stroke",a.glow).style("stroke-width","0.65px").style("stroke-linejoin","round").style("text-shadow",o?"0 0 10px ".concat(a.glow,", 0 2px 6px rgba(0,0,0,0.95)"):"0 0 8px ".concat(a.glow)).style("font-size","".concat(i,"px")).style("font-weight","900").style("fill",a.fill).text(a.text)};var i=n(133)},8112(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getFacetteImageUrl=function(e){var t,i=null!==(t=n[e])&&void 0!==t?t:e;return"assets/facettes/".concat(i,".webp")};var n={indigenous_rights:"indigenous_right"}},6939(e,t){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}function r(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}Object.defineProperty(t,"__esModule",{value:!0}),t.GeometryUtils=void 0;var a=function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)},t=[{key:"calculateSmallCircleRadius",value:function(e,t){return 2*Math.PI*e/t/2}}],null&&i(e.prototype,null),t&&i(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();t.GeometryUtils=a},6713(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.buildHierBadgeHtml=function(e){return'<span class="ff-hier-badge ff-hier-badge--'.concat(e.cssClass,'">').concat(e.label,"</span>")},t.buildOddDotHtml=function(e){return'<span class="gs-hier-dot" style="background:'.concat(e,";box-shadow:0 0 6px 1px ").concat(e,'99;"></span>')},t.buildItemIconHtml=function(e){return'<span class="'.concat(arguments.length>1&&void 0!==arguments[1]&&arguments[1]?"gs-item-icon ke-medallion":"gs-item-icon",'"><img src="').concat(e,'" alt="" onerror="this.parentElement.remove()" /></span>')},t.buildStateChipHtml=r,t.buildWeightChipHtml=a,t.buildSelectedStateWeightChipsHtml=function(e){return["number"==typeof e.stateValue?r(e.stateValue):"","number"==typeof e.weightValue?a(e.weightValue):""].filter(Boolean).join(" ")};var i=n(996);function r(e){return'<span class="gs-state-chip" title="État actuel du satellite"><span class="gs-state-chip-value">'.concat(Math.round(e),'</span><span class="gs-state-chip-suffix">/100</span></span>')}function a(e){return'<span class="gs-state-chip gs-weight-chip" title="Poids actuel du satellite (importance dans sa facette)"><span class="gs-weight-chip-icon">⚖</span><span class="gs-state-chip-value">'.concat(Math.round(e),'</span><span class="gs-state-chip-suffix">/').concat(i.WEIGHT_MAX,"</span></span>")}},4498(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getIdleSphereImageUrl=function(){return"assets/ui/idle-sphere.webp"}},2823(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.UNLOCKED_KEY_EVENT_IDS=void 0,t.getKeyEventImageUrl=function(e,t){return"assets/key-events/".concat(t,"/").concat(e,".webp")},t.getKeyEventIconUrl=function(e){return"assets/key-events/icons/".concat(e,".svg")},t.isKeyEventUnlocked=function(e){return t.UNLOCKED_KEY_EVENT_IDS.has(e)},t.buildLockGlyphHtml=function(e){return'<svg class="'.concat(e,'" viewBox="0 0 24 24" aria-hidden="true">')+'<path d="M7 10.5V7.5a5 5 0 0 1 10 0v3" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" /><rect x="4.5" y="10.5" width="15" height="10.5" rx="2" fill="currentColor" /><circle cx="12" cy="15.2" r="1.5" fill="#16100a" /><rect x="11.1" y="15.2" width="1.8" height="3.2" rx="0.9" fill="#16100a" /></svg>'},t.UNLOCKED_KEY_EVENT_IDS=new Set(["key_ir_bouclier_defenseurs","key_ir_souverainete_territoriale","key_gt_transparence_totale","key_cep_boom_renouvelables","key_wsp_sante_pour_tous"])},9366(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.buildOddLegendHtml=function(){return u(c,"ODD de la sphère",d)},t.buildOddLegendHtmlForComposante=function(e){return u(Array.from(new Set(e.odds.map(function(e){return e.id}))).sort(function(e,t){return l(e)-l(t)}),"ODD de cette facette",function(){return e.id},e.id)},t.buildOddLegendHtmlForOdd=function(e,t){return u([e.id],"ODD de ce satellite",function(){return t},t)},t.toggleOddLegendChip=function(e){var t,n,s,l,c,d,u=e.closest(".odd-legend"),p=null==u?void 0:u.querySelector("[data-odd-legend-detail]"),h=e.dataset.oddLegendChip;if(!u||!p||!h)return!1;var f=e.classList.contains("odd-legend-chip--active");if(u.querySelectorAll(".odd-legend-chip--active").forEach(function(e){return e.classList.remove("odd-legend-chip--active")}),f)return p.hidden=!0,p.innerHTML="",!1;e.classList.add("odd-legend-chip--active");var g=null!==(t=r.causeOddColors[h])&&void 0!==t?t:"#7d92ad",v=null!==(s=null===(n=a.oddLabelsFr[h])||void 0===n?void 0:n.label)&&void 0!==s?s:h,m=null!==(c=null===(l=o.oddGenericDescriptionsFr[h])||void 0===l?void 0:l.description)&&void 0!==c?c:"",y=u.dataset.legendComposante;if(y){var b=i.yasuniCause.find(function(e){return e.id===y}),I=null==b?void 0:b.odds.find(function(e){return e.id===h});I&&(v=I.name,m=null!==(d=I.description)&&void 0!==d?d:m)}return p.style.setProperty("--chip-color",g),p.innerHTML='\n <span class="odd-legend-detail-dot" style="background:'.concat(g,'"></span><span class="odd-legend-detail-name">').concat(h.replace("ODD_","ODD ")," — ").concat(v,'</span>\n <p class="odd-legend-detail-desc">').concat(m,"</p>\n "),p.hidden=!1,!0},t.attachOddLegendHoverHandlers=function(e,t){e.querySelectorAll("[data-odd-legend-chip]").forEach(function(e){var n=e.dataset.oddLegendChip;if(n){var i=e.dataset.oddLegendComposante;e.addEventListener("mouseenter",function(){return t(n,i)}),e.addEventListener("mouseleave",function(){return t(null,i)})}})},t.setOddLegendHoverState=function(e,t){if(e.querySelectorAll(".odd-legend-chip--linked-hover").forEach(function(e){return e.classList.remove("odd-legend-chip--linked-hover")}),t){var n=e.querySelectorAll('[data-odd-legend-chip="'.concat(t,'"]')),i=Array.from(n).find(function(e){return null!==e.offsetParent});null==i||i.classList.add("odd-legend-chip--linked-hover")}};var i=n(14),r=n(4468),a=n(8100),o=n(6986),s=n(1204);function l(e){return parseInt(e.replace("ODD_",""),10)||0}var c=Array.from(new Set(i.yasuniCause.flatMap(function(e){return e.odds.map(function(e){return e.id})}))).sort(function(e,t){return l(e)-l(t)});function d(e){var t;return null===(t=i.yasuniCause.find(function(t){return t.odds.some(function(t){return t.id===e})}))||void 0===t?void 0:t.id}function u(e,t,n,i){if(0===e.length)return"";var a=e.map(function(e){var t,i,a,o=null!==(t=r.causeOddColors[e])&&void 0!==t?t:"#7d92ad",l=e.replace("ODD_",""),c=n(e),d=c?' data-odd-legend-composante="'.concat(c,'"'):"";return'<button type="button" class="odd-legend-chip odd-legend-chip--plaque" data-odd-legend-chip="'.concat(e,'"').concat(d,' style="--chip-color:').concat(o,";--chip-rgb:").concat((i=o,a=i.replace("#",""),[0,2,4].map(function(e){return parseInt(a.substr(e,2),16)}).join(",")),'"><img class="odd-legend-chip-icon" src="').concat((0,s.getOddIconUrl)(e),'" alt="ODD ').concat(l,'" loading="lazy" /></button>')}).join(""),o=i?' data-legend-composante="'.concat(i,'"'):"";return'\n <div class="odd-legend"'.concat(o,'>\n <div class="odd-legend-head">\n <span class="odd-legend-title">').concat(t,'</span>\n <span class="odd-legend-count">').concat(e.length," ODD couvert").concat(e.length>1?"s":"",'</span>\n </div>\n <div class="odd-legend-chips">').concat(a,'</div>\n <div class="odd-legend-detail" data-odd-legend-detail hidden></div>\n </div>\n ')}},7519(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MIN_OCCUPIED_POSITIONAL_EFF=void 0,t.rawPositionalEfficiency=r,t.occupiedSlotPositionalEfficiency=function(e,n,i){if(i<=0)return 1;var a=(e-n)/i;return Math.max(t.MIN_OCCUPIED_POSITIONAL_EFF,r(a))};var n=1.5/2.2,i=Math.pow(n,1.5)*Math.pow(1-n,.7);function r(e){return e<=0||e>=1?0:Math.pow(e,1.5)*Math.pow(1-e,.7)/i}t.MIN_OCCUPIED_POSITIONAL_EFF=.15},8849(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.appendYinYangWatermark=function(e){var t=e.append("g").attr("data-role",i).style("pointer-events","none");t.append("circle").attr("data-role","".concat(i,"-wash")).attr("r",1),t.append("path").attr("data-role","".concat(i,"-swirl")).attr("d","M0,-1 A1,1 0 0,1 0,1 A0.5,0.5 0 0,1 0,0 A0.5,0.5 0 0,0 0,-1 Z"),t.append("circle").attr("data-role","".concat(i,"-eye-void")).attr("cy",-.5).attr("r",.14),t.append("circle").attr("data-role","".concat(i,"-eye-swirl")).attr("cy",.5).attr("r",.14)},t.styleYinYangWatermark=function(e,t){var r=t.radius,a=t.color,o=void 0===a?"#ffc870":a,s=t.intensity,l=void 0===s?1:s,c=e.select('g[data-role="'.concat(i,'"]'));if(!c.empty()){c.attr("transform","scale(".concat(r,")"));var d=function(e,t){c.select('[data-role="'.concat(i,"-").concat(t,'"]')).attr("fill",o).attr("opacity",n[e]*l)};d("wash","wash"),d("swirl","swirl"),d("eyeOnVoid","eye-void"),d("eyeOnSwirl","eye-swirl")}};var n={wash:.1,swirl:.26,eyeOnVoid:.14,eyeOnSwirl:.26},i="yinyang-watermark"},1520(e,t,n){n.d(t,{A:()=>s});var i=n(1601),r=n.n(i),a=n(6314),o=n.n(a)()(r());o.push([e.id,"/* Vignettes des cartes d'action (ANALYSE mode STACK uniquement) */\n\n.action-thumb {\n cursor: zoom-in;\n object-fit: cover;\n border-radius: 4px;\n border: 1px solid rgba(120, 170, 220, 0.25);\n flex: none;\n}\n\n.ff-card-body {\n display: flex;\n flex-direction: column;\n}\n\n/* Conteneur de la vignette : occupe tout l'espace restant du body, que la\n carte n'ait que l'image (source simple) ou image + liens de propagation\n superposés (voir .ff-card-steps-overlay). */\n.ff-card-media {\n position: relative;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n border-radius: 4px;\n /* Fond derrière l'image : avec object-fit: contain, une illustration dont\n le ratio s'écarte de --ff-card-image-ratio laisse une bande fine. Un fond\n sombre plein la rend délibérée plutôt qu'accidentelle. */\n background: #06080e;\n}\n\n/* Vignette plein cadre ouvrant sa version HD au clic sans passer par le\n catalogue d'actions (contrat data-full-src, cf. ActionImageModal). */\n.ff-zoom-thumb {\n cursor: zoom-in;\n}\n\n/* contain (et non cover) : l'illustration s'affiche TOUJOURS en entier, quelle\n que soit la hauteur de la carte — y compris réduite par chainCardHeight.ts\n quand deux blocs ou plus sont affichés, où elle rapetisse au lieu d'être\n rognée. C'est --ff-card-height-default, calée sur --ff-card-image-ratio, qui\n fait qu'au format nominal l'image remplit le cadre sans bande vide ; contain\n n'est là que pour absorber les écarts (en-tête sur 1 ou 2 lignes, quelques\n illustrations en 1024×1536, carte réduite). Remplace un ancien\n cover + object-position: top, qui n'exposait que les ~2/3 hauts de l'image. */\n.ff-card-thumb {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border: none;\n border-radius: 0;\n object-fit: contain;\n object-position: center;\n}\n\n/* Liens de propagation en surimpression, ancrés en bas — le premier lien est\n visible en bas de la carte, et on scrolle/glisse vers le haut pour faire\n apparaître les suivants par-dessus l'image. Dégradé sombre pour la lisibilité\n du texte, plus opaque en bas (où le texte est le plus dense) que vers le haut. */\n.ff-card-steps-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n /* column-reverse (pas justify-content:flex-end) : avec justify-content:flex-end,\n le contenu qui déborde \"avant\" le début visuel n'est pas mesurable par\n scrollHeight et reste bloqué à scrollTop=0 (bug connu de flexbox). En\n inversant l'axe, le débordement se fait normalement côté \"fin\" et devient\n scrollable — le DOM garde son ordre naturel (premier lien en dernier enfant). */\n flex-direction: column-reverse;\n overflow-y: auto;\n overscroll-behavior: contain;\n touch-action: pan-y;\n cursor: grab;\n background: linear-gradient(\n to top,\n rgba(6, 12, 24, 0.94) 0%,\n rgba(6, 12, 24, 0.75) 45%,\n rgba(6, 12, 24, 0) 100%\n );\n}\n\n.ff-card-steps-overlay:active {\n cursor: grabbing;\n}\n\n.ff-card-steps-overlay .ff-card-steps {\n flex: none;\n}\n\n/* Popup de consultation (version Full) */\n\n.action-image-modal-overlay[hidden] {\n display: none;\n}\n\n.action-image-modal-overlay {\n position: fixed;\n inset: 0;\n z-index: 10000;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(4, 10, 22, 0.7);\n opacity: 0;\n transition: opacity 180ms ease;\n}\n\n.action-image-modal-overlay--open {\n opacity: 1;\n}\n\n.action-image-modal-dialog {\n position: relative;\n max-width: min(90vw, 900px);\n max-height: 90vh;\n transform: scale(0.96);\n transition: transform 180ms ease;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.action-image-modal-overlay--open .action-image-modal-dialog {\n transform: scale(1);\n}\n\n.action-image-modal-img {\n max-width: 100%;\n max-height: calc(90vh - 40px);\n object-fit: contain;\n border-radius: 6px;\n box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);\n}\n\n.action-image-modal-caption {\n margin-top: 10px;\n color: #e8f0fb;\n font-size: var(--fs-14);\n text-align: center;\n}\n\n.action-image-modal-close {\n position: absolute;\n top: -16px;\n right: -16px;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n border: none;\n background: rgba(12, 24, 52, 0.9);\n color: #e8f0fb;\n font-size: var(--fs-14);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.action-image-modal-close:hover {\n background: rgba(64, 135, 210, 0.9);\n}\n\n/* ── Cartouche \"verrouillé\" — remplace l'illustration d'un Événement Clé pas\n encore débloqué (voir isKeyEventUnlocked, utils/keyEventImages.ts).\n Occupe exactement le cadre de .ff-card-thumb pour que la carte garde sa\n silhouette : même carte, image en moins. Hachures diagonales discrètes,\n grammaire de \"zone indisponible\", en gris froid — le retrait de l'ambre\n est ce qui distingue un Événement Clé verrouillé d'un débloqué. ── */\n.ff-card-locked {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 4px;\n color: #6f6d66;\n background:\n repeating-linear-gradient(\n -45deg,\n rgba(255, 255, 255, 0.022) 0 6px,\n rgba(255, 255, 255, 0) 6px 12px\n ),\n #131316;\n cursor: default;\n}\n\n.ff-card-locked-glyph {\n width: 22px;\n height: 22px;\n color: #83817a;\n}\n\n.ff-card-locked-label {\n font-size: var(--fs-9);\n text-transform: uppercase;\n letter-spacing: 0.16em;\n color: #8d8b83;\n}\n\n\n",""]);const s=o},9565(e,t,n){n.d(t,{A:()=>s});var i=n(1601),r=n.n(i),a=n(6314),o=n.n(a)()(r());o.push([e.id,"* {\n box-sizing: border-box;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: Arial, sans-serif;\n background-color: #05070d;\n overflow: hidden;\n}\n\n:root {\n --details-panel-width: 50vw;\n --action-stack-column-width: calc(var(--details-panel-width) * 0.35);\n\n /* ── UI font-size scale tokens (reference: 1440px viewport) ── */\n /* Min = original size (never shrink), preferred grows above 1440px, max ~+20% */\n --fs-7: clamp(7px, 0.49vw, 8.5px);\n --fs-8: clamp(8px, 0.56vw, 9.5px);\n --fs-8-5: clamp(8.5px, 0.59vw, 10px);\n --fs-9: clamp(9px, 0.625vw, 10.5px);\n --fs-9-5: clamp(9.5px, 0.66vw, 11px);\n --fs-10: clamp(10px, 0.694vw, 12px);\n --fs-10-5: clamp(10.5px, 0.729vw, 12.5px);\n --fs-11: clamp(11px, 0.764vw, 13px);\n --fs-11-5: clamp(11.5px, 0.799vw, 13.5px);\n --fs-12: clamp(12px, 0.833vw, 14px);\n --fs-13: clamp(13px, 0.903vw, 15px);\n --fs-14: clamp(14px, 0.972vw, 16px);\n --fs-15: clamp(15px, 1.042vw, 17.5px);\n --fs-16: clamp(16px, 1.111vw, 19px);\n --fs-18: clamp(18px, 1.250vw, 21px);\n --fs-20: clamp(20px, 1.389vw, 23px);\n --fs-26: clamp(26px, 1.806vw, 30px);\n --fs-28: clamp(28px, 1.944vw, 32px);\n\n /* ── Dimensions des cartes (.ff-chain-card — jeu de cartes, source unique\n de vérité : toute carte, quel que soit son type — action, combo,\n amplificateur, Bilan, Événement Clé — partage exactement ces mêmes\n dimensions, comme dans un vrai jeu de cartes). ── */\n --ff-card-width-collapsed: 28px;\n --ff-card-width-expanded: 200px;\n /* Hauteur calée sur le format des illustrations : à 200px de large, une\n image au ratio --ff-card-image-ratio occupe ~280px, auxquels s'ajoutent\n l'en-tête (1 à 2 lignes de titre) et les bordures. Voir le commentaire\n détaillé sur .ff-chain-card dans details-panel.css. */\n --ff-card-height-default: 320px;\n /* Format natif des illustrations produites par les pipelines images\n (1024×1450 sur la quasi-totalité du catalogue — voir\n documentation/assets-pipeline.md). Sert à donner au cadre de la vignette\n la forme de l'image, pour qu'elle s'affiche ENTIÈRE sans bandes vides. */\n --ff-card-image-ratio: 1024 / 1450;\n\n /* ── Couleurs des blocs d'action (source unique de vérité) ── */\n /* Action directe : teinte bleue */\n --action-direct-bg: rgba(12, 24, 52, 0.5);\n --action-direct-border: rgba(64, 135, 210, 0.18);\n --action-direct-accent: rgba(64, 135, 210, 0.35);\n /* Action propagée : teinte verte */\n --action-propagated-bg: rgba(16, 44, 28, 0.45);\n --action-propagated-border: rgba(52, 175, 120, 0.18);\n --action-propagated-accent: rgba(52, 175, 120, 0.35);\n /* Événement Clé : teinte ambre, même famille que .ff-chain-keyevent-detail\n (details-panel.css) — cohérence de couleur entre la carte et le bloc qui\n l'enveloppe dans la vue cumulative. */\n --action-keyevent-bg: rgba(48, 36, 8, 0.45);\n --action-keyevent-border: rgba(224, 160, 48, 0.18);\n --action-keyevent-accent: rgba(224, 160, 48, 0.45);\n}\n",""]);const s=o},4852(e,t,n){n.d(t,{A:()=>s});var i=n(1601),r=n.n(i),a=n(6314),o=n.n(a)()(r());o.push([e.id,'/* Control blocks */\n.control-block {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.control-block label {\n font-size: var(--fs-12);\n color: #666;\n font-weight: bold;\n}\n\n.control-block input[type="range"] {\n width: 100%;\n cursor: pointer;\n}\n\n.slider-value {\n text-align: right;\n font-size: var(--fs-12);\n font-weight: bold;\n color: #333;\n font-family: monospace;\n}\n\n.control-block-inline {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.control-block-inline label {\n font-size: var(--fs-12);\n color: #666;\n font-weight: bold;\n}\n\n/* Shared control style */\n.shared-control {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: var(--fs-11);\n}\n\n.shared-control label {\n font-weight: bold;\n color: #333;\n}\n\n.shared-control input[type="range"] {\n width: 100px;\n}\n\n.shared-control span {\n min-width: 30px;\n font-family: monospace;\n}\n\n.shared-controls-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 8px 10px;\n border: 1px solid #e2e2e2;\n border-radius: 8px;\n background: #fafafa;\n min-width: 190px;\n flex: 1 1 220px;\n}\n\n.shared-controls-title {\n font-size: var(--fs-12);\n font-weight: bold;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: #444;\n}\n',""]);const s=o},3672(e,t,n){n.d(t,{A:()=>s});var i=n(1601),r=n.n(i),a=n(6314),o=n.n(a)()(r());o.push([e.id,"/* ============================================================\n delta-chips.css\n Chips de fin de ligne partagées — arbre Recherche et cartes du\n panneau de détail. Voir src/utils/deltaChips.ts pour la grammaire.\n\n Vert = équilibre en hausse, rouge = équilibre en baisse (action\n adverse, malus), doré = poids : les couleurs déjà utilisées par les\n cartes du rail. Tout est additif (signe + ou −) et la flèche ▲/▼\n porte le signe du poids — jamais la couleur : 23 actions ont un\n weightDelta négatif, un ▼1 doré se lirait comme un gain.\n ============================================================ */\n\n.dchips {\n display: flex;\n gap: 3px;\n flex-shrink: 0;\n align-items: center;\n}\n\n.dchip {\n font-family: monospace;\n font-size: var(--fs-9);\n font-weight: 700;\n font-variant-numeric: tabular-nums;\n line-height: 1;\n padding: 2px 5px;\n border-radius: 999px;\n white-space: nowrap;\n user-select: none;\n}\n\n.dchip--score {\n background: #08200f;\n border: 1px solid #2f7a3a;\n color: #86e08a;\n}\n\n/* Équilibre en baisse : même rouge que .ff-delta-neg des cartes. */\n.dchip--score.dchip--neg {\n background: #200a0a;\n border-color: #7a2f2f;\n color: #f28e8e;\n}\n\n/* Même recette que .ff-card-weight-chip — un seul doré dans toute l'app. */\n.dchip--weight {\n background: #201705;\n border: 1px solid #8a6020;\n color: #f5c860;\n}\n\n.dchip-arrow {\n font-size: 0.85em;\n margin-right: 1px;\n}\n\n/* Variante compacte : lignes déjà denses (Action dans l'arbre, cible dans\n la carte d'un Événement Clé). */\n.dchips--compact .dchip {\n font-size: var(--fs-8-5);\n padding: 1.5px 5px;\n opacity: 0.86;\n}\n",""]);const s=o},1939(e,t,n){n.d(t,{A:()=>p});var i=n(1601),r=n.n(i),a=n(6314),o=n.n(a),s=n(4417),l=n.n(s),c=new URL(n(3345),n.b),d=o()(r()),u=l()(c);d.push([e.id,`.force-field-details-panel {\n position: relative;\n background: #0d1320;\n border-left: 1px solid #243047;\n color: #d9e5ff;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.details-panel-content {\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n min-height: 0;\n overflow: hidden;\n flex: 1;\n}\n\n/* ── Panel tabs ── */\n.ff-panel-tabs {\n background: #090f1a;\n border-bottom: 1px solid #1e2c45;\n display: flex;\n flex-shrink: 0;\n}\n\n.ff-tab-btn {\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n color: #6a7a99;\n cursor: pointer;\n font-family: inherit;\n font-size: var(--fs-10-5);\n letter-spacing: 0.06em;\n padding: 7px 14px 5px;\n text-transform: uppercase;\n transition: color 0.15s;\n}\n\n.ff-tab-btn:hover {\n color: #9fb3d8;\n}\n\n.ff-tab-btn.ff-tab-active {\n border-bottom-color: #3a7abf;\n color: #7ab8d8;\n}\n\n.ff-panel-tab-pane {\n display: none;\n flex-direction: column;\n grid-column: 1;\n grid-row: 2;\n min-height: 0;\n overflow: hidden;\n}\n\n.ff-panel-tab-pane.ff-tab-active {\n display: flex;\n}\n\n/* ── Onglet Debug ── */\n.debug-panel-content {\n display: flex;\n flex-wrap: wrap;\n align-content: flex-start;\n gap: 10px;\n padding: 12px;\n overflow-y: auto;\n}\n\n.debug-panel-btn {\n padding: 8px 12px;\n background-color: #1e2c45;\n color: #d9e5ff;\n border: 1px solid #3a4a6b;\n border-radius: 4px;\n font-family: inherit;\n font-size: var(--fs-10-5);\n font-weight: bold;\n cursor: pointer;\n text-align: left;\n}\n\n.debug-panel-btn:hover {\n background-color: #2a3c5f;\n}\n\n/* Contrôles de tuning (repris de controls.css) redécorés en thème sombre,\n puisqu'ils ne vivent plus que dans ce panneau. */\n#ff-tab-debug .shared-controls-group {\n background: #10192c;\n border: 1px solid #243047;\n border-radius: 8px;\n min-width: 220px;\n}\n\n#ff-tab-debug .shared-controls-title {\n color: #7ab8d8;\n}\n\n#ff-tab-debug .shared-control label,\n#ff-tab-debug .control-block label,\n#ff-tab-debug .control-block-inline label {\n color: #b9c8e8;\n}\n\n#ff-tab-debug .shared-control span,\n#ff-tab-debug .slider-value {\n color: #d9e5ff;\n}\n\n#ff-tab-debug h3 {\n margin: 0 0 10px 0;\n font-size: var(--fs-16);\n color: #7ab8d8;\n font-weight: bold;\n}\n\n#ff-tab-debug .debug-component-info {\n font-size: var(--fs-12);\n color: #b9c8e8;\n margin-bottom: 10px;\n padding: 8px;\n background-color: #1e2c45;\n border-radius: 4px;\n text-align: center;\n}\n\n/* ── Badge sur l'onglet Stack ── */\n.ff-tab-badge {\n display: inline-block;\n width: 6px;\n height: 6px;\n background: #3a9abf;\n border-radius: 50%;\n margin-left: 5px;\n vertical-align: middle;\n position: relative;\n top: -1px;\n animation: ff-badge-pulse 2s ease-in-out infinite;\n}\n\n@keyframes ff-badge-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.35;\n }\n}\n\n/* ── Onglet Recherche : 2 colonnes gauche / droite ── */\n#ff-tab-recherche {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.gs-search-stack {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-height: 0;\n height: 100%;\n overflow-y: auto;\n}\n\n.layout-resizer-recherche-context {\n display: none !important;\n}\n\n.gs-recherche-context-panel {\n display: flex;\n flex-direction: column;\n min-height: 0;\n height: var(--gs-recherche-context-height, 280px);\n flex: 0 0 auto;\n overflow: hidden;\n border-top: 1px solid #1e2c45;\n background: #0a1020;\n transition: height 0.18s ease;\n}\n\n.gs-recherche-context-panel--collapsed {\n height: 36px !important;\n}\n\n/* Panneau 1 (primaire) — identique aux autres panneaux, pas de flex override.\n La hauteur est calculée et posée en JS comme pour tous les panneaux. */\n.gs-recherche-context-panel--primary {\n border-top: none;\n}\n\n/* Le gs-recherche-layout à l'intérieur du panneau primaire doit remplir l'espace restant */\n.gs-recherche-context-panel--primary > .gs-recherche-layout {\n flex: 1 1 0;\n min-height: 0;\n height: auto;\n}\n\n.gs-recherche-context-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 0 0 12px;\n min-height: 40px;\n background: #090f1a;\n border-bottom: 1px solid #1e2c45;\n color: #7ab8d8;\n font-size: var(--fs-10);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n flex-shrink: 0;\n cursor: pointer;\n user-select: none;\n}\n\n.gs-recherche-context-header:hover {\n background: #0d1526;\n}\n\n.gs-context-title-name {\n color: #c8d8f8;\n font-weight: 700;\n letter-spacing: 0.04em;\n}\n\n/* Pastille d'état (score /100) du satellite sélectionné, dans le champ\n titre — voir buildStateChipHtml (hierBadge.ts). Neutre et discrète,\n posée juste après le nom, sans casser l'uppercase/letter-spacing hérités\n du header (annulés ici comme sur .gs-context-title-rationale). */\n.gs-state-chip {\n display: inline-flex;\n align-items: baseline;\n vertical-align: middle;\n gap: 1px;\n padding: 1px 7px 2px;\n border-radius: 20px;\n background: rgba(255, 255, 255, 0.07);\n border: 1px solid rgba(255, 255, 255, 0.16);\n font-family: monospace;\n text-transform: none;\n letter-spacing: normal;\n}\n\n.gs-state-chip-value {\n color: #f4f8ff;\n font-weight: 700;\n font-size: var(--fs-10);\n}\n\n.gs-state-chip-suffix {\n color: #8098bc;\n font-weight: 400;\n font-size: var(--fs-8-5);\n}\n\n.gs-weight-chip-icon {\n font-size: var(--fs-9);\n opacity: 0.75;\n}\n\n.gs-context-title-rationale {\n color: #4e7096;\n font-weight: 400;\n font-style: italic;\n text-transform: none;\n letter-spacing: 0.02em;\n opacity: 0.9;\n}\n\n.gs-context-title--empty {\n color: #3a5472;\n font-style: italic;\n font-weight: 400;\n letter-spacing: 0.04em;\n}\n\n/* ── Panneau maître : bordure + header accentués ──\n Même cyan que la sélection dans l'arbre (.gs-row-selected, #5ab8e8) et que\n l'onglet actif : « ce panneau pilote le diagramme » relève du même code\n couleur que « cette ligne est sélectionnée ». Le vert antérieur sortait de\n la palette du panneau. */\n.gs-recherche-context-panel--master {\n border-left: 3px solid #5ab8e8;\n}\n\n.gs-recherche-context-panel--master > .gs-recherche-context-header {\n background: linear-gradient(90deg, #0f2233 0%, #0a1725 100%);\n color: #7ac8e8;\n border-bottom: 1px solid rgba(90, 184, 232, 0.4);\n box-shadow: inset 3px 0 8px rgba(90, 184, 232, 0.08);\n}\n\n.gs-recherche-context-panel--master > .gs-recherche-context-header:hover {\n background: linear-gradient(90deg, #142c40 0%, #0d1e30 100%);\n}\n\n.gs-recherche-context-panel--master\n > .gs-recherche-context-header\n .gs-context-title-name {\n color: #a8e0ff;\n}\n\n/* ── Panneau verrouillé : teinte bleue discrète ── */\n.gs-recherche-context-panel--locked > .gs-recherche-context-header {\n background: #070d1a;\n color: #6aaccc;\n border-bottom-color: rgba(64, 140, 200, 0.3);\n}\n\n/* ── Bouton lock dans le header ── */\n.gs-panel-lock-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-left: 1px solid #1e2c45;\n background: #0f1728;\n color: #4e7096;\n border-radius: 0;\n width: 62px;\n height: 100%;\n cursor: pointer;\n flex-shrink: 0;\n transition:\n color 0.15s,\n background 0.15s,\n border-color 0.15s;\n}\n\n.gs-panel-lock-btn svg {\n display: block;\n flex-shrink: 0;\n}\n\n.gs-panel-lock-btn:hover {\n background: #142033;\n color: #7ab8d8;\n border-color: rgba(122, 184, 216, 0.4);\n}\n\n.gs-panel-lock-btn--locked {\n color: #6aaccc;\n border-color: rgba(64, 140, 200, 0.5);\n background: #0a1525;\n}\n\n.gs-panel-lock-btn--locked:hover {\n background: #0d1c30;\n color: #8bc8e8;\n}\n\n/* Boutons retour / suivant dans le header */\n.gs-panel-nav-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-left: 1px solid #1e2c45;\n background: #0f1728;\n color: #4e7096;\n border-radius: 0;\n width: 62px;\n height: 100%;\n padding: 0;\n cursor: pointer;\n flex-shrink: 0;\n transition:\n color 0.15s,\n background 0.15s,\n border-color 0.15s;\n}\n\n.gs-panel-nav-btn:hover:not(:disabled) {\n background: #142033;\n color: #7ab8d8;\n border-color: rgba(122, 184, 216, 0.4);\n}\n\n.gs-panel-nav-btn:disabled {\n opacity: 0.42;\n cursor: default;\n}\n\n/* Zone de boutons à droite du header */\n.gs-recherche-context-header-actions {\n display: flex;\n align-items: stretch;\n align-self: stretch;\n gap: 0;\n flex-shrink: 0;\n}\n\n/* Séparation visuelle entre le groupe nav et le bouton lock */\n.gs-recherche-context-header-actions .gs-panel-lock-btn {\n margin-left: 4px;\n}\n\n.gs-recherche-layout {\n display: grid;\n grid-template-columns: var(--gs-recherche-left-width, 260px) minmax(0, 1fr);\n width: 100%;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.gs-recherche-layout--context {\n border-top: 1px solid #1a2840;\n min-height: 0;\n height: 100%;\n}\n\n.gs-recherche-left {\n position: relative;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n background: #090f1a;\n border-right: 1px solid #1a2840;\n}\n\n.gs-recherche-right {\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow-y: auto;\n background: #0a1020;\n scrollbar-width: thin;\n scrollbar-color: #1e3a5a transparent;\n}\n\n.layout-resizer-recherche-left {\n top: 10px;\n bottom: 10px;\n right: -5px;\n left: auto;\n width: 10px;\n cursor: col-resize;\n}\n\n/* ── Placeholder panneau de détail ── */\n.gs-detail-placeholder {\n color: #4a6070;\n font-size: var(--fs-11);\n font-style: italic;\n text-align: center;\n padding: 28px 16px;\n opacity: 0.75;\n}\n\n/* Le bloc Sphère garde sa propre mise en forme quand il s'affiche dans le placeholder. */\n.gs-detail-placeholder:has(.ff-sphere-intro) {\n text-align: left;\n font-style: normal;\n padding: 0;\n opacity: 1;\n}\n\n/* ── Description dans le panneau de détail ── */\n.gs-detail-desc-section {\n padding: 10px 12px 10px;\n border-bottom: 1px solid #1a2840;\n flex-shrink: 0;\n background: rgba(8, 16, 34, 0.6);\n}\n\n.gs-detail-desc-title-row {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n margin: 0 0 5px;\n}\n\n.gs-detail-desc-title {\n font-size: var(--fs-12);\n font-weight: 700;\n color: #c8d8f8;\n margin: 0;\n line-height: 1.3;\n overflow-wrap: anywhere;\n}\n\n.gs-detail-desc-text {\n font-size: var(--fs-10-5);\n color: #6a8aaa;\n line-height: 1.5;\n font-style: italic;\n}\n\n/* Bouton déplier/replier la description complète (short → full), en fin de\n texte, discret — ne casse pas le fil de lecture du shortDescription. */\n.gs-detail-desc-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-left: 4px;\n padding: 0 4px;\n border: none;\n background: transparent;\n color: #4a7aa8;\n font-size: var(--fs-10-5);\n font-style: normal;\n line-height: 1;\n cursor: pointer;\n vertical-align: middle;\n}\n.gs-detail-desc-toggle:hover {\n color: #7db0e8;\n}\n\n/* ── Sections de blocs dans le panneau de détail ── */\n.gs-detail-block-section {\n flex-shrink: 0;\n border-top: 1px solid #1a2840;\n padding: 0;\n}\n\n.gs-detail-block-label {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 10px;\n background: rgba(8, 14, 26, 0.75);\n border-bottom: 1px solid #1a2840;\n flex-shrink: 0;\n}\n\n/* Blocs de détail dans le panneau droit (sans animation max-height) */\n.gs-recherche-right .gs-cutting-impact-block {\n max-height: none !important;\n opacity: 0;\n padding: 8px 10px;\n margin: 0;\n transition: opacity 0.2s ease;\n}\n\n.gs-recherche-right .gs-cutting-impact-block.gs-block-open {\n opacity: 1;\n padding-right: 28px;\n}\n\n/* ── Onglet Stack : 2 colonnes ── */\n#ff-tab-stack {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n/* ── Stack nav header (satellite chip + dropdown overlay) ──\n Typographie/couleurs alignées sur .gs-recherche-context-header +\n .gs-context-title-name / .gs-context-title--empty (header de panneau\n RECHERCHE) — seule la mise en page (bouton + dropdown + dot ODD animé)\n reste spécifique à STACK. */\n.stack-nav-header {\n position: relative;\n flex-shrink: 0;\n display: flex;\n align-items: stretch;\n min-height: 40px;\n border-bottom: 1px solid #1e2c45;\n background: #090f1a;\n /* left accent bar — color driven by JS via box-shadow */\n transition: box-shadow 0.25s;\n}\n\n.stack-nav-chip {\n display: flex;\n align-items: center;\n gap: 9px;\n flex: 1;\n min-width: 0;\n padding: 0 12px;\n background: transparent;\n border: none;\n cursor: pointer;\n color: #7ab8d8;\n font-size: var(--fs-10);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n text-align: left;\n transition: background 0.1s;\n}\n\n.stack-nav-chip:hover {\n background: rgba(255, 255, 255, 0.03);\n}\n\n.stack-nav-chip[aria-expanded="true"] {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.stack-nav-chip--active:hover {\n background: rgba(255, 255, 255, 0.04);\n}\n\n/* ODD dot */\n.stack-nav-chip-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n background: transparent;\n border: 1px solid #2a4a6a;\n transition: width 0.15s, height 0.15s, box-shadow 0.2s;\n}\n\n.stack-nav-chip--active .stack-nav-chip-dot {\n width: 14px;\n height: 14px;\n border: none;\n /* box-shadow glow set by JS with ODD color */\n}\n\n/* flex: 0 1 auto (pas 1) : le nom ne s'étire plus pour remplir toute la\n largeur du chip — il colle aux pastilles état/poids juste après lui,\n comme en RECHERCHE (.gs-context-title-name), au lieu de les repousser\n loin à droite. Il peut toujours rétrécir (min-width:0) pour laisser la\n place au reste quand la ligne est trop étroite, ellipsis sur les noms\n longs. */\n.stack-nav-chip-label {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Sibling du label plutôt qu'imbriqué dedans : .stack-nav-chip-label est en\n overflow:hidden/ellipsis (troncature des noms longs), un enfant placé après\n le texte s'y ferait donc parfois couper. Ici, toujours visible. */\n.stack-nav-chip-state {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-shrink: 0;\n}\n\n/* Pousse le chevron seul à l'extrémité droite (marge auto) plutôt que de\n laisser le label pousser tout le reste — c'est ce qui gardait\n auparavant les pastilles état/poids collées à droite au lieu du nom. */\n.stack-nav-chip-chevron {\n margin-left: auto;\n font-size: var(--fs-9);\n opacity: 0.3;\n flex-shrink: 0;\n transition: opacity 0.15s;\n}\n\n.stack-nav-chip--active .stack-nav-chip-chevron {\n opacity: 0.55;\n}\n\n.stack-nav-btns {\n display: flex;\n align-items: stretch;\n flex-shrink: 0;\n}\n\n/* Dropdown is position:fixed (appended to body) — only sizing matters here */\n.stack-nav-dropdown {\n position: fixed;\n z-index: 1000;\n background: #0a1020;\n border: 1px solid #1e2c45;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6);\n max-height: 55vh;\n overflow-y: auto;\n}\n\n.gs-stack-layout {\n display: grid;\n grid-template-columns: var(--action-stack-column-width) minmax(0, 1fr);\n width: 100%;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.stack-right-col {\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n min-height: 0;\n overflow: hidden;\n background: #0d1320;\n}\n\n/* ── Sous-onglets dans l'onglet Stack ── */\n.ff-panel-subtabs {\n background: #090f1a;\n border-bottom: 1px solid #1e2c45;\n display: flex;\n flex-shrink: 0;\n}\n\n.ff-subtab-btn {\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n color: #5a6a88;\n cursor: pointer;\n font-family: inherit;\n font-size: var(--fs-10);\n letter-spacing: 0.06em;\n padding: 6px 12px 4px;\n text-transform: uppercase;\n transition: color 0.15s;\n}\n\n.ff-subtab-btn:hover {\n color: #9fb3d8;\n}\n\n.ff-subtab-btn.ff-subtab-active {\n border-bottom-color: #3a7abf;\n color: #7ab8d8;\n}\n\n.ff-panel-subtab-pane {\n display: none;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.ff-panel-subtab-pane.ff-subtab-active {\n display: flex;\n}\n\n.force-field-details-section {\n padding: 12px;\n font-size: var(--fs-12);\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n.force-field-details-panel h4 {\n margin: 0 0 10px 0;\n font-size: var(--fs-13);\n color: #ffffff;\n}\n\n.ff-action-header {\n margin: 0 0 12px;\n padding-bottom: 9px;\n border-bottom: 1px solid #1e2c45;\n}\n\n.ff-action-eyebrow {\n font-size: var(--fs-9);\n text-transform: uppercase;\n letter-spacing: 0.12em;\n color: #3a6a99;\n font-weight: 700;\n margin-right: 4px;\n}\n\n.ff-action-name {\n font-size: var(--fs-14);\n font-weight: 700;\n color: #c8d8f8;\n line-height: 1.25;\n overflow-wrap: anywhere;\n}\n\n/* .ff-cumulative-block base styles moved below with action block rules */\n\n.ff-cumulative-total-wrap {\n margin-top: 10px;\n padding: 8px 4px 2px;\n}\n\n.ff-cumulative-total-label {\n font-size: var(--fs-9);\n text-transform: uppercase;\n letter-spacing: 0.11em;\n color: #6d89ad;\n margin-bottom: 5px;\n}\n\n.ff-cumulative-total-bar {\n height: 0;\n border-top: 2px solid #4e6f98;\n box-shadow: 0 1px 0 rgba(255, 255, 255, 0.08);\n}\n\n.ff-cumulative-total-value {\n margin-top: 6px;\n text-align: right;\n font-family: monospace;\n font-size: var(--fs-28);\n font-weight: 700;\n line-height: 1;\n text-shadow: 0 0 8px rgba(0, 0, 0, 0.35);\n}\n\n.ff-cumulative-total-optimization {\n margin-top: 8px;\n text-align: right;\n font-size: var(--fs-11);\n font-weight: 700;\n letter-spacing: 0.03em;\n color: #c4d8ff;\n}\n\n.ff-cumulative-total-optimization-value {\n margin-left: 4px;\n font-size: var(--fs-20);\n color: #8bc7ff;\n text-shadow: 0 0 10px rgba(93, 170, 255, 0.35);\n}\n\n.ff-cumulative-total-optimization-unit {\n margin-left: 1px;\n font-size: var(--fs-13);\n color: #8bc7ff;\n}\n.ff-cumulative-total-optimization-value.ff-delta-pos {\n text-shadow: 0 0 10px rgba(142, 242, 180, 0.35);\n}\n.ff-cumulative-total-optimization-value.ff-delta-neg {\n text-shadow: 0 0 10px rgba(242, 142, 142, 0.35);\n}\n.ff-cumulative-total-optimization-value.ff-delta-neu {\n text-shadow: 0 0 10px rgba(122, 184, 216, 0.3);\n}\n\n/* Σ poids — axe séparé du score, jamais un sous-total du même nombre : filet\n pointillé ambre pour marquer la rupture, somme nette des actions directes\n de la pile touchant ce satellite (le poids ne se propage jamais). */\n.ff-cumulative-weight-row {\n margin-top: 10px;\n padding-top: 10px;\n border-top: 1px dashed rgba(200, 150, 40, 0.5);\n display: flex;\n align-items: baseline;\n justify-content: flex-end;\n gap: 8px;\n}\n\n.ff-cumulative-weight-label {\n margin-right: auto;\n font-size: var(--fs-9);\n text-transform: uppercase;\n letter-spacing: 0.11em;\n color: #d8b878;\n}\n\n.ff-cumulative-weight-value {\n font-family: monospace;\n font-size: var(--fs-20);\n font-weight: 700;\n line-height: 1;\n color: #f5c860;\n text-shadow: 0 0 8px rgba(200, 150, 40, 0.35);\n}\n\n/* ── Info strip (action/propagation header banner) ── */\n.ff-info-strip {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 0;\n margin: 0 0 12px;\n padding: 10px 12px 10px;\n border: 1px solid #1e3460;\n border-left: 3px solid #3a7abf;\n border-radius: 5px;\n background: linear-gradient(\n 100deg,\n rgba(12, 24, 44, 0.92) 0%,\n rgba(8, 16, 30, 0.97) 100%\n );\n box-shadow:\n 0 2px 10px rgba(0, 0, 0, 0.3),\n inset 0 1px 0 rgba(58, 122, 191, 0.08);\n}\n\n.ff-info-strip-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n flex-wrap: wrap;\n min-width: 0;\n}\n\n.ff-info-strip-badge {\n display: inline-block;\n flex-shrink: 0;\n padding: 1px 7px 2px;\n border-radius: 20px;\n background: rgba(58, 122, 191, 0.18);\n border: 1px solid rgba(58, 122, 191, 0.35);\n font-size: var(--fs-8-5);\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.14em;\n color: #5a9fd4;\n}\n\n.ff-info-strip-badge.ff-info-strip-direct {\n background: rgba(48, 160, 112, 0.18);\n border-color: rgba(48, 160, 112, 0.35);\n color: #4dbb8a;\n}\n\n.ff-info-strip-action-name {\n flex: 1;\n min-width: 0;\n font-size: var(--fs-12);\n font-weight: 700;\n color: #c4daf5;\n overflow-wrap: anywhere;\n line-height: 1.25;\n}\n\n.ff-def-disclosure {\n margin-top: 8px;\n}\n\n.ff-def-disclosure > summary {\n display: flex;\n align-items: baseline;\n gap: 6px;\n cursor: pointer;\n user-select: none;\n list-style: none;\n}\n\n.ff-def-disclosure > summary::after {\n content: "▸";\n flex-shrink: 0;\n font-size: var(--fs-8);\n color: #3a6a99;\n margin-left: 2px;\n}\n\n.ff-def-disclosure[open] > summary::after {\n content: "▾";\n}\n\n.ff-def-label {\n flex-shrink: 0;\n font-size: var(--fs-8-5);\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: #3d5e82;\n}\n\n.ff-def-preview {\n flex: 1;\n min-width: 0;\n font-size: var(--fs-9-5);\n font-weight: 400;\n text-transform: none;\n letter-spacing: 0;\n color: #5a7a9a;\n font-style: italic;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.ff-def-text {\n margin: 6px 0 0;\n font-size: var(--fs-11);\n color: #6a8aaa;\n font-style: italic;\n line-height: 1.4;\n}\n\n.ff-info-strip dl {\n display: flex;\n flex-direction: column;\n gap: 4px;\n margin: 0;\n padding: 0;\n}\n\n.ff-info-row {\n display: flex;\n align-items: baseline;\n gap: 6px;\n min-width: 0;\n}\n\n.ff-info-row dt {\n flex-shrink: 0;\n width: 70px;\n font-size: var(--fs-8-5);\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: #3d5e82;\n padding-top: 1px;\n}\n\n.ff-info-row dd {\n flex: 1;\n margin: 0;\n min-width: 0;\n font-size: var(--fs-11);\n color: #8aadcc;\n line-height: 1.35;\n overflow-wrap: anywhere;\n}\n\n.ff-info-action {\n font-weight: 700;\n color: #c4daf5 !important;\n font-size: var(--fs-11-5) !important;\n}\n\n.ff-info-row-def dd {\n color: #6a8aaa;\n font-style: italic;\n}\n\n/* ── end ff-info-strip ── */\n\n.ff-meta-panel {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin: 8px 0 12px;\n}\n\n.ff-meta-item {\n border-left: 3px solid #4a6f97;\n border-radius: 4px;\n background: linear-gradient(\n 90deg,\n rgba(24, 44, 68, 0.65) 0%,\n rgba(11, 20, 34, 0.8) 100%\n );\n padding: 6px 8px 7px;\n min-width: 0;\n}\n\n.ff-meta-label {\n font-size: var(--fs-9);\n text-transform: uppercase;\n letter-spacing: 0.11em;\n color: #5d7ea1;\n font-weight: 700;\n margin-bottom: 2px;\n}\n\n.ff-meta-action-name {\n color: #d4e8ff;\n font-size: var(--fs-11);\n font-weight: 600;\n letter-spacing: 0.04em;\n text-transform: none;\n}\n\n.ff-meta-value {\n color: #a9bed4;\n font-size: var(--fs-11);\n line-height: 1.35;\n overflow-wrap: anywhere;\n}\n\n.force-field-detail-line {\n margin-bottom: 8px;\n line-height: 1.35;\n overflow-wrap: anywhere;\n}\n\n.force-field-detail-result {\n margin-top: 12px;\n padding-top: 8px;\n border-top: 1px solid #2f3b55;\n color: #8ef2b4;\n font-size: var(--fs-13);\n}\n\n.force-field-detail-empty {\n color: #9fb3d8;\n line-height: 1.4;\n}\n\n.ff-panel-hint {\n margin: 12px 0 0;\n padding: 7px 10px;\n font-size: var(--fs-10-5);\n line-height: 1.55;\n color: #9dc8e8;\n font-style: italic;\n background: rgba(30, 70, 120, 0.18);\n border-left: 2px solid rgba(80, 160, 255, 0.35);\n border-radius: 0 4px 4px 0;\n}\n\n/* Point coloré par ODD devant un badge Satellite (header de panneau RECHERCHE) —\n pendant statique du dot persistant \`.stack-nav-chip-dot\` du mode STACK. */\n.gs-hier-dot {\n display: inline-block;\n vertical-align: middle;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n/* Icône propre à l'élément (action/Événement Clé) entre le point ODD et le\n badge de type, header de panneau RECHERCHE. */\n.gs-item-icon {\n display: inline-flex;\n vertical-align: middle;\n flex-shrink: 0;\n}\n.gs-item-icon img {\n width: 16px;\n height: 16px;\n display: block;\n object-fit: contain;\n}\n\n/* Médaillon d'Événement Clé : plaque + anneau doré + Yin/Yang en filigrane,\n recréés en CSS autour du pictogramme nu (assets/key-events/icons/*.svg) —\n le SVG reste un pictogramme simple, jamais son propre médaillon, pour que\n ce même habillage se réutilise à n'importe quelle taille d'affichage.\n Côté diagramme (pile d'actions, bulles du menu radial), le même filigrane\n est dessiné en SVG par src/utils/yinYangWatermark.ts : les opacités ci-\n dessous doivent rester alignées sur les siennes.\n Silhouette ronde + anneau : le signal "Événement" doit se lire à la forme\n seule, avant même la couleur du pictogramme (qui reste celle de la\n facette d'origine — cohérence thématique avec les icônes d'action). */\n.ke-medallion {\n position: relative;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.ke-medallion::before {\n content: "";\n position: absolute;\n inset: 0;\n border-radius: 50%;\n background-image: url(${u});\n background-size: 100% 100%;\n pointer-events: none;\n}\n.ke-medallion img {\n position: absolute;\n inset: 0;\n margin: auto;\n width: 62% !important;\n height: 62% !important;\n display: block;\n object-fit: contain;\n}\n\n/* Badge pill: depth-keyed colours */\n.ff-hier-badge {\n display: inline-block;\n vertical-align: middle;\n flex-shrink: 0;\n padding: 1px 7px 2px;\n border-radius: 20px;\n font-size: var(--fs-8-5);\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.12em;\n white-space: nowrap;\n}\n\n/* Depth 0 — Sphère: forest emerald */\n.ff-hier-badge--d0 {\n background: rgba(30, 160, 100, 0.18);\n border: 1px solid rgba(30, 160, 100, 0.38);\n color: #50e0a0;\n}\n\n/* Depth 1 — Facette: warm lavender */\n.ff-hier-badge--d1 {\n background: rgba(160, 100, 220, 0.18);\n border: 1px solid rgba(160, 100, 220, 0.38);\n color: #c090f5;\n}\n\n/* Depth 2 — ODD: cool cyan */\n.ff-hier-badge--d2 {\n background: rgba(60, 180, 220, 0.18);\n border: 1px solid rgba(60, 180, 220, 0.35);\n color: #6dd5f5;\n}\n\n/* Depth 3 — Satellite: amber gold */\n.ff-hier-badge--d3 {\n background: rgba(200, 150, 40, 0.18);\n border: 1px solid rgba(200, 150, 40, 0.38);\n color: #f5c860;\n}\n\n/* Action directe: forest green */\n.ff-hier-badge--action-direct {\n background: rgba(48, 160, 112, 0.28);\n border: 1px solid rgba(52, 175, 120, 0.6);\n color: #5dd99c;\n font-size: var(--fs-9);\n white-space: normal;\n overflow-wrap: break-word;\n text-align: center;\n line-height: 1.3;\n}\n\n/* Action propagée / Propagation d'action: steel blue */\n.ff-hier-badge--action-prop {\n background: rgba(58, 122, 191, 0.25);\n border: 1px solid rgba(64, 135, 210, 0.55);\n color: #72b3e8;\n font-size: var(--fs-9);\n white-space: normal;\n overflow-wrap: break-word;\n text-align: center;\n line-height: 1.3;\n}\n\n/* Événement Clé : même ambre que le reste de sa famille de cartes\n (.ff-chain-keyevent-detail, .ff-cumulative-block--keyevent). */\n.ff-hier-badge--keyevent {\n background: rgba(224, 160, 48, 0.22);\n border: 1px solid rgba(224, 160, 48, 0.5);\n color: #e0a030;\n font-size: var(--fs-9);\n white-space: normal;\n overflow-wrap: break-word;\n text-align: center;\n line-height: 1.3;\n}\n\n/* A listed step/row reached via a bridge (cross-composante) hop — source-card step or\n Bilan entry alike: a left accent bar + subtle tint make it stand apart at a glance,\n regardless of which chain context (.ff-chain-intra / .ff-chain-total) it's rendered\n in, so the highlight isn't limited to the arrow-color override scoped to Bilan cards. */\n.ff-step-bridge {\n background: rgba(192, 112, 48, 0.08);\n border-radius: 4px;\n box-shadow: inset 2px 0 0 0 #c07030;\n}\n\n.ff-step-bridge[data-row-idx]:hover {\n background: rgba(192, 112, 48, 0.16);\n}\n\n/* Action body: hidden by default, revealed when block is expanded */\n.ff-action-body {\n display: none;\n}\n.ff-action-expanded .ff-action-body {\n display: block;\n}\n\n/* Action description (inside body) */\n.ff-action-desc {\n margin: 4px 10px 6px;\n font-size: var(--fs-11);\n color: rgba(180, 210, 250, 0.7);\n}\n\n.ff-action-desc.ff-hier-desc {\n margin-left: 6px;\n}\n\n/* Action blocks indented under satellite when collapsed */\n.ff-cumulative-block {\n margin-left: 6px;\n margin-right: 6px;\n margin-bottom: 6px;\n padding-bottom: 0;\n border-bottom: none;\n border-radius: 5px;\n overflow: hidden;\n}\n\n/* Direct action block: subtle blue tint on entire block */\n.ff-cumulative-block--direct {\n background: var(--action-direct-bg);\n border: 1px solid var(--action-direct-border);\n}\n\n/* Propagation block: subtle green tint on entire block */\n.ff-cumulative-block--prop {\n background: var(--action-propagated-bg);\n border: 1px solid var(--action-propagated-border);\n}\n\n/* Événement Clé block: toujours visible dès qu'il est joué dans la Facette\n (voir buildKeyEventBlocksForComponent) — la teinte ambre reste posée que\n l'événement amplifie ou non une action actuellement ; seul l'accent varie\n entre actif et inactif ci-dessous, jamais l'existence du bloc. */\n.ff-cumulative-block--keyevent {\n background: var(--action-keyevent-bg);\n border: 1px solid var(--action-keyevent-border);\n}\n\n/* Actif : amplifie actuellement au moins une action ciblée — liseré ambre\n renforcé, cohérent avec .ff-chain-keyevent-detail.ff-combo-card-active. */\n.ff-cumulative-block--keyevent-active {\n border-color: var(--action-keyevent-accent);\n box-shadow: 0 0 0 1px var(--action-keyevent-accent);\n}\n\n/* Inactif : joué mais aucune action ciblée ne l'active encore — présent (pour\n qu'on sache quelle action ajouter) mais visuellement en retrait. */\n.ff-cumulative-block--keyevent-inactive {\n opacity: 0.65;\n}\n\n/* Linked hover: highlight when the corresponding stack item is hovered (or vice versa) */\n.ff-cumulative-block.ff-block--linked-hover {\n border-color: var(--item-color, rgba(255, 255, 255, 0.5));\n box-shadow: 0 0 0 1px var(--item-color, rgba(255, 255, 255, 0.3)),\n inset 0 0 14px 0 color-mix(in srgb, var(--item-color, white) 8%, transparent);\n transition: border-color 0.12s ease, box-shadow 0.12s ease;\n}\n\n/* ── Block collapsible header ──────────────────────────────────── */\n.ff-block-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 10px;\n min-height: 36px;\n cursor: pointer;\n user-select: none;\n background: rgba(8, 14, 30, 0.55);\n border-bottom: 1px solid transparent;\n transition: background 0.15s ease, border-color 0.15s ease;\n}\n\n.ff-block-header:hover {\n background: rgba(20, 32, 60, 0.7);\n}\n\n.ff-action-expanded .ff-block-header {\n border-bottom-color: rgba(255, 255, 255, 0.07);\n}\n\n.ff-block-header-icon {\n font-size: var(--fs-14);\n line-height: 1;\n flex-shrink: 0;\n}\n\n.ff-block-header-icon img {\n width: 16px;\n height: 16px;\n display: block;\n object-fit: contain;\n}\n\n.ff-block-header-name {\n flex: 1;\n font-size: var(--fs-12);\n font-weight: 600;\n color: #c8d8f8;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.ff-block-header-rationale {\n font-size: var(--fs-11);\n font-style: italic;\n color: rgba(150, 180, 220, 0.6);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex-shrink: 1;\n}\n\n.ff-block-header-delta {\n font-size: var(--fs-11);\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.ff-block-header-perf {\n font-size: var(--fs-10);\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n flex-shrink: 0;\n opacity: 0.75;\n}\n\n/* Chevron collapse indicator */\n.ff-block-header::after {\n content: "▾";\n color: rgba(150, 180, 220, 0.45);\n font-size: var(--fs-10);\n transition: transform 0.2s ease;\n flex-shrink: 0;\n}\n\n.ff-cumulative-block:not(.ff-action-expanded) .ff-block-header::after {\n transform: rotate(-90deg);\n}\n\n/* Description text (inside block bodies) */\n.ff-hier-desc {\n margin: 6px 0 2px;\n font-size: var(--fs-11);\n line-height: 1.5;\n color: #8aaac8;\n font-style: italic;\n}\n\n/* Key terms highlighted inside any description */\n.ff-hier-desc strong,\n.ff-sphere-intro-desc strong {\n color: #c0d8f0;\n font-weight: 600;\n font-style: normal;\n}\n\n/* ── Sphere intro card (empty / nothing-selected state) ── */\n.ff-sphere-intro {\n padding: 10px 12px 14px;\n border-left: 3px solid rgba(30, 160, 100, 0.6);\n border-radius: 0 5px 5px 0;\n background: rgba(12, 36, 28, 0.55);\n}\n\n.ff-sphere-intro-desc {\n margin: 0;\n font-size: var(--fs-12);\n line-height: 1.65;\n color: #6aaa8a;\n font-style: italic;\n}\n/* ── end Sphere intro card ── */\n\n/* ── Element intro cards (Facette / ODD / Satellite) — Cas 2 & 3 ── */\n.ff-element-intro {\n padding: 10px 12px 14px;\n border-radius: 0 5px 5px 0;\n}\n\n.ff-element-intro--facette {\n border-left: 3px solid rgba(160, 100, 220, 0.55);\n background: rgba(24, 12, 40, 0.45);\n}\n\n.ff-element-intro--odd {\n border-left: 3px solid rgba(60, 180, 220, 0.5);\n background: rgba(8, 24, 40, 0.45);\n}\n\n.ff-element-intro--satellite {\n border-left: 3px solid rgba(200, 150, 40, 0.55);\n background: rgba(28, 18, 4, 0.45);\n}\n\n.ff-element-intro-desc {\n margin: 0;\n font-size: var(--fs-12);\n line-height: 1.65;\n font-style: italic;\n}\n\n.ff-element-intro--facette .ff-element-intro-desc { color: #9868c8; }\n.ff-element-intro--odd .ff-element-intro-desc { color: #4898b8; }\n.ff-element-intro--satellite .ff-element-intro-desc { color: #b08830; }\n/* ── end Element intro cards ── */\n\n/* ── ODD legend (liste des ODD couverts par la sphère, statut sphère) ── */\n.odd-legend {\n margin-top: 10px;\n padding: 10px 12px 14px;\n border-left: 3px solid rgba(120, 140, 175, 0.5);\n border-radius: 0 5px 5px 0;\n background: rgba(16, 20, 32, 0.5);\n}\n\n.odd-legend-head {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n.odd-legend-title {\n font-size: var(--fs-10);\n font-weight: 700;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: #a9b8d0;\n}\n\n.odd-legend-count {\n font-size: var(--fs-9-5);\n color: #5c7290;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n}\n\n.odd-legend-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.odd-legend-chip {\n appearance: none;\n cursor: pointer;\n border: none;\n font-family: inherit;\n font-variant-numeric: tabular-nums;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n transition: background 0.15s ease, border-color 0.15s ease, opacity 0.15s ease,\n box-shadow 0.15s ease, transform 0.1s ease;\n}\n\n/* Pictogramme officiel de l'ODD (ONU, version française), façon poster des\n 17 ODD — utilisé pour la légende Sphère comme pour la légende Facette. */\n.odd-legend-chip--plaque {\n width: 40px;\n height: 40px;\n border-radius: 4px;\n overflow: hidden;\n opacity: 0.85;\n flex-shrink: 0;\n position: relative;\n transition: width 0.3s ease, height 0.3s ease, opacity 0.15s ease,\n box-shadow 0.15s ease, transform 0.1s ease;\n}\n\n.odd-legend-chip-icon {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.odd-legend-chip--plaque:hover {\n opacity: 1;\n transform: translateY(-2px);\n box-shadow: 0 4px 10px rgba(0, 0, 0, 0.35);\n}\n\n.odd-legend-chip--plaque.odd-legend-chip--active,\n.odd-legend-chip--plaque.odd-legend-chip--linked-hover {\n opacity: 1;\n box-shadow: 0 0 0 2px #0d1320, 0 0 0 3.5px var(--chip-color);\n}\n\n/* Grossissement au clic : la pastille active grandit sur place (le\n multiplicateur --odd-chip-zoom est piloté par le contrôle "ODD" du\n panneau de réglages), ce qui repousse ses voisines dans la grille. */\n.odd-legend-chip--plaque.odd-legend-chip--active {\n width: calc(40px * var(--odd-chip-zoom, 5));\n height: calc(40px * var(--odd-chip-zoom, 5));\n z-index: 2;\n}\n\n.odd-legend-detail {\n margin-top: 10px;\n padding: 8px 10px 10px;\n border-radius: 0 5px 5px 0;\n border-left: 3px solid var(--chip-color, rgba(120, 140, 175, 0.5));\n background: rgba(120, 140, 175, 0.08);\n}\n\n.odd-legend-detail[hidden] {\n display: none;\n}\n\n.odd-legend-detail-dot {\n display: inline-block;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n margin-right: 6px;\n box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.18) inset;\n}\n\n.odd-legend-detail-name {\n font-size: var(--fs-11-5);\n font-weight: 700;\n color: #f4f8ff;\n}\n\n.odd-legend-detail-desc {\n margin: 4px 0 0;\n font-size: var(--fs-11);\n line-height: 1.55;\n font-style: italic;\n color: #8aaac8;\n}\n\n.odd-legend-detail-desc strong {\n color: #c0d8f0;\n font-weight: 600;\n font-style: normal;\n}\n/* ── end ODD legend ── */\n\n\n.force-field-detail-table {\n width: 100%;\n border-collapse: collapse;\n margin-top: 8px;\n font-size: var(--fs-11);\n}\n\n.force-field-detail-table th,\n.force-field-detail-table td {\n border: 1px solid #2f3b55;\n padding: 6px;\n vertical-align: top;\n text-align: left;\n}\n\n.force-field-detail-table th {\n background: #141d30;\n color: #f4f8ff;\n position: sticky;\n top: 0;\n}\n\n.force-field-group-header td {\n background: #1a2540;\n color: #8ef2b4;\n font-size: var(--fs-11-5);\n padding: 5px 6px;\n border-top: 2px solid #2f3b55;\n}\n\n.force-field-section-header td {\n background: #1a2030;\n color: #7ab8d8;\n font-size: var(--fs-11);\n font-style: italic;\n padding: 4px 6px;\n border-top: 1px dashed #2f4060;\n}\n\n.force-field-section-impact td {\n background: #162030;\n color: #e8f4a0;\n font-size: var(--fs-11);\n font-weight: bold;\n padding: 4px 6px;\n border-top: 2px solid #4a6040;\n}\n\n.force-field-section-cascade td {\n background: #1a2838;\n color: #a8c8e8;\n font-size: var(--fs-11);\n font-style: italic;\n padding: 4px 6px;\n border-top: 1px dashed #304860;\n}\n\n.force-field-ancestor-row td {\n opacity: 0.72;\n font-style: italic;\n}\n\n.base-delta-source {\n font-size: 0.82em;\n opacity: 0.65;\n font-style: italic;\n white-space: nowrap;\n}\n\n/* ── Source card (direct action — badge label A + step arrows B) ── */\n\n/* A: badge stacked as column so the "Δ base" micro-label sits above the value */\n.ff-collapse-btn--labeled {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1px;\n text-align: center;\n transform: translateY(-20%);\n}\n\n/* En état déplié, le ::after " ‹" du bouton deviendrait un flex item\n qui allongerait le badge → on le masque sur le bouton lui-même... */\n.ff-chain-card.ff-card-expanded\n .ff-card-collapse-btn.ff-collapse-btn--labeled::after {\n display: none;\n}\n/* ...et on l'ajoute inline après la valeur : même ligne, même taille, hauteur inchangée. */\n.ff-chain-card.ff-card-expanded\n .ff-collapse-btn--labeled\n .ff-badge-value::after {\n content: " ‹";\n font-size: var(--fs-11);\n font-weight: 400;\n opacity: 0.6;\n letter-spacing: 0;\n}\n\n.ff-badge-sublabel {\n font-size: var(--fs-7);\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.07em;\n opacity: 0.55;\n line-height: 1;\n}\n\n.ff-badge-value {\n font-family: monospace;\n font-size: var(--fs-11);\n font-weight: 700;\n line-height: 1;\n}\n\n/* B: → arrow prefix on each target satellite line */\n.ff-chain-source-card .ff-step-label-group::before {\n content: "→";\n margin-right: 4px;\n color: rgba(106, 212, 160, 0.45);\n font-size: var(--fs-9);\n font-weight: 400;\n}\n\n/* ── Chain card view (horizontal scroll timeline) ── */\n/* Conteneur de défilement horizontal du rail de cartes.\n Le rail peut dépasser la largeur du panneau — l'utilisateur fait défiler\n horizontalement pour accéder aux cartes hors écran.\n La scrollbar fine est placée sous le rail, hors des cartes. */\n.ff-chain-rail {\n overflow-x: auto;\n overflow-y: visible;\n -webkit-overflow-scrolling: touch; /* fluidité sur iOS */\n padding-left: 6px;\n padding-bottom: 6px; /* espace pour la scrollbar */\n margin-bottom: -2px;\n /* Scrollbar fine assortie à la palette */\n scrollbar-width: thin;\n scrollbar-color: #2a3d58 transparent;\n}\n.ff-chain-rail::-webkit-scrollbar {\n height: 3px;\n}\n.ff-chain-rail::-webkit-scrollbar-track {\n background: transparent;\n}\n.ff-chain-rail::-webkit-scrollbar-thumb {\n background: #2a3d58;\n border-radius: 2px;\n}\n.ff-chain-rail::-webkit-scrollbar-thumb:hover {\n background: #4a6a90;\n}\n\n.ff-chain-grid {\n display: flex;\n gap: 3px;\n overflow: visible;\n align-items: flex-start;\n margin: 14px 0 6px;\n width: max-content;\n}\n\n.ff-chain-card {\n flex: 0 0 auto;\n border-radius: 6px;\n overflow: visible;\n position: relative;\n font-size: var(--fs-11);\n background: #0b1525;\n display: flex;\n flex-direction: column;\n}\n\n.ff-card-inner {\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow: hidden;\n border-radius: 6px;\n}\n\n/* Header: ne scroll jamais, reste visible en toutes circonstances */\n.ff-card-header {\n flex-shrink: 0;\n}\n\n/* Corps scrollable : seul .ff-card-body peut scroller */\n.ff-card-body {\n flex: 1;\n min-height: 0; /* indispensable pour que overflow fonctionne en flex */\n overflow-y: auto;\n overflow-x: hidden;\n -webkit-overflow-scrolling: touch; /* défilement fluide au doigt sur iOS */\n touch-action: pan-y; /* glisser verticalement = scroll, pas zoom */\n /* Scrollbar 2 px, invisible jusqu'au survol */\n scrollbar-width: thin;\n scrollbar-color: transparent transparent;\n}\n.ff-card-body:hover {\n scrollbar-color: #2a3d58 transparent;\n}\n.ff-card-body::-webkit-scrollbar {\n width: 2px;\n}\n.ff-card-body::-webkit-scrollbar-track {\n background: transparent;\n}\n.ff-card-body::-webkit-scrollbar-thumb {\n background: transparent;\n border-radius: 2px;\n}\n.ff-card-body:hover::-webkit-scrollbar-thumb {\n background: #2a3d58;\n}\n.ff-card-body:hover::-webkit-scrollbar-thumb:hover {\n background: #4a6a90;\n}\n\n/* === Rail layout === */\n\n/* ── Hauteur unique pour toutes les cartes du rail ─────────────────────────\n Qu'elles soient repliées ou dépliées, toutes les cartes de rail mesurent\n la même hauteur. Seule la largeur (width) change lors du déplier/replier,\n ce qui garantit un alignement parfait sur le rail en toutes circonstances.\n La hauteur par défaut (--ff-card-height-default, 320px) est CALÉE SUR LE\n FORMAT DES ILLUSTRATIONS : à 200px de large, une image au ratio natif\n 1024×1450 (--ff-card-image-ratio) occupe ~280px, plus l'en-tête (1 à 2\n lignes de titre) et les bordures. La vignette s'affiche donc ENTIÈRE, sans\n rognage — c'était l'inverse auparavant (250px + cover, seuls les ~2/3 hauts\n étaient exposés). Toute carte suit ce gabarit, illustrée ou non : le rail\n n'a qu'une hauteur, sinon les badges protubérants ne s'alignent plus.\n Corollaire : une carte illustrée ne pose plus rien À CÔTÉ de son image —\n description et coefficients passent en surimpression\n (.ff-card-steps-overlay), sans quoi le cadre redeviendrait trop court.\n Si un conteneur affiche 2 blocs ou plus (RECHERCHE ou STACK/ANALYSE),\n --ff-chain-card-height est réduite par chainCardHeight.ts pour qu'au moins\n deux blocs tiennent sans scroll ; l'image reste alors entière mais plus\n petite (object-fit: contain). La consultation en HD se fait toujours au\n clic sur la vignette (ActionImageModal).\n ──────────────────────────────────────────────────────────────────────── */\n\n/* Hauteur (variable, cf. ci-dessus) et animation pour TOUTES les cartes */\n.ff-chain-card {\n height: var(--ff-chain-card-height, var(--ff-card-height-default));\n transition:\n width 0.28s cubic-bezier(0.4, 0, 0.2, 1),\n height 0.2s ease;\n}\n\n/* Toutes les cartes : repliées par défaut, curseur pointer */\n.ff-chain-card {\n width: var(--ff-card-width-collapsed);\n cursor: pointer;\n}\n\n/* Largeur dépliée — un seul gabarit pour TOUTE la famille de cartes (action,\n combo, amplificateur, Bilan, Événement Clé) : un jeu de cartes n'a qu'un\n seul format, quel que soit le type de carte (voir --ff-card-width-expanded\n dans base.css, source unique de vérité). Ne pas réintroduire de largeur\n spécifique par type ici — ce serait exactement le déséquilibre que cette\n variable partagée corrige. */\n.ff-chain-card.ff-card-expanded {\n width: var(--ff-card-width-expanded);\n}\n\n/* Accent ambre — même traitement que .ff-chain-amplifier, pour que les deux\n cartes "coefficient" (amplificateur inline, Événement Clé autonome)\n partagent une identité de couleur cohérente. */\n.ff-chain-card.ff-chain-keyevent-detail {\n border: 1px solid #6a4a10;\n border-top: 3px solid #e0a030;\n background: #120c02;\n}\n\n/* Actif (cliqué) — même principe que .ff-chain-combo.ff-combo-card-active,\n teinte ambre pour rester cohérent avec la carte au repos. Un clic\n n'importe où sur la carte OU sa carte sœur "actions ciblées" ci-dessous\n (siblings du même rail, même bloc logique) affiche les barres de gain par\n slot dans la pile pour toute la fenêtre withinNextN de cet événement. */\n.ff-chain-keyevent-detail.ff-combo-card-active {\n border-color: #a87820;\n border-top-color: #f5c860;\n background: #1c1404;\n box-shadow:\n 0 0 0 1px #a87820,\n 0 0 8px 1px rgba(224, 160, 48, 0.25);\n}\n\n/* Carte "actions ciblées" — sœur de .ff-chain-keyevent-detail dans le même\n rail (voir targetsCardHtml dans buildKeyEventCardHtml) : même famille\n ambre, mais pas de bordure supérieure épaisse (le badge coefficient porte\n déjà la valeur phare, comme sur une carte combo). Même gabarit partagé que\n le reste de la famille — voir _buildDelayedTargetsCardHtml, dont le\n tableau de détail réutilise .ff-combo-prereq-table (noms qui passent à la\n ligne plutôt qu'une largeur dérogatoire). */\n.ff-chain-card.ff-chain-keyevent-targets {\n border: 1px solid #6a4a10;\n background: #120c02;\n}\n\n.ff-chain-keyevent-targets.ff-combo-card-active {\n border-color: #a87820;\n background: #1c1404;\n box-shadow: 0 0 0 1px #a87820;\n}\n\n/* ff-card-inner ne scrolle plus — c'est ff-card-body qui gère le scroll */\n.ff-chain-card .ff-card-inner {\n overflow-y: hidden;\n}\n\n/* Compressed: hide body content */\n.ff-chain-card:not(.ff-card-expanded) .ff-card-steps,\n.ff-chain-card:not(.ff-card-expanded) .ff-combo-rules {\n display: none;\n}\n/* Masquer aussi ff-card-body lui-même (flex:1) pour que le header prenne\n toute la hauteur et que son background couvre toute la carte */\n.ff-chain-card:not(.ff-card-expanded) .ff-card-body {\n display: none;\n}\n\n/* Compressed: rotate header to show vertical title */\n.ff-chain-card:not(.ff-card-expanded) .ff-card-header {\n flex: 1;\n align-items: center;\n justify-content: center;\n padding: 8px 4px;\n}\n\n.ff-chain-card:not(.ff-card-expanded) .ff-card-title {\n writing-mode: vertical-lr;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n /* Suit la hauteur de carte (320px moins l'en-tête et les bordures) : à\n 180px, le titre vertical était tronqué bien avant le bas de la carte. */\n max-height: 260px;\n}\n\n/* Hover on compressed card */\n.ff-chain-card:not(.ff-card-expanded):hover {\n filter: brightness(1.25);\n}\n\n/* Combo group: sub-row that keeps combo cards together.\n flex-start so badge top-edges align with the other chain cards.\n gap: 20px — badge protrudes right:-14px beyond the card edge, so the gap\n must exceed 14px to prevent adjacent badges from overlapping. */\n.ff-chain-grid .ff-combo-group {\n display: flex;\n align-items: flex-start;\n gap: 20px;\n}\n\n/* Separators: hidden in rail layout */\n\n.ff-chain-inter {\n border: 1px solid #1e3660;\n border-top: 3px solid #3a7abf;\n}\n\n.ff-chain-bridge {\n border: 1px solid #603020;\n border-top: 3px solid #c07030;\n}\n\n.ff-chain-intra {\n border: 1px solid #1e4030;\n border-top: 3px solid #30a070;\n}\n\n/* === Carte Combo === */\n.ff-chain-combo {\n flex: 0 0 auto;\n border-radius: 6px;\n align-self: flex-start; /* explicit top-align — padding-edge of each type has\n the same 3px border-top so badges line up exactly */\n /* overflow: visible inherited from .ff-chain-card — do NOT override to hidden\n or the absolute-positioned collapse badge will be clipped */\n}\n\n/* Combo cards embed a table, not a bulleted step-list.\n Override the 22px left-gutter that normal cards use for the vertical timeline\n line (::before pseudo-element). This reclaims ~14px for the table. */\n.ff-chain-combo .ff-card-steps {\n padding-left: 8px;\n}\n.ff-chain-combo .ff-card-steps::before {\n display: none;\n}\n\n.ff-chain-combo .ff-card-header {\n border-bottom: 1px solid;\n}\n\n/* Value-based border/background override for combo cards (higher specificity than type classes) */\n.ff-chain-combo.ff-combo-val-pos {\n border: 1px solid #1a4a2a;\n border-top: 3px solid #40c060;\n background: #040e08;\n}\n.ff-chain-combo.ff-combo-val-pos .ff-card-header {\n background: #071410;\n border-color: #1a4a2a;\n}\n.ff-chain-combo.ff-combo-val-neu {\n border: 1px solid #1a3050;\n border-top: 3px solid #4a90c0;\n background: #02080e;\n}\n.ff-chain-combo.ff-combo-val-neu .ff-card-header {\n background: #04101a;\n border-color: #1a3050;\n}\n.ff-chain-combo.ff-combo-val-neg {\n border: 1px solid #4a1a1a;\n border-top: 3px solid #c04040;\n background: #0e0404;\n}\n.ff-chain-combo.ff-combo-val-neg .ff-card-header {\n background: #140707;\n border-color: #4a1a1a;\n}\n\n/* Active (selected) state — brighter border + glow per value type */\n.ff-chain-combo.ff-combo-card-active.ff-combo-val-pos {\n border-color: #2a7a44;\n border-top-color: #60e880;\n background: #061409;\n box-shadow:\n 0 0 0 1px #2a7a44,\n 0 0 8px 1px rgba(64, 192, 96, 0.25);\n}\n.ff-chain-combo.ff-combo-card-active.ff-combo-val-pos .ff-card-header {\n background: #0a2018;\n border-color: #2a7a44;\n}\n.ff-chain-combo.ff-combo-card-active.ff-combo-val-neu {\n border-color: #2a4a7a;\n border-top-color: #6ab0e8;\n background: #030c14;\n box-shadow:\n 0 0 0 1px #2a4a7a,\n 0 0 8px 1px rgba(74, 144, 192, 0.25);\n}\n.ff-chain-combo.ff-combo-card-active.ff-combo-val-neu .ff-card-header {\n background: #061828;\n border-color: #2a4a7a;\n}\n.ff-chain-combo.ff-combo-card-active.ff-combo-val-neg {\n border-color: #7a2a2a;\n border-top-color: #e86060;\n background: #140606;\n box-shadow:\n 0 0 0 1px #7a2a2a,\n 0 0 8px 1px rgba(192, 64, 64, 0.25);\n}\n.ff-chain-combo.ff-combo-card-active.ff-combo-val-neg .ff-card-header {\n background: #200a0a;\n border-color: #7a2a2a;\n}\n\n.ff-combo-label {\n font-size: var(--fs-10);\n color: #708090;\n padding: 4px 8px 2px;\n font-style: italic;\n line-height: 1.35;\n}\n\n/* === Carte Amplificateur (Événement Clé) ===\n Palette ambre distincte du vert/bleu/rouge des combos — un amplificateur\n est toujours strictement bénéfique (pas de variante "dangereuse"), donc\n une seule teinte suffit, pas de déclinaison par valeur. */\n.ff-chain-amplifier {\n flex: 0 0 auto;\n border-radius: 6px;\n align-self: flex-start;\n border: 1px solid #6a4a10;\n border-top: 3px solid #e0a030;\n background: #120c02;\n}\n\n.ff-chain-amplifier .ff-card-header {\n border-bottom: 1px solid #6a4a10;\n background: #1a1204;\n}\n\n.ff-chain-amplifier .ff-card-steps {\n padding-left: 8px;\n}\n.ff-chain-amplifier .ff-card-steps::before {\n display: none;\n}\n\n.ff-amplifier-coeffs {\n display: flex;\n flex-wrap: wrap;\n gap: 5px;\n padding: 2px 8px 8px;\n}\n\n.ff-amplifier-coeff {\n font-size: var(--fs-10);\n font-weight: 600;\n color: #ffd98a;\n background: #2a1c06;\n border: 1px solid #6a4a10;\n border-radius: 10px;\n padding: 2px 8px;\n white-space: nowrap;\n}\n\n.ff-combo-formula {\n display: flex;\n align-items: baseline;\n gap: 5px;\n padding: 6px 8px 10px;\n font-family: monospace;\n}\n\n.ff-combo-base {\n font-size: var(--fs-13);\n color: #8898b0;\n}\n\n.ff-combo-op {\n font-size: var(--fs-12);\n color: #607080;\n}\n\n.ff-combo-eq {\n font-size: var(--fs-12);\n color: #506070;\n}\n\n.ff-combo-effective {\n font-size: var(--fs-16);\n font-weight: 700;\n}\n\n.ff-chain-intra .ff-card-header {\n background: #0a1e14;\n border-bottom: 1px solid #1e4030;\n}\n\n.ff-chain-intra .ff-card-title {\n color: #6ad4a0;\n}\n\n.ff-chain-intra .ff-card-steps::before {\n background: linear-gradient(\n to bottom,\n #30a070 0%,\n rgba(48, 160, 112, 0.15) 100%\n );\n}\n\n.ff-chain-intra .ff-card-step::before {\n border-color: #30a070;\n background: #0b1525;\n}\n\n.ff-chain-intra .ff-step-target::before {\n background: #30a070;\n box-shadow: 0 0 5px rgba(106, 212, 160, 0.6);\n}\n\n/* Bilan card steps: suppress timeline, use inline arrow instead of circle */\n.ff-chain-total .ff-card-steps::before {\n display: none;\n}\n\n.ff-chain-total .ff-card-steps {\n padding-left: 10px;\n}\n\n.ff-chain-total .ff-card-step {\n flex-direction: row;\n align-items: baseline;\n gap: 5px;\n padding: 3px 6px 3px 4px;\n border-radius: 3px;\n transition: background 0.12s;\n}\n\n.ff-chain-total .ff-card-step::before {\n content: "↪";\n position: static;\n width: auto;\n height: auto;\n border: none;\n border-radius: 0;\n background: none;\n font-size: var(--fs-11);\n line-height: 1;\n color: #3a6a9a;\n flex-shrink: 0;\n opacity: 0.7;\n transition: color 0.12s, transform 0.12s, opacity 0.12s;\n}\n\n.ff-chain-total .ff-card-step[data-row-idx]:hover {\n background: rgba(50, 100, 180, 0.14);\n}\n\n.ff-chain-total .ff-card-step[data-row-idx]:hover::before {\n color: #7ab0e0;\n opacity: 1;\n transform: translateX(2px);\n}\n\n/* Bilan list entry only reachable via a bridge (cross-composante) hop: recolor the\n arrow to match .ff-chain-bridge so it reads as a distinct propagation kind. */\n.ff-chain-total .ff-card-step.ff-step-bridge::before {\n color: #c07030;\n}\n\n.ff-chain-total .ff-card-step.ff-step-bridge[data-row-idx]:hover::before {\n color: #e0a060;\n}\n\n.ff-chain-intra .ff-card-header[data-row-idx]:hover,\n.ff-chain-intra .ff-card-step[data-row-idx]:hover {\n background: rgba(48, 160, 112, 0.12);\n}\n\n.ff-chain-intra .ff-card-focused {\n background: rgba(48, 160, 112, 0.22) !important;\n outline: 1px solid rgba(106, 212, 160, 0.5);\n border-radius: 3px;\n}\n\n.ff-chain-separator {\n flex: 1 1 auto;\n min-width: 32px;\n align-self: stretch;\n margin-left: auto;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6a9ad8;\n font-size: var(--fs-26);\n font-weight: 900;\n user-select: none;\n}\n\n.ff-chain-separator::before {\n content: "";\n position: absolute;\n left: 50%;\n top: 8%;\n bottom: 8%;\n width: 2px;\n background: linear-gradient(\n to bottom,\n transparent,\n #3a5a90 30%,\n #6a9ad8 50%,\n #3a5a90 70%,\n transparent\n );\n transform: translateX(-50%);\n border-radius: 1px;\n}\n\n.ff-chain-separator::after {\n content: "\\21D2";\n position: relative;\n z-index: 1;\n background: #07101e;\n padding: 3px 2px;\n line-height: 1;\n text-shadow: 0 0 8px rgba(106, 154, 216, 0.7);\n}\n\n/* Combo cards grouped side-by-side, no internal separators */\n.ff-combo-group {\n display: flex;\n flex-direction: row;\n gap: 20px;\n flex: 0 0 auto;\n align-items: flex-start;\n}\n\n/* Separator entering the combo section: amber/gold ⊕ instead of blue ⇒ */\n.ff-chain-separator-combo-start {\n color: #c89a30;\n}\n\n.ff-chain-separator-combo-start::before {\n background: linear-gradient(\n to bottom,\n transparent,\n #8a6010 30%,\n #c89a30 50%,\n #8a6010 70%,\n transparent\n );\n}\n\n.ff-chain-separator-combo-start::after {\n content: "\\2295";\n background: #07101e;\n text-shadow: 0 0 8px rgba(200, 154, 48, 0.75);\n}\n\n/* Separator entering the amplifier section: "⚡" — signale un renfort\n événementiel (bonus additif d'un Événement Clé) plutôt qu'une synergie\n entre actions (combo, ⊕) — même glyphe que la chip "⚡ Amplifiée par…". */\n.ff-chain-separator-amplifier-start {\n color: #e0a030;\n}\n\n.ff-chain-separator-amplifier-start::before {\n background: linear-gradient(\n to bottom,\n transparent,\n #8a5a10 30%,\n #e0a030 50%,\n #8a5a10 70%,\n transparent\n );\n}\n\n.ff-chain-separator-amplifier-start::after {\n content: "\\26A1";\n background: #07101e;\n text-shadow: 0 0 8px rgba(224, 160, 48, 0.75);\n}\n\n\n.ff-chain-total {\n min-width: 0;\n border: 1px solid #2a3a54;\n border-top: 3px solid #5a7aaa;\n border-left: 2px solid #3a5a8a;\n background: #0b1020;\n box-shadow: -4px 0 12px rgba(58, 90, 138, 0.18);\n}\n\n.ff-chain-total .ff-card-header {\n background: #111d30;\n border-bottom: 1px solid #2a3a54;\n}\n\n.ff-chain-total .ff-card-title {\n color: #7a9ac8;\n font-style: normal;\n}\n\n.ff-total-body {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 4px;\n padding: 10px 8px 12px;\n flex: 1;\n}\n\n.ff-total-delta {\n font-family: monospace;\n font-size: var(--fs-20);\n font-weight: 700;\n line-height: 1;\n}\n\n.ff-total-optimization {\n margin-top: 2px;\n text-align: center;\n font-size: var(--fs-10);\n font-weight: 700;\n letter-spacing: 0.04em;\n color: #c6daff;\n}\n\n.ff-total-optimization-value {\n margin-left: 4px;\n font-size: var(--fs-18);\n color: #8dc6ff;\n text-shadow: 0 0 8px rgba(102, 184, 255, 0.3);\n}\n/* Écart signé vs. neutre (100%) : la lueur suit la couleur bonus/malus/neutre */\n.ff-total-optimization-value.ff-delta-pos {\n text-shadow: 0 0 8px rgba(142, 242, 180, 0.35);\n}\n.ff-total-optimization-value.ff-delta-neg {\n text-shadow: 0 0 8px rgba(242, 142, 142, 0.35);\n}\n.ff-total-optimization-value.ff-delta-neu {\n text-shadow: 0 0 8px rgba(122, 184, 216, 0.3);\n}\n\n/* Poids du satellite ciblé — jamais de détail "satellites touchés" ici,\n contrairement au score : le poids ne se propage jamais, un seul satellite\n est toujours concerné. */\n.ff-total-weight {\n margin-top: 2px;\n text-align: center;\n font-size: var(--fs-10);\n font-weight: 700;\n letter-spacing: 0.04em;\n color: #d8b878;\n}\n\n.ff-total-weight-value {\n margin-left: 4px;\n font-size: var(--fs-16);\n color: #f5c860;\n text-shadow: 0 0 8px rgba(200, 150, 40, 0.35);\n}\n\n/* Séparation entre le résumé bilan et la liste de satellites dans la carte bilan */\n.ff-chain-total .ff-total-body {\n border-bottom: 1px solid #1e2c45;\n padding-bottom: 8px;\n margin-bottom: 2px;\n width: 100%;\n}\n\n.ff-total-optimization-unit {\n margin-left: 1px;\n color: #8dc6ff;\n}\n\n.ff-total-subtitle {\n padding: 5px 10px 4px 10px;\n margin: 4px 0 0;\n font-size: var(--fs-8-5);\n font-weight: 700;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: #5a7aaa;\n cursor: pointer;\n user-select: none;\n transition: color 0.15s, background 0.15s;\n border-top: 1px solid #1e3050;\n white-space: nowrap;\n background: rgba(30, 60, 100, 0.25);\n}\n\n.ff-total-subtitle:hover {\n color: #8ab0d8;\n background: rgba(40, 80, 130, 0.35);\n}\n\n.ff-prop-mod-card {\n margin-top: 6px;\n border-color: #274468;\n background: linear-gradient(180deg, #0b1628 0%, #0a1321 100%);\n}\n\n.ff-prop-mod-card .ff-combo-rules-summary {\n color: #9ec7ff;\n}\n\n/* Propagation modifier cards — bonus (≥1) and malus (<1) variants */\n.ff-prop-mod-bonus {\n border: 1px solid #1a4a2a;\n border-top: 3px solid #40c060;\n background: #040e08;\n}\n.ff-prop-mod-bonus .ff-card-header {\n background: #071410;\n border-color: #1a4a2a;\n}\n.ff-prop-mod-bonus .ff-card-title {\n color: #60d080;\n}\n.ff-prop-mod-bonus .ff-combo-label {\n color: #409050;\n}\n\n.ff-prop-mod-malus {\n border: 1px solid #4a1a1a;\n border-top: 3px solid #c04040;\n background: #0e0404;\n}\n.ff-prop-mod-malus .ff-card-header {\n background: #140707;\n border-color: #4a1a1a;\n}\n.ff-prop-mod-malus .ff-card-title {\n color: #e06060;\n}\n.ff-prop-mod-malus .ff-combo-label {\n color: #904040;\n}\n\n.ff-prop-mod-neutral {\n border: 1px solid #1a3050;\n border-top: 3px solid #4a90c0;\n background: #02080e;\n}\n.ff-prop-mod-neutral .ff-card-header {\n background: #04101a;\n border-color: #1a3050;\n}\n.ff-prop-mod-neutral .ff-card-title {\n color: #7ab8d8;\n}\n.ff-prop-mod-neutral .ff-combo-label {\n color: #3a6888;\n}\n\n.ff-prop-mod-why {\n margin-top: 6px;\n border-top: 1px dashed #2a4368;\n padding-top: 4px;\n}\n\n.ff-step-weight-subhint {\n display: block;\n margin-top: 3px;\n color: #8aa7cb;\n font-size: var(--fs-10);\n}\n\n.ff-prop-mod-why > summary {\n cursor: pointer;\n font-size: var(--fs-10);\n font-weight: 700;\n color: #9ec7ff;\n}\n\n.ff-prop-mod-why-body {\n margin-top: 4px;\n font-size: var(--fs-10);\n color: #b7cae4;\n line-height: 1.4;\n}\n\n.ff-prop-mod-why-tip {\n margin-top: 4px;\n color: #8bc7ff;\n}\n\n/* ── Cartes modificatrices de propagation — Absorption + Écart ───────────\n Structure partagée (A + B + C + D) : state-row héro, barre de zones avec\n marqueur, ligne ×multiplicateur + zone, détail secondaire optionnel,\n conseil conditionnel. Seules les largeurs/couleurs de zones diffèrent\n entre Absorption (zones fixes sur l'échelle d'état 0–100) et Écart\n (zones fixes sur l'axe différentiel -50..+50). ────────────────────── */\n\n/* A — Valeur héro (état cible / écart) */\n.ff-prop-mod-state-row {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n padding: 4px 0 3px;\n}\n.ff-prop-mod-state-label {\n font-size: var(--fs-9);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: #5a7a9a;\n}\n.ff-prop-mod-state-value {\n font-size: var(--fs-15);\n font-weight: 700;\n color: #d0e8ff;\n line-height: 1;\n font-variant-numeric: tabular-nums;\n}\n\n/* B — Barre de zones (générique) */\n.ff-zone-bar {\n position: relative;\n margin: 1px 0 7px;\n}\n.ff-zone-track {\n display: flex;\n height: 4px;\n border-radius: 2px;\n overflow: hidden;\n}\n.ff-zone { flex: none; }\n.ff-zone-marker {\n position: absolute;\n top: -1px;\n width: 2px;\n height: 6px;\n background: #fff;\n border-radius: 1px;\n transform: translateX(-50%);\n box-shadow: 0 0 4px rgba(255, 255, 255, 0.75);\n pointer-events: none;\n}\n\n/* B — Zones Absorption (échelle d'état absolue 0–100) */\n.ff-zone-fragile { width: 39%; background: #7a2020; }\n.ff-zone-nom { width: 6%; background: #1e3a6e; }\n.ff-zone-optimal { width: 10%; background: #1a6a30; }\n.ff-zone-stable { width: 14%; background: #1e3a6e; }\n.ff-zone-sature { width: 31%; background: #6e4010; }\n\n/* B — Zones Écart (axe différentiel -50..+50, seuils fixes ±10) */\n.ff-zone-atten { width: 40%; background: #7a2020; }\n.ff-zone-neutral { width: 20%; background: #1e3a6e; }\n.ff-zone-amp { width: 40%; background: #1a6a30; }\n\n/* A/C — Multiplicateur + label de zone */\n.ff-prop-mod-mult {\n font-size: var(--fs-10);\n font-weight: 600;\n margin-bottom: 2px;\n}\n.ff-prop-mod-malus .ff-prop-mod-mult { color: #d06060; }\n.ff-prop-mod-bonus .ff-prop-mod-mult { color: #60c070; }\n.ff-prop-mod-neutral .ff-prop-mod-mult { color: #7ab0d0; }\n\n/* Détail secondaire optionnel (ex : valeurs source/cible pour Écart) */\n.ff-prop-mod-detail {\n font-size: var(--fs-9);\n color: #5a7a9a;\n margin-bottom: 2px;\n}\n\n/* D — Conseil conditionnel */\n.ff-prop-mod-tip {\n font-size: var(--fs-9);\n color: #7ab8d8;\n margin-top: 3px;\n line-height: 1.3;\n}\n\n/* Mots "cible"/"source" survolables : signalent le satellite dans le\n diagramme (cf. .ff-step-nav). Pas de comportement au clic, volontairement. */\n.ff-prop-mod-link {\n cursor: help;\n text-decoration: underline dotted;\n text-decoration-color: currentColor;\n text-underline-offset: 2px;\n opacity: 0.92;\n}\n.ff-prop-mod-link:hover {\n opacity: 1;\n color: #d0e8ff;\n}\n\n.ff-total-sources {\n display: none;\n}\n\n.ff-card-header {\n display: flex;\n align-items: flex-start;\n gap: 5px;\n padding: 7px 8px 6px;\n}\n\n.ff-chain-inter .ff-card-header {\n background: #0d1e38;\n border-bottom: 1px solid #1e3660;\n}\n\n.ff-chain-bridge .ff-card-header {\n background: #1a0f05;\n border-bottom: 1px solid #603020;\n}\n\n.ff-card-icon {\n font-size: var(--fs-12);\n flex-shrink: 0;\n margin-top: 1px;\n}\n\n.ff-card-title {\n flex: 1;\n min-width: 0;\n font-size: var(--fs-9);\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n line-height: 1.3;\n overflow-wrap: anywhere;\n}\n\n.ff-card-collapse-btn {\n position: absolute;\n top: 0;\n right: -14px;\n transform: translateY(-70%);\n z-index: 10;\n background: #0e1c30;\n border: 1px solid #3a5a80;\n border-radius: 8px;\n cursor: pointer;\n font-size: var(--fs-11);\n font-weight: 700;\n line-height: 1;\n padding: 3px 6px;\n user-select: none;\n white-space: nowrap;\n transition:\n background 0.15s,\n border-color 0.15s;\n}\n.ff-card-collapse-btn:hover {\n background: #1a3050;\n border-color: #6a9acc;\n}\n.ff-card-collapse-btn.ff-delta-pos {\n color: #5fd87a;\n}\n.ff-card-collapse-btn.ff-delta-neg {\n color: #e06060;\n}\n.ff-card-collapse-btn.ff-delta-neu {\n color: #7ab8d8;\n}\n.ff-chain-card.ff-card-expanded .ff-card-collapse-btn::after {\n content: " ‹";\n font-size: var(--fs-11);\n opacity: 0.6;\n font-weight: 400;\n}\n\n/* ── Poids du satellite (canal séparé du delta de score) ──\n Jamais vert/rouge/bleu : le poids n'est ni bon ni mauvais, juste plus ou\n moins déterminant. Réutilise l'ambre déjà utilisé pour le badge de\n hiérarchie "Satellite" (.ff-hier-badge--d3).\n Positionné indépendamment de .ff-card-collapse-btn (pas de wrapper flex\n partagé) : un empilement dans un conteneur commun ferait hériter le\n translateY(-70%) de la hauteur du GROUPE plutôt que du seul badge, ce qui\n soit pousse le badge hors du cadre (empilement vertical), soit pousse le\n chip hors de la carte, dans la carte voisine du rail (empilement\n horizontal, largeur du groupe > protrusion calibrée pour un badge seul).\n Même ancre à droite (right:-14px) que le badge, positionné juste en\n dessous par un offset fixe — ni l'un ni l'autre ne bouge selon que l'autre\n existe ou non. */\n.ff-card-weight-chip {\n position: absolute;\n top: 12px;\n right: -14px;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n /* Fond opaque, comme .ff-card-collapse-btn (#0e1c30) — le chip flotte en\n position absolute au-dessus d'un contenu variable (vignette de l'action,\n dégradés), un fond translucide y devenait illisible. */\n background: #201705;\n border: 1px solid #8a6020;\n border-radius: 999px;\n color: #f5c860;\n font-family: monospace;\n font-size: var(--fs-10);\n font-weight: 700;\n line-height: 1;\n padding: 2px 6px;\n white-space: nowrap;\n user-select: none;\n}\n.ff-card-weight-chip .ff-weight-arrow {\n font-size: 0.85em;\n}\n/* Chip "amplifiée" — présent uniquement sur la carte source d'une action\n actuellement amplifiée par un Événement Clé actif (voir evaluateAmplifiers).\n Centré exactement sur le coin bas-droit de la carte : ancré pile sur le\n coin (bottom:0/right:0) puis repoussé de 50% de sa propre taille dans les\n deux axes — translate(50%,50%) déplace l'élément de la moitié de SA\n largeur/hauteur, donc son centre (pas son bord) coïncide avec le point\n d'ancrage. Coin bas plutôt que haut (déjà pris par badge/poids) : la carte\n source est toujours la première du rail, dont le bord gauche colle au tout\n début de la zone de défilement (.ff-chain-rail n'a que 6px de\n padding-left) — un chip ancré à gauche y sortait du cadre visible, faute\n de place ; à droite/bas, la marge de la zone de défilement\n (overflow-y:visible) laisse la place nécessaire. Vert, en écho au badge\n .ff-delta-pos d'un Événement Clé — toujours un amplificateur positif. */\n.ff-card-amplified-chip {\n position: absolute;\n bottom: 0;\n right: 0;\n transform: translate(50%, 50%);\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n background: #0e1c30;\n border: 1px solid #3a5a80;\n border-radius: 6px;\n color: #5fd87a;\n font-size: var(--fs-11);\n line-height: 1;\n user-select: none;\n}\n\n.ff-chain-inter .ff-card-title {\n color: #7ab8d8;\n}\n\n.ff-chain-bridge .ff-card-title {\n color: #d8a06a;\n}\n\n.ff-card-delta {\n font-weight: 700;\n font-size: var(--fs-11);\n white-space: nowrap;\n align-self: center;\n margin-left: 2px;\n padding: 1px 5px;\n border-radius: 3px;\n font-family: monospace;\n}\n\n.ff-card-delta.ff-delta-pos {\n background: rgba(58, 220, 130, 0.12);\n color: #8ef2b4;\n}\n\n.ff-card-delta.ff-delta-neg {\n background: rgba(242, 142, 142, 0.12);\n color: #f28e8e;\n}\n\n.ff-card-delta.ff-delta-neu {\n background: rgba(90, 180, 220, 0.12);\n color: #7ab8d8;\n}\n\n.ff-delta-pos {\n color: #8ef2b4;\n}\n.ff-delta-neg {\n color: #f28e8e;\n}\n.ff-delta-neu {\n color: #7ab8d8;\n}\n\n/* Steps: vertical timeline */\n.ff-card-steps {\n position: relative;\n padding: 6px 8px 8px 22px;\n flex: 1;\n}\n\n.ff-card-steps::before {\n content: "";\n position: absolute;\n left: 11px;\n top: 13px;\n bottom: 13px;\n width: 2px;\n}\n\n.ff-chain-inter .ff-card-steps::before {\n background: linear-gradient(\n to bottom,\n #3a7abf 0%,\n rgba(58, 122, 191, 0.15) 100%\n );\n}\n\n.ff-chain-bridge .ff-card-steps::before {\n background: linear-gradient(\n to bottom,\n #c07030 0%,\n rgba(192, 112, 48, 0.15) 100%\n );\n}\n\n.ff-card-step {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 1px;\n padding: 4px 0 4px 6px;\n}\n\n.ff-card-step-static {\n position: relative;\n padding: 4px 0 4px 6px;\n font-weight: 600;\n font-size: var(--fs-10-5);\n color: #c0d0ec;\n}\n\n.ff-card-step::before {\n content: "";\n position: absolute;\n left: -11px;\n top: 9px;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n border: 2px solid;\n}\n\n.ff-card-step-static::before {\n content: "";\n position: absolute;\n left: -11px;\n top: 9px;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n border: 2px solid #30a070;\n background: #30a070;\n box-shadow: 0 0 5px rgba(106, 212, 160, 0.6);\n}\n\n.ff-chain-inter .ff-card-step::before {\n border-color: #3a7abf;\n background: #0b1525;\n}\n\n.ff-chain-bridge .ff-card-step::before {\n border-color: #c07030;\n background: #0b1525;\n}\n\n.ff-step-target {\n background: rgba(232, 244, 160, 0.06);\n border-radius: 3px;\n}\n\n.ff-chain-inter .ff-step-target::before {\n background: #3a7abf;\n box-shadow: 0 0 5px rgba(122, 184, 216, 0.6);\n}\n\n.ff-chain-bridge .ff-step-target::before {\n background: #c07030;\n box-shadow: 0 0 5px rgba(216, 160, 106, 0.6);\n}\n\n.ff-step-ancestor {\n opacity: 0.55;\n}\n\n.ff-step-cascade {\n opacity: 0.55;\n font-style: italic;\n}\n\n.ff-step-cutting {\n display: flex;\n align-items: baseline;\n flex-wrap: wrap;\n gap: 2px 4px;\n font-weight: 600;\n font-size: var(--fs-10-5);\n color: #c0d0ec;\n overflow-wrap: break-word;\n word-break: break-word;\n}\n\n.ff-step-label-group {\n flex: 1;\n min-width: 0;\n overflow-wrap: break-word;\n word-break: break-word;\n}\n\n.ff-step-delta {\n flex-shrink: 0;\n font-family: monospace;\n font-size: var(--fs-10-5);\n font-weight: 700;\n}\n\n.ff-step-nav {\n cursor: pointer;\n}\n\n.ff-step-nav:hover {\n color: #d8e8ff;\n}\n\n/* Trailing "navigate to" reticle icon on a listed element (source-card step or Bilan\n entry) — same crosshair glyph as the action-stack items. Clicking the label/delta\n body itself now animates the propagation path; this icon is the sole nav trigger. */\n.ff-step-nav-target {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin-left: 4px;\n padding: 2px;\n border-radius: 50%;\n color: #5a7a9a;\n cursor: pointer;\n transition: color 0.12s, background 0.12s;\n}\n\n.ff-step-nav-target svg circle,\n.ff-step-nav-target svg line {\n stroke: currentColor;\n stroke-width: 1.1;\n stroke-linecap: round;\n}\n\n.ff-step-nav-target:hover {\n color: #d8e8ff;\n background: rgba(60, 130, 230, 0.18);\n}\n\n.ff-step-nav.ff-nav-item-active {\n color: #e8f4ff;\n background: rgba(60, 130, 230, 0.18);\n border-radius: 3px;\n}\n\n.ff-step-target .ff-step-cutting {\n color: #e8f4a0;\n}\n\n.ff-step-weight {\n font-size: var(--fs-9-5);\n color: #4a6080;\n}\n\n/* Card ↔ table interactivity */\n.ff-card-header[data-row-idx],\n.ff-card-step[data-row-idx] {\n cursor: pointer;\n transition: background 0.12s;\n}\n\n.ff-chain-inter .ff-card-header[data-row-idx]:hover,\n.ff-chain-inter .ff-card-step[data-row-idx]:hover {\n background: rgba(58, 122, 191, 0.12);\n}\n\n.ff-chain-intra .ff-source-click-target {\n cursor: pointer;\n transition: background 0.12s;\n}\n\n.ff-chain-intra .ff-source-click-target:hover {\n background: rgba(48, 160, 112, 0.12);\n}\n\n.ff-chain-bridge .ff-card-header[data-row-idx]:hover,\n.ff-chain-bridge .ff-card-step[data-row-idx]:hover {\n background: rgba(192, 112, 48, 0.12);\n}\n\n.ff-chain-inter .ff-card-focused {\n background: rgba(58, 122, 191, 0.22) !important;\n outline: 1px solid rgba(122, 184, 216, 0.5);\n border-radius: 3px;\n}\n\n.ff-chain-bridge .ff-card-focused {\n background: rgba(192, 112, 48, 0.22) !important;\n outline: 1px solid rgba(216, 160, 106, 0.5);\n border-radius: 3px;\n}\n\n.ff-row-focused {\n background: rgba(232, 244, 160, 0.13) !important;\n outline: 2px solid rgba(232, 244, 160, 0.45);\n outline-offset: -2px;\n}\n\n/* Detail disclosure (collapsible table) */\n.ff-detail-disclosure {\n margin-top: 8px;\n border: 1px solid #1e2a40;\n border-radius: 4px;\n overflow: hidden;\n}\n\n.ff-detail-disclosure summary {\n cursor: pointer;\n padding: 5px 10px;\n background: #111b2c;\n color: #5a8ab0;\n font-size: var(--fs-10-5);\n user-select: none;\n list-style: none;\n letter-spacing: 0.02em;\n}\n\n.ff-detail-disclosure summary::-webkit-details-marker {\n display: none;\n}\n\n.ff-detail-disclosure[open] summary {\n border-bottom: 1px solid #1e2a40;\n}\n\n.ff-detail-disclosure[open] summary::before {\n content: "▼ ";\n}\n.ff-detail-disclosure:not([open]) summary::before {\n content: "▶ ";\n}\n\n/* ============================================================\n Collapsible propagation chain inside bilan card\n ============================================================ */\n\n.ff-propagation-chain-details {\n border-top: 1px solid rgba(255, 255, 255, 0.06);\n margin-top: 2px;\n}\n\n.ff-propagation-chain-summary {\n cursor: pointer;\n list-style: none;\n padding: 5px 10px;\n font-size: var(--fs-8-5);\n font-weight: 700;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: #4a6a8a;\n user-select: none;\n transition: color 0.15s, background 0.15s;\n}\n\n.ff-propagation-chain-summary::-webkit-details-marker {\n display: none;\n}\n\n.ff-propagation-chain-details[open] .ff-propagation-chain-summary {\n color: #7a9ab8;\n border-bottom: 1px solid #1e2a40;\n}\n\n.ff-propagation-chain-summary::before {\n content: "▶ ";\n font-size: var(--fs-8);\n}\n\n.ff-propagation-chain-details[open] .ff-propagation-chain-summary::before {\n content: "▼ ";\n}\n\n/* ============================================================\n Section règles combo (ff-combo-rules / ff-rule-tag)\n ============================================================ */\n\n.ff-combo-rules {\n border-top: 1px solid rgba(255, 255, 255, 0.06);\n margin-top: 2px;\n}\n\n.ff-combo-rules-summary {\n cursor: pointer;\n list-style: none;\n padding: 5px 8px;\n font-size: var(--fs-9-5);\n color: #607080;\n letter-spacing: 0.03em;\n user-select: none;\n}\n.ff-combo-rules-summary::-webkit-details-marker {\n display: none;\n}\n.ff-combo-rules[open] .ff-combo-rules-summary {\n color: #7a9ab8;\n}\n.ff-combo-rules-summary::before {\n content: "▶ ";\n font-size: var(--fs-8);\n}\n.ff-combo-rules[open] .ff-combo-rules-summary::before {\n content: "▼ ";\n}\n\n.ff-combo-rules-body {\n padding: 6px 8px 8px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.ff-combo-rules-secret {\n font-size: var(--fs-10);\n color: #604040;\n font-style: italic;\n}\n\n.ff-rule-row {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.ff-rule-label {\n font-size: var(--fs-9);\n color: #506070;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n}\n\n.ff-rule-value {\n font-size: var(--fs-10);\n color: #7a9ab8;\n}\n\n.ff-rule-none {\n font-size: var(--fs-10);\n color: #404040;\n font-style: italic;\n}\n\n.ff-rule-tags {\n display: flex;\n flex-direction: column;\n gap: 3px;\n}\n\n/* Sous-carte action dans les règles combo */\n.ff-rule-tag {\n display: block;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: var(--fs-10);\n line-height: 1.35;\n cursor: pointer;\n transition:\n opacity 0.15s,\n border-color 0.15s;\n word-break: break-word;\n}\n.ff-rule-tag:hover {\n opacity: 0.85;\n}\n\n/* Action requise (prérequis d'activation) — vert sombre */\n.ff-rule-req {\n background: #041a10;\n border: 1px solid #1a4a2a;\n border-left: 3px solid #2a8a50;\n color: #50c080;\n}\n.ff-rule-req:hover {\n border-left-color: #3adf70;\n color: #70e090;\n}\n\n/* Action incompatible (désactivation) — rouge sombre */\n.ff-rule-excl {\n background: #1a0404;\n border: 1px solid #4a1a1a;\n border-left: 3px solid #c03030;\n color: #e06060;\n}\n.ff-rule-excl:hover {\n border-left-color: #ff5050;\n color: #ff8080;\n}\n\n/* ── Tableau de détail des prérequis combo ─────────────────────────── */\n.ff-combo-prereq-table {\n width: calc(100% - 8px);\n margin: 4px 4px 8px;\n border-collapse: collapse;\n font-size: var(--fs-10);\n color: #a0b4c8;\n}\n\n.ff-combo-prereq-table thead tr {\n border-bottom: 1px solid #2a3a4a;\n}\n\n.ff-pt-head-name,\n.ff-pt-head-val {\n font-size: var(--fs-9);\n font-weight: 600;\n color: #5a7a9a;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n padding: 2px 3px 3px;\n}\n\n.ff-pt-head-name {\n text-align: left;\n}\n\n.ff-pt-head-val {\n text-align: right;\n}\n\n.ff-combo-prereq-table tbody tr {\n border-bottom: 1px solid #1a2430;\n}\n\n.ff-pt-name {\n max-width: 90px;\n white-space: normal;\n word-break: break-word;\n padding: 3px 4px 3px 2px;\n color: #8898b0;\n font-size: var(--fs-10);\n line-height: 1.35;\n}\n\n.ff-pt-name[data-action-id] {\n cursor: pointer;\n color: #50c080;\n border-left: 2px solid #2a8a50;\n padding-left: 5px;\n transition:\n color 0.15s,\n border-color 0.15s;\n}\n\n.ff-pt-name[data-action-id]:hover {\n color: #70e090;\n border-left-color: #3adf70;\n}\n\n.ff-pt-name[data-action-id].ff-nav-item-active {\n color: #7af0a0;\n border-left-color: #4aef80;\n border-left-width: 3px;\n background: rgba(48, 180, 90, 0.14);\n}\n\n/* Liste d'actions ciblées d'un Événement Clé/d'une action adverse : mêmes\n colonnes ff-pt-name/ff-pt-val que .ff-combo-prereq-table (voir\n _buildDelayedTargetsCardHtml) — seule différence, les chips de delta de la\n colonne "Résultat" passent en inline-flex pour suivre le text-align:right\n hérité de .ff-pt-val (.dchips est display:flex/bloc par défaut). */\n.ff-keyevent-targets-table .ff-pt-val .dchips {\n display: inline-flex;\n}\n\n.ff-pt-val {\n text-align: right;\n padding: 3px 2px 3px 4px;\n font-size: var(--fs-10);\n font-variant-numeric: tabular-nums;\n color: #7a90a8;\n}\n\n.ff-pt-val--high {\n color: #6abf88;\n}\n\n.ff-pt-val--mid {\n color: #8898b0;\n}\n\n.ff-pt-val--low {\n color: #c07060;\n}\n\n/* Prérequis/protecteur jamais joué : "—" plutôt que des % sans signification réelle */\n.ff-pt-val--unplayed {\n color: #4a6070;\n font-style: italic;\n}\n.ff-pt-row--unplayed {\n opacity: 0.7;\n}\n\n/* Colonne Score (piste B) : mini-barre de remplissage derrière le pourcentage */\n.ff-pt-val-score {\n position: relative;\n text-align: right;\n padding: 3px 2px 3px 4px;\n font-size: var(--fs-10);\n}\n.ff-pt-score-fill {\n position: absolute;\n inset: 1px 0;\n z-index: 0;\n opacity: 0.22;\n border-radius: 2px;\n}\n.ff-pt-score-fill.ff-pt-val--high { background: #3adf70; }\n.ff-pt-score-fill.ff-pt-val--mid { background: #8898b0; }\n.ff-pt-score-fill.ff-pt-val--low { background: #e06060; }\n.ff-pt-score-text {\n position: relative;\n z-index: 1;\n font-variant-numeric: tabular-nums;\n}\n\n.ff-pt-max-hint {\n font-size: var(--fs-9);\n color: #4a6070;\n opacity: 0.8;\n}\n\n/* ══════════════════════════════════════════════════════════════════════════\n Événement Clé verrouillé — carte amplificateur et carte de détail\n ─────────────────────────────────────────────────────────────────────────\n Traitement unique appliqué au conteneur de carte (.ff-keyevent-locked,\n posé par ForceFieldDetailsPanel d'après isKeyEventUnlocked) : la carte\n perd la teinte or qui identifie les Événements Clés partout ailleurs et\n passe en gris froid, bordure haute pointillée. Le contenu reste\n intégralement lisible — descriptions, coefficients, actions amplifiées :\n c'est l'illustration qui manque, pas la donnée, et le moteur\n d'amplification continue de fonctionner (verrou purement visuel).\n ══════════════════════════════════════════════════════════════════════════ */\n.ff-chain-card.ff-keyevent-locked {\n border-color: #3c3c40;\n border-top-color: #6f6d66;\n border-top-style: dashed;\n background: #101012;\n}\n\n.ff-chain-card.ff-keyevent-locked .ff-card-header {\n border-bottom-color: #3c3c40;\n background: #17171a;\n}\n\n.ff-chain-card.ff-keyevent-locked .ff-card-title {\n color: #b4b2aa;\n}\n\n.ff-chain-card.ff-keyevent-locked .ff-card-media {\n border-bottom-color: #3c3c40;\n}\n\n/* Description courte de la carte amplificateur : ternie sans être illisible. */\n.ff-chain-card.ff-keyevent-locked .ff-combo-label {\n color: #8d8b83;\n}\n\n/* Badges et chips de coefficient : mêmes formes, palette éteinte — le vert\n et l'ambre signalent un amplificateur DISPONIBLE. */\n.ff-keyevent-locked .ff-card-collapse-btn {\n background: #1a1a1d;\n border-color: #4a4a50;\n color: #a3a19a;\n}\n\n.ff-keyevent-locked .ff-amplifier-coeff {\n border-color: #4a4a50;\n color: #a3a19a;\n background: #1a1a1d;\n}\n\n/* Bandeau posé sur le cartouche verrouillé (description + coefficients en\n surimpression sur la carte amplificateur) : plus d'image à assombrir\n dessous, un voile plat remplace le dégradé, dans le gris de la carte\n plutôt que le bleu nuit. */\n.ff-keyevent-locked .ff-card-steps-overlay {\n background: rgba(14, 14, 16, 0.82);\n}\n\n/* ============================================================\n Actions adverses — même rouge que les deltas négatifs (.ff-delta-neg),\n décliné sur le badge de bloc, la carte "entrave" du rail (variante\n adverse de .ff-chain-amplifier), sa carte sœur "Actions entravées" et\n le chip ⛓ de la carte source entravée.\n ============================================================ */\n\n.ff-hier-badge--action-adverse {\n background: rgba(190, 60, 60, 0.26);\n border: 1px solid rgba(220, 90, 90, 0.6);\n color: #f28e8e;\n font-size: var(--fs-9);\n white-space: normal;\n overflow-wrap: break-word;\n text-align: center;\n line-height: 1.3;\n}\n\n.ff-chain-amplifier.ff-chain-amplifier--adverse {\n border: 1px solid #6a1e1e;\n border-top: 3px solid #d84a4a;\n background: #140505;\n}\n\n.ff-chain-amplifier.ff-chain-amplifier--adverse .ff-card-header {\n border-bottom: 1px solid #6a1e1e;\n background: #1c0808;\n}\n\n.ff-chain-amplifier--adverse .ff-amplifier-coeff {\n color: #f2a5a5;\n}\n\n.ff-chain-card.ff-chain-keyevent-targets.ff-chain-keyevent-targets--adverse {\n border: 1px solid #6a1e1e;\n background: #140505;\n}\n\n.ff-chain-keyevent-targets--adverse.ff-combo-card-active {\n border-color: #a83a3a;\n background: #1c0808;\n box-shadow: 0 0 0 1px #a83a3a;\n}\n\n.ff-card-hindered-chip {\n color: #f28e8e;\n /* Deux chips au même coin : le ⛓ se décale d'une largeur vers la gauche\n pour ne pas recouvrir le ⚡ quand l'action est à la fois amplifiée et\n entravée. */\n transform: translate(-60%, 50%);\n}\n\n/* ============================================================\n Événements adverses — le pendant rouge exact de la famille ambre des\n Événements Clés (badge de bloc, bloc cumulatif, carte descriptive du\n rail), même rouge que les actions adverses ci-dessus.\n ============================================================ */\n\n.ff-hier-badge--keyevent-adverse {\n background: rgba(190, 60, 60, 0.26);\n border: 1px solid rgba(220, 90, 90, 0.6);\n color: #f28e8e;\n font-size: var(--fs-9);\n white-space: normal;\n overflow-wrap: break-word;\n text-align: center;\n line-height: 1.3;\n}\n\n/* Bloc cumulatif : la teinte rouge remplace l'ambre, mêmes règles de vie\n (toujours visible dès joué dans la Facette, accent seul entre actif et\n inactif — l'opacité inactive de --keyevent-inactive s'applique telle\n quelle). */\n.ff-cumulative-block--keyevent.ff-cumulative-block--keyevent-adverse {\n background: rgba(40, 10, 10, 0.45);\n border: 1px solid rgba(220, 90, 90, 0.22);\n}\n\n.ff-cumulative-block--keyevent-adverse.ff-cumulative-block--keyevent-active {\n border-color: rgba(216, 74, 74, 0.55);\n box-shadow: 0 0 0 1px rgba(216, 74, 74, 0.55);\n}\n\n/* Carte descriptive du rail — même recette que la variante adverse de\n .ff-chain-amplifier : le rouge remplace l'ambre, y compris à l'état\n actif (barres de gain par slot). */\n.ff-chain-card.ff-chain-keyevent-detail.ff-chain-keyevent-detail--adverse {\n border: 1px solid #6a1e1e;\n border-top: 3px solid #d84a4a;\n background: #140505;\n}\n\n.ff-chain-keyevent-detail--adverse.ff-combo-card-active {\n border-color: #a83a3a;\n border-top-color: #e87070;\n background: #1c0808;\n box-shadow:\n 0 0 0 1px #a83a3a,\n 0 0 8px 1px rgba(216, 74, 74, 0.25);\n}\n\n/* ── Jauges de fenêtre de la pile d'actions (combos / Événements Clés) ──\n Halo flouté qui respire, cœur en gradient, impulsion lumineuse qui\n parcourt la barre dans le sens de la fenêtre. --asw-travel est posé\n inline par ActionStackController (largeur de barre + largeur d'impulsion). */\n.asw-gauge__halo {\n animation: asw-halo-breathe 2.4s ease-in-out infinite;\n}\n\n.asw-gauge__pulse {\n animation: asw-pulse-travel 1.8s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n.asw-gauge__pulse--forward {\n animation-direction: reverse;\n}\n\n@keyframes asw-halo-breathe {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.35;\n }\n}\n\n@keyframes asw-pulse-travel {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(var(--asw-travel, 80px));\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .asw-gauge__halo,\n .asw-gauge__pulse {\n animation: none;\n }\n .asw-gauge__pulse {\n display: none;\n }\n}\n`,""]);const p=d},1784(e,t,n){n.d(t,{A:()=>s});var i=n(1601),r=n.n(i),a=n(6314),o=n.n(a)()(r());o.push([e.id,'/* Grid Container */\n.main-grid {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: 1fr;\n width: 100vw;\n height: 100vh;\n gap: 0;\n overflow: hidden;\n}\n\n/* Format rows */\n.format-row {\n position: relative;\n display: grid;\n grid-template-columns: 1fr;\n background-color: white;\n border-bottom: 2px solid #ddd;\n min-height: 0;\n overflow: hidden;\n}\n\n/* Diagram column */\n.diagram-column {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n background-color: #05070d;\n}\n\n.component-title-container {\n position: absolute;\n top: 10px;\n left: 12px;\n bottom: auto;\n right: auto;\n z-index: 10;\n padding: 0;\n pointer-events: none;\n display: flex;\n align-items: flex-end;\n justify-content: flex-start;\n opacity: 1;\n transition: opacity 220ms ease;\n}\n\n.component-title-container > div {\n pointer-events: all;\n}\n\n/* Une bulle de facette (force field) déployée chevauche le titre : on\n l\'estompe le temps que la bulle occupe cette zone plutôt que de la\n laisser passer derrière/dessus. */\n.component-title-container.is-obstructed {\n opacity: 0.12;\n}\n\n.component-title-container.is-obstructed > div {\n pointer-events: none;\n}\n\n.diagram-with-panel {\n position: relative;\n display: grid;\n grid-template-columns: minmax(0, 1fr) var(--details-panel-width);\n width: 100%;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.diagram-column svg {\n display: block;\n max-width: 100%;\n max-height: 100%;\n}\n\n.layout-resizer {\n position: absolute;\n z-index: 20;\n user-select: none;\n touch-action: none;\n}\n\n.layout-resizer::before {\n content: "";\n position: absolute;\n inset: 0;\n border-radius: 999px;\n background: rgba(78, 132, 255, 0.12);\n transition:\n background 0.15s ease,\n box-shadow 0.15s ease;\n}\n\n.layout-resizer:hover::before,\n.layout-resizer.is-active::before {\n background: rgba(78, 132, 255, 0.3);\n box-shadow: 0 0 0 1px rgba(134, 177, 255, 0.45);\n}\n\n.layout-resizer-horizontal {\n left: 10px;\n right: 10px;\n bottom: -5px;\n height: 10px;\n cursor: row-resize;\n}\n\n.layout-resizer-vertical {\n top: 10px;\n bottom: 10px;\n right: -5px;\n width: 10px;\n cursor: col-resize;\n}\n\n.layout-resizer-panel {\n left: auto;\n right: calc(var(--details-panel-width) - 5px);\n}\n\n.layout-resizer-handle {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 16px;\n height: 40px;\n border-radius: 999px;\n background: rgba(78, 132, 255, 0.28);\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n opacity: 0.6;\n transition:\n opacity 0.15s ease,\n background 0.15s ease;\n}\n\n.layout-resizer-panel:hover .layout-resizer-handle,\n.layout-resizer-panel.is-active .layout-resizer-handle {\n opacity: 1;\n background: rgba(78, 132, 255, 0.5);\n}\n\n.layout-resizer-handle-icon {\n font-size: 13px;\n line-height: 1;\n color: rgba(255, 255, 255, 0.9);\n user-select: none;\n}\n\n.layout-resizer-handle-icon--restore {\n display: none;\n}\n\n.layout-resizer-panel.is-maximized .layout-resizer-handle-icon--expand {\n display: none;\n}\n\n.layout-resizer-panel.is-maximized .layout-resizer-handle-icon--restore {\n display: inline;\n}\n\n.diagram-with-panel.details-collapsed .layout-resizer-panel {\n opacity: 0;\n pointer-events: none;\n}\n\n.diagram-with-panel.is-animating-width {\n transition: grid-template-columns 220ms ease;\n}\n\n.diagram-with-panel.is-animating-width .layout-resizer-panel {\n transition: right 220ms ease;\n}\n\n.diagram-with-panel.is-maximized {\n grid-template-columns: 0 1fr !important;\n}\n\n.diagram-with-panel.is-maximized .layout-resizer-panel {\n right: 3px;\n}\n\nbody.layout-resizing,\nbody.layout-resizing * {\n cursor: inherit !important;\n user-select: none !important;\n}\n\n.diagram-with-panel.details-collapsed {\n grid-template-columns: minmax(0, 1fr) 0 !important;\n}\n\n.diagram-with-panel.details-collapsed .force-field-details-panel {\n opacity: 0;\n pointer-events: none;\n border-left: none;\n}\n\n\n/* Action stack column inside details panel */\n.action-stack-column {\n position: relative;\n background: #05070d;\n border-right: 1px solid #1e2c45;\n min-height: 0;\n overflow: visible;\n z-index: 2;\n}\n\n.action-stack-svg {\n display: block;\n width: 100%;\n height: 100%;\n overflow: visible;\n}\n\n.layout-resizer-action-stack {\n top: 10px;\n bottom: 10px;\n right: -5px;\n left: auto;\n width: 10px;\n cursor: col-resize;\n}\n',""]);const s=o},7118(e,t,n){n.d(t,{A:()=>p});var i=n(1601),r=n.n(i),a=n(6314),o=n.n(a),s=n(4417),l=n.n(s),c=new URL(n(5246),n.b),d=o()(r()),u=l()(c);d.push([e.id,`/* ── Beacon pulse : arc SVG du diagramme ── */\n/* Les deux keyframes ont la même structure (2 drop-shadows + brightness)\n pour que CSS puisse interpoler chaque valeur sans saut. */\n@keyframes gs-beacon-pulse {\n 0%,\n 100% {\n filter: drop-shadow(0 0 3px rgba(114, 245, 255, 0.35))\n drop-shadow(0 0 7px rgba(114, 245, 255, 0.2)) brightness(1.05);\n }\n 50% {\n filter: drop-shadow(0 0 12px rgba(114, 245, 255, 1))\n drop-shadow(0 0 28px rgba(114, 245, 255, 0.85)) brightness(1.28);\n }\n}\n\n/* ── Beacon pulse : barre gauche dans l'arbre Recherche ── */\n@keyframes gs-beacon-pulse-tree {\n 0%,\n 100% {\n box-shadow: inset 5px 0 0 rgba(114, 245, 255, 0.6),\n 2px 0 8px rgba(114, 245, 255, 0.15);\n background: rgba(114, 245, 255, 0.07);\n }\n 50% {\n box-shadow: inset 5px 0 0 rgba(114, 245, 255, 1),\n 2px 0 14px rgba(114, 245, 255, 0.45);\n background: rgba(114, 245, 255, 0.22);\n }\n}\n\n.gs-action-beacon {\n animation: gs-beacon-pulse-tree 1.9s ease-in-out infinite;\n}\n\n.gs-border-beacon {\n animation: gs-beacon-pulse 1.9s ease-in-out infinite;\n}\n\n/* Hover déclenché par le survol de l'arbre Recherche — glow cyan marqué */\n.gs-border-hover {\n filter: brightness(1.35) drop-shadow(0 0 6px rgba(114, 245, 255, 0.9))\n drop-shadow(0 0 16px rgba(114, 245, 255, 0.6))\n drop-shadow(0 0 28px rgba(114, 245, 255, 0.3));\n transition: filter 0.15s ease;\n}\n\n/* Highlight d'une ligne de l'arbre Recherche déclenché depuis le diagramme (retour visuel\n bidirectionnel) — réutilise exactement les couleurs du :hover natif de chaque type de ligne,\n pour que le survol depuis le diagramme rende le même effet que le survol depuis l'arbre. */\n.gs-tree-row--composante.gs-row-hover-ext,\n.gs-tree-row--odd.gs-row-hover-ext,\n.gs-tree-row--cutting.gs-row-hover-ext {\n background: #0e1e35;\n}\n\n.gs-tree-row--action.gs-row-hover-ext {\n background: #112040;\n}\n\n.gs-tree-row--keyevent.gs-row-hover-ext {\n background: #221d12;\n}\n\n.gs-tree-row--composante.gs-row-hover-ext .gs-tree-composante-label {\n color: #7ab8e8;\n}\n\n.gs-tree-row--cutting.gs-row-hover-ext .gs-tree-cutting-label {\n color: #d8eaff;\n}\n\n.gs-tree-row--odd.gs-row-hover-ext .gs-tree-odd-tag {\n opacity: 0.8;\n}\n\n/* ── Global Search Widget ── */\n.gs-search-widget {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n padding: 10px 8px 0;\n box-sizing: border-box;\n}\n\n.gs-search-wrap {\n position: relative;\n flex-shrink: 0;\n}\n\n#global-search-input {\n width: 100%;\n box-sizing: border-box;\n background: rgba(9, 15, 26, 0.92);\n border: 1px solid #2a3f60;\n border-radius: 6px;\n color: #c8d8f0;\n font-family: inherit;\n font-size: var(--fs-12);\n outline: none;\n padding: 7px 28px 7px 30px;\n transition: border-color 0.15s;\n background-image: url(${u});\n background-repeat: no-repeat;\n background-position: 9px center;\n}\n\n.gs-search-clear {\n position: absolute;\n right: 7px;\n top: 50%;\n transform: translateY(-50%);\n background: none;\n border: none;\n color: #3a5070;\n font-size: var(--fs-15);\n line-height: 1;\n padding: 2px 3px;\n cursor: pointer;\n opacity: 0;\n pointer-events: none;\n transition:\n opacity 0.15s,\n color 0.15s;\n}\n\n.gs-search-clear--visible {\n opacity: 1;\n pointer-events: auto;\n}\n\n.gs-search-clear:hover {\n color: #a0c8e8;\n}\n\n#global-search-input:focus {\n border-color: #3a7abf;\n}\n\n#global-search-input::placeholder {\n color: #3a5070;\n}\n\n#global-search-results {\n list-style: none;\n margin: 8px 0 0;\n padding: 0;\n flex: 1;\n overflow-y: auto;\n border-top: 1px solid #1a2840;\n}\n\n.gs-no-results {\n padding: 14px 10px;\n color: #3a5070;\n font-size: var(--fs-11);\n text-align: center;\n}\n\n.gs-context-placeholder {\n padding: 20px 12px;\n color: #4a6070;\n font-size: var(--fs-11);\n font-style: italic;\n text-align: center;\n opacity: 0.75;\n list-style: none;\n}\n\n/* ── Flat search results (mode recherche) ── */\n\n.gs-result-item {\n cursor: default;\n display: flex;\n flex-direction: column;\n gap: 0;\n border-bottom: 1px solid #0f1826;\n /* border-left set inline via JS (couleur ODD) */\n}\n\n.gs-result-item:last-child {\n border-bottom: none;\n}\n\n.gs-result-item--active .gs-result-item-inner,\n.gs-result-item:hover .gs-result-item-inner {\n background: #112040;\n}\n\n.gs-result-item-inner {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 7px 10px;\n cursor: pointer;\n}\n\n.gs-result-meta {\n display: flex;\n gap: 6px;\n align-items: center;\n}\n\n.gs-result-component {\n font-size: var(--fs-9);\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: #3a7abf;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 110px;\n}\n\n.gs-result-odd-dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.gs-result-odd-tag {\n font-size: var(--fs-9);\n color: #c8d8f0;\n padding: 1px 6px 1px 4px;\n border-radius: 3px;\n border-left: 2px solid; /* color set inline */\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.gs-result-cutting {\n font-size: var(--fs-11);\n color: #c8d8f0;\n line-height: 1.3;\n}\n\n.gs-result-action-row {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.gs-result-action {\n font-size: var(--fs-10);\n color: #5a8ab0;\n line-height: 1.3;\n flex: 1;\n}\n\nmark.gs-highlight {\n background: rgba(58, 122, 191, 0.28);\n color: #d0e8ff;\n border-radius: 2px;\n padding: 0 1px;\n}\n\n/* ── Tree view (mode browse) ── */\n\n.gs-tree-composante,\n.gs-tree-odd,\n.gs-tree-cutting,\n.gs-tree-action {\n list-style: none;\n}\n\n/* Animation d'expansion : wrapper grid → enfants avec min-height:0 */\n.gs-tree-children-wrapper {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 0.26s ease;\n overflow: hidden;\n}\n\n.gs-tree-children-wrapper--open {\n grid-template-rows: 1fr;\n}\n\n.gs-tree-children {\n min-height: 0;\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/* ── Bloc d'impact d'action directe injecté inline sous un cutting ────────── */\n.gs-cutting-impact-block {\n position: relative;\n border-left: 2px solid rgba(255, 255, 255, 0.12);\n background: rgba(0, 0, 0, 0.18);\n border-radius: 0 4px 4px 0;\n overflow: hidden;\n /* État fermé (initial) */\n max-height: 0;\n opacity: 0;\n padding: 0 8px 0 12px;\n margin: 0;\n transition:\n max-height 300ms ease,\n opacity 240ms ease,\n padding-top 300ms ease,\n padding-bottom 300ms ease,\n margin-top 300ms ease,\n margin-bottom 300ms ease;\n}\n\n/* Action directe : teinte bleue */\n.gs-cutting-impact-block--direct {\n background: var(--action-direct-bg);\n border-left-color: var(--action-direct-accent);\n}\n\n/* Action propagée : teinte verte */\n.gs-cutting-impact-block--propagated {\n background: var(--action-propagated-bg);\n border-left-color: var(--action-propagated-accent);\n}\n\n.gs-cutting-impact-block.gs-block-open {\n max-height: 900px;\n opacity: 1;\n padding-top: 6px;\n padding-bottom: 6px;\n margin-top: 2px;\n margin-bottom: 4px;\n}\n\n.gs-block-lock {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n margin-left: auto;\n padding: 2px 6px;\n background: transparent;\n border: 1px solid rgba(120, 170, 230, 0.2);\n border-radius: 8px;\n cursor: pointer;\n color: rgba(160, 200, 250, 0.45);\n font-size: var(--fs-10);\n line-height: 1;\n flex-shrink: 0;\n transition:\n color 0.15s ease,\n background 0.15s ease,\n border-color 0.15s ease;\n}\n.gs-block-lock:hover {\n color: rgba(200, 225, 255, 0.9);\n background: rgba(80, 120, 180, 0.2);\n border-color: rgba(140, 190, 255, 0.45);\n}\n.gs-block-lock--locked {\n color: rgba(100, 180, 255, 0.9);\n background: rgba(30, 80, 160, 0.25);\n border-color: rgba(80, 160, 255, 0.55);\n}\n.gs-block-lock--locked:hover {\n color: #fff;\n background: rgba(50, 100, 200, 0.35);\n border-color: rgba(120, 190, 255, 0.75);\n}\n.gs-block-lock svg {\n display: block;\n pointer-events: none;\n}\n\n.gs-cutting-impact-block .ff-chain-rail {\n padding: 0;\n}\n\n/* Propagation block: action line is a standalone title — no indent, no connector, no border */\n.gs-cutting-impact-block .ff-hier-action {\n margin-left: 0 !important;\n border-left: none !important;\n background: none !important;\n}\n\n.gs-cutting-impact-block .ff-hier-action-block {\n padding-left: 8px;\n}\n\n.gs-cutting-impact-block .ff-hier-connector:has(+ .ff-hier-action) {\n display: none;\n}\n\n.gs-cutting-impact-block .ff-chain-grid {\n gap: 6px;\n}\n\n/* Masquer "Détail complet du calcul" dans les blocs inline de la Recherche */\n.gs-cutting-impact-block .ff-detail-disclosure {\n display: none;\n}\n\n/* Actions directement sous cutting (toujours visibles quand ODD ouvert) */\n.gs-tree-children--actions {\n min-height: 0;\n}\n\n/* Ligne générique */\n.gs-tree-row {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 10px;\n border-bottom: 1px solid #0c1520;\n user-select: none;\n}\n\n/* Composante — cliquable pour plier/déplier */\n.gs-tree-row--composante {\n cursor: pointer;\n padding: 7px 10px;\n}\n\n.gs-tree-row--composante:hover {\n background: #0e1e35;\n}\n\n/* ODD — cliquable pour plier/déplier */\n.gs-tree-row--odd {\n cursor: pointer;\n padding: 5px 10px 5px 18px;\n}\n\n.gs-tree-row--odd:hover {\n background: #0e1e35;\n}\n\n/* Cutting — cliquable pour plier/déplier */\n.gs-tree-row--cutting {\n cursor: pointer;\n padding: 5px 10px 5px 18px;\n}\n\n.gs-tree-row--cutting:hover {\n background: #0e1e35;\n}\n\n/* Action — cliquable pour naviguer */\n.gs-tree-row--action {\n cursor: pointer;\n padding: 4px 10px 4px 30px;\n}\n\n.gs-tree-row--action:hover {\n background: #112040;\n}\n\n/* Bouton plier/déplier (▶ / ▼) */\n.gs-tree-toggle {\n background: none;\n border: none;\n color: #3a5070;\n font-size: var(--fs-7);\n width: 12px;\n flex-shrink: 0;\n text-align: center;\n cursor: pointer;\n padding: 0;\n line-height: 1;\n transition: color 0.15s;\n}\n\n.gs-tree-toggle:hover {\n color: #7ab0d0;\n}\n\n/* Indicateur statique ▼ (mode arbre filtré — pas de clic) */\n.gs-tree-toggle--static {\n display: inline-block;\n color: #3a5070;\n font-size: var(--fs-7);\n width: 12px;\n flex-shrink: 0;\n text-align: center;\n padding: 0;\n line-height: 1;\n cursor: default;\n user-select: none;\n}\n\n/* Label Composante */\n.gs-tree-composante-label {\n font-size: var(--fs-9);\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: #4a8abf;\n font-weight: 600;\n flex: 1;\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.gs-tree-composante-label:hover {\n color: #7ab8e8;\n}\n\n/* Dot ODD */\n.gs-tree-odd-dot {\n width: 11px;\n height: 11px;\n min-width: 11px;\n border-radius: 50%;\n flex-shrink: 0;\n /* rendu interactif */\n border: none;\n padding: 0;\n cursor: pointer;\n transition:\n transform 0.18s ease,\n box-shadow 0.18s ease,\n filter 0.18s ease;\n}\n\n.gs-tree-odd-dot:hover {\n transform: scale(1.7);\n box-shadow:\n 0 0 0 2px rgba(255, 255, 255, 0.85),\n 0 0 10px 4px rgba(255, 255, 255, 0.4);\n filter: brightness(1.25);\n}\n\n/* Tag ODD (fond + bordure gauche colorés via inline style) */\n.gs-tree-odd-tag {\n font-size: var(--fs-10);\n color: #c8d8f0;\n padding: 1px 7px 1px 5px;\n border-radius: 3px;\n border-left: 2px solid; /* color set inline */\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n cursor: pointer;\n transition: opacity 0.15s;\n}\n\n.gs-tree-odd-tag:hover {\n opacity: 0.8;\n}\n\n/* Préfixes ─ et · */\n.gs-tree-prefix {\n color: #2a4060;\n font-size: var(--fs-10);\n flex-shrink: 0;\n width: 10px;\n text-align: center;\n}\n\n.gs-tree-prefix--action {\n font-size: var(--fs-12);\n width: 22px;\n color: inherit;\n}\n\n.gs-tree-prefix-icon {\n width: 20px;\n height: 20px;\n display: block;\n margin: 0 auto;\n object-fit: contain;\n}\n\n/* Label Cutting */\n.gs-tree-cutting-label {\n font-size: var(--fs-11);\n color: #b0c8e0;\n flex: 1;\n line-height: 1.3;\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.gs-tree-cutting-label:hover {\n color: #d8eaff;\n}\n\n/* Label Action */\n.gs-tree-action-label {\n font-size: var(--fs-10);\n color: #5a8ab0;\n flex: 1;\n line-height: 1.3;\n /* Laisse la place aux chips de fin de ligne plutôt que de les pousser hors\n cadre — le libellé continue de passer à la ligne comme avant. */\n min-width: 0;\n}\n\n/* ============================================================\n Événements Clés — 3 gabarits de ligne supplémentaires\n (séparateur de groupe, Événement Clé, renvoi vers une Action)\n\n L'ambre est repris tel quel du menu radial du cercle central\n (CoreEventMenuController) : même code couleur appris une seule\n fois pour le diagramme et pour la hiérarchie.\n ============================================================ */\n\n/* ── Compteur d'enfants en fin de ligne Facette ── */\n.gs-tree-count {\n display: flex;\n align-items: center;\n gap: 3px;\n flex-shrink: 0;\n font-size: var(--fs-9);\n font-variant-numeric: tabular-nums;\n color: #4a6a8e;\n letter-spacing: 0.04em;\n}\n\n.gs-tree-count-dot {\n width: 7px;\n height: 7px;\n min-width: 7px;\n border-radius: 50%;\n background: #4a6a8e;\n}\n\n.gs-tree-count-sep {\n color: #2a3f5a;\n margin: 0 1px;\n}\n\n.gs-tree-count-n--evt {\n color: #a8813f;\n}\n\n/* Seul emplacement restant du glyphe yin-yang générique : il désigne ici la\n FAMILLE Événements Clés (un compteur n'a pas d'événement précis à\n montrer). Les lignes Événement Clé, elles, portent le médaillon de leur\n propre icône — voir .gs-tree-prefix--keyevent. */\n.gs-tree-count .gs-tree-keyevent-glyph {\n width: 9px;\n height: 9px;\n min-width: 9px;\n flex-shrink: 0;\n display: block;\n color: #a8813f;\n}\n\n/* ── Séparateur de groupe : une étiquette, pas un niveau de hiérarchie ──\n Ses enfants gardent l'indentation des Satellites (18px), d'où l'absence\n de décrochage visuel entre les deux listes. */\n.gs-tree-evtgroup {\n border-left: 3px solid rgba(255, 200, 112, 0.28);\n}\n\n.gs-tree-row--evtgroup {\n cursor: pointer;\n padding: 5px 10px 5px 18px;\n}\n\n.gs-tree-row--evtgroup:hover {\n background: #1c1a12;\n}\n\n.gs-tree-evtgroup-label {\n font-size: var(--fs-9);\n text-transform: uppercase;\n letter-spacing: 0.14em;\n color: #c69a52;\n flex: 1;\n min-width: 0;\n}\n\n.gs-tree-evtgroup-count {\n font-size: var(--fs-9);\n font-variant-numeric: tabular-nums;\n color: #b8934a;\n flex-shrink: 0;\n}\n\n/* ── Ligne Événement Clé : frère du Satellite ── */\n.gs-tree-keyevent {\n border-left: 3px solid #ffc870;\n}\n\n.gs-tree-row--keyevent {\n cursor: pointer;\n padding: 5px 10px 5px 18px;\n}\n\n.gs-tree-row--keyevent:hover {\n background: #221d12;\n}\n\n/* Gouttière d'icône d'une ligne Événement Clé : exactement celle des lignes\n Action (.gs-tree-prefix--action, 22px), pour que les deux familles\n s'alignent sur la même colonne — c'est le médaillon, pas la position, qui\n les distingue. Le médaillon lui-même (.ke-medallion, details-panel.css)\n mesure 20px et tient donc dans la gouttière sans la creuser. */\n.gs-tree-prefix--keyevent {\n width: 22px;\n color: inherit;\n}\n\n.gs-tree-keyevent-label {\n font-size: var(--fs-11);\n color: #f0dcb4;\n flex: 1;\n line-height: 1.3;\n min-width: 0;\n}\n\n/* Chevron vide d'une feuille — garde l'alignement du glyphe sur la pastille\n ODD des lignes Satellite sans promettre un dépli qui n'existe pas. */\n.gs-tree-toggle--leaf {\n visibility: hidden;\n}\n\n/* Les lignes Action portent des chips plus discrètes : c'est déjà la ligne\n la plus dense de l'arbre. Les chips elles-mêmes vivent dans\n delta-chips.css, partagées avec les cartes du panneau de détail. */\n.gs-tree-row--action .dchip {\n font-size: var(--fs-8-5);\n padding: 1.5px 5px;\n opacity: 0.86;\n}\n\n/* ── Projecteur ambre : Action ciblée par l'Événement Clé sélectionné ou\n survolé. Contextuel, jamais permanent — dans une facette, jusqu'aux deux\n tiers des Actions sont ciblées par au moins un événement. ── */\n.gs-tree-row--action.gs-row-amplified {\n background: rgba(255, 190, 90, 0.09);\n box-shadow: inset 3px 0 0 rgba(255, 200, 112, 0.75);\n}\n\n.gs-tree-row--action.gs-row-amplified .gs-tree-action-label {\n color: #d8b378;\n}\n\n/* (descriptions inline supprimées — panneau de détail à droite) */\n\n/* ── Ligne sélectionnée (arbre + mode flat) ── */\n.gs-row-selected {\n background: linear-gradient(\n 90deg,\n rgba(58, 140, 210, 0.28) 0%,\n rgba(58, 140, 210, 0.06) 100%\n ) !important;\n box-shadow: inset 3px 0 0 #5ab8e8;\n}\n\n.gs-row-selected .gs-tree-composante-label {\n color: #b8dcf8;\n}\n.gs-row-selected .gs-tree-cutting-label {\n color: #cce8ff;\n}\n.gs-row-selected .gs-tree-action-label {\n color: #90c8e8;\n}\n.gs-row-selected .gs-tree-keyevent-label {\n color: #ffeccb;\n}\n\n/* Sélection d'un Événement Clé : même dispositif que la sélection standard,\n en ambre plutôt qu'en cyan — la ligne reste dans son propre code couleur. */\n.gs-tree-row--keyevent.gs-row-selected {\n background: linear-gradient(\n 90deg,\n rgba(255, 190, 90, 0.26) 0%,\n rgba(255, 190, 90, 0.05) 100%\n ) !important;\n box-shadow: inset 3px 0 0 #ffc870;\n}\n.gs-row-selected .gs-tree-odd-tag {\n filter: brightness(1.4);\n}\n\n/* ── Équivalents classe pour les éléments input/results (multi-instances) ── */\n.gs-search-input {\n width: 100%;\n box-sizing: border-box;\n background: rgba(9, 15, 26, 0.92);\n border: 1px solid #2a3f60;\n border-radius: 6px;\n color: #c8d8f0;\n font-family: inherit;\n font-size: var(--fs-12);\n outline: none;\n padding: 7px 28px 7px 30px;\n transition: border-color 0.15s;\n background-image: url(${u});\n background-repeat: no-repeat;\n background-position: 9px center;\n}\n\n.gs-search-input:focus {\n border-color: #3a7abf;\n}\n\n.gs-search-input::placeholder {\n color: #3a5070;\n}\n\n.gs-search-results {\n list-style: none;\n margin: 8px 0 0;\n padding: 0;\n flex: 1;\n overflow-y: auto;\n border-top: 1px solid #1a2840;\n}\n\n/* ── End Global Search Widget ── */\n\n/* ── Événement Clé non débloqué ────────────────────────────────────────────\n Ligne d'arbre et panneau de description d'un événement dont l'illustration\n n'existe pas encore (voir isKeyEventUnlocked, utils/keyEventImages.ts).\n Même principe que les cartes du panneau ANALYSE : on retire l'ambre, qui\n est LE marqueur de la famille Événement Clé, et on pose un cadenas. La\n ligne reste sélectionnable et l'événement reste jouable — verrou de mise\n en scène, pas de restriction fonctionnelle.\n ───────────────────────────────────────────────────────────────────────── */\n.gs-tree-keyevent:has(.gs-tree-row--locked) {\n border-left-color: #57565a;\n}\n\n/* Le médaillon a son or cuit dans son image de fond : on le lui retire par\n désaturation plutôt qu'en repeignant, comme le pictogramme des bulles\n verrouillées du menu radial (CoreEventMenuController). */\n.gs-tree-row--locked .ke-medallion {\n filter: grayscale(1);\n opacity: 0.62;\n}\n\n.gs-tree-row--locked .gs-tree-keyevent-label {\n color: #9c9a93;\n}\n\n.gs-tree-row--locked:hover {\n background: #1b1b1e;\n}\n\n.gs-tree-lock-glyph {\n width: 10px;\n height: 10px;\n min-width: 10px;\n flex-shrink: 0;\n color: #86847e;\n}\n\n/* Chips de coefficient : la ligne débloquée les montre en ambre, marqueur\n d'un amplificateur disponible — ici, gris. */\n.gs-tree-row--locked .dchip {\n color: #9c9a93;\n border-color: #4a4a50;\n background: #1a1a1d;\n}\n\n/* Bandeau en tête de la description, seul endroit où le verrou est écrit en\n toutes lettres : l'arbre et les cartes n'ont que le cadenas. */\n.gs-detail-locked-banner {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 6px;\n padding: 4px 8px;\n border: 1px dashed #4f4e52;\n border-radius: 4px;\n background: #17171a;\n color: #9c9a93;\n font-size: var(--fs-9);\n text-transform: uppercase;\n letter-spacing: 0.12em;\n}\n\n.gs-detail-locked-glyph {\n width: 12px;\n height: 12px;\n min-width: 12px;\n color: #86847e;\n}\n\n.gs-detail-desc--locked .gs-detail-desc-text {\n color: #9c9a93;\n}\n`,""]);const p=d},6314(e){e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n="",i=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),i&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),i&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n}).join("")},t.i=function(e,n,i,r,a){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(i)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(o[l]=!0)}for(var c=0;c<e.length;c++){var d=[].concat(e[c]);i&&o[d[0]]||(void 0!==a&&(void 0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=a),n&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=n):d[2]=n),r&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=r):d[4]="".concat(r)),t.push(d))}},t}},4417(e){e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},1601(e){e.exports=function(e){return e[1]}},7739(e,t,n){n.r(t),n.d(t,{default:()=>m});var i=n(5072),r=n.n(i),a=n(7825),o=n.n(a),s=n(7659),l=n.n(s),c=n(5056),d=n.n(c),u=n(540),p=n.n(u),h=n(1113),f=n.n(h),g=n(1520),v={};v.styleTagTransform=f(),v.setAttributes=d(),v.insert=l().bind(null,"head"),v.domAPI=o(),v.insertStyleElement=p(),r()(g.A,v);const m=g.A&&g.A.locals?g.A.locals:void 0},102(e,t,n){n.r(t),n.d(t,{default:()=>m});var i=n(5072),r=n.n(i),a=n(7825),o=n.n(a),s=n(7659),l=n.n(s),c=n(5056),d=n.n(c),u=n(540),p=n.n(u),h=n(1113),f=n.n(h),g=n(9565),v={};v.styleTagTransform=f(),v.setAttributes=d(),v.insert=l().bind(null,"head"),v.domAPI=o(),v.insertStyleElement=p(),r()(g.A,v);const m=g.A&&g.A.locals?g.A.locals:void 0},6299(e,t,n){n.r(t),n.d(t,{default:()=>m});var i=n(5072),r=n.n(i),a=n(7825),o=n.n(a),s=n(7659),l=n.n(s),c=n(5056),d=n.n(c),u=n(540),p=n.n(u),h=n(1113),f=n.n(h),g=n(4852),v={};v.styleTagTransform=f(),v.setAttributes=d(),v.insert=l().bind(null,"head"),v.domAPI=o(),v.insertStyleElement=p(),r()(g.A,v);const m=g.A&&g.A.locals?g.A.locals:void 0},5649(e,t,n){n.r(t),n.d(t,{default:()=>m});var i=n(5072),r=n.n(i),a=n(7825),o=n.n(a),s=n(7659),l=n.n(s),c=n(5056),d=n.n(c),u=n(540),p=n.n(u),h=n(1113),f=n.n(h),g=n(3672),v={};v.styleTagTransform=f(),v.setAttributes=d(),v.insert=l().bind(null,"head"),v.domAPI=o(),v.insertStyleElement=p(),r()(g.A,v);const m=g.A&&g.A.locals?g.A.locals:void 0},3318(e,t,n){n.r(t),n.d(t,{default:()=>m});var i=n(5072),r=n.n(i),a=n(7825),o=n.n(a),s=n(7659),l=n.n(s),c=n(5056),d=n.n(c),u=n(540),p=n.n(u),h=n(1113),f=n.n(h),g=n(1939),v={};v.styleTagTransform=f(),v.setAttributes=d(),v.insert=l().bind(null,"head"),v.domAPI=o(),v.insertStyleElement=p(),r()(g.A,v);const m=g.A&&g.A.locals?g.A.locals:void 0},4899(e,t,n){n.r(t),n.d(t,{default:()=>m});var i=n(5072),r=n.n(i),a=n(7825),o=n.n(a),s=n(7659),l=n.n(s),c=n(5056),d=n.n(c),u=n(540),p=n.n(u),h=n(1113),f=n.n(h),g=n(1784),v={};v.styleTagTransform=f(),v.setAttributes=d(),v.insert=l().bind(null,"head"),v.domAPI=o(),v.insertStyleElement=p(),r()(g.A,v);const m=g.A&&g.A.locals?g.A.locals:void 0},7421(e,t,n){n.r(t),n.d(t,{default:()=>m});var i=n(5072),r=n.n(i),a=n(7825),o=n.n(a),s=n(7659),l=n.n(s),c=n(5056),d=n.n(c),u=n(540),p=n.n(u),h=n(1113),f=n.n(h),g=n(7118),v={};v.styleTagTransform=f(),v.setAttributes=d(),v.insert=l().bind(null,"head"),v.domAPI=o(),v.insertStyleElement=p(),r()(g.A,v);const m=g.A&&g.A.locals?g.A.locals:void 0},5072(e){var t=[];function n(e){for(var n=-1,i=0;i<t.length;i++)if(t[i].identifier===e){n=i;break}return n}function i(e,i){for(var a={},o=[],s=0;s<e.length;s++){var l=e[s],c=i.base?l[0]+i.base:l[0],d=a[c]||0,u="".concat(c," ").concat(d);a[c]=d+1;var p=n(u),h={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==p)t[p].references++,t[p].updater(h);else{var f=r(h,i);i.byIndex=s,t.splice(s,0,{identifier:u,updater:f,references:1})}o.push(u)}return o}function r(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,r){var a=i(e=e||[],r=r||{});return function(e){e=e||[];for(var o=0;o<a.length;o++){var s=n(a[o]);t[s].references--}for(var l=i(e,r),c=0;c<a.length;c++){var d=n(a[c]);0===t[d].references&&(t[d].updater(),t.splice(d,1))}a=l}}},7659(e){var t={};e.exports=function(e,n){var i=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(n)}},540(e){e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},5056(e,t,n){e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},7825(e){e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var i="";n.supports&&(i+="@supports (".concat(n.supports,") {")),n.media&&(i+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(i+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),i+=n.css,r&&(i+="}"),n.media&&(i+="}"),n.supports&&(i+="}");var a=n.sourceMap;a&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),t.styleTagTransform(i,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},1113(e){e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},3345(e){e.exports="data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 64 64%27%3E%3Ccircle cx=%2732%27 cy=%2732%27 r=%2729%27 fill=%27%23171009%27/%3E%3Ccircle cx=%2732%27 cy=%2732%27 r=%2729%27 fill=%27none%27 stroke=%27%23ffc870%27 stroke-width=%272.5%27/%3E%3CclipPath id=%27w%27%3E%3Ccircle cx=%2732%27 cy=%2732%27 r=%2726.5%27/%3E%3C/clipPath%3E%3Cg clip-path=%27url%28%23w%29%27%3E%3Ccircle cx=%2732%27 cy=%2732%27 r=%2726.5%27 fill=%27%23ffc870%27 opacity=%27.10%27/%3E%3Cpath d=%27M32,5.5 A26.5,26.5 0 0,1 32,58.5 A13.25,13.25 0 0,1 32,32 A13.25,13.25 0 0,0 32,5.5 Z%27 fill=%27%23ffc870%27 opacity=%27.26%27/%3E%3Ccircle cx=%2732%27 cy=%2718.75%27 r=%273.7%27 fill=%27%23ffc870%27 opacity=%27.14%27/%3E%3Ccircle cx=%2732%27 cy=%2745.25%27 r=%273.7%27 fill=%27%23ffc870%27 opacity=%27.26%27/%3E%3C/g%3E%3C/svg%3E"},5246(e){e.exports="data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2714%27 height=%2714%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%236a7a99%27 stroke-width=%272%27%3E%3Ccircle cx=%2711%27 cy=%2711%27 r=%278%27/%3E%3Cline x1=%2721%27 y1=%2721%27 x2=%2716.65%27 y2=%2716.65%27/%3E%3C/svg%3E"},600(t){t.exports=e}},n={};function i(e){var r=n[e];if(void 0!==r)return r.exports;var a=n[e]={id:e,exports:{}};return t[e].call(a.exports,a,a.exports,i),a.exports}return i.m=t,i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.b="undefined"!=typeof document&&document.baseURI||self.location.href,i.nc=void 0,i(3967)})());
|