@amboss/design-system 4.0.5 → 4.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/build/cjs/components/Internal/Drawer/Drawer.d.ts +0 -2
  2. package/build/cjs/components/Internal/Drawer/Drawer.js +8 -8
  3. package/build/cjs/components/Internal/Drawer/useExitAnimation.d.ts +21 -0
  4. package/build/cjs/components/Internal/Drawer/useExitAnimation.js +1 -0
  5. package/build/cjs/components/Internal/LayoutFloat/LayoutFloat.d.ts +14 -0
  6. package/build/cjs/components/Internal/LayoutFloat/LayoutFloat.js +1 -0
  7. package/build/cjs/components/Internal/Panel/Panel.d.ts +15 -2
  8. package/build/cjs/components/Internal/Panel/Panel.js +1 -1
  9. package/build/cjs/components/Internal/Sandwich/Sandwich.d.ts +8 -6
  10. package/build/cjs/components/Internal/Sandwich/Sandwich.js +1 -1
  11. package/build/cjs/components/Internal/Sandwich/SandwichFooter.d.ts +5 -1
  12. package/build/cjs/components/Internal/Sandwich/SandwichFooter.js +1 -1
  13. package/build/cjs/components/Internal/Sandwich/SandwichHeader.d.ts +5 -1
  14. package/build/cjs/components/Internal/Sandwich/SandwichHeader.js +1 -1
  15. package/build/cjs/components/Internal/Sandwich/useSandwichContext.d.ts +10 -1
  16. package/build/cjs/components/Internal/Sandwich/useSandwichContext.js +1 -1
  17. package/build/cjs/components/Layout/-types.d.ts +50 -13
  18. package/build/cjs/components/Layout/Layout.js +1 -1
  19. package/build/cjs/components/Layout/LayoutProvider.js +1 -1
  20. package/build/cjs/components/Layout/LeftPanel/LeftPanel.d.ts +6 -7
  21. package/build/cjs/components/Layout/LeftPanel/LeftPanel.js +1 -1
  22. package/build/cjs/components/Layout/LeftPanel/LeftPanelDocked.d.ts +20 -0
  23. package/build/cjs/components/Layout/LeftPanel/LeftPanelDocked.js +1 -0
  24. package/build/cjs/components/Layout/LeftPanel/LeftPanelDrawer.d.ts +15 -0
  25. package/build/cjs/components/Layout/LeftPanel/LeftPanelDrawer.js +1 -0
  26. package/build/cjs/components/Layout/PanelSlideBody.d.ts +18 -0
  27. package/build/cjs/components/Layout/PanelSlideBody.js +1 -0
  28. package/build/cjs/components/Layout/RightPanel/RightPanel.d.ts +7 -5
  29. package/build/cjs/components/Layout/RightPanel/RightPanel.js +1 -1
  30. package/build/cjs/components/Layout/RightPanel/RightPanelHeader.d.ts +8 -3
  31. package/build/cjs/components/Layout/RightPanel/RightPanelHeader.js +1 -1
  32. package/build/cjs/components/Layout/Split/Split.js +1 -1
  33. package/build/cjs/components/Layout/context.d.ts +14 -1
  34. package/build/cjs/components/Layout/context.js +1 -1
  35. package/build/cjs/components/Layout/registry.d.ts +38 -1
  36. package/build/cjs/components/Layout/registry.js +1 -1
  37. package/build/cjs/components/Layout/useFloatablePortalTargets.d.ts +37 -0
  38. package/build/cjs/components/Layout/useFloatablePortalTargets.js +1 -0
  39. package/build/cjs/components/Layout/usePanelDockedSlide.d.ts +28 -0
  40. package/build/cjs/components/Layout/usePanelDockedSlide.js +1 -0
  41. package/build/cjs/shared/prefersReducedMotion.d.ts +6 -0
  42. package/build/cjs/shared/prefersReducedMotion.js +1 -0
  43. package/build/esm/components/Internal/Drawer/Drawer.d.ts +0 -2
  44. package/build/esm/components/Internal/Drawer/Drawer.js +8 -8
  45. package/build/esm/components/Internal/Drawer/useExitAnimation.d.ts +21 -0
  46. package/build/esm/components/Internal/Drawer/useExitAnimation.js +1 -0
  47. package/build/esm/components/Internal/LayoutFloat/LayoutFloat.d.ts +14 -0
  48. package/build/esm/components/Internal/LayoutFloat/LayoutFloat.js +1 -0
  49. package/build/esm/components/Internal/Panel/Panel.d.ts +15 -2
  50. package/build/esm/components/Internal/Panel/Panel.js +1 -1
  51. package/build/esm/components/Internal/Sandwich/Sandwich.d.ts +8 -6
  52. package/build/esm/components/Internal/Sandwich/Sandwich.js +1 -1
  53. package/build/esm/components/Internal/Sandwich/SandwichFooter.d.ts +5 -1
  54. package/build/esm/components/Internal/Sandwich/SandwichFooter.js +1 -1
  55. package/build/esm/components/Internal/Sandwich/SandwichHeader.d.ts +5 -1
  56. package/build/esm/components/Internal/Sandwich/SandwichHeader.js +1 -1
  57. package/build/esm/components/Internal/Sandwich/useSandwichContext.d.ts +10 -1
  58. package/build/esm/components/Internal/Sandwich/useSandwichContext.js +1 -1
  59. package/build/esm/components/Layout/-types.d.ts +50 -13
  60. package/build/esm/components/Layout/Layout.js +1 -1
  61. package/build/esm/components/Layout/LayoutProvider.js +1 -1
  62. package/build/esm/components/Layout/LeftPanel/LeftPanel.d.ts +6 -7
  63. package/build/esm/components/Layout/LeftPanel/LeftPanel.js +1 -1
  64. package/build/esm/components/Layout/LeftPanel/LeftPanelDocked.d.ts +20 -0
  65. package/build/esm/components/Layout/LeftPanel/LeftPanelDocked.js +1 -0
  66. package/build/esm/components/Layout/LeftPanel/LeftPanelDrawer.d.ts +15 -0
  67. package/build/esm/components/Layout/LeftPanel/LeftPanelDrawer.js +1 -0
  68. package/build/esm/components/Layout/PanelSlideBody.d.ts +18 -0
  69. package/build/esm/components/Layout/PanelSlideBody.js +1 -0
  70. package/build/esm/components/Layout/RightPanel/RightPanel.d.ts +7 -5
  71. package/build/esm/components/Layout/RightPanel/RightPanel.js +1 -1
  72. package/build/esm/components/Layout/RightPanel/RightPanelHeader.d.ts +8 -3
  73. package/build/esm/components/Layout/RightPanel/RightPanelHeader.js +1 -1
  74. package/build/esm/components/Layout/Split/Split.js +1 -1
  75. package/build/esm/components/Layout/context.d.ts +14 -1
  76. package/build/esm/components/Layout/context.js +1 -1
  77. package/build/esm/components/Layout/registry.d.ts +38 -1
  78. package/build/esm/components/Layout/registry.js +1 -1
  79. package/build/esm/components/Layout/useFloatablePortalTargets.d.ts +37 -0
  80. package/build/esm/components/Layout/useFloatablePortalTargets.js +1 -0
  81. package/build/esm/components/Layout/usePanelDockedSlide.d.ts +28 -0
  82. package/build/esm/components/Layout/usePanelDockedSlide.js +1 -0
  83. package/build/esm/shared/prefersReducedMotion.d.ts +6 -0
  84. package/build/esm/shared/prefersReducedMotion.js +1 -0
  85. package/package.json +8 -8
  86. package/build/cjs/components/Internal/Drawer/useDrawerAnimation.d.ts +0 -26
  87. package/build/cjs/components/Internal/Drawer/useDrawerAnimation.js +0 -1
  88. package/build/cjs/components/Layout/usePortalContainerRefs.d.ts +0 -20
  89. package/build/cjs/components/Layout/usePortalContainerRefs.js +0 -1
  90. package/build/esm/components/Internal/Drawer/useDrawerAnimation.d.ts +0 -26
  91. package/build/esm/components/Internal/Drawer/useDrawerAnimation.js +0 -1
  92. package/build/esm/components/Layout/usePortalContainerRefs.d.ts +0 -20
  93. package/build/esm/components/Layout/usePortalContainerRefs.js +0 -1
@@ -1 +1 @@
1
- import React,{useEffect,useMemo,useState}from"react";import styled from"@emotion/styled";import{Panel}from"../Internal/Panel/Panel";import{PANEL_ORDER,PANEL_WIDTH_VAR,Slot}from"./-constants";import{useLayoutPersistence}from"./context";import{LayoutProvider}from"./LayoutProvider";import{Content}from"./Content/Content";import{RightPanel}from"./RightPanel/RightPanel";import{RightPanelHeader}from"./RightPanel/RightPanelHeader";import{RightPanelFooter}from"./RightPanel/RightPanelFooter";import{LeftPanel}from"./LeftPanel/LeftPanel";import{LeftPanelHeader}from"./LeftPanel/LeftPanelHeader";import{LeftPanelFooter}from"./LeftPanel/LeftPanelFooter";import{Split}from"./Split/Split";import{SplitHeader}from"./Split/SplitHeader";import{SplitFooter}from"./Split/SplitFooter";import{LayoutPortalContext,PanelRegistryContext}from"./registry";import{usePortalContainerRefs}from"./usePortalContainerRefs";import{useLayoutVar}from"./LayoutCssVars";import{useLayout}from"./useLayout";let useGlobalCssVariables=nodes=>{let contentWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.content),rightPanelWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.rightPanel);useEffect(()=>{let targets=[[Slot.content,contentWidthCssVar],[Slot.rightPanel,rightPanelWidthCssVar]],observers=[];return targets.forEach(([slot,handle])=>{let node=nodes[slot]??null;if(!node)return void handle.set("0px");let publishNodeWidth=()=>handle.set(`${node.getBoundingClientRect().width}px`);if(publishNodeWidth(),"undefined"==typeof ResizeObserver)return;let observer=new ResizeObserver(publishNodeWidth);observer.observe(node),observers.push(observer)}),()=>observers.forEach(observer=>observer.disconnect())},[contentWidthCssVar,rightPanelWidthCssVar,nodes])},StyledLayout=styled("div",{target:"e13g6fyp0",label:"StyledLayout"})({position:"relative",height:"100%",width:"100%"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L0xheW91dC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0xheW91dC9MYXlvdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IFBhbmVsIH0gZnJvbSBcIi4uL0ludGVybmFsL1BhbmVsL1BhbmVsXCI7XG5pbXBvcnQgdHlwZSB7IFBhbmVsSXRlbSB9IGZyb20gXCIuLi9JbnRlcm5hbC9QYW5lbC9QYW5lbFwiO1xuaW1wb3J0IHsgUEFORUxfT1JERVIsIFBBTkVMX1dJRFRIX1ZBUiwgU2xvdCB9IGZyb20gXCIuLy1jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZUxheW91dFBlcnNpc3RlbmNlIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgTGF5b3V0UHJvdmlkZXIgfSBmcm9tIFwiLi9MYXlvdXRQcm92aWRlclwiO1xuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gXCIuL0NvbnRlbnQvQ29udGVudFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbCB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEhlYWRlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEZvb3RlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbFwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsSGVhZGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsRm9vdGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgU3BsaXQgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdFwiO1xuaW1wb3J0IHsgU3BsaXRIZWFkZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEhlYWRlclwiO1xuaW1wb3J0IHsgU3BsaXRGb290ZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEZvb3RlclwiO1xuaW1wb3J0IHtcbiAgTGF5b3V0UG9ydGFsQ29udGV4dCxcbiAgUGFuZWxSZWdpc3RyeUNvbnRleHQsXG4gIHR5cGUgSG9zdE5vZGVzLFxuICB0eXBlIFBhbmVsUmVnLFxuICB0eXBlIFBhbmVsUmVnaXN0cnksXG59IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgeyB1c2VQb3J0YWxDb250YWluZXJSZWZzIH0gZnJvbSBcIi4vdXNlUG9ydGFsQ29udGFpbmVyUmVmc1wiO1xuaW1wb3J0IHsgdXNlTGF5b3V0VmFyLCB0eXBlIExheW91dFZhckhhbmRsZSB9IGZyb20gXCIuL0xheW91dENzc1ZhcnNcIjtcbmltcG9ydCB7IHVzZUxheW91dCB9IGZyb20gXCIuL3VzZUxheW91dFwiO1xuaW1wb3J0IHR5cGUgeyBMYXlvdXRQcm9wcywgU2l6ZSwgU2xvdEtleSB9IGZyb20gXCIuLy10eXBlc1wiO1xuXG4vKipcbiAqIFB1Ymxpc2hlcyBlYWNoIHBhbmVsJ3MgbGl2ZSBwaXhlbCB3aWR0aCBhcyBhIGxheW91dCBDU1MgdmFyIChlLmcuXG4gKiBgLS1kcy1sYXlvdXQtcmlnaHRQYW5lbC13aWR0aGApLCB0cmFja2luZyBkcmFnLSBhbmQgd2luZG93LXJlc2l6ZXMuIEEgaGlkZGVuXG4gKiBwYXJ0IChubyBob3N0IG5vZGUpIHJlYWRzIGAwcHhgLCBzbyB0aGUgdmFyIGlzIGFsd2F5cyBkZWZpbmVkLiBPbmVcbiAqIGB1c2VMYXlvdXRWYXJgIHBlciBzbG90IGluIGBQQU5FTF9XSURUSF9WQVJgLlxuICovXG5jb25zdCB1c2VHbG9iYWxDc3NWYXJpYWJsZXMgPSAobm9kZXM6IEhvc3ROb2Rlcyk6IHZvaWQgPT4ge1xuICBjb25zdCBjb250ZW50V2lkdGhDc3NWYXIgPSB1c2VMYXlvdXRWYXIoUEFORUxfV0lEVEhfVkFSLmNvbnRlbnQpO1xuICBjb25zdCByaWdodFBhbmVsV2lkdGhDc3NWYXIgPSB1c2VMYXlvdXRWYXIoUEFORUxfV0lEVEhfVkFSLnJpZ2h0UGFuZWwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0czogW1Nsb3RLZXksIExheW91dFZhckhhbmRsZV1bXSA9IFtcbiAgICAgIFtTbG90LmNvbnRlbnQsIGNvbnRlbnRXaWR0aENzc1Zhcl0sXG4gICAgICBbU2xvdC5yaWdodFBhbmVsLCByaWdodFBhbmVsV2lkdGhDc3NWYXJdLFxuICAgIF07XG4gICAgY29uc3Qgb2JzZXJ2ZXJzOiBSZXNpemVPYnNlcnZlcltdID0gW107XG5cbiAgICB0YXJnZXRzLmZvckVhY2goKFtzbG90LCBoYW5kbGVdKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gbm9kZXNbc2xvdF0gPz8gbnVsbDtcbiAgICAgIGlmICghbm9kZSkge1xuICAgICAgICBoYW5kbGUuc2V0KFwiMHB4XCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBwdWJsaXNoTm9kZVdpZHRoID0gKCk6IHZvaWQgPT5cbiAgICAgICAgaGFuZGxlLnNldChgJHtub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofXB4YCk7XG4gICAgICBwdWJsaXNoTm9kZVdpZHRoKCk7XG4gICAgICAvLyBqc2RvbSAoYW5kIG9sZCBicm93c2VycykgbGFjayBSZXNpemVPYnNlcnZlciDigJQgc2tpcCBsaXZlIHRyYWNraW5nIHRoZXJlLlxuICAgICAgaWYgKHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIocHVibGlzaE5vZGVXaWR0aCk7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKG5vZGUpO1xuICAgICAgb2JzZXJ2ZXJzLnB1c2gob2JzZXJ2ZXIpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVycy5mb3JFYWNoKChvYnNlcnZlcikgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpKTtcbiAgfSwgW2NvbnRlbnRXaWR0aENzc1ZhciwgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyLCBub2Rlc10pO1xufTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIExheW91dCAtIHJlZ2lzdHJ5ICsgaG9zdHM7IG1hcmtlcnMgZGVjbGFyZS9wb3J0YWw7IHRoZSByZXNpemFibGUgcGFuZWwgcm93ICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmNvbnN0IFN0eWxlZExheW91dCA9IHN0eWxlZC5kaXYoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG59KTtcblxuLy8gU29sby1tb2RlIGhvc3Q6IGEgbG9uZSBwYW5lbCAobm8gcmVzaXphYmxlIHNpYmxpbmcpIGlzIGhvc3RlZCBoZXJlIGluc3RlYWQgb2Zcbi8vIGluc2lkZSByZWFjdC1yZXNpemFibGUtcGFuZWxzLiBNYXRjaGVzIHRoZSBwZXItcGFuZWwgaG9zdCB0aGUgR3JvdXAgcmVuZGVyc1xuLy8gKGByZWxhdGl2ZWAgKyBmdWxsLWJsZWVkKSBzbyBjb250ZW50IHJlZmxvd3Mvc2Nyb2xscyBpZGVudGljYWxseSBlaXRoZXIgd2F5LlxuY29uc3QgU3R5bGVkU29sb0hvc3QgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbmZ1bmN0aW9uIExheW91dEJhc2Uoe1xuICBjaGlsZHJlbixcbiAgcGVyc2lzdGVuY2VLZXksXG4gIHN0b3JhZ2UsXG59OiBMYXlvdXRQcm9wcyk6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IFtkZWNsYXJlZCwgc2V0RGVjbGFyZWRdID0gdXNlU3RhdGU8UGFydGlhbDxSZWNvcmQ8U2xvdEtleSwgUGFuZWxSZWc+Pj4oXG4gICAge31cbiAgKTtcbiAgY29uc3QgeyBzdGF0ZTogbGF5b3V0U3RhdGUsIC4uLnBhbmVsQ2FsbGJhY2tzIH0gPSB1c2VMYXlvdXQoKTtcbiAgY29uc3QgcGVyc2lzdGVuY2UgPSB1c2VMYXlvdXRQZXJzaXN0ZW5jZSgpO1xuICBjb25zdCByZXNvbHZlZEtleSA9IHBlcnNpc3RlbmNlS2V5ID8/IHBlcnNpc3RlbmNlLnBlcnNpc3RlbmNlS2V5O1xuICBjb25zdCByZXNvbHZlZFN0b3JhZ2UgPSBzdG9yYWdlID8/IHBlcnNpc3RlbmNlLnN0b3JhZ2U7XG5cbiAgY29uc3QgaXNTaG93biA9IChzbG90OiBTbG90S2V5KTogYm9vbGVhbiA9PiBsYXlvdXRTdGF0ZVtzbG90XS52aXNpYmxlO1xuXG4gIGNvbnN0IHJlZ2lzdHJ5ID0gdXNlTWVtbzxQYW5lbFJlZ2lzdHJ5PihcbiAgICAoKSA9PiAoe1xuICAgICAgcmVnaXN0ZXI6IChzbG90LCByZWcpID0+XG4gICAgICAgIHNldERlY2xhcmVkKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBbc2xvdF06IHJlZyB9KSksXG4gICAgICB1bnJlZ2lzdGVyOiAoc2xvdCkgPT5cbiAgICAgICAgc2V0RGVjbGFyZWQoKHByZXYpID0+IHtcbiAgICAgICAgICBpZiAoIShzbG90IGluIHByZXYpKSByZXR1cm4gcHJldjtcbiAgICAgICAgICBjb25zdCBuZXh0ID0geyAuLi5wcmV2IH07XG4gICAgICAgICAgZGVsZXRlIG5leHRbc2xvdF07XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH0pLFxuICAgIH0pLFxuICAgIFtdXG4gICk7XG5cbiAgY29uc3QgW25vZGVzLCBob3N0UmVmc10gPSB1c2VQb3J0YWxDb250YWluZXJSZWZzKFBBTkVMX09SREVSKTtcblxuICB1c2VHbG9iYWxDc3NWYXJpYWJsZXMobm9kZXMpO1xuXG4gIC8vIFBhbmVscyB0aGF0IGV4aXN0IGluIHRoZSBsYXlvdXQsIHJlZ2FyZGxlc3Mgb2YgdmlzaWJpbGl0eS4gRHJpdmVzIHRoZVxuICAvLyBzb2xvLXZzLXJlc2l6YWJsZSBkZWNpc2lvbiBiZWxvdyAtIGtleWVkIG9uIERFQ0xBUkVEIChub3Qgc2hvd24pIHNvIHRoYXRcbiAgLy8gc2hvd2luZy9oaWRpbmcgYSBwYW5lbCBuZXZlciBmbGlwcyB0aGUgbW9kZS5cbiAgY29uc3QgZGVjbGFyZWRTbG90cyA9IFBBTkVMX09SREVSLmZpbHRlcigoc2xvdCkgPT4gZGVjbGFyZWRbc2xvdF0pO1xuXG4gIC8vIFNvbG8gbW9kZTogYSBzaW5nbGUgcGFuZWwgaXMgZGVjbGFyZWQgKGUuZy4ganVzdCBgQ29udGVudGAsIHdpdGggbm9cbiAgLy8gUmlnaHRQYW5lbC9MZWZ0UGFuZWwvU3BsaXQgaW4gdGhlIHRyZWUpIC0gbm90aGluZyB0byByZXNpemUgYWdhaW5zdCwgc28gaG9zdFxuICAvLyBpdCBpbiBhIHBsYWluIGRpdiBhbmQgc2tpcCByZWFjdC1yZXNpemFibGUtcGFuZWxzIGVudGlyZWx5LiBCZWNhdXNlIHRoZVxuICAvLyBjaGVjayBpcyBvbiBERUNMQVJFRCBwYW5lbHMsIHRvZ2dsaW5nIGEgKmRlY2xhcmVkKiBwYW5lbCdzIHZpc2liaWxpdHkga2VlcHNcbiAgLy8gdGhlIG1vZGUgc3RhYmxlLCBzbyBgQ29udGVudGAgaXMgbmV2ZXIgcmVtb3VudGVkIGJ5IGEgc2hvdy9oaWRlLiBUaGUgbW9kZVxuICAvLyBvbmx5IGZsaXBzIHdoZW4gYSBwYW5lbCBtYXJrZXIgaXMgYWRkZWQgdG8gLyByZW1vdmVkIGZyb20gdGhlIHRyZWUgKGFcbiAgLy8gc3RydWN0dXJhbCBjaGFuZ2UpLCB3aGVyZSBhIG9uZS10aW1lIHJlbW91bnQgaXMgYWNjZXB0YWJsZS5cbiAgY29uc3QgaXNTb2xvID0gZGVjbGFyZWRTbG90cy5sZW5ndGggPD0gMTtcbiAgY29uc3Qgc29sb1Nsb3QgPSBkZWNsYXJlZFNsb3RzWzBdO1xuXG4gIC8vIGNvbnRlbnQgZmxleGVzIChubyBmaXhlZCBzaXplKTsgb3RoZXJzIHVzZSB0aGUgZGVjbGFyZWQgZGVmYXVsdCwgZmFsbGluZ1xuICAvLyBiYWNrIHRvIHRoZSBwZXJzaXN0ZWQvY29uZmlnIHNpemUuXG4gIGNvbnN0IGRlZmF1bHRTaXplRm9yID0gKHNsb3Q6IFNsb3RLZXkpOiBTaXplIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoc2xvdCA9PT0gU2xvdC5jb250ZW50KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBkZWNsYXJlZFtzbG90XT8uZGVmYXVsdFNpemUgPz8gbGF5b3V0U3RhdGVbc2xvdF0uc2l6ZTtcbiAgfTtcblxuICAvLyBPbmx5IHRoZSBwYW5lbHMgdGhhdCBhcmUgZGVjbGFyZWQgQU5EIGN1cnJlbnRseSBzaG93bi4gQ2xvc2VkL2hpZGRlbiBwYW5lbHNcbiAgLy8gYXJlIG5vdCByZW5kZXJlZCBhdCBhbGwgLSBubyByZXNlcnZlZCBzcGFjZS5cbiAgY29uc3QgcGFuZWxJdGVtczogUGFuZWxJdGVtW10gPSBQQU5FTF9PUkRFUi5maWx0ZXIoXG4gICAgKHNsb3QpID0+IGRlY2xhcmVkW3Nsb3RdICYmIGlzU2hvd24oc2xvdClcbiAgKS5tYXAoKHNsb3QpID0+ICh7XG4gICAgaWQ6IHNsb3QsXG4gICAgZGVmYXVsdFNpemU6IGRlZmF1bHRTaXplRm9yKHNsb3QpLFxuICAgIG1pblNpemU6IGRlY2xhcmVkW3Nsb3RdPy5taW5TaXplID8/IGxheW91dFN0YXRlW3Nsb3RdLm1pblNpemUsXG4gICAgbWF4U2l6ZTogZGVjbGFyZWRbc2xvdF0/Lm1heFNpemUgPz8gbGF5b3V0U3RhdGVbc2xvdF0ubWF4U2l6ZSxcbiAgICBjb2xsYXBzaWJsZTogc2xvdCAhPT0gU2xvdC5jb250ZW50ICYmIChkZWNsYXJlZFtzbG90XT8uY29sbGFwc2libGUgPz8gdHJ1ZSksXG4gIH0pKTtcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbFJlZ2lzdHJ5Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17cmVnaXN0cnl9PlxuICAgICAgPExheW91dFBvcnRhbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e25vZGVzfT5cbiAgICAgICAgPFN0eWxlZExheW91dCBkYXRhLWRzLWlkPVwiTGF5b3V0XCI+XG4gICAgICAgICAge2lzU29sb1xuICAgICAgICAgICAgPyAvLyBMb25lIHBhbmVsIC0gaG9zdCBpdCBpbiBhIHBsYWluIGRpdiwgbm8gcmVzaXphYmxlIEdyb3VwLiBIaWRkZW5cbiAgICAgICAgICAgICAgLy8gbG9uZSBwYW5lbHMgcmVuZGVyIG5vdGhpbmcgKENvbnRlbnQgaXMgYWx3YXlzIHNob3duKS5cbiAgICAgICAgICAgICAgc29sb1Nsb3QgJiZcbiAgICAgICAgICAgICAgaXNTaG93bihzb2xvU2xvdCkgJiYgPFN0eWxlZFNvbG9Ib3N0IHJlZj17aG9zdFJlZnNbc29sb1Nsb3RdfSAvPlxuICAgICAgICAgICAgOiBwYW5lbEl0ZW1zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgIC8vIGBrZXlgID0gdGhlIHBlcnNpc3RlbmNlIG5hbWVzcGFjZS4gcmVhY3QtcmVzaXphYmxlLXBhbmVsc1xuICAgICAgICAgICAgICAgIC8vIHJlYWRzIHN0b3JlZCBzaXplcyBvbmx5IG9uIG1vdW50LCBhbmQgdGhpcyBncm91cCBzdGF5c1xuICAgICAgICAgICAgICAgIC8vIG1vdW50ZWQgYWNyb3NzIG5hdmlnYXRpb24gLSBzbyByZW1vdW50IGl0IHdoZW4gdGhlIGtleVxuICAgICAgICAgICAgICAgIC8vIGNoYW5nZXMgdG8gbG9hZCBUSEFUIGluc3RhbmNlJ3Mgc2l6ZXMuIFVzZSBjYXNlOlxuICAgICAgICAgICAgICAgIC8vIHBlci1yb3V0ZS9wZXItaW5zdGFuY2Ugc2l6ZSBtZW1vcnkgKGUuZy5cbiAgICAgICAgICAgICAgICAvLyBgcGVyc2lzdGVuY2VLZXk9e2BsYXlvdXQ6JHtyb3V0ZUlkfWB9YCkgLSBkcmFnIHRoZSBjaGF0IHdpZGVcbiAgICAgICAgICAgICAgICAvLyBvbiBwYWdlIEEsIHN3aXRjaCB0byBwYWdlIEIgKGl0cyBvd24gd2lkdGhzKSwgY29tZSBiYWNrIHRvIEFcbiAgICAgICAgICAgICAgICAvLyBhbmQgZmluZCBBJ3Mgd2lkdGhzIHJlc3RvcmVkLiBUaGUga2V5IG9ubHkgY2hhbmdlcyBvblxuICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlIHN3aXRjaCwgbmV2ZXIgb24gcGFuZWwgb3Blbi9jbG9zZSwgc28gbm9ybWFsXG4gICAgICAgICAgICAgICAgLy8gdG9nZ2xpbmcgc3RheXMgcmVtb3VudC1mcmVlLlxuICAgICAgICAgICAgICAgIDxQYW5lbFxuICAgICAgICAgICAgICAgICAga2V5PXtyZXNvbHZlZEtleX1cbiAgICAgICAgICAgICAgICAgIHBhbmVscz17cGFuZWxJdGVtc31cbiAgICAgICAgICAgICAgICAgIHBlcnNpc3RlbmNlS2V5PXtyZXNvbHZlZEtleX1cbiAgICAgICAgICAgICAgICAgIHN0b3JhZ2U9e3Jlc29sdmVkU3RvcmFnZX1cbiAgICAgICAgICAgICAgICAgIGhvc3RGb3I9eyhpZCkgPT4gaG9zdFJlZnNbaWQgYXMgU2xvdEtleV19XG4gICAgICAgICAgICAgICAgICBvblJlc2l6ZT17KGlkLCBzaXplKSA9PlxuICAgICAgICAgICAgICAgICAgICBwYW5lbENhbGxiYWNrc1tpZCBhcyBTbG90S2V5XS5yZXNpemUoc2l6ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIG9uQ29sbGFwc2U9eyhpZCkgPT4gcGFuZWxDYWxsYmFja3NbaWQgYXMgU2xvdEtleV0uaGlkZSgpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1N0eWxlZExheW91dD5cbiAgICAgIDwvTGF5b3V0UG9ydGFsQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L1BhbmVsUmVnaXN0cnlDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogUHVibGljIExheW91dCAtIHRoZSByZXNpemFibGUgcGFuZWwgcm93ICsgY29tcG91bmQgcGFydHMgYXMgc3RhdGljcyAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG50eXBlIExheW91dENvbXBvbmVudCA9IHR5cGVvZiBMYXlvdXRCYXNlICYge1xuICBQcm92aWRlcjogdHlwZW9mIExheW91dFByb3ZpZGVyO1xuICBMZWZ0UGFuZWw6IHR5cGVvZiBMZWZ0UGFuZWw7XG4gIExlZnRQYW5lbEhlYWRlcjogdHlwZW9mIExlZnRQYW5lbEhlYWRlcjtcbiAgTGVmdFBhbmVsRm9vdGVyOiB0eXBlb2YgTGVmdFBhbmVsRm9vdGVyO1xuICBSaWdodFBhbmVsOiB0eXBlb2YgUmlnaHRQYW5lbDtcbiAgUmlnaHRQYW5lbEhlYWRlcjogdHlwZW9mIFJpZ2h0UGFuZWxIZWFkZXI7XG4gIFJpZ2h0UGFuZWxGb290ZXI6IHR5cGVvZiBSaWdodFBhbmVsRm9vdGVyO1xuICBDb250ZW50OiB0eXBlb2YgQ29udGVudDtcbiAgU3BsaXQ6IHR5cGVvZiBTcGxpdDtcbiAgU3BsaXRIZWFkZXI6IHR5cGVvZiBTcGxpdEhlYWRlcjtcbiAgU3BsaXRGb290ZXI6IHR5cGVvZiBTcGxpdEZvb3Rlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBMYXlvdXQgPSBMYXlvdXRCYXNlIGFzIExheW91dENvbXBvbmVudDtcblxuTGF5b3V0LlByb3ZpZGVyID0gTGF5b3V0UHJvdmlkZXI7XG5MYXlvdXQuTGVmdFBhbmVsID0gTGVmdFBhbmVsO1xuTGF5b3V0LkxlZnRQYW5lbEhlYWRlciA9IExlZnRQYW5lbEhlYWRlcjtcbkxheW91dC5MZWZ0UGFuZWxGb290ZXIgPSBMZWZ0UGFuZWxGb290ZXI7XG5MYXlvdXQuUmlnaHRQYW5lbCA9IFJpZ2h0UGFuZWw7XG5MYXlvdXQuUmlnaHRQYW5lbEhlYWRlciA9IFJpZ2h0UGFuZWxIZWFkZXI7XG5MYXlvdXQuUmlnaHRQYW5lbEZvb3RlciA9IFJpZ2h0UGFuZWxGb290ZXI7XG5MYXlvdXQuQ29udGVudCA9IENvbnRlbnQ7XG5MYXlvdXQuU3BsaXQgPSBTcGxpdDtcbkxheW91dC5TcGxpdEhlYWRlciA9IFNwbGl0SGVhZGVyO1xuTGF5b3V0LlNwbGl0Rm9vdGVyID0gU3BsaXRGb290ZXI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0VxQiJ9 */"),StyledSoloHost=styled("div",{target:"e13g6fyp1",label:"StyledSoloHost"})({position:"relative",height:"100%",width:"100%"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L0xheW91dC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0xheW91dC9MYXlvdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IFBhbmVsIH0gZnJvbSBcIi4uL0ludGVybmFsL1BhbmVsL1BhbmVsXCI7XG5pbXBvcnQgdHlwZSB7IFBhbmVsSXRlbSB9IGZyb20gXCIuLi9JbnRlcm5hbC9QYW5lbC9QYW5lbFwiO1xuaW1wb3J0IHsgUEFORUxfT1JERVIsIFBBTkVMX1dJRFRIX1ZBUiwgU2xvdCB9IGZyb20gXCIuLy1jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZUxheW91dFBlcnNpc3RlbmNlIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgTGF5b3V0UHJvdmlkZXIgfSBmcm9tIFwiLi9MYXlvdXRQcm92aWRlclwiO1xuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gXCIuL0NvbnRlbnQvQ29udGVudFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbCB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEhlYWRlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEZvb3RlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbFwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsSGVhZGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsRm9vdGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgU3BsaXQgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdFwiO1xuaW1wb3J0IHsgU3BsaXRIZWFkZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEhlYWRlclwiO1xuaW1wb3J0IHsgU3BsaXRGb290ZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEZvb3RlclwiO1xuaW1wb3J0IHtcbiAgTGF5b3V0UG9ydGFsQ29udGV4dCxcbiAgUGFuZWxSZWdpc3RyeUNvbnRleHQsXG4gIHR5cGUgSG9zdE5vZGVzLFxuICB0eXBlIFBhbmVsUmVnLFxuICB0eXBlIFBhbmVsUmVnaXN0cnksXG59IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgeyB1c2VQb3J0YWxDb250YWluZXJSZWZzIH0gZnJvbSBcIi4vdXNlUG9ydGFsQ29udGFpbmVyUmVmc1wiO1xuaW1wb3J0IHsgdXNlTGF5b3V0VmFyLCB0eXBlIExheW91dFZhckhhbmRsZSB9IGZyb20gXCIuL0xheW91dENzc1ZhcnNcIjtcbmltcG9ydCB7IHVzZUxheW91dCB9IGZyb20gXCIuL3VzZUxheW91dFwiO1xuaW1wb3J0IHR5cGUgeyBMYXlvdXRQcm9wcywgU2l6ZSwgU2xvdEtleSB9IGZyb20gXCIuLy10eXBlc1wiO1xuXG4vKipcbiAqIFB1Ymxpc2hlcyBlYWNoIHBhbmVsJ3MgbGl2ZSBwaXhlbCB3aWR0aCBhcyBhIGxheW91dCBDU1MgdmFyIChlLmcuXG4gKiBgLS1kcy1sYXlvdXQtcmlnaHRQYW5lbC13aWR0aGApLCB0cmFja2luZyBkcmFnLSBhbmQgd2luZG93LXJlc2l6ZXMuIEEgaGlkZGVuXG4gKiBwYXJ0IChubyBob3N0IG5vZGUpIHJlYWRzIGAwcHhgLCBzbyB0aGUgdmFyIGlzIGFsd2F5cyBkZWZpbmVkLiBPbmVcbiAqIGB1c2VMYXlvdXRWYXJgIHBlciBzbG90IGluIGBQQU5FTF9XSURUSF9WQVJgLlxuICovXG5jb25zdCB1c2VHbG9iYWxDc3NWYXJpYWJsZXMgPSAobm9kZXM6IEhvc3ROb2Rlcyk6IHZvaWQgPT4ge1xuICBjb25zdCBjb250ZW50V2lkdGhDc3NWYXIgPSB1c2VMYXlvdXRWYXIoUEFORUxfV0lEVEhfVkFSLmNvbnRlbnQpO1xuICBjb25zdCByaWdodFBhbmVsV2lkdGhDc3NWYXIgPSB1c2VMYXlvdXRWYXIoUEFORUxfV0lEVEhfVkFSLnJpZ2h0UGFuZWwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0czogW1Nsb3RLZXksIExheW91dFZhckhhbmRsZV1bXSA9IFtcbiAgICAgIFtTbG90LmNvbnRlbnQsIGNvbnRlbnRXaWR0aENzc1Zhcl0sXG4gICAgICBbU2xvdC5yaWdodFBhbmVsLCByaWdodFBhbmVsV2lkdGhDc3NWYXJdLFxuICAgIF07XG4gICAgY29uc3Qgb2JzZXJ2ZXJzOiBSZXNpemVPYnNlcnZlcltdID0gW107XG5cbiAgICB0YXJnZXRzLmZvckVhY2goKFtzbG90LCBoYW5kbGVdKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gbm9kZXNbc2xvdF0gPz8gbnVsbDtcbiAgICAgIGlmICghbm9kZSkge1xuICAgICAgICBoYW5kbGUuc2V0KFwiMHB4XCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBwdWJsaXNoTm9kZVdpZHRoID0gKCk6IHZvaWQgPT5cbiAgICAgICAgaGFuZGxlLnNldChgJHtub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofXB4YCk7XG4gICAgICBwdWJsaXNoTm9kZVdpZHRoKCk7XG4gICAgICAvLyBqc2RvbSAoYW5kIG9sZCBicm93c2VycykgbGFjayBSZXNpemVPYnNlcnZlciDigJQgc2tpcCBsaXZlIHRyYWNraW5nIHRoZXJlLlxuICAgICAgaWYgKHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIocHVibGlzaE5vZGVXaWR0aCk7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKG5vZGUpO1xuICAgICAgb2JzZXJ2ZXJzLnB1c2gob2JzZXJ2ZXIpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVycy5mb3JFYWNoKChvYnNlcnZlcikgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpKTtcbiAgfSwgW2NvbnRlbnRXaWR0aENzc1ZhciwgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyLCBub2Rlc10pO1xufTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIExheW91dCAtIHJlZ2lzdHJ5ICsgaG9zdHM7IG1hcmtlcnMgZGVjbGFyZS9wb3J0YWw7IHRoZSByZXNpemFibGUgcGFuZWwgcm93ICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmNvbnN0IFN0eWxlZExheW91dCA9IHN0eWxlZC5kaXYoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG59KTtcblxuLy8gU29sby1tb2RlIGhvc3Q6IGEgbG9uZSBwYW5lbCAobm8gcmVzaXphYmxlIHNpYmxpbmcpIGlzIGhvc3RlZCBoZXJlIGluc3RlYWQgb2Zcbi8vIGluc2lkZSByZWFjdC1yZXNpemFibGUtcGFuZWxzLiBNYXRjaGVzIHRoZSBwZXItcGFuZWwgaG9zdCB0aGUgR3JvdXAgcmVuZGVyc1xuLy8gKGByZWxhdGl2ZWAgKyBmdWxsLWJsZWVkKSBzbyBjb250ZW50IHJlZmxvd3Mvc2Nyb2xscyBpZGVudGljYWxseSBlaXRoZXIgd2F5LlxuY29uc3QgU3R5bGVkU29sb0hvc3QgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbmZ1bmN0aW9uIExheW91dEJhc2Uoe1xuICBjaGlsZHJlbixcbiAgcGVyc2lzdGVuY2VLZXksXG4gIHN0b3JhZ2UsXG59OiBMYXlvdXRQcm9wcyk6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IFtkZWNsYXJlZCwgc2V0RGVjbGFyZWRdID0gdXNlU3RhdGU8UGFydGlhbDxSZWNvcmQ8U2xvdEtleSwgUGFuZWxSZWc+Pj4oXG4gICAge31cbiAgKTtcbiAgY29uc3QgeyBzdGF0ZTogbGF5b3V0U3RhdGUsIC4uLnBhbmVsQ2FsbGJhY2tzIH0gPSB1c2VMYXlvdXQoKTtcbiAgY29uc3QgcGVyc2lzdGVuY2UgPSB1c2VMYXlvdXRQZXJzaXN0ZW5jZSgpO1xuICBjb25zdCByZXNvbHZlZEtleSA9IHBlcnNpc3RlbmNlS2V5ID8/IHBlcnNpc3RlbmNlLnBlcnNpc3RlbmNlS2V5O1xuICBjb25zdCByZXNvbHZlZFN0b3JhZ2UgPSBzdG9yYWdlID8/IHBlcnNpc3RlbmNlLnN0b3JhZ2U7XG5cbiAgY29uc3QgaXNTaG93biA9IChzbG90OiBTbG90S2V5KTogYm9vbGVhbiA9PiBsYXlvdXRTdGF0ZVtzbG90XS52aXNpYmxlO1xuXG4gIGNvbnN0IHJlZ2lzdHJ5ID0gdXNlTWVtbzxQYW5lbFJlZ2lzdHJ5PihcbiAgICAoKSA9PiAoe1xuICAgICAgcmVnaXN0ZXI6IChzbG90LCByZWcpID0+XG4gICAgICAgIHNldERlY2xhcmVkKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBbc2xvdF06IHJlZyB9KSksXG4gICAgICB1bnJlZ2lzdGVyOiAoc2xvdCkgPT5cbiAgICAgICAgc2V0RGVjbGFyZWQoKHByZXYpID0+IHtcbiAgICAgICAgICBpZiAoIShzbG90IGluIHByZXYpKSByZXR1cm4gcHJldjtcbiAgICAgICAgICBjb25zdCBuZXh0ID0geyAuLi5wcmV2IH07XG4gICAgICAgICAgZGVsZXRlIG5leHRbc2xvdF07XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH0pLFxuICAgIH0pLFxuICAgIFtdXG4gICk7XG5cbiAgY29uc3QgW25vZGVzLCBob3N0UmVmc10gPSB1c2VQb3J0YWxDb250YWluZXJSZWZzKFBBTkVMX09SREVSKTtcblxuICB1c2VHbG9iYWxDc3NWYXJpYWJsZXMobm9kZXMpO1xuXG4gIC8vIFBhbmVscyB0aGF0IGV4aXN0IGluIHRoZSBsYXlvdXQsIHJlZ2FyZGxlc3Mgb2YgdmlzaWJpbGl0eS4gRHJpdmVzIHRoZVxuICAvLyBzb2xvLXZzLXJlc2l6YWJsZSBkZWNpc2lvbiBiZWxvdyAtIGtleWVkIG9uIERFQ0xBUkVEIChub3Qgc2hvd24pIHNvIHRoYXRcbiAgLy8gc2hvd2luZy9oaWRpbmcgYSBwYW5lbCBuZXZlciBmbGlwcyB0aGUgbW9kZS5cbiAgY29uc3QgZGVjbGFyZWRTbG90cyA9IFBBTkVMX09SREVSLmZpbHRlcigoc2xvdCkgPT4gZGVjbGFyZWRbc2xvdF0pO1xuXG4gIC8vIFNvbG8gbW9kZTogYSBzaW5nbGUgcGFuZWwgaXMgZGVjbGFyZWQgKGUuZy4ganVzdCBgQ29udGVudGAsIHdpdGggbm9cbiAgLy8gUmlnaHRQYW5lbC9MZWZ0UGFuZWwvU3BsaXQgaW4gdGhlIHRyZWUpIC0gbm90aGluZyB0byByZXNpemUgYWdhaW5zdCwgc28gaG9zdFxuICAvLyBpdCBpbiBhIHBsYWluIGRpdiBhbmQgc2tpcCByZWFjdC1yZXNpemFibGUtcGFuZWxzIGVudGlyZWx5LiBCZWNhdXNlIHRoZVxuICAvLyBjaGVjayBpcyBvbiBERUNMQVJFRCBwYW5lbHMsIHRvZ2dsaW5nIGEgKmRlY2xhcmVkKiBwYW5lbCdzIHZpc2liaWxpdHkga2VlcHNcbiAgLy8gdGhlIG1vZGUgc3RhYmxlLCBzbyBgQ29udGVudGAgaXMgbmV2ZXIgcmVtb3VudGVkIGJ5IGEgc2hvdy9oaWRlLiBUaGUgbW9kZVxuICAvLyBvbmx5IGZsaXBzIHdoZW4gYSBwYW5lbCBtYXJrZXIgaXMgYWRkZWQgdG8gLyByZW1vdmVkIGZyb20gdGhlIHRyZWUgKGFcbiAgLy8gc3RydWN0dXJhbCBjaGFuZ2UpLCB3aGVyZSBhIG9uZS10aW1lIHJlbW91bnQgaXMgYWNjZXB0YWJsZS5cbiAgY29uc3QgaXNTb2xvID0gZGVjbGFyZWRTbG90cy5sZW5ndGggPD0gMTtcbiAgY29uc3Qgc29sb1Nsb3QgPSBkZWNsYXJlZFNsb3RzWzBdO1xuXG4gIC8vIGNvbnRlbnQgZmxleGVzIChubyBmaXhlZCBzaXplKTsgb3RoZXJzIHVzZSB0aGUgZGVjbGFyZWQgZGVmYXVsdCwgZmFsbGluZ1xuICAvLyBiYWNrIHRvIHRoZSBwZXJzaXN0ZWQvY29uZmlnIHNpemUuXG4gIGNvbnN0IGRlZmF1bHRTaXplRm9yID0gKHNsb3Q6IFNsb3RLZXkpOiBTaXplIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoc2xvdCA9PT0gU2xvdC5jb250ZW50KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBkZWNsYXJlZFtzbG90XT8uZGVmYXVsdFNpemUgPz8gbGF5b3V0U3RhdGVbc2xvdF0uc2l6ZTtcbiAgfTtcblxuICAvLyBPbmx5IHRoZSBwYW5lbHMgdGhhdCBhcmUgZGVjbGFyZWQgQU5EIGN1cnJlbnRseSBzaG93bi4gQ2xvc2VkL2hpZGRlbiBwYW5lbHNcbiAgLy8gYXJlIG5vdCByZW5kZXJlZCBhdCBhbGwgLSBubyByZXNlcnZlZCBzcGFjZS5cbiAgY29uc3QgcGFuZWxJdGVtczogUGFuZWxJdGVtW10gPSBQQU5FTF9PUkRFUi5maWx0ZXIoXG4gICAgKHNsb3QpID0+IGRlY2xhcmVkW3Nsb3RdICYmIGlzU2hvd24oc2xvdClcbiAgKS5tYXAoKHNsb3QpID0+ICh7XG4gICAgaWQ6IHNsb3QsXG4gICAgZGVmYXVsdFNpemU6IGRlZmF1bHRTaXplRm9yKHNsb3QpLFxuICAgIG1pblNpemU6IGRlY2xhcmVkW3Nsb3RdPy5taW5TaXplID8/IGxheW91dFN0YXRlW3Nsb3RdLm1pblNpemUsXG4gICAgbWF4U2l6ZTogZGVjbGFyZWRbc2xvdF0/Lm1heFNpemUgPz8gbGF5b3V0U3RhdGVbc2xvdF0ubWF4U2l6ZSxcbiAgICBjb2xsYXBzaWJsZTogc2xvdCAhPT0gU2xvdC5jb250ZW50ICYmIChkZWNsYXJlZFtzbG90XT8uY29sbGFwc2libGUgPz8gdHJ1ZSksXG4gIH0pKTtcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbFJlZ2lzdHJ5Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17cmVnaXN0cnl9PlxuICAgICAgPExheW91dFBvcnRhbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e25vZGVzfT5cbiAgICAgICAgPFN0eWxlZExheW91dCBkYXRhLWRzLWlkPVwiTGF5b3V0XCI+XG4gICAgICAgICAge2lzU29sb1xuICAgICAgICAgICAgPyAvLyBMb25lIHBhbmVsIC0gaG9zdCBpdCBpbiBhIHBsYWluIGRpdiwgbm8gcmVzaXphYmxlIEdyb3VwLiBIaWRkZW5cbiAgICAgICAgICAgICAgLy8gbG9uZSBwYW5lbHMgcmVuZGVyIG5vdGhpbmcgKENvbnRlbnQgaXMgYWx3YXlzIHNob3duKS5cbiAgICAgICAgICAgICAgc29sb1Nsb3QgJiZcbiAgICAgICAgICAgICAgaXNTaG93bihzb2xvU2xvdCkgJiYgPFN0eWxlZFNvbG9Ib3N0IHJlZj17aG9zdFJlZnNbc29sb1Nsb3RdfSAvPlxuICAgICAgICAgICAgOiBwYW5lbEl0ZW1zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgIC8vIGBrZXlgID0gdGhlIHBlcnNpc3RlbmNlIG5hbWVzcGFjZS4gcmVhY3QtcmVzaXphYmxlLXBhbmVsc1xuICAgICAgICAgICAgICAgIC8vIHJlYWRzIHN0b3JlZCBzaXplcyBvbmx5IG9uIG1vdW50LCBhbmQgdGhpcyBncm91cCBzdGF5c1xuICAgICAgICAgICAgICAgIC8vIG1vdW50ZWQgYWNyb3NzIG5hdmlnYXRpb24gLSBzbyByZW1vdW50IGl0IHdoZW4gdGhlIGtleVxuICAgICAgICAgICAgICAgIC8vIGNoYW5nZXMgdG8gbG9hZCBUSEFUIGluc3RhbmNlJ3Mgc2l6ZXMuIFVzZSBjYXNlOlxuICAgICAgICAgICAgICAgIC8vIHBlci1yb3V0ZS9wZXItaW5zdGFuY2Ugc2l6ZSBtZW1vcnkgKGUuZy5cbiAgICAgICAgICAgICAgICAvLyBgcGVyc2lzdGVuY2VLZXk9e2BsYXlvdXQ6JHtyb3V0ZUlkfWB9YCkgLSBkcmFnIHRoZSBjaGF0IHdpZGVcbiAgICAgICAgICAgICAgICAvLyBvbiBwYWdlIEEsIHN3aXRjaCB0byBwYWdlIEIgKGl0cyBvd24gd2lkdGhzKSwgY29tZSBiYWNrIHRvIEFcbiAgICAgICAgICAgICAgICAvLyBhbmQgZmluZCBBJ3Mgd2lkdGhzIHJlc3RvcmVkLiBUaGUga2V5IG9ubHkgY2hhbmdlcyBvblxuICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlIHN3aXRjaCwgbmV2ZXIgb24gcGFuZWwgb3Blbi9jbG9zZSwgc28gbm9ybWFsXG4gICAgICAgICAgICAgICAgLy8gdG9nZ2xpbmcgc3RheXMgcmVtb3VudC1mcmVlLlxuICAgICAgICAgICAgICAgIDxQYW5lbFxuICAgICAgICAgICAgICAgICAga2V5PXtyZXNvbHZlZEtleX1cbiAgICAgICAgICAgICAgICAgIHBhbmVscz17cGFuZWxJdGVtc31cbiAgICAgICAgICAgICAgICAgIHBlcnNpc3RlbmNlS2V5PXtyZXNvbHZlZEtleX1cbiAgICAgICAgICAgICAgICAgIHN0b3JhZ2U9e3Jlc29sdmVkU3RvcmFnZX1cbiAgICAgICAgICAgICAgICAgIGhvc3RGb3I9eyhpZCkgPT4gaG9zdFJlZnNbaWQgYXMgU2xvdEtleV19XG4gICAgICAgICAgICAgICAgICBvblJlc2l6ZT17KGlkLCBzaXplKSA9PlxuICAgICAgICAgICAgICAgICAgICBwYW5lbENhbGxiYWNrc1tpZCBhcyBTbG90S2V5XS5yZXNpemUoc2l6ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIG9uQ29sbGFwc2U9eyhpZCkgPT4gcGFuZWxDYWxsYmFja3NbaWQgYXMgU2xvdEtleV0uaGlkZSgpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1N0eWxlZExheW91dD5cbiAgICAgIDwvTGF5b3V0UG9ydGFsQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L1BhbmVsUmVnaXN0cnlDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogUHVibGljIExheW91dCAtIHRoZSByZXNpemFibGUgcGFuZWwgcm93ICsgY29tcG91bmQgcGFydHMgYXMgc3RhdGljcyAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG50eXBlIExheW91dENvbXBvbmVudCA9IHR5cGVvZiBMYXlvdXRCYXNlICYge1xuICBQcm92aWRlcjogdHlwZW9mIExheW91dFByb3ZpZGVyO1xuICBMZWZ0UGFuZWw6IHR5cGVvZiBMZWZ0UGFuZWw7XG4gIExlZnRQYW5lbEhlYWRlcjogdHlwZW9mIExlZnRQYW5lbEhlYWRlcjtcbiAgTGVmdFBhbmVsRm9vdGVyOiB0eXBlb2YgTGVmdFBhbmVsRm9vdGVyO1xuICBSaWdodFBhbmVsOiB0eXBlb2YgUmlnaHRQYW5lbDtcbiAgUmlnaHRQYW5lbEhlYWRlcjogdHlwZW9mIFJpZ2h0UGFuZWxIZWFkZXI7XG4gIFJpZ2h0UGFuZWxGb290ZXI6IHR5cGVvZiBSaWdodFBhbmVsRm9vdGVyO1xuICBDb250ZW50OiB0eXBlb2YgQ29udGVudDtcbiAgU3BsaXQ6IHR5cGVvZiBTcGxpdDtcbiAgU3BsaXRIZWFkZXI6IHR5cGVvZiBTcGxpdEhlYWRlcjtcbiAgU3BsaXRGb290ZXI6IHR5cGVvZiBTcGxpdEZvb3Rlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBMYXlvdXQgPSBMYXlvdXRCYXNlIGFzIExheW91dENvbXBvbmVudDtcblxuTGF5b3V0LlByb3ZpZGVyID0gTGF5b3V0UHJvdmlkZXI7XG5MYXlvdXQuTGVmdFBhbmVsID0gTGVmdFBhbmVsO1xuTGF5b3V0LkxlZnRQYW5lbEhlYWRlciA9IExlZnRQYW5lbEhlYWRlcjtcbkxheW91dC5MZWZ0UGFuZWxGb290ZXIgPSBMZWZ0UGFuZWxGb290ZXI7XG5MYXlvdXQuUmlnaHRQYW5lbCA9IFJpZ2h0UGFuZWw7XG5MYXlvdXQuUmlnaHRQYW5lbEhlYWRlciA9IFJpZ2h0UGFuZWxIZWFkZXI7XG5MYXlvdXQuUmlnaHRQYW5lbEZvb3RlciA9IFJpZ2h0UGFuZWxGb290ZXI7XG5MYXlvdXQuQ29udGVudCA9IENvbnRlbnQ7XG5MYXlvdXQuU3BsaXQgPSBTcGxpdDtcbkxheW91dC5TcGxpdEhlYWRlciA9IFNwbGl0SGVhZGVyO1xuTGF5b3V0LlNwbGl0Rm9vdGVyID0gU3BsaXRGb290ZXI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0V1QiJ9 */");export const Layout=function({children,persistenceKey,storage}){let[declared,setDeclared]=useState({}),{state:layoutState,...panelCallbacks}=useLayout(),persistence=useLayoutPersistence(),resolvedKey=persistenceKey??persistence.persistenceKey,resolvedStorage=storage??persistence.storage,isShown=slot=>layoutState[slot].visible,registry=useMemo(()=>({register:(slot,reg)=>setDeclared(prev=>({...prev,[slot]:reg})),unregister:slot=>setDeclared(prev=>{if(!(slot in prev))return prev;let next={...prev};return delete next[slot],next})}),[]),[nodes,hostRefs]=usePortalContainerRefs(PANEL_ORDER);useGlobalCssVariables(nodes);let declaredSlots=PANEL_ORDER.filter(slot=>declared[slot]),isSolo=declaredSlots.length<=1,soloSlot=declaredSlots[0],defaultSizeFor=slot=>{if(slot!==Slot.content)return declared[slot]?.defaultSize??layoutState[slot].size},panelItems=PANEL_ORDER.filter(slot=>declared[slot]&&isShown(slot)).map(slot=>({id:slot,defaultSize:defaultSizeFor(slot),minSize:declared[slot]?.minSize??layoutState[slot].minSize,maxSize:declared[slot]?.maxSize??layoutState[slot].maxSize,collapsible:slot!==Slot.content&&(declared[slot]?.collapsible??!0)}));return React.createElement(PanelRegistryContext.Provider,{value:registry},React.createElement(LayoutPortalContext.Provider,{value:nodes},React.createElement(StyledLayout,{"data-ds-id":"Layout"},isSolo?soloSlot&&isShown(soloSlot)&&React.createElement(StyledSoloHost,{ref:hostRefs[soloSlot]}):panelItems.length>0&&React.createElement(Panel,{key:resolvedKey,panels:panelItems,persistenceKey:resolvedKey,storage:resolvedStorage,hostFor:id=>hostRefs[id],onResize:(id,size)=>panelCallbacks[id].resize(size),onCollapse:id=>panelCallbacks[id].hide()}),children)))};Layout.Provider=LayoutProvider,Layout.LeftPanel=LeftPanel,Layout.LeftPanelHeader=LeftPanelHeader,Layout.LeftPanelFooter=LeftPanelFooter,Layout.RightPanel=RightPanel,Layout.RightPanelHeader=RightPanelHeader,Layout.RightPanelFooter=RightPanelFooter,Layout.Content=Content,Layout.Split=Split,Layout.SplitHeader=SplitHeader,Layout.SplitFooter=SplitFooter;
1
+ import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import styled from"@emotion/styled";import{Panel}from"../Internal/Panel/Panel";import{LayoutFloat}from"../Internal/LayoutFloat/LayoutFloat";import{useBreakpoints}from"../../shared/useBreakpoints";import{PANEL_ORDER,PANEL_WIDTH_VAR,Slot}from"./-constants";import{useLayoutPanelsEnabled,useLayoutPersistence}from"./context";import{LayoutProvider}from"./LayoutProvider";import{Content}from"./Content/Content";import{RightPanel}from"./RightPanel/RightPanel";import{RightPanelHeader}from"./RightPanel/RightPanelHeader";import{RightPanelFooter}from"./RightPanel/RightPanelFooter";import{LeftPanel}from"./LeftPanel/LeftPanel";import{LeftPanelHeader}from"./LeftPanel/LeftPanelHeader";import{LeftPanelFooter}from"./LeftPanel/LeftPanelFooter";import{Split}from"./Split/Split";import{SplitHeader}from"./Split/SplitHeader";import{SplitFooter}from"./Split/SplitFooter";import{LayoutPortalContext,PanelRegistryContext,PanelPresenceContext,PanelAnimationContext}from"./registry";import{useFloatablePortalTargets}from"./useFloatablePortalTargets";import{useLayoutVar}from"./LayoutCssVars";import{useLayout}from"./useLayout";let useGlobalCssVariables=slotHosts=>{let contentWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.content),rightPanelWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.rightPanel);useEffect(()=>{let targets=[[Slot.content,contentWidthCssVar],[Slot.rightPanel,rightPanelWidthCssVar]],observers=[];return targets.forEach(([slot,handle])=>{let node=slotHosts[slot]??null;if(!node)return void handle.set("0px");let publishNodeWidth=()=>handle.set(`${node.getBoundingClientRect().width}px`);if(publishNodeWidth(),"undefined"==typeof ResizeObserver)return;let observer=new ResizeObserver(publishNodeWidth);observer.observe(node),observers.push(observer)}),()=>observers.forEach(observer=>observer.disconnect())},[contentWidthCssVar,rightPanelWidthCssVar,slotHosts])},StyledLayout=styled("div",{target:"e1exnax50",label:"StyledLayout"})({position:"relative",height:"100%",width:"100%"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L0xheW91dC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0xheW91dC9MYXlvdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHR5cGUgeyBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfSBmcm9tIFwicmVhY3QtcmVzaXphYmxlLXBhbmVsc1wiO1xuaW1wb3J0IHsgUGFuZWwgfSBmcm9tIFwiLi4vSW50ZXJuYWwvUGFuZWwvUGFuZWxcIjtcbmltcG9ydCB0eXBlIHsgUGFuZWxJdGVtIH0gZnJvbSBcIi4uL0ludGVybmFsL1BhbmVsL1BhbmVsXCI7XG5pbXBvcnQgeyBMYXlvdXRGbG9hdCB9IGZyb20gXCIuLi9JbnRlcm5hbC9MYXlvdXRGbG9hdC9MYXlvdXRGbG9hdFwiO1xuaW1wb3J0IHsgdXNlQnJlYWtwb2ludHMgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZUJyZWFrcG9pbnRzXCI7XG5pbXBvcnQgeyBQQU5FTF9PUkRFUiwgUEFORUxfV0lEVEhfVkFSLCBTbG90IH0gZnJvbSBcIi4vLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTGF5b3V0UGFuZWxzRW5hYmxlZCwgdXNlTGF5b3V0UGVyc2lzdGVuY2UgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBMYXlvdXRQcm92aWRlciB9IGZyb20gXCIuL0xheW91dFByb3ZpZGVyXCI7XG5pbXBvcnQgeyBDb250ZW50IH0gZnJvbSBcIi4vQ29udGVudC9Db250ZW50XCI7XG5pbXBvcnQgeyBSaWdodFBhbmVsIH0gZnJvbSBcIi4vUmlnaHRQYW5lbC9SaWdodFBhbmVsXCI7XG5pbXBvcnQgeyBSaWdodFBhbmVsSGVhZGVyIH0gZnJvbSBcIi4vUmlnaHRQYW5lbC9SaWdodFBhbmVsSGVhZGVyXCI7XG5pbXBvcnQgeyBSaWdodFBhbmVsRm9vdGVyIH0gZnJvbSBcIi4vUmlnaHRQYW5lbC9SaWdodFBhbmVsRm9vdGVyXCI7XG5pbXBvcnQgeyBMZWZ0UGFuZWwgfSBmcm9tIFwiLi9MZWZ0UGFuZWwvTGVmdFBhbmVsXCI7XG5pbXBvcnQgeyBMZWZ0UGFuZWxIZWFkZXIgfSBmcm9tIFwiLi9MZWZ0UGFuZWwvTGVmdFBhbmVsSGVhZGVyXCI7XG5pbXBvcnQgeyBMZWZ0UGFuZWxGb290ZXIgfSBmcm9tIFwiLi9MZWZ0UGFuZWwvTGVmdFBhbmVsRm9vdGVyXCI7XG5pbXBvcnQgeyBTcGxpdCB9IGZyb20gXCIuL1NwbGl0L1NwbGl0XCI7XG5pbXBvcnQgeyBTcGxpdEhlYWRlciB9IGZyb20gXCIuL1NwbGl0L1NwbGl0SGVhZGVyXCI7XG5pbXBvcnQgeyBTcGxpdEZvb3RlciB9IGZyb20gXCIuL1NwbGl0L1NwbGl0Rm9vdGVyXCI7XG5pbXBvcnQge1xuICBMYXlvdXRQb3J0YWxDb250ZXh0LFxuICBQYW5lbFJlZ2lzdHJ5Q29udGV4dCxcbiAgUGFuZWxQcmVzZW5jZUNvbnRleHQsXG4gIFBhbmVsQW5pbWF0aW9uQ29udGV4dCxcbiAgdHlwZSBQb3J0YWxUYXJnZXRzLFxuICB0eXBlIFBhbmVsUmVnLFxuICB0eXBlIFBhbmVsUmVnaXN0cnksXG4gIHR5cGUgUGFuZWxQcmVzZW5jZSxcbiAgdHlwZSBQYW5lbEFuaW1hdGlvbkNvbnRyb2wsXG59IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgeyB1c2VGbG9hdGFibGVQb3J0YWxUYXJnZXRzIH0gZnJvbSBcIi4vdXNlRmxvYXRhYmxlUG9ydGFsVGFyZ2V0c1wiO1xuaW1wb3J0IHsgdXNlTGF5b3V0VmFyLCB0eXBlIExheW91dFZhckhhbmRsZSB9IGZyb20gXCIuL0xheW91dENzc1ZhcnNcIjtcbmltcG9ydCB7IHVzZUxheW91dCB9IGZyb20gXCIuL3VzZUxheW91dFwiO1xuaW1wb3J0IHR5cGUgeyBMYXlvdXRQcm9wcywgU2l6ZSwgU2xvdEtleSB9IGZyb20gXCIuLy10eXBlc1wiO1xuXG4vKipcbiAqIFB1Ymxpc2hlcyBlYWNoIHBhbmVsJ3MgbGl2ZSBwaXhlbCB3aWR0aCBhcyBhIGxheW91dCBDU1MgdmFyIChlLmcuXG4gKiBgLS1kcy1sYXlvdXQtcmlnaHRQYW5lbC13aWR0aGApLCB0cmFja2luZyBkcmFnLSBhbmQgd2luZG93LXJlc2l6ZXMuIEEgaGlkZGVuXG4gKiBwYXJ0IChubyBob3N0IG5vZGUpIHJlYWRzIGAwcHhgLCBzbyB0aGUgdmFyIGlzIGFsd2F5cyBkZWZpbmVkLiBPbmVcbiAqIGB1c2VMYXlvdXRWYXJgIHBlciBzbG90IGluIGBQQU5FTF9XSURUSF9WQVJgLlxuICovXG5jb25zdCB1c2VHbG9iYWxDc3NWYXJpYWJsZXMgPSAoc2xvdEhvc3RzOiBQb3J0YWxUYXJnZXRzKTogdm9pZCA9PiB7XG4gIGNvbnN0IGNvbnRlbnRXaWR0aENzc1ZhciA9IHVzZUxheW91dFZhcihQQU5FTF9XSURUSF9WQVIuY29udGVudCk7XG4gIGNvbnN0IHJpZ2h0UGFuZWxXaWR0aENzc1ZhciA9IHVzZUxheW91dFZhcihQQU5FTF9XSURUSF9WQVIucmlnaHRQYW5lbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB0YXJnZXRzOiBbU2xvdEtleSwgTGF5b3V0VmFySGFuZGxlXVtdID0gW1xuICAgICAgW1Nsb3QuY29udGVudCwgY29udGVudFdpZHRoQ3NzVmFyXSxcbiAgICAgIFtTbG90LnJpZ2h0UGFuZWwsIHJpZ2h0UGFuZWxXaWR0aENzc1Zhcl0sXG4gICAgXTtcbiAgICBjb25zdCBvYnNlcnZlcnM6IFJlc2l6ZU9ic2VydmVyW10gPSBbXTtcblxuICAgIHRhcmdldHMuZm9yRWFjaCgoW3Nsb3QsIGhhbmRsZV0pID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBzbG90SG9zdHNbc2xvdF0gPz8gbnVsbDtcbiAgICAgIGlmICghbm9kZSkge1xuICAgICAgICBoYW5kbGUuc2V0KFwiMHB4XCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBwdWJsaXNoTm9kZVdpZHRoID0gKCk6IHZvaWQgPT5cbiAgICAgICAgaGFuZGxlLnNldChgJHtub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofXB4YCk7XG4gICAgICBwdWJsaXNoTm9kZVdpZHRoKCk7XG4gICAgICAvLyBqc2RvbSAoYW5kIG9sZCBicm93c2VycykgbGFjayBSZXNpemVPYnNlcnZlciDigJQgc2tpcCBsaXZlIHRyYWNraW5nIHRoZXJlLlxuICAgICAgaWYgKHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIocHVibGlzaE5vZGVXaWR0aCk7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKG5vZGUpO1xuICAgICAgb2JzZXJ2ZXJzLnB1c2gob2JzZXJ2ZXIpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVycy5mb3JFYWNoKChvYnNlcnZlcikgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpKTtcbiAgfSwgW2NvbnRlbnRXaWR0aENzc1ZhciwgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyLCBzbG90SG9zdHNdKTtcbn07XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiBMYXlvdXQgLSByZWdpc3RyeSArIGhvc3RzOyBtYXJrZXJzIGRlY2xhcmUvcG9ydGFsOyB0aGUgcmVzaXphYmxlIHBhbmVsIHJvdyAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5jb25zdCBTdHlsZWRMYXlvdXQgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbi8vIFNvbG8tbW9kZSBob3N0OiBhIGxvbmUgcGFuZWwgKG5vIHJlc2l6YWJsZSBzaWJsaW5nKSBpcyBob3N0ZWQgaGVyZSBpbnN0ZWFkIG9mXG4vLyBpbnNpZGUgcmVhY3QtcmVzaXphYmxlLXBhbmVscy4gTWF0Y2hlcyB0aGUgcGVyLXBhbmVsIGhvc3QgdGhlIEdyb3VwIHJlbmRlcnNcbi8vIChgcmVsYXRpdmVgICsgZnVsbC1ibGVlZCkgc28gY29udGVudCByZWZsb3dzL3Njcm9sbHMgaWRlbnRpY2FsbHkgZWl0aGVyIHdheS5cbmNvbnN0IFN0eWxlZFNvbG9Ib3N0ID0gc3R5bGVkLmRpdih7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbn0pO1xuXG5mdW5jdGlvbiBMYXlvdXRCYXNlKHtcbiAgY2hpbGRyZW4sXG4gIHBlcnNpc3RlbmNlS2V5LFxuICBzdG9yYWdlLFxufTogTGF5b3V0UHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBbZGVjbGFyZWQsIHNldERlY2xhcmVkXSA9IHVzZVN0YXRlPFBhcnRpYWw8UmVjb3JkPFNsb3RLZXksIFBhbmVsUmVnPj4+KFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IHsgc3RhdGU6IGxheW91dFN0YXRlLCAuLi5wYW5lbENhbGxiYWNrcyB9ID0gdXNlTGF5b3V0KCk7XG4gIGNvbnN0IHBlcnNpc3RlbmNlID0gdXNlTGF5b3V0UGVyc2lzdGVuY2UoKTtcbiAgY29uc3QgcmVzb2x2ZWRLZXkgPSBwZXJzaXN0ZW5jZUtleSA/PyBwZXJzaXN0ZW5jZS5wZXJzaXN0ZW5jZUtleTtcbiAgY29uc3QgcmVzb2x2ZWRTdG9yYWdlID0gc3RvcmFnZSA/PyBwZXJzaXN0ZW5jZS5zdG9yYWdlO1xuXG4gIC8vIEJlbG93IHRoZSBtb2JpbGUgYnJlYWtwb2ludCB0aGUgcmlnaHRQYW5lbCByZW5kZXJzIGFzIGEgYm90dG9tIHNoZWV0IChpdHNcbiAgLy8gbWFya2VyIHJlbmRlcnMgdGhlIFNoZWV0IGl0c2VsZikgLSBhbiBhdXRvbWF0aWMsIHJlbmRlci1sZXZlbCBhZGFwdGF0aW9uLlxuICAvLyBUaGUgc3RvcmVkIHZhcmlhbnQgaXMgdW50b3VjaGVkLCBzbyByZXNpemluZyBiYWNrIHRvIGRlc2t0b3AgcmVzdG9yZXMgdGhlXG4gIC8vIGV4YWN0IHByZXNlbnRhdGlvbiAoZG9ja2VkIG9yIGZsb2F0aW5nKSB0aGUgdXNlciBsZWZ0LlxuICBjb25zdCB7IGlzTW9iaWxlIH0gPSB1c2VCcmVha3BvaW50cygpO1xuICBjb25zdCBpc1JpZ2h0UGFuZWxTaGVldCA9IGlzTW9iaWxlO1xuXG4gIC8vIEEgZmxvYXRpbmcgcmlnaHRQYW5lbCBzdGF5cyB2aXNpYmxlIChpdHMgbWFya2VyIGtlZXBzIHJlbmRlcmluZyBjb250ZW50KVxuICAvLyBidXQgbGVhdmVzIHRoZSByZXNpemFibGUgcm93IC0gZXhhY3RseSBsaWtlIGEgaGlkZGVuIHBhbmVsIGRvZXMuIFRoZVxuICAvLyBtb2JpbGUgc2hlZXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBmbG9hdGluZyB3aW5kb3cuIEZsb2F0IGlzIGFcbiAgLy8gZGVza3RvcCBwcmVzZW50YXRpb24sIHNvIG9ubHkgbW9kZSBgdHJ1ZWAgZW5hYmxlcyBpdC5cbiAgY29uc3QgcGFuZWxzRW5hYmxlZCA9IHVzZUxheW91dFBhbmVsc0VuYWJsZWQoKTtcbiAgY29uc3QgaXNSaWdodFBhbmVsRmxvYXRpbmcgPVxuICAgIHBhbmVsc0VuYWJsZWQgPT09IHRydWUgJiZcbiAgICAhaXNSaWdodFBhbmVsU2hlZXQgJiZcbiAgICBsYXlvdXRTdGF0ZVtTbG90LnJpZ2h0UGFuZWxdLnZhcmlhbnQgPT09IFwiZmxvYXRcIjtcblxuICBjb25zdCBpc1Nob3duID0gKHNsb3Q6IFNsb3RLZXkpOiBib29sZWFuID0+XG4gICAgbGF5b3V0U3RhdGVbc2xvdF0udmlzaWJsZSAmJlxuICAgICEoc2xvdCA9PT0gU2xvdC5yaWdodFBhbmVsICYmIChpc1JpZ2h0UGFuZWxGbG9hdGluZyB8fCBpc1JpZ2h0UGFuZWxTaGVldCkpO1xuXG4gIC8vIFNsb3RzIGtlcHQgbW91bnRlZCB0aHJvdWdoIHRoZWlyIGV4aXQgYW5pbWF0aW9uIChyZXBvcnRlZCB2aWFcbiAgLy8gYHVzZVBhbmVsUHJlc2VuY2VgKS4gQSBwcmVzZW50LWJ1dC1oaWRkZW4gc2xvdCBzdGF5cyBpbiB0aGUgcm93IHNvIGl0c1xuICAvLyBjbG9zZSBhbmltYXRpb24gY2FuIHBsYXk7IGl0J3MgcmVtb3ZlZCBvbmNlIHByZXNlbmNlIGZsaXBzIGZhbHNlLlxuICBjb25zdCBbcHJlc2VudCwgc2V0UHJlc2VudF0gPSB1c2VTdGF0ZTxQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBib29sZWFuPj4+KHt9KTtcbiAgY29uc3QgcHJlc2VuY2UgPSB1c2VNZW1vPFBhbmVsUHJlc2VuY2U+KFxuICAgICgpID0+ICh7XG4gICAgICBzZXRQcmVzZW50OiAoc2xvdCwgaXNQcmVzZW50KSA9PlxuICAgICAgICBzZXRQcmVzZW50KChwcmV2KSA9PlxuICAgICAgICAgIHByZXZbc2xvdF0gPT09IGlzUHJlc2VudCA/IHByZXYgOiB7IC4uLnByZXYsIFtzbG90XTogaXNQcmVzZW50IH1cbiAgICAgICAgKSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIC8vIEFuaW1hdGlvbiBjb250cm9sIGZvciB0aGUgZG9ja2VkIHNpZGUgcGFuZWxzJyBvcGVuL2Nsb3NlIHdpZHRoIHNsaWRlLiBBbGxcbiAgLy8gcmVmLWJhc2VkIG9uIHB1cnBvc2U6IHJlZ2lzdGVyaW5nIGhhbmRsZXMvZWxlbWVudHMgYW5kIHRvZ2dsaW5nIHN1cHByZXNzaW9uXG4gIC8vIGhhcHBlbiBkdXJpbmcgY29tbWl0cyBhbmQgcGVyLWZyYW1lIC0gbm9uZSBvZiBpdCBtYXkgcmUtcmVuZGVyIHRoZSBMYXlvdXQuXG4gIGNvbnN0IHBhbmVsSGFuZGxlcyA9IHVzZVJlZjxcbiAgICBQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfCBudWxsPj5cbiAgPih7fSk7XG4gIGNvbnN0IHBhbmVsRWxlbWVudHMgPSB1c2VSZWY8UGFydGlhbDxSZWNvcmQ8U2xvdEtleSwgSFRNTEVsZW1lbnQgfCBudWxsPj4+KFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IHJlc2l6ZVN1cHByZXNzZWQgPSB1c2VSZWY8UGFydGlhbDxSZWNvcmQ8U2xvdEtleSwgYm9vbGVhbj4+Pih7fSk7XG4gIGNvbnN0IGFuaW1hdGlvbkNvbnRyb2wgPSB1c2VNZW1vPFBhbmVsQW5pbWF0aW9uQ29udHJvbD4oXG4gICAgKCkgPT4gKHtcbiAgICAgIHNldEhhbmRsZTogKHNsb3QsIGhhbmRsZSkgPT4ge1xuICAgICAgICBwYW5lbEhhbmRsZXMuY3VycmVudFtzbG90XSA9IGhhbmRsZTtcbiAgICAgIH0sXG4gICAgICBnZXRIYW5kbGU6IChzbG90KSA9PiBwYW5lbEhhbmRsZXMuY3VycmVudFtzbG90XSA/PyBudWxsLFxuICAgICAgc2V0RWxlbWVudDogKHNsb3QsIGVsZW1lbnQpID0+IHtcbiAgICAgICAgcGFuZWxFbGVtZW50cy5jdXJyZW50W3Nsb3RdID0gZWxlbWVudDtcbiAgICAgIH0sXG4gICAgICBnZXRFbGVtZW50OiAoc2xvdCkgPT4gcGFuZWxFbGVtZW50cy5jdXJyZW50W3Nsb3RdID8/IG51bGwsXG4gICAgICBzZXRSZXNpemVTdXBwcmVzc2VkOiAoc2xvdCwgc3VwcHJlc3NlZCkgPT4ge1xuICAgICAgICByZXNpemVTdXBwcmVzc2VkLmN1cnJlbnRbc2xvdF0gPSBzdXBwcmVzc2VkO1xuICAgICAgfSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuICAvLyBTdGFibGUgcGVyLXNsb3QgcmVmIGNhbGxiYWNrcyAtIGEgZnJlc2ggY2FsbGJhY2sgaWRlbnRpdHkgcGVyIHJlbmRlciB3b3VsZFxuICAvLyBtYWtlIFJlYWN0IGRldGFjaC9yZWF0dGFjaCB0aGUgcmVmcyBvbiBldmVyeSBMYXlvdXQgcmUtcmVuZGVyLlxuICBjb25zdCBwYW5lbFJlZkNhbGxiYWNrcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNhbGxiYWNrcyA9IG5ldyBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICAoaGFuZGxlOiBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfCBudWxsKSA9PiB2b2lkXG4gICAgPigpO1xuICAgIGNvbnN0IGVsZW1lbnRDYWxsYmFja3MgPSBuZXcgTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgKGVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gdm9pZFxuICAgID4oKTtcbiAgICByZXR1cm4ge1xuICAgICAgaGFuZGxlRm9yOiAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSBoYW5kbGVDYWxsYmFja3MuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrID0gKGhhbmRsZSkgPT5cbiAgICAgICAgICAgIGFuaW1hdGlvbkNvbnRyb2wuc2V0SGFuZGxlKGlkIGFzIFNsb3RLZXksIGhhbmRsZSk7XG4gICAgICAgICAgaGFuZGxlQ2FsbGJhY2tzLnNldChpZCwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYWxsYmFjaztcbiAgICAgIH0sXG4gICAgICBlbGVtZW50Rm9yOiAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSBlbGVtZW50Q2FsbGJhY2tzLmdldChpZCk7XG4gICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayA9IChlbGVtZW50KSA9PlxuICAgICAgICAgICAgYW5pbWF0aW9uQ29udHJvbC5zZXRFbGVtZW50KGlkIGFzIFNsb3RLZXksIGVsZW1lbnQpO1xuICAgICAgICAgIGVsZW1lbnRDYWxsYmFja3Muc2V0KGlkLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrO1xuICAgICAgfSxcbiAgICB9O1xuICB9LCBbYW5pbWF0aW9uQ29udHJvbF0pO1xuICBjb25zdCBzaG91bGRTdXBwcmVzc0xheW91dENhbGxiYWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gT2JqZWN0LnZhbHVlcyhyZXNpemVTdXBwcmVzc2VkLmN1cnJlbnQpLnNvbWUoQm9vbGVhbiksXG4gICAgW11cbiAgKTtcblxuICBjb25zdCByZWdpc3RyeSA9IHVzZU1lbW88UGFuZWxSZWdpc3RyeT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIHJlZ2lzdGVyOiAoc2xvdCwgcmVnKSA9PlxuICAgICAgICBzZXREZWNsYXJlZCgocHJldikgPT4gKHsgLi4ucHJldiwgW3Nsb3RdOiByZWcgfSkpLFxuICAgICAgdW5yZWdpc3RlcjogKHNsb3QpID0+XG4gICAgICAgIHNldERlY2xhcmVkKChwcmV2KSA9PiB7XG4gICAgICAgICAgaWYgKCEoc2xvdCBpbiBwcmV2KSkgcmV0dXJuIHByZXY7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IHsgLi4ucHJldiB9O1xuICAgICAgICAgIGRlbGV0ZSBuZXh0W3Nsb3RdO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9KSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIGNvbnN0IHsgcG9ydGFsVGFyZ2V0cywgc2xvdEhvc3RzLCBzbG90SG9zdFJlZnMsIGZsb2F0SG9zdFJlZiB9ID1cbiAgICB1c2VGbG9hdGFibGVQb3J0YWxUYXJnZXRzKHtcbiAgICAgIHNsb3RzOiBQQU5FTF9PUkRFUixcbiAgICAgIGZsb2F0YWJsZVNsb3Q6IFNsb3QucmlnaHRQYW5lbCxcbiAgICAgIGlzRmxvYXRpbmc6IGlzUmlnaHRQYW5lbEZsb2F0aW5nLFxuICAgIH0pO1xuXG4gIHVzZUdsb2JhbENzc1ZhcmlhYmxlcyhzbG90SG9zdHMpO1xuXG4gIC8vIFBhbmVscyB0aGF0IGV4aXN0IGluIHRoZSBsYXlvdXQsIHJlZ2FyZGxlc3Mgb2YgdmlzaWJpbGl0eS4gRHJpdmVzIHRoZVxuICAvLyBzb2xvLXZzLXJlc2l6YWJsZSBkZWNpc2lvbiBiZWxvdyAtIGtleWVkIG9uIERFQ0xBUkVEIChub3Qgc2hvd24pIHNvIHRoYXRcbiAgLy8gc2hvd2luZy9oaWRpbmcgYSBwYW5lbCBuZXZlciBmbGlwcyB0aGUgbW9kZS5cbiAgY29uc3QgZGVjbGFyZWRTbG90cyA9IFBBTkVMX09SREVSLmZpbHRlcigoc2xvdCkgPT4gZGVjbGFyZWRbc2xvdF0pO1xuXG4gIC8vIFNvbG8gbW9kZTogYSBzaW5nbGUgcGFuZWwgaXMgZGVjbGFyZWQgKGUuZy4ganVzdCBgQ29udGVudGAsIHdpdGggbm9cbiAgLy8gUmlnaHRQYW5lbC9MZWZ0UGFuZWwvU3BsaXQgaW4gdGhlIHRyZWUpIC0gbm90aGluZyB0byByZXNpemUgYWdhaW5zdCwgc28gaG9zdFxuICAvLyBpdCBpbiBhIHBsYWluIGRpdiBhbmQgc2tpcCByZWFjdC1yZXNpemFibGUtcGFuZWxzIGVudGlyZWx5LiBCZWNhdXNlIHRoZVxuICAvLyBjaGVjayBpcyBvbiBERUNMQVJFRCBwYW5lbHMsIHRvZ2dsaW5nIGEgKmRlY2xhcmVkKiBwYW5lbCdzIHZpc2liaWxpdHkga2VlcHNcbiAgLy8gdGhlIG1vZGUgc3RhYmxlLCBzbyBgQ29udGVudGAgaXMgbmV2ZXIgcmVtb3VudGVkIGJ5IGEgc2hvdy9oaWRlLiBUaGUgbW9kZVxuICAvLyBvbmx5IGZsaXBzIHdoZW4gYSBwYW5lbCBtYXJrZXIgaXMgYWRkZWQgdG8gLyByZW1vdmVkIGZyb20gdGhlIHRyZWUgKGFcbiAgLy8gc3RydWN0dXJhbCBjaGFuZ2UpLCB3aGVyZSBhIG9uZS10aW1lIHJlbW91bnQgaXMgYWNjZXB0YWJsZS5cbiAgY29uc3QgaXNTb2xvID0gZGVjbGFyZWRTbG90cy5sZW5ndGggPD0gMTtcbiAgY29uc3Qgc29sb1Nsb3QgPSBkZWNsYXJlZFNsb3RzWzBdO1xuXG4gIC8vIGNvbnRlbnQgZmxleGVzIChubyBmaXhlZCBzaXplKTsgb3RoZXJzIHVzZSB0aGUgZGVjbGFyZWQgZGVmYXVsdCwgZmFsbGluZ1xuICAvLyBiYWNrIHRvIHRoZSBwZXJzaXN0ZWQvY29uZmlnIHNpemUuXG4gIGNvbnN0IGRlZmF1bHRTaXplRm9yID0gKHNsb3Q6IFNsb3RLZXkpOiBTaXplIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoc2xvdCA9PT0gU2xvdC5jb250ZW50KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBkZWNsYXJlZFtzbG90XT8uZGVmYXVsdFNpemUgPz8gbGF5b3V0U3RhdGVbc2xvdF0uc2l6ZTtcbiAgfTtcblxuICAvLyBPbmx5IHRoZSBwYW5lbHMgdGhhdCBhcmUgZGVjbGFyZWQgQU5EIChjdXJyZW50bHkgc2hvd24gT1IgbWlkLWV4aXQpLiBBXG4gIC8vIGhpZGRlbi1idXQtcHJlc2VudCBzbG90IGxpbmdlcnMgc28gaXRzIGNsb3NlIGFuaW1hdGlvbiBjYW4gcGxheTsgb3RoZXJ3aXNlXG4gIC8vIGNsb3NlZCBwYW5lbHMgcmVzZXJ2ZSBubyBzcGFjZS5cbiAgY29uc3QgcGFuZWxJdGVtczogUGFuZWxJdGVtW10gPSBQQU5FTF9PUkRFUi5maWx0ZXIoXG4gICAgKHNsb3QpID0+IGRlY2xhcmVkW3Nsb3RdICYmIChpc1Nob3duKHNsb3QpIHx8IHByZXNlbnRbc2xvdF0pXG4gICkubWFwKChzbG90KSA9PiAoe1xuICAgIGlkOiBzbG90LFxuICAgIGRlZmF1bHRTaXplOiBkZWZhdWx0U2l6ZUZvcihzbG90KSxcbiAgICBtaW5TaXplOiBkZWNsYXJlZFtzbG90XT8ubWluU2l6ZSA/PyBsYXlvdXRTdGF0ZVtzbG90XS5taW5TaXplLFxuICAgIG1heFNpemU6IGRlY2xhcmVkW3Nsb3RdPy5tYXhTaXplID8/IGxheW91dFN0YXRlW3Nsb3RdLm1heFNpemUsXG4gICAgY29sbGFwc2libGU6IHNsb3QgIT09IFNsb3QuY29udGVudCAmJiAoZGVjbGFyZWRbc2xvdF0/LmNvbGxhcHNpYmxlID8/IHRydWUpLFxuICB9KSk7XG5cbiAgLy8gU29sbyBtb2RlIGhvc3RzIHRoZSBsb25lIHBhbmVsIGluIGEgcGxhaW4gZGl2LCBubyByZXNpemFibGUgR3JvdXAuIEEgaGlkZGVuXG4gIC8vIGxvbmUgcGFuZWwgcmVuZGVycyBub3RoaW5nIChDb250ZW50IGlzIGFsd2F5cyBzaG93bikuXG4gIGNvbnN0IHNvbG9Ib3N0ID1cbiAgICBzb2xvU2xvdCAmJiBpc1Nob3duKHNvbG9TbG90KSA/IChcbiAgICAgIDxTdHlsZWRTb2xvSG9zdCByZWY9e3Nsb3RIb3N0UmVmc1tzb2xvU2xvdF19IC8+XG4gICAgKSA6IG51bGw7XG5cbiAgLy8gVGhlIHJlc2l6YWJsZSBHcm91cC4gYGtleWAgPSB0aGUgcGVyc2lzdGVuY2UgbmFtZXNwYWNlOiByZWFjdC1yZXNpemFibGUtcGFuZWxzXG4gIC8vIHJlYWRzIHN0b3JlZCBzaXplcyBvbmx5IG9uIG1vdW50LCBzbyByZW1vdW50IHdoZW4gdGhlIGtleSBjaGFuZ2VzIHRvIGxvYWRcbiAgLy8gdGhhdCBpbnN0YW5jZSdzIHNpemVzIChwZXItcm91dGUgc2l6ZSBtZW1vcnkpLiBUaGUga2V5IG5ldmVyIGNoYW5nZXMgb25cbiAgLy8gcGFuZWwgb3Blbi9jbG9zZSwgc28gbm9ybWFsIHRvZ2dsaW5nIHN0YXlzIHJlbW91bnQtZnJlZS5cbiAgY29uc3QgcGFuZWxHcm91cCA9XG4gICAgcGFuZWxJdGVtcy5sZW5ndGggPiAwID8gKFxuICAgICAgPFBhbmVsXG4gICAgICAgIGtleT17cmVzb2x2ZWRLZXl9XG4gICAgICAgIHBhbmVscz17cGFuZWxJdGVtc31cbiAgICAgICAgcGVyc2lzdGVuY2VLZXk9e3Jlc29sdmVkS2V5fVxuICAgICAgICBzdG9yYWdlPXtyZXNvbHZlZFN0b3JhZ2V9XG4gICAgICAgIGhvc3RGb3I9eyhpZCkgPT4gc2xvdEhvc3RSZWZzW2lkIGFzIFNsb3RLZXldfVxuICAgICAgICBvblJlc2l6ZT17KGlkLCBzaXplKSA9PiBwYW5lbENhbGxiYWNrc1tpZCBhcyBTbG90S2V5XS5yZXNpemUoc2l6ZSl9XG4gICAgICAgIG9uQ29sbGFwc2U9eyhpZCkgPT4gcGFuZWxDYWxsYmFja3NbaWQgYXMgU2xvdEtleV0uaGlkZSgpfVxuICAgICAgICBwYW5lbEhhbmRsZUZvcj17cGFuZWxSZWZDYWxsYmFja3MuaGFuZGxlRm9yfVxuICAgICAgICBwYW5lbEVsZW1lbnRGb3I9e3BhbmVsUmVmQ2FsbGJhY2tzLmVsZW1lbnRGb3J9XG4gICAgICAgIHNob3VsZFN1cHByZXNzTGF5b3V0Q2FsbGJhY2s9e3Nob3VsZFN1cHByZXNzTGF5b3V0Q2FsbGJhY2t9XG4gICAgICAvPlxuICAgICkgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsUmVnaXN0cnlDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtyZWdpc3RyeX0+XG4gICAgICA8UGFuZWxQcmVzZW5jZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ByZXNlbmNlfT5cbiAgICAgICAgPFBhbmVsQW5pbWF0aW9uQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17YW5pbWF0aW9uQ29udHJvbH0+XG4gICAgICAgICAgPExheW91dFBvcnRhbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3BvcnRhbFRhcmdldHN9PlxuICAgICAgICAgICAgPFN0eWxlZExheW91dCBkYXRhLWRzLWlkPVwiTGF5b3V0XCI+XG4gICAgICAgICAgICAgIHtpc1NvbG8gPyBzb2xvSG9zdCA6IHBhbmVsR3JvdXB9XG4gICAgICAgICAgICAgIHtpc1JpZ2h0UGFuZWxGbG9hdGluZyAmJiBsYXlvdXRTdGF0ZVtTbG90LnJpZ2h0UGFuZWxdLnZpc2libGUgJiYgKFxuICAgICAgICAgICAgICAgIDxMYXlvdXRGbG9hdCBob3N0UmVmPXtmbG9hdEhvc3RSZWZ9IC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgIDwvU3R5bGVkTGF5b3V0PlxuICAgICAgICAgIDwvTGF5b3V0UG9ydGFsQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgPC9QYW5lbEFuaW1hdGlvbkNvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L1BhbmVsUHJlc2VuY2VDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvUGFuZWxSZWdpc3RyeUNvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiBQdWJsaWMgTGF5b3V0IC0gdGhlIHJlc2l6YWJsZSBwYW5lbCByb3cgKyBjb21wb3VuZCBwYXJ0cyBhcyBzdGF0aWNzICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbnR5cGUgTGF5b3V0Q29tcG9uZW50ID0gdHlwZW9mIExheW91dEJhc2UgJiB7XG4gIFByb3ZpZGVyOiB0eXBlb2YgTGF5b3V0UHJvdmlkZXI7XG4gIExlZnRQYW5lbDogdHlwZW9mIExlZnRQYW5lbDtcbiAgTGVmdFBhbmVsSGVhZGVyOiB0eXBlb2YgTGVmdFBhbmVsSGVhZGVyO1xuICBMZWZ0UGFuZWxGb290ZXI6IHR5cGVvZiBMZWZ0UGFuZWxGb290ZXI7XG4gIFJpZ2h0UGFuZWw6IHR5cGVvZiBSaWdodFBhbmVsO1xuICBSaWdodFBhbmVsSGVhZGVyOiB0eXBlb2YgUmlnaHRQYW5lbEhlYWRlcjtcbiAgUmlnaHRQYW5lbEZvb3RlcjogdHlwZW9mIFJpZ2h0UGFuZWxGb290ZXI7XG4gIENvbnRlbnQ6IHR5cGVvZiBDb250ZW50O1xuICBTcGxpdDogdHlwZW9mIFNwbGl0O1xuICBTcGxpdEhlYWRlcjogdHlwZW9mIFNwbGl0SGVhZGVyO1xuICBTcGxpdEZvb3RlcjogdHlwZW9mIFNwbGl0Rm9vdGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IExheW91dCA9IExheW91dEJhc2UgYXMgTGF5b3V0Q29tcG9uZW50O1xuXG5MYXlvdXQuUHJvdmlkZXIgPSBMYXlvdXRQcm92aWRlcjtcbkxheW91dC5MZWZ0UGFuZWwgPSBMZWZ0UGFuZWw7XG5MYXlvdXQuTGVmdFBhbmVsSGVhZGVyID0gTGVmdFBhbmVsSGVhZGVyO1xuTGF5b3V0LkxlZnRQYW5lbEZvb3RlciA9IExlZnRQYW5lbEZvb3RlcjtcbkxheW91dC5SaWdodFBhbmVsID0gUmlnaHRQYW5lbDtcbkxheW91dC5SaWdodFBhbmVsSGVhZGVyID0gUmlnaHRQYW5lbEhlYWRlcjtcbkxheW91dC5SaWdodFBhbmVsRm9vdGVyID0gUmlnaHRQYW5lbEZvb3RlcjtcbkxheW91dC5Db250ZW50ID0gQ29udGVudDtcbkxheW91dC5TcGxpdCA9IFNwbGl0O1xuTGF5b3V0LlNwbGl0SGVhZGVyID0gU3BsaXRIZWFkZXI7XG5MYXlvdXQuU3BsaXRGb290ZXIgPSBTcGxpdEZvb3RlcjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtRnFCIn0= */"),StyledSoloHost=styled("div",{target:"e1exnax51",label:"StyledSoloHost"})({position:"relative",height:"100%",width:"100%"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L0xheW91dC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0xheW91dC9MYXlvdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHR5cGUgeyBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfSBmcm9tIFwicmVhY3QtcmVzaXphYmxlLXBhbmVsc1wiO1xuaW1wb3J0IHsgUGFuZWwgfSBmcm9tIFwiLi4vSW50ZXJuYWwvUGFuZWwvUGFuZWxcIjtcbmltcG9ydCB0eXBlIHsgUGFuZWxJdGVtIH0gZnJvbSBcIi4uL0ludGVybmFsL1BhbmVsL1BhbmVsXCI7XG5pbXBvcnQgeyBMYXlvdXRGbG9hdCB9IGZyb20gXCIuLi9JbnRlcm5hbC9MYXlvdXRGbG9hdC9MYXlvdXRGbG9hdFwiO1xuaW1wb3J0IHsgdXNlQnJlYWtwb2ludHMgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZUJyZWFrcG9pbnRzXCI7XG5pbXBvcnQgeyBQQU5FTF9PUkRFUiwgUEFORUxfV0lEVEhfVkFSLCBTbG90IH0gZnJvbSBcIi4vLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTGF5b3V0UGFuZWxzRW5hYmxlZCwgdXNlTGF5b3V0UGVyc2lzdGVuY2UgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBMYXlvdXRQcm92aWRlciB9IGZyb20gXCIuL0xheW91dFByb3ZpZGVyXCI7XG5pbXBvcnQgeyBDb250ZW50IH0gZnJvbSBcIi4vQ29udGVudC9Db250ZW50XCI7XG5pbXBvcnQgeyBSaWdodFBhbmVsIH0gZnJvbSBcIi4vUmlnaHRQYW5lbC9SaWdodFBhbmVsXCI7XG5pbXBvcnQgeyBSaWdodFBhbmVsSGVhZGVyIH0gZnJvbSBcIi4vUmlnaHRQYW5lbC9SaWdodFBhbmVsSGVhZGVyXCI7XG5pbXBvcnQgeyBSaWdodFBhbmVsRm9vdGVyIH0gZnJvbSBcIi4vUmlnaHRQYW5lbC9SaWdodFBhbmVsRm9vdGVyXCI7XG5pbXBvcnQgeyBMZWZ0UGFuZWwgfSBmcm9tIFwiLi9MZWZ0UGFuZWwvTGVmdFBhbmVsXCI7XG5pbXBvcnQgeyBMZWZ0UGFuZWxIZWFkZXIgfSBmcm9tIFwiLi9MZWZ0UGFuZWwvTGVmdFBhbmVsSGVhZGVyXCI7XG5pbXBvcnQgeyBMZWZ0UGFuZWxGb290ZXIgfSBmcm9tIFwiLi9MZWZ0UGFuZWwvTGVmdFBhbmVsRm9vdGVyXCI7XG5pbXBvcnQgeyBTcGxpdCB9IGZyb20gXCIuL1NwbGl0L1NwbGl0XCI7XG5pbXBvcnQgeyBTcGxpdEhlYWRlciB9IGZyb20gXCIuL1NwbGl0L1NwbGl0SGVhZGVyXCI7XG5pbXBvcnQgeyBTcGxpdEZvb3RlciB9IGZyb20gXCIuL1NwbGl0L1NwbGl0Rm9vdGVyXCI7XG5pbXBvcnQge1xuICBMYXlvdXRQb3J0YWxDb250ZXh0LFxuICBQYW5lbFJlZ2lzdHJ5Q29udGV4dCxcbiAgUGFuZWxQcmVzZW5jZUNvbnRleHQsXG4gIFBhbmVsQW5pbWF0aW9uQ29udGV4dCxcbiAgdHlwZSBQb3J0YWxUYXJnZXRzLFxuICB0eXBlIFBhbmVsUmVnLFxuICB0eXBlIFBhbmVsUmVnaXN0cnksXG4gIHR5cGUgUGFuZWxQcmVzZW5jZSxcbiAgdHlwZSBQYW5lbEFuaW1hdGlvbkNvbnRyb2wsXG59IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgeyB1c2VGbG9hdGFibGVQb3J0YWxUYXJnZXRzIH0gZnJvbSBcIi4vdXNlRmxvYXRhYmxlUG9ydGFsVGFyZ2V0c1wiO1xuaW1wb3J0IHsgdXNlTGF5b3V0VmFyLCB0eXBlIExheW91dFZhckhhbmRsZSB9IGZyb20gXCIuL0xheW91dENzc1ZhcnNcIjtcbmltcG9ydCB7IHVzZUxheW91dCB9IGZyb20gXCIuL3VzZUxheW91dFwiO1xuaW1wb3J0IHR5cGUgeyBMYXlvdXRQcm9wcywgU2l6ZSwgU2xvdEtleSB9IGZyb20gXCIuLy10eXBlc1wiO1xuXG4vKipcbiAqIFB1Ymxpc2hlcyBlYWNoIHBhbmVsJ3MgbGl2ZSBwaXhlbCB3aWR0aCBhcyBhIGxheW91dCBDU1MgdmFyIChlLmcuXG4gKiBgLS1kcy1sYXlvdXQtcmlnaHRQYW5lbC13aWR0aGApLCB0cmFja2luZyBkcmFnLSBhbmQgd2luZG93LXJlc2l6ZXMuIEEgaGlkZGVuXG4gKiBwYXJ0IChubyBob3N0IG5vZGUpIHJlYWRzIGAwcHhgLCBzbyB0aGUgdmFyIGlzIGFsd2F5cyBkZWZpbmVkLiBPbmVcbiAqIGB1c2VMYXlvdXRWYXJgIHBlciBzbG90IGluIGBQQU5FTF9XSURUSF9WQVJgLlxuICovXG5jb25zdCB1c2VHbG9iYWxDc3NWYXJpYWJsZXMgPSAoc2xvdEhvc3RzOiBQb3J0YWxUYXJnZXRzKTogdm9pZCA9PiB7XG4gIGNvbnN0IGNvbnRlbnRXaWR0aENzc1ZhciA9IHVzZUxheW91dFZhcihQQU5FTF9XSURUSF9WQVIuY29udGVudCk7XG4gIGNvbnN0IHJpZ2h0UGFuZWxXaWR0aENzc1ZhciA9IHVzZUxheW91dFZhcihQQU5FTF9XSURUSF9WQVIucmlnaHRQYW5lbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB0YXJnZXRzOiBbU2xvdEtleSwgTGF5b3V0VmFySGFuZGxlXVtdID0gW1xuICAgICAgW1Nsb3QuY29udGVudCwgY29udGVudFdpZHRoQ3NzVmFyXSxcbiAgICAgIFtTbG90LnJpZ2h0UGFuZWwsIHJpZ2h0UGFuZWxXaWR0aENzc1Zhcl0sXG4gICAgXTtcbiAgICBjb25zdCBvYnNlcnZlcnM6IFJlc2l6ZU9ic2VydmVyW10gPSBbXTtcblxuICAgIHRhcmdldHMuZm9yRWFjaCgoW3Nsb3QsIGhhbmRsZV0pID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBzbG90SG9zdHNbc2xvdF0gPz8gbnVsbDtcbiAgICAgIGlmICghbm9kZSkge1xuICAgICAgICBoYW5kbGUuc2V0KFwiMHB4XCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBwdWJsaXNoTm9kZVdpZHRoID0gKCk6IHZvaWQgPT5cbiAgICAgICAgaGFuZGxlLnNldChgJHtub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofXB4YCk7XG4gICAgICBwdWJsaXNoTm9kZVdpZHRoKCk7XG4gICAgICAvLyBqc2RvbSAoYW5kIG9sZCBicm93c2VycykgbGFjayBSZXNpemVPYnNlcnZlciDigJQgc2tpcCBsaXZlIHRyYWNraW5nIHRoZXJlLlxuICAgICAgaWYgKHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIocHVibGlzaE5vZGVXaWR0aCk7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKG5vZGUpO1xuICAgICAgb2JzZXJ2ZXJzLnB1c2gob2JzZXJ2ZXIpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVycy5mb3JFYWNoKChvYnNlcnZlcikgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpKTtcbiAgfSwgW2NvbnRlbnRXaWR0aENzc1ZhciwgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyLCBzbG90SG9zdHNdKTtcbn07XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiBMYXlvdXQgLSByZWdpc3RyeSArIGhvc3RzOyBtYXJrZXJzIGRlY2xhcmUvcG9ydGFsOyB0aGUgcmVzaXphYmxlIHBhbmVsIHJvdyAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5jb25zdCBTdHlsZWRMYXlvdXQgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbi8vIFNvbG8tbW9kZSBob3N0OiBhIGxvbmUgcGFuZWwgKG5vIHJlc2l6YWJsZSBzaWJsaW5nKSBpcyBob3N0ZWQgaGVyZSBpbnN0ZWFkIG9mXG4vLyBpbnNpZGUgcmVhY3QtcmVzaXphYmxlLXBhbmVscy4gTWF0Y2hlcyB0aGUgcGVyLXBhbmVsIGhvc3QgdGhlIEdyb3VwIHJlbmRlcnNcbi8vIChgcmVsYXRpdmVgICsgZnVsbC1ibGVlZCkgc28gY29udGVudCByZWZsb3dzL3Njcm9sbHMgaWRlbnRpY2FsbHkgZWl0aGVyIHdheS5cbmNvbnN0IFN0eWxlZFNvbG9Ib3N0ID0gc3R5bGVkLmRpdih7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbn0pO1xuXG5mdW5jdGlvbiBMYXlvdXRCYXNlKHtcbiAgY2hpbGRyZW4sXG4gIHBlcnNpc3RlbmNlS2V5LFxuICBzdG9yYWdlLFxufTogTGF5b3V0UHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBbZGVjbGFyZWQsIHNldERlY2xhcmVkXSA9IHVzZVN0YXRlPFBhcnRpYWw8UmVjb3JkPFNsb3RLZXksIFBhbmVsUmVnPj4+KFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IHsgc3RhdGU6IGxheW91dFN0YXRlLCAuLi5wYW5lbENhbGxiYWNrcyB9ID0gdXNlTGF5b3V0KCk7XG4gIGNvbnN0IHBlcnNpc3RlbmNlID0gdXNlTGF5b3V0UGVyc2lzdGVuY2UoKTtcbiAgY29uc3QgcmVzb2x2ZWRLZXkgPSBwZXJzaXN0ZW5jZUtleSA/PyBwZXJzaXN0ZW5jZS5wZXJzaXN0ZW5jZUtleTtcbiAgY29uc3QgcmVzb2x2ZWRTdG9yYWdlID0gc3RvcmFnZSA/PyBwZXJzaXN0ZW5jZS5zdG9yYWdlO1xuXG4gIC8vIEJlbG93IHRoZSBtb2JpbGUgYnJlYWtwb2ludCB0aGUgcmlnaHRQYW5lbCByZW5kZXJzIGFzIGEgYm90dG9tIHNoZWV0IChpdHNcbiAgLy8gbWFya2VyIHJlbmRlcnMgdGhlIFNoZWV0IGl0c2VsZikgLSBhbiBhdXRvbWF0aWMsIHJlbmRlci1sZXZlbCBhZGFwdGF0aW9uLlxuICAvLyBUaGUgc3RvcmVkIHZhcmlhbnQgaXMgdW50b3VjaGVkLCBzbyByZXNpemluZyBiYWNrIHRvIGRlc2t0b3AgcmVzdG9yZXMgdGhlXG4gIC8vIGV4YWN0IHByZXNlbnRhdGlvbiAoZG9ja2VkIG9yIGZsb2F0aW5nKSB0aGUgdXNlciBsZWZ0LlxuICBjb25zdCB7IGlzTW9iaWxlIH0gPSB1c2VCcmVha3BvaW50cygpO1xuICBjb25zdCBpc1JpZ2h0UGFuZWxTaGVldCA9IGlzTW9iaWxlO1xuXG4gIC8vIEEgZmxvYXRpbmcgcmlnaHRQYW5lbCBzdGF5cyB2aXNpYmxlIChpdHMgbWFya2VyIGtlZXBzIHJlbmRlcmluZyBjb250ZW50KVxuICAvLyBidXQgbGVhdmVzIHRoZSByZXNpemFibGUgcm93IC0gZXhhY3RseSBsaWtlIGEgaGlkZGVuIHBhbmVsIGRvZXMuIFRoZVxuICAvLyBtb2JpbGUgc2hlZXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBmbG9hdGluZyB3aW5kb3cuIEZsb2F0IGlzIGFcbiAgLy8gZGVza3RvcCBwcmVzZW50YXRpb24sIHNvIG9ubHkgbW9kZSBgdHJ1ZWAgZW5hYmxlcyBpdC5cbiAgY29uc3QgcGFuZWxzRW5hYmxlZCA9IHVzZUxheW91dFBhbmVsc0VuYWJsZWQoKTtcbiAgY29uc3QgaXNSaWdodFBhbmVsRmxvYXRpbmcgPVxuICAgIHBhbmVsc0VuYWJsZWQgPT09IHRydWUgJiZcbiAgICAhaXNSaWdodFBhbmVsU2hlZXQgJiZcbiAgICBsYXlvdXRTdGF0ZVtTbG90LnJpZ2h0UGFuZWxdLnZhcmlhbnQgPT09IFwiZmxvYXRcIjtcblxuICBjb25zdCBpc1Nob3duID0gKHNsb3Q6IFNsb3RLZXkpOiBib29sZWFuID0+XG4gICAgbGF5b3V0U3RhdGVbc2xvdF0udmlzaWJsZSAmJlxuICAgICEoc2xvdCA9PT0gU2xvdC5yaWdodFBhbmVsICYmIChpc1JpZ2h0UGFuZWxGbG9hdGluZyB8fCBpc1JpZ2h0UGFuZWxTaGVldCkpO1xuXG4gIC8vIFNsb3RzIGtlcHQgbW91bnRlZCB0aHJvdWdoIHRoZWlyIGV4aXQgYW5pbWF0aW9uIChyZXBvcnRlZCB2aWFcbiAgLy8gYHVzZVBhbmVsUHJlc2VuY2VgKS4gQSBwcmVzZW50LWJ1dC1oaWRkZW4gc2xvdCBzdGF5cyBpbiB0aGUgcm93IHNvIGl0c1xuICAvLyBjbG9zZSBhbmltYXRpb24gY2FuIHBsYXk7IGl0J3MgcmVtb3ZlZCBvbmNlIHByZXNlbmNlIGZsaXBzIGZhbHNlLlxuICBjb25zdCBbcHJlc2VudCwgc2V0UHJlc2VudF0gPSB1c2VTdGF0ZTxQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBib29sZWFuPj4+KHt9KTtcbiAgY29uc3QgcHJlc2VuY2UgPSB1c2VNZW1vPFBhbmVsUHJlc2VuY2U+KFxuICAgICgpID0+ICh7XG4gICAgICBzZXRQcmVzZW50OiAoc2xvdCwgaXNQcmVzZW50KSA9PlxuICAgICAgICBzZXRQcmVzZW50KChwcmV2KSA9PlxuICAgICAgICAgIHByZXZbc2xvdF0gPT09IGlzUHJlc2VudCA/IHByZXYgOiB7IC4uLnByZXYsIFtzbG90XTogaXNQcmVzZW50IH1cbiAgICAgICAgKSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIC8vIEFuaW1hdGlvbiBjb250cm9sIGZvciB0aGUgZG9ja2VkIHNpZGUgcGFuZWxzJyBvcGVuL2Nsb3NlIHdpZHRoIHNsaWRlLiBBbGxcbiAgLy8gcmVmLWJhc2VkIG9uIHB1cnBvc2U6IHJlZ2lzdGVyaW5nIGhhbmRsZXMvZWxlbWVudHMgYW5kIHRvZ2dsaW5nIHN1cHByZXNzaW9uXG4gIC8vIGhhcHBlbiBkdXJpbmcgY29tbWl0cyBhbmQgcGVyLWZyYW1lIC0gbm9uZSBvZiBpdCBtYXkgcmUtcmVuZGVyIHRoZSBMYXlvdXQuXG4gIGNvbnN0IHBhbmVsSGFuZGxlcyA9IHVzZVJlZjxcbiAgICBQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfCBudWxsPj5cbiAgPih7fSk7XG4gIGNvbnN0IHBhbmVsRWxlbWVudHMgPSB1c2VSZWY8UGFydGlhbDxSZWNvcmQ8U2xvdEtleSwgSFRNTEVsZW1lbnQgfCBudWxsPj4+KFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IHJlc2l6ZVN1cHByZXNzZWQgPSB1c2VSZWY8UGFydGlhbDxSZWNvcmQ8U2xvdEtleSwgYm9vbGVhbj4+Pih7fSk7XG4gIGNvbnN0IGFuaW1hdGlvbkNvbnRyb2wgPSB1c2VNZW1vPFBhbmVsQW5pbWF0aW9uQ29udHJvbD4oXG4gICAgKCkgPT4gKHtcbiAgICAgIHNldEhhbmRsZTogKHNsb3QsIGhhbmRsZSkgPT4ge1xuICAgICAgICBwYW5lbEhhbmRsZXMuY3VycmVudFtzbG90XSA9IGhhbmRsZTtcbiAgICAgIH0sXG4gICAgICBnZXRIYW5kbGU6IChzbG90KSA9PiBwYW5lbEhhbmRsZXMuY3VycmVudFtzbG90XSA/PyBudWxsLFxuICAgICAgc2V0RWxlbWVudDogKHNsb3QsIGVsZW1lbnQpID0+IHtcbiAgICAgICAgcGFuZWxFbGVtZW50cy5jdXJyZW50W3Nsb3RdID0gZWxlbWVudDtcbiAgICAgIH0sXG4gICAgICBnZXRFbGVtZW50OiAoc2xvdCkgPT4gcGFuZWxFbGVtZW50cy5jdXJyZW50W3Nsb3RdID8/IG51bGwsXG4gICAgICBzZXRSZXNpemVTdXBwcmVzc2VkOiAoc2xvdCwgc3VwcHJlc3NlZCkgPT4ge1xuICAgICAgICByZXNpemVTdXBwcmVzc2VkLmN1cnJlbnRbc2xvdF0gPSBzdXBwcmVzc2VkO1xuICAgICAgfSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuICAvLyBTdGFibGUgcGVyLXNsb3QgcmVmIGNhbGxiYWNrcyAtIGEgZnJlc2ggY2FsbGJhY2sgaWRlbnRpdHkgcGVyIHJlbmRlciB3b3VsZFxuICAvLyBtYWtlIFJlYWN0IGRldGFjaC9yZWF0dGFjaCB0aGUgcmVmcyBvbiBldmVyeSBMYXlvdXQgcmUtcmVuZGVyLlxuICBjb25zdCBwYW5lbFJlZkNhbGxiYWNrcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNhbGxiYWNrcyA9IG5ldyBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICAoaGFuZGxlOiBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfCBudWxsKSA9PiB2b2lkXG4gICAgPigpO1xuICAgIGNvbnN0IGVsZW1lbnRDYWxsYmFja3MgPSBuZXcgTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgKGVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gdm9pZFxuICAgID4oKTtcbiAgICByZXR1cm4ge1xuICAgICAgaGFuZGxlRm9yOiAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSBoYW5kbGVDYWxsYmFja3MuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrID0gKGhhbmRsZSkgPT5cbiAgICAgICAgICAgIGFuaW1hdGlvbkNvbnRyb2wuc2V0SGFuZGxlKGlkIGFzIFNsb3RLZXksIGhhbmRsZSk7XG4gICAgICAgICAgaGFuZGxlQ2FsbGJhY2tzLnNldChpZCwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYWxsYmFjaztcbiAgICAgIH0sXG4gICAgICBlbGVtZW50Rm9yOiAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSBlbGVtZW50Q2FsbGJhY2tzLmdldChpZCk7XG4gICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayA9IChlbGVtZW50KSA9PlxuICAgICAgICAgICAgYW5pbWF0aW9uQ29udHJvbC5zZXRFbGVtZW50KGlkIGFzIFNsb3RLZXksIGVsZW1lbnQpO1xuICAgICAgICAgIGVsZW1lbnRDYWxsYmFja3Muc2V0KGlkLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrO1xuICAgICAgfSxcbiAgICB9O1xuICB9LCBbYW5pbWF0aW9uQ29udHJvbF0pO1xuICBjb25zdCBzaG91bGRTdXBwcmVzc0xheW91dENhbGxiYWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gT2JqZWN0LnZhbHVlcyhyZXNpemVTdXBwcmVzc2VkLmN1cnJlbnQpLnNvbWUoQm9vbGVhbiksXG4gICAgW11cbiAgKTtcblxuICBjb25zdCByZWdpc3RyeSA9IHVzZU1lbW88UGFuZWxSZWdpc3RyeT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIHJlZ2lzdGVyOiAoc2xvdCwgcmVnKSA9PlxuICAgICAgICBzZXREZWNsYXJlZCgocHJldikgPT4gKHsgLi4ucHJldiwgW3Nsb3RdOiByZWcgfSkpLFxuICAgICAgdW5yZWdpc3RlcjogKHNsb3QpID0+XG4gICAgICAgIHNldERlY2xhcmVkKChwcmV2KSA9PiB7XG4gICAgICAgICAgaWYgKCEoc2xvdCBpbiBwcmV2KSkgcmV0dXJuIHByZXY7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IHsgLi4ucHJldiB9O1xuICAgICAgICAgIGRlbGV0ZSBuZXh0W3Nsb3RdO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9KSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIGNvbnN0IHsgcG9ydGFsVGFyZ2V0cywgc2xvdEhvc3RzLCBzbG90SG9zdFJlZnMsIGZsb2F0SG9zdFJlZiB9ID1cbiAgICB1c2VGbG9hdGFibGVQb3J0YWxUYXJnZXRzKHtcbiAgICAgIHNsb3RzOiBQQU5FTF9PUkRFUixcbiAgICAgIGZsb2F0YWJsZVNsb3Q6IFNsb3QucmlnaHRQYW5lbCxcbiAgICAgIGlzRmxvYXRpbmc6IGlzUmlnaHRQYW5lbEZsb2F0aW5nLFxuICAgIH0pO1xuXG4gIHVzZUdsb2JhbENzc1ZhcmlhYmxlcyhzbG90SG9zdHMpO1xuXG4gIC8vIFBhbmVscyB0aGF0IGV4aXN0IGluIHRoZSBsYXlvdXQsIHJlZ2FyZGxlc3Mgb2YgdmlzaWJpbGl0eS4gRHJpdmVzIHRoZVxuICAvLyBzb2xvLXZzLXJlc2l6YWJsZSBkZWNpc2lvbiBiZWxvdyAtIGtleWVkIG9uIERFQ0xBUkVEIChub3Qgc2hvd24pIHNvIHRoYXRcbiAgLy8gc2hvd2luZy9oaWRpbmcgYSBwYW5lbCBuZXZlciBmbGlwcyB0aGUgbW9kZS5cbiAgY29uc3QgZGVjbGFyZWRTbG90cyA9IFBBTkVMX09SREVSLmZpbHRlcigoc2xvdCkgPT4gZGVjbGFyZWRbc2xvdF0pO1xuXG4gIC8vIFNvbG8gbW9kZTogYSBzaW5nbGUgcGFuZWwgaXMgZGVjbGFyZWQgKGUuZy4ganVzdCBgQ29udGVudGAsIHdpdGggbm9cbiAgLy8gUmlnaHRQYW5lbC9MZWZ0UGFuZWwvU3BsaXQgaW4gdGhlIHRyZWUpIC0gbm90aGluZyB0byByZXNpemUgYWdhaW5zdCwgc28gaG9zdFxuICAvLyBpdCBpbiBhIHBsYWluIGRpdiBhbmQgc2tpcCByZWFjdC1yZXNpemFibGUtcGFuZWxzIGVudGlyZWx5LiBCZWNhdXNlIHRoZVxuICAvLyBjaGVjayBpcyBvbiBERUNMQVJFRCBwYW5lbHMsIHRvZ2dsaW5nIGEgKmRlY2xhcmVkKiBwYW5lbCdzIHZpc2liaWxpdHkga2VlcHNcbiAgLy8gdGhlIG1vZGUgc3RhYmxlLCBzbyBgQ29udGVudGAgaXMgbmV2ZXIgcmVtb3VudGVkIGJ5IGEgc2hvdy9oaWRlLiBUaGUgbW9kZVxuICAvLyBvbmx5IGZsaXBzIHdoZW4gYSBwYW5lbCBtYXJrZXIgaXMgYWRkZWQgdG8gLyByZW1vdmVkIGZyb20gdGhlIHRyZWUgKGFcbiAgLy8gc3RydWN0dXJhbCBjaGFuZ2UpLCB3aGVyZSBhIG9uZS10aW1lIHJlbW91bnQgaXMgYWNjZXB0YWJsZS5cbiAgY29uc3QgaXNTb2xvID0gZGVjbGFyZWRTbG90cy5sZW5ndGggPD0gMTtcbiAgY29uc3Qgc29sb1Nsb3QgPSBkZWNsYXJlZFNsb3RzWzBdO1xuXG4gIC8vIGNvbnRlbnQgZmxleGVzIChubyBmaXhlZCBzaXplKTsgb3RoZXJzIHVzZSB0aGUgZGVjbGFyZWQgZGVmYXVsdCwgZmFsbGluZ1xuICAvLyBiYWNrIHRvIHRoZSBwZXJzaXN0ZWQvY29uZmlnIHNpemUuXG4gIGNvbnN0IGRlZmF1bHRTaXplRm9yID0gKHNsb3Q6IFNsb3RLZXkpOiBTaXplIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoc2xvdCA9PT0gU2xvdC5jb250ZW50KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBkZWNsYXJlZFtzbG90XT8uZGVmYXVsdFNpemUgPz8gbGF5b3V0U3RhdGVbc2xvdF0uc2l6ZTtcbiAgfTtcblxuICAvLyBPbmx5IHRoZSBwYW5lbHMgdGhhdCBhcmUgZGVjbGFyZWQgQU5EIChjdXJyZW50bHkgc2hvd24gT1IgbWlkLWV4aXQpLiBBXG4gIC8vIGhpZGRlbi1idXQtcHJlc2VudCBzbG90IGxpbmdlcnMgc28gaXRzIGNsb3NlIGFuaW1hdGlvbiBjYW4gcGxheTsgb3RoZXJ3aXNlXG4gIC8vIGNsb3NlZCBwYW5lbHMgcmVzZXJ2ZSBubyBzcGFjZS5cbiAgY29uc3QgcGFuZWxJdGVtczogUGFuZWxJdGVtW10gPSBQQU5FTF9PUkRFUi5maWx0ZXIoXG4gICAgKHNsb3QpID0+IGRlY2xhcmVkW3Nsb3RdICYmIChpc1Nob3duKHNsb3QpIHx8IHByZXNlbnRbc2xvdF0pXG4gICkubWFwKChzbG90KSA9PiAoe1xuICAgIGlkOiBzbG90LFxuICAgIGRlZmF1bHRTaXplOiBkZWZhdWx0U2l6ZUZvcihzbG90KSxcbiAgICBtaW5TaXplOiBkZWNsYXJlZFtzbG90XT8ubWluU2l6ZSA/PyBsYXlvdXRTdGF0ZVtzbG90XS5taW5TaXplLFxuICAgIG1heFNpemU6IGRlY2xhcmVkW3Nsb3RdPy5tYXhTaXplID8/IGxheW91dFN0YXRlW3Nsb3RdLm1heFNpemUsXG4gICAgY29sbGFwc2libGU6IHNsb3QgIT09IFNsb3QuY29udGVudCAmJiAoZGVjbGFyZWRbc2xvdF0/LmNvbGxhcHNpYmxlID8/IHRydWUpLFxuICB9KSk7XG5cbiAgLy8gU29sbyBtb2RlIGhvc3RzIHRoZSBsb25lIHBhbmVsIGluIGEgcGxhaW4gZGl2LCBubyByZXNpemFibGUgR3JvdXAuIEEgaGlkZGVuXG4gIC8vIGxvbmUgcGFuZWwgcmVuZGVycyBub3RoaW5nIChDb250ZW50IGlzIGFsd2F5cyBzaG93bikuXG4gIGNvbnN0IHNvbG9Ib3N0ID1cbiAgICBzb2xvU2xvdCAmJiBpc1Nob3duKHNvbG9TbG90KSA/IChcbiAgICAgIDxTdHlsZWRTb2xvSG9zdCByZWY9e3Nsb3RIb3N0UmVmc1tzb2xvU2xvdF19IC8+XG4gICAgKSA6IG51bGw7XG5cbiAgLy8gVGhlIHJlc2l6YWJsZSBHcm91cC4gYGtleWAgPSB0aGUgcGVyc2lzdGVuY2UgbmFtZXNwYWNlOiByZWFjdC1yZXNpemFibGUtcGFuZWxzXG4gIC8vIHJlYWRzIHN0b3JlZCBzaXplcyBvbmx5IG9uIG1vdW50LCBzbyByZW1vdW50IHdoZW4gdGhlIGtleSBjaGFuZ2VzIHRvIGxvYWRcbiAgLy8gdGhhdCBpbnN0YW5jZSdzIHNpemVzIChwZXItcm91dGUgc2l6ZSBtZW1vcnkpLiBUaGUga2V5IG5ldmVyIGNoYW5nZXMgb25cbiAgLy8gcGFuZWwgb3Blbi9jbG9zZSwgc28gbm9ybWFsIHRvZ2dsaW5nIHN0YXlzIHJlbW91bnQtZnJlZS5cbiAgY29uc3QgcGFuZWxHcm91cCA9XG4gICAgcGFuZWxJdGVtcy5sZW5ndGggPiAwID8gKFxuICAgICAgPFBhbmVsXG4gICAgICAgIGtleT17cmVzb2x2ZWRLZXl9XG4gICAgICAgIHBhbmVscz17cGFuZWxJdGVtc31cbiAgICAgICAgcGVyc2lzdGVuY2VLZXk9e3Jlc29sdmVkS2V5fVxuICAgICAgICBzdG9yYWdlPXtyZXNvbHZlZFN0b3JhZ2V9XG4gICAgICAgIGhvc3RGb3I9eyhpZCkgPT4gc2xvdEhvc3RSZWZzW2lkIGFzIFNsb3RLZXldfVxuICAgICAgICBvblJlc2l6ZT17KGlkLCBzaXplKSA9PiBwYW5lbENhbGxiYWNrc1tpZCBhcyBTbG90S2V5XS5yZXNpemUoc2l6ZSl9XG4gICAgICAgIG9uQ29sbGFwc2U9eyhpZCkgPT4gcGFuZWxDYWxsYmFja3NbaWQgYXMgU2xvdEtleV0uaGlkZSgpfVxuICAgICAgICBwYW5lbEhhbmRsZUZvcj17cGFuZWxSZWZDYWxsYmFja3MuaGFuZGxlRm9yfVxuICAgICAgICBwYW5lbEVsZW1lbnRGb3I9e3BhbmVsUmVmQ2FsbGJhY2tzLmVsZW1lbnRGb3J9XG4gICAgICAgIHNob3VsZFN1cHByZXNzTGF5b3V0Q2FsbGJhY2s9e3Nob3VsZFN1cHByZXNzTGF5b3V0Q2FsbGJhY2t9XG4gICAgICAvPlxuICAgICkgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsUmVnaXN0cnlDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtyZWdpc3RyeX0+XG4gICAgICA8UGFuZWxQcmVzZW5jZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ByZXNlbmNlfT5cbiAgICAgICAgPFBhbmVsQW5pbWF0aW9uQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17YW5pbWF0aW9uQ29udHJvbH0+XG4gICAgICAgICAgPExheW91dFBvcnRhbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3BvcnRhbFRhcmdldHN9PlxuICAgICAgICAgICAgPFN0eWxlZExheW91dCBkYXRhLWRzLWlkPVwiTGF5b3V0XCI+XG4gICAgICAgICAgICAgIHtpc1NvbG8gPyBzb2xvSG9zdCA6IHBhbmVsR3JvdXB9XG4gICAgICAgICAgICAgIHtpc1JpZ2h0UGFuZWxGbG9hdGluZyAmJiBsYXlvdXRTdGF0ZVtTbG90LnJpZ2h0UGFuZWxdLnZpc2libGUgJiYgKFxuICAgICAgICAgICAgICAgIDxMYXlvdXRGbG9hdCBob3N0UmVmPXtmbG9hdEhvc3RSZWZ9IC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgIDwvU3R5bGVkTGF5b3V0PlxuICAgICAgICAgIDwvTGF5b3V0UG9ydGFsQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgPC9QYW5lbEFuaW1hdGlvbkNvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L1BhbmVsUHJlc2VuY2VDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvUGFuZWxSZWdpc3RyeUNvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiBQdWJsaWMgTGF5b3V0IC0gdGhlIHJlc2l6YWJsZSBwYW5lbCByb3cgKyBjb21wb3VuZCBwYXJ0cyBhcyBzdGF0aWNzICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbnR5cGUgTGF5b3V0Q29tcG9uZW50ID0gdHlwZW9mIExheW91dEJhc2UgJiB7XG4gIFByb3ZpZGVyOiB0eXBlb2YgTGF5b3V0UHJvdmlkZXI7XG4gIExlZnRQYW5lbDogdHlwZW9mIExlZnRQYW5lbDtcbiAgTGVmdFBhbmVsSGVhZGVyOiB0eXBlb2YgTGVmdFBhbmVsSGVhZGVyO1xuICBMZWZ0UGFuZWxGb290ZXI6IHR5cGVvZiBMZWZ0UGFuZWxGb290ZXI7XG4gIFJpZ2h0UGFuZWw6IHR5cGVvZiBSaWdodFBhbmVsO1xuICBSaWdodFBhbmVsSGVhZGVyOiB0eXBlb2YgUmlnaHRQYW5lbEhlYWRlcjtcbiAgUmlnaHRQYW5lbEZvb3RlcjogdHlwZW9mIFJpZ2h0UGFuZWxGb290ZXI7XG4gIENvbnRlbnQ6IHR5cGVvZiBDb250ZW50O1xuICBTcGxpdDogdHlwZW9mIFNwbGl0O1xuICBTcGxpdEhlYWRlcjogdHlwZW9mIFNwbGl0SGVhZGVyO1xuICBTcGxpdEZvb3RlcjogdHlwZW9mIFNwbGl0Rm9vdGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IExheW91dCA9IExheW91dEJhc2UgYXMgTGF5b3V0Q29tcG9uZW50O1xuXG5MYXlvdXQuUHJvdmlkZXIgPSBMYXlvdXRQcm92aWRlcjtcbkxheW91dC5MZWZ0UGFuZWwgPSBMZWZ0UGFuZWw7XG5MYXlvdXQuTGVmdFBhbmVsSGVhZGVyID0gTGVmdFBhbmVsSGVhZGVyO1xuTGF5b3V0LkxlZnRQYW5lbEZvb3RlciA9IExlZnRQYW5lbEZvb3RlcjtcbkxheW91dC5SaWdodFBhbmVsID0gUmlnaHRQYW5lbDtcbkxheW91dC5SaWdodFBhbmVsSGVhZGVyID0gUmlnaHRQYW5lbEhlYWRlcjtcbkxheW91dC5SaWdodFBhbmVsRm9vdGVyID0gUmlnaHRQYW5lbEZvb3RlcjtcbkxheW91dC5Db250ZW50ID0gQ29udGVudDtcbkxheW91dC5TcGxpdCA9IFNwbGl0O1xuTGF5b3V0LlNwbGl0SGVhZGVyID0gU3BsaXRIZWFkZXI7XG5MYXlvdXQuU3BsaXRGb290ZXIgPSBTcGxpdEZvb3RlcjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE0RnVCIn0= */");export const Layout=function({children,persistenceKey,storage}){let[declared,setDeclared]=useState({}),{state:layoutState,...panelCallbacks}=useLayout(),persistence=useLayoutPersistence(),resolvedKey=persistenceKey??persistence.persistenceKey,resolvedStorage=storage??persistence.storage,{isMobile}=useBreakpoints(),isRightPanelFloating=!0===useLayoutPanelsEnabled()&&!isMobile&&"float"===layoutState[Slot.rightPanel].variant,isShown=slot=>layoutState[slot].visible&&!(slot===Slot.rightPanel&&(isRightPanelFloating||isMobile)),[present,setPresent]=useState({}),presence=useMemo(()=>({setPresent:(slot,isPresent)=>setPresent(prev=>prev[slot]===isPresent?prev:{...prev,[slot]:isPresent})}),[]),panelHandles=useRef({}),panelElements=useRef({}),resizeSuppressed=useRef({}),animationControl=useMemo(()=>({setHandle:(slot,handle)=>{panelHandles.current[slot]=handle},getHandle:slot=>panelHandles.current[slot]??null,setElement:(slot,element)=>{panelElements.current[slot]=element},getElement:slot=>panelElements.current[slot]??null,setResizeSuppressed:(slot,suppressed)=>{resizeSuppressed.current[slot]=suppressed}}),[]),panelRefCallbacks=useMemo(()=>{let handleCallbacks=new Map,elementCallbacks=new Map;return{handleFor:id=>{let callback=handleCallbacks.get(id);return callback||(callback=handle=>animationControl.setHandle(id,handle),handleCallbacks.set(id,callback)),callback},elementFor:id=>{let callback=elementCallbacks.get(id);return callback||(callback=element=>animationControl.setElement(id,element),elementCallbacks.set(id,callback)),callback}}},[animationControl]),shouldSuppressLayoutCallback=useCallback(()=>Object.values(resizeSuppressed.current).some(Boolean),[]),registry=useMemo(()=>({register:(slot,reg)=>setDeclared(prev=>({...prev,[slot]:reg})),unregister:slot=>setDeclared(prev=>{if(!(slot in prev))return prev;let next={...prev};return delete next[slot],next})}),[]),{portalTargets,slotHosts,slotHostRefs,floatHostRef}=useFloatablePortalTargets({slots:PANEL_ORDER,floatableSlot:Slot.rightPanel,isFloating:isRightPanelFloating});useGlobalCssVariables(slotHosts);let declaredSlots=PANEL_ORDER.filter(slot=>declared[slot]),isSolo=declaredSlots.length<=1,soloSlot=declaredSlots[0],defaultSizeFor=slot=>{if(slot!==Slot.content)return declared[slot]?.defaultSize??layoutState[slot].size},panelItems=PANEL_ORDER.filter(slot=>declared[slot]&&(isShown(slot)||present[slot])).map(slot=>({id:slot,defaultSize:defaultSizeFor(slot),minSize:declared[slot]?.minSize??layoutState[slot].minSize,maxSize:declared[slot]?.maxSize??layoutState[slot].maxSize,collapsible:slot!==Slot.content&&(declared[slot]?.collapsible??!0)})),soloHost=soloSlot&&isShown(soloSlot)?React.createElement(StyledSoloHost,{ref:slotHostRefs[soloSlot]}):null,panelGroup=panelItems.length>0?React.createElement(Panel,{key:resolvedKey,panels:panelItems,persistenceKey:resolvedKey,storage:resolvedStorage,hostFor:id=>slotHostRefs[id],onResize:(id,size)=>panelCallbacks[id].resize(size),onCollapse:id=>panelCallbacks[id].hide(),panelHandleFor:panelRefCallbacks.handleFor,panelElementFor:panelRefCallbacks.elementFor,shouldSuppressLayoutCallback:shouldSuppressLayoutCallback}):null;return React.createElement(PanelRegistryContext.Provider,{value:registry},React.createElement(PanelPresenceContext.Provider,{value:presence},React.createElement(PanelAnimationContext.Provider,{value:animationControl},React.createElement(LayoutPortalContext.Provider,{value:portalTargets},React.createElement(StyledLayout,{"data-ds-id":"Layout"},isSolo?soloHost:panelGroup,isRightPanelFloating&&layoutState[Slot.rightPanel].visible&&React.createElement(LayoutFloat,{hostRef:floatHostRef}),children)))))};Layout.Provider=LayoutProvider,Layout.LeftPanel=LeftPanel,Layout.LeftPanelHeader=LeftPanelHeader,Layout.LeftPanelFooter=LeftPanelFooter,Layout.RightPanel=RightPanel,Layout.RightPanelHeader=RightPanelHeader,Layout.RightPanelFooter=RightPanelFooter,Layout.Content=Content,Layout.Split=Split,Layout.SplitHeader=SplitHeader,Layout.SplitFooter=SplitFooter;
@@ -1 +1 @@
1
- import React,{useMemo,useRef}from"react";import{LayoutPersistenceProvider,LayoutStoreProvider}from"./context";import{LayoutCssVars,LayoutCssVarStoreProvider}from"./LayoutCssVars";import{createLayoutCssVarStore}from"./cssVarStore";import{createInitialState}from"./reducer";import{createLayoutStore}from"./store";export function LayoutProvider({children,config,store,persistenceKey,storage}){let storeRef=useRef(null);null===storeRef.current&&(storeRef.current=store??createLayoutStore(createInitialState(config)));let cssVarStoreRef=useRef(null);null===cssVarStoreRef.current&&(cssVarStoreRef.current=createLayoutCssVarStore());let persistence=useMemo(()=>({persistenceKey,storage}),[persistenceKey,storage]);return React.createElement(LayoutStoreProvider,{value:storeRef.current},React.createElement(LayoutPersistenceProvider,{value:persistence},React.createElement(LayoutCssVarStoreProvider,{value:cssVarStoreRef.current},React.createElement(LayoutCssVars,null),children)))}
1
+ import React,{useMemo,useRef}from"react";import{LayoutPanelsEnabledProvider,LayoutPersistenceProvider,LayoutStoreProvider}from"./context";import{LayoutCssVars,LayoutCssVarStoreProvider}from"./LayoutCssVars";import{createLayoutCssVarStore}from"./cssVarStore";import{createInitialState}from"./reducer";import{createLayoutStore}from"./store";export function LayoutProvider({children,config,store,persistenceKey,storage}){let storeRef=useRef(null);null===storeRef.current&&(storeRef.current=store??createLayoutStore(createInitialState(config)));let cssVarStoreRef=useRef(null);null===cssVarStoreRef.current&&(cssVarStoreRef.current=createLayoutCssVarStore());let persistence=useMemo(()=>({persistenceKey,storage}),[persistenceKey,storage]);return React.createElement(LayoutStoreProvider,{value:storeRef.current},React.createElement(LayoutPanelsEnabledProvider,{value:config?.enablePanels??!1},React.createElement(LayoutPersistenceProvider,{value:persistence},React.createElement(LayoutCssVarStoreProvider,{value:cssVarStoreRef.current},React.createElement(LayoutCssVars,null),children))))}
@@ -1,10 +1,9 @@
1
1
  import React from "react";
2
- import type { SidePanelProps } from "../-types";
2
+ import type { LeftPanelProps } from "../-types";
3
3
  /**
4
- * Left side panel. Declares the `leftPanel` slot and portals its content into
5
- * the Group's host while visible. Renders in-flow (a resizable column) - the
6
- * offcanvas overlay / mobile sheet is deferred. `Layout.LeftPanelHeader` /
7
- * `Layout.LeftPanelFooter` children stick to the panel edges; the remaining
8
- * content scrolls.
4
+ * Left side panel. Picks its presentation by breakpoint: an in-flow resizable
5
+ * column on desktop ({@link LeftPanelDocked}) and a modal left-edge drawer on
6
+ * mobile ({@link LeftPanelDrawer}). Both are driven by the same `leftPanel`
7
+ * layout state, so `useLayout()` controls it the same way at any width.
9
8
  */
10
- export declare const LeftPanel: React.FC<SidePanelProps>;
9
+ export declare const LeftPanel: React.FC<LeftPanelProps>;
@@ -1 +1 @@
1
- import React from"react";import{Slot}from"../-constants";import{useDeclarePanel,useLayoutPortal,useVisibleChange}from"../registry";import{useLayout}from"../useLayout";import{PanelContainer}from"../PanelContainer";export const LeftPanel=({children,"aria-label":ariaLabel,defaultSize,minSize,maxSize,collapsible=!0,onVisibleChange})=>{let{isVisible}=useLayout()[Slot.leftPanel];return useDeclarePanel(Slot.leftPanel,{defaultSize,minSize,maxSize,collapsible}),useVisibleChange(isVisible,onVisibleChange),useLayoutPortal(Slot.leftPanel,isVisible?React.createElement(PanelContainer,{"aria-label":ariaLabel},children):null)};
1
+ import React from"react";import{useBreakpoints}from"../../../shared/useBreakpoints";import{Slot}from"../-constants";import{useVisibleChange}from"../registry";import{useLayout}from"../useLayout";import{useCanRenderPanel}from"../context";import{LeftPanelDocked}from"./LeftPanelDocked";import{LeftPanelDrawer}from"./LeftPanelDrawer";export const LeftPanel=({children,defaultSize,minSize,maxSize,collapsible=!0,onVisibleChange,"aria-label":ariaLabel})=>{let{isMobile}=useBreakpoints(),{isVisible,hide}=useLayout()[Slot.leftPanel],canRender=useCanRenderPanel();return(useVisibleChange(isVisible,onVisibleChange),canRender)?isMobile?React.createElement(LeftPanelDrawer,{isVisible:isVisible,hide:hide,"aria-label":ariaLabel},children):React.createElement(LeftPanelDocked,{"aria-label":ariaLabel,defaultSize:defaultSize,minSize:minSize,maxSize:maxSize,collapsible:collapsible},children):null};
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ import type { Size } from "../-types";
3
+ export type LeftPanelDockedProps = {
4
+ children: React.ReactNode;
5
+ "aria-label"?: string;
6
+ defaultSize?: Size;
7
+ minSize?: Size;
8
+ maxSize?: Size;
9
+ collapsible?: boolean;
10
+ };
11
+ /**
12
+ * Docked (desktop) left panel. Declares the `leftPanel` slot and portals its
13
+ * content into the Group's host - an in-flow, resizable column whose width
14
+ * slides open/closed via {@link usePanelDockedSlide} (when collapsible). Content
15
+ * lives in a {@link PanelContainer} so `Layout.LeftPanelHeader` /
16
+ * `Layout.LeftPanelFooter` children stick to the edges. The mobile presentation
17
+ * lives in {@link LeftPanelDrawer}; `LeftPanel` picks between the two by
18
+ * breakpoint.
19
+ */
20
+ export declare const LeftPanelDocked: React.FC<LeftPanelDockedProps>;
@@ -0,0 +1 @@
1
+ import React from"react";import{Slot}from"../-constants";import{useLayoutPortal}from"../registry";import{usePanelDockedSlide}from"../usePanelDockedSlide";import{PanelSlideBody}from"../PanelSlideBody";import{PanelContainer}from"../PanelContainer";export const LeftPanelDocked=({children,"aria-label":ariaLabel,defaultSize,minSize,maxSize,collapsible=!0})=>{let{isMounted,pinnedWidth}=usePanelDockedSlide({slot:Slot.leftPanel,defaultSize,minSize,maxSize,collapsible});return useLayoutPortal(Slot.leftPanel,isMounted?React.createElement(PanelSlideBody,{anchor:"right",pinnedWidth:pinnedWidth},React.createElement(PanelContainer,{"aria-label":ariaLabel},children)):null)};
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ export type LeftPanelDrawerProps = {
3
+ children: React.ReactNode;
4
+ isVisible: boolean;
5
+ hide: () => void;
6
+ "aria-label": string;
7
+ };
8
+ /**
9
+ * Mobile left panel. Renders its content as a modal {@link Drawer} pinned to the
10
+ * left edge instead of an in-flow column - so it does NOT declare a resizable
11
+ * slot. Visibility is the shared `leftPanel` layout state, so `useLayout()`
12
+ * drives it identically to the docked desktop panel; outside-click / Escape
13
+ * routes back through `hide`.
14
+ */
15
+ export declare const LeftPanelDrawer: React.FC<LeftPanelDrawerProps>;
@@ -0,0 +1 @@
1
+ import React from"react";import styled from"@emotion/styled";import{Drawer}from"../../Internal/Drawer/Drawer";import{PanelContainer}from"../PanelContainer";let StyledLeftPanelBody=styled("div",{target:"e14wbnl40",label:"StyledLeftPanelBody"})({width:"80vw",height:"100dvh"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L0xlZnRQYW5lbC9MZWZ0UGFuZWxEcmF3ZXIudHN4Iiwic291cmNlcyI6WyJzcmMvY29tcG9uZW50cy9MYXlvdXQvTGVmdFBhbmVsL0xlZnRQYW5lbERyYXdlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBEcmF3ZXIgfSBmcm9tIFwiLi4vLi4vSW50ZXJuYWwvRHJhd2VyL0RyYXdlclwiO1xuaW1wb3J0IHsgUGFuZWxDb250YWluZXIgfSBmcm9tIFwiLi4vUGFuZWxDb250YWluZXJcIjtcblxuLy8gRml4ZWQgbW9iaWxlIHdpZHRoIC0gdGhlIG1vYmlsZSBkcmF3ZXIgaXMgaW50ZW50aW9uYWxseSBub3QgcmVzaXphYmxlLCBzbyB0aGlzXG4vLyBpcyBhIGNvbnN0YW50IHJhdGhlciB0aGFuIGRyaXZlbiBieSB0aGUgcGFuZWwncyBgZGVmYXVsdFNpemVgL2BtaW5TaXplYCBwcm9wcy5cbi8vIFNpemVkIGluIGB2d2AsIG5vdCBgJWA6IHRoZSBEcmF3ZXIgcGlucyB0aGUgYm9keSB3aXRoIGBwb3NpdGlvbjogZml4ZWRgIGFuZFxuLy8gbm8gd2lkdGggb2YgaXRzIG93biwgc28gYSBwZXJjZW50YWdlIHdvdWxkIHJlc29sdmUgYWdhaW5zdCBhIHNocmluay10by1maXRcbi8vIGJveCBhbmQgY29sbGFwc2UgLSB2aWV3cG9ydCB1bml0cyBnaXZlIGEgdHJ1ZSA4MCUgb2YgdGhlIHNjcmVlbiB3aWR0aC5cbmNvbnN0IERSQVdFUl9XSURUSCA9IFwiODB2d1wiO1xuXG4vLyBTaXppbmcgd3JhcHBlciBvbmx5OyB0aGUgaW5uZXIgUGFuZWxDb250YWluZXIgb3ducyB0aGUgYmFja2dyb3VuZCBhbmQgdGhlXG4vLyBzY3JvbGwgcmVnaW9uIChzbyBgTGF5b3V0LkxlZnRQYW5lbEhlYWRlcmAgLyBgRm9vdGVyYCBjYW4gc3RpY2sgdG8gdGhlIGVkZ2VzKS5cbmNvbnN0IFN0eWxlZExlZnRQYW5lbEJvZHkgPSBzdHlsZWQuZGl2KHtcbiAgd2lkdGg6IERSQVdFUl9XSURUSCxcbiAgaGVpZ2h0OiBcIjEwMGR2aFwiLFxufSk7XG5cbmV4cG9ydCB0eXBlIExlZnRQYW5lbERyYXdlclByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICBpc1Zpc2libGU6IGJvb2xlYW47XG4gIGhpZGU6ICgpID0+IHZvaWQ7XG4gIFwiYXJpYS1sYWJlbFwiOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIE1vYmlsZSBsZWZ0IHBhbmVsLiBSZW5kZXJzIGl0cyBjb250ZW50IGFzIGEgbW9kYWwge0BsaW5rIERyYXdlcn0gcGlubmVkIHRvIHRoZVxuICogbGVmdCBlZGdlIGluc3RlYWQgb2YgYW4gaW4tZmxvdyBjb2x1bW4gLSBzbyBpdCBkb2VzIE5PVCBkZWNsYXJlIGEgcmVzaXphYmxlXG4gKiBzbG90LiBWaXNpYmlsaXR5IGlzIHRoZSBzaGFyZWQgYGxlZnRQYW5lbGAgbGF5b3V0IHN0YXRlLCBzbyBgdXNlTGF5b3V0KClgXG4gKiBkcml2ZXMgaXQgaWRlbnRpY2FsbHkgdG8gdGhlIGRvY2tlZCBkZXNrdG9wIHBhbmVsOyBvdXRzaWRlLWNsaWNrIC8gRXNjYXBlXG4gKiByb3V0ZXMgYmFjayB0aHJvdWdoIGBoaWRlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IExlZnRQYW5lbERyYXdlcjogUmVhY3QuRkM8TGVmdFBhbmVsRHJhd2VyUHJvcHM+ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGlzVmlzaWJsZSxcbiAgaGlkZSxcbiAgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCxcbn0pID0+IChcbiAgPERyYXdlclxuICAgIGlzVmlzaWJsZT17aXNWaXNpYmxlfVxuICAgIHBvc2l0aW9uWD1cImxlZnRcIlxuICAgIGhhbmRsZUNsb3NlPXtoaWRlfVxuICAgIGFyaWEtbGFiZWw9e2FyaWFMYWJlbH1cbiAgPlxuICAgIDxTdHlsZWRMZWZ0UGFuZWxCb2R5PlxuICAgICAgPFBhbmVsQ29udGFpbmVyPntjaGlsZHJlbn08L1BhbmVsQ29udGFpbmVyPlxuICAgIDwvU3R5bGVkTGVmdFBhbmVsQm9keT5cbiAgPC9EcmF3ZXI+XG4pO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWM0QiJ9 */");export const LeftPanelDrawer=({children,isVisible,hide,"aria-label":ariaLabel})=>React.createElement(Drawer,{isVisible:isVisible,positionX:"left",handleClose:hide,"aria-label":ariaLabel},React.createElement(StyledLeftPanelBody,null,React.createElement(PanelContainer,null,children)));
@@ -0,0 +1,18 @@
1
+ import React from "react";
2
+ /** Edge the body is pinned to while the column slides - the panel's docked
3
+ * edge (`right` for the left panel, `left` for the right panel). */
4
+ export type PanelSlideAnchor = "left" | "right";
5
+ export type PanelSlideBodyProps = {
6
+ /** Body width (px) while sliding; `null` at rest (fills the column). Comes
7
+ * from {@link usePanelDockedSlide}. */
8
+ pinnedWidth: number | null;
9
+ /** The edge the panel docks against. */
10
+ anchor: PanelSlideAnchor;
11
+ children: React.ReactNode;
12
+ };
13
+ /**
14
+ * The clipped, edge-anchored body a docked side panel's content lives in so
15
+ * its open/close width animation reads as a drawer slide. Pair with
16
+ * {@link usePanelDockedSlide}, which supplies `pinnedWidth`.
17
+ */
18
+ export declare const PanelSlideBody: React.FC<PanelSlideBodyProps>;
@@ -0,0 +1 @@
1
+ import React from"react";import styled from"@emotion/styled";let StyledPanelSlideClip=styled("div",{target:"eak7i850",label:"StyledPanelSlideClip"})({position:"relative",width:"100%",height:"100%",overflow:"hidden"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L1BhbmVsU2xpZGVCb2R5LnRzeCIsInNvdXJjZXMiOlsic3JjL2NvbXBvbmVudHMvTGF5b3V0L1BhbmVsU2xpZGVCb2R5LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcblxuLyoqIEVkZ2UgdGhlIGJvZHkgaXMgcGlubmVkIHRvIHdoaWxlIHRoZSBjb2x1bW4gc2xpZGVzIC0gdGhlIHBhbmVsJ3MgZG9ja2VkXG4gKiAgZWRnZSAoYHJpZ2h0YCBmb3IgdGhlIGxlZnQgcGFuZWwsIGBsZWZ0YCBmb3IgdGhlIHJpZ2h0IHBhbmVsKS4gKi9cbmV4cG9ydCB0eXBlIFBhbmVsU2xpZGVBbmNob3IgPSBcImxlZnRcIiB8IFwicmlnaHRcIjtcblxuLy8gQ2xpcHMgdGhlIGJvZHkgdG8gdGhlIGNvbHVtbiB3aGlsZSBpdHMgd2lkdGggYW5pbWF0ZXMuXG5jb25zdCBTdHlsZWRQYW5lbFNsaWRlQ2xpcCA9IHN0eWxlZC5kaXYoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIG92ZXJmbG93OiBcImhpZGRlblwiLFxufSk7XG5cbi8vIFdoaWxlIHRoZSBjb2x1bW4ncyB3aWR0aCBhbmltYXRlcywgdGhlIGJvZHkgaXMgcGlubmVkIHRvIGl0cyByZXN0aW5nIHdpZHRoIGFuZFxuLy8gYW5jaG9yZWQgdG8gdGhlIGRvY2tlZCBlZGdlOiB0aGUgZ3Jvd2luZyBjbGlwIHRoZW4gcmV2ZWFscyBpdCBmcm9tIHRoZVxuLy8gb3Bwb3NpdGUgZWRnZSAtIHJlYWRpbmcgYXMgdGhlIHBhbmVsIHNsaWRpbmcgaW4gd2hpbGUgdGhlIGNvbnRlbnQgaXMgcHVzaGVkIC1cbi8vIGFuZCBpdHMgY29udGVudCBuZXZlciByZWZsb3dzIG1pZC1hbmltYXRpb24uIEF0IHJlc3QgKHBpbm5lZFdpZHRoID09IG51bGwpIGl0XG4vLyBmaWxscyB0aGUgY29sdW1uIHNvIHRoZSBwYW5lbCBzdGF5cyByZXNpemFibGUuXG5jb25zdCBTdHlsZWRQYW5lbFNsaWRlQm9keSA9IHN0eWxlZChcImRpdlwiLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiAocHJvcCkgPT4gcHJvcCAhPT0gXCJwaW5uZWRXaWR0aFwiICYmIHByb3AgIT09IFwiYW5jaG9yXCIsXG59KTx7IHBpbm5lZFdpZHRoOiBudW1iZXIgfCBudWxsOyBhbmNob3I6IFBhbmVsU2xpZGVBbmNob3IgfT4oXG4gICh7IHBpbm5lZFdpZHRoLCBhbmNob3IgfSkgPT4gKHtcbiAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAuLi4ocGlubmVkV2lkdGggIT0gbnVsbCAmJiB7XG4gICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgdG9wOiAwLFxuICAgICAgW2FuY2hvcl06IDAsXG4gICAgICB3aWR0aDogYCR7cGlubmVkV2lkdGh9cHhgLFxuICAgIH0pLFxuICB9KVxuKTtcblxuZXhwb3J0IHR5cGUgUGFuZWxTbGlkZUJvZHlQcm9wcyA9IHtcbiAgLyoqIEJvZHkgd2lkdGggKHB4KSB3aGlsZSBzbGlkaW5nOyBgbnVsbGAgYXQgcmVzdCAoZmlsbHMgdGhlIGNvbHVtbikuIENvbWVzXG4gICAqICBmcm9tIHtAbGluayB1c2VQYW5lbERvY2tlZFNsaWRlfS4gKi9cbiAgcGlubmVkV2lkdGg6IG51bWJlciB8IG51bGw7XG4gIC8qKiBUaGUgZWRnZSB0aGUgcGFuZWwgZG9ja3MgYWdhaW5zdC4gKi9cbiAgYW5jaG9yOiBQYW5lbFNsaWRlQW5jaG9yO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuLyoqXG4gKiBUaGUgY2xpcHBlZCwgZWRnZS1hbmNob3JlZCBib2R5IGEgZG9ja2VkIHNpZGUgcGFuZWwncyBjb250ZW50IGxpdmVzIGluIHNvXG4gKiBpdHMgb3Blbi9jbG9zZSB3aWR0aCBhbmltYXRpb24gcmVhZHMgYXMgYSBkcmF3ZXIgc2xpZGUuIFBhaXIgd2l0aFxuICoge0BsaW5rIHVzZVBhbmVsRG9ja2VkU2xpZGV9LCB3aGljaCBzdXBwbGllcyBgcGlubmVkV2lkdGhgLlxuICovXG5leHBvcnQgY29uc3QgUGFuZWxTbGlkZUJvZHk6IFJlYWN0LkZDPFBhbmVsU2xpZGVCb2R5UHJvcHM+ID0gKHtcbiAgcGlubmVkV2lkdGgsXG4gIGFuY2hvcixcbiAgY2hpbGRyZW4sXG59KSA9PiAoXG4gIDxTdHlsZWRQYW5lbFNsaWRlQ2xpcD5cbiAgICA8U3R5bGVkUGFuZWxTbGlkZUJvZHkgcGlubmVkV2lkdGg9e3Bpbm5lZFdpZHRofSBhbmNob3I9e2FuY2hvcn0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQYW5lbFNsaWRlQm9keT5cbiAgPC9TdHlsZWRQYW5lbFNsaWRlQ2xpcD5cbik7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUTZCIn0= */"),StyledPanelSlideBody=styled("div",{shouldForwardProp:prop=>"pinnedWidth"!==prop&&"anchor"!==prop,target:"eak7i851",label:"StyledPanelSlideBody"})(({pinnedWidth,anchor})=>({width:"100%",height:"100%",...null!=pinnedWidth&&{position:"absolute",top:0,[anchor]:0,width:`${pinnedWidth}px`}}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L1BhbmVsU2xpZGVCb2R5LnRzeCIsInNvdXJjZXMiOlsic3JjL2NvbXBvbmVudHMvTGF5b3V0L1BhbmVsU2xpZGVCb2R5LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcblxuLyoqIEVkZ2UgdGhlIGJvZHkgaXMgcGlubmVkIHRvIHdoaWxlIHRoZSBjb2x1bW4gc2xpZGVzIC0gdGhlIHBhbmVsJ3MgZG9ja2VkXG4gKiAgZWRnZSAoYHJpZ2h0YCBmb3IgdGhlIGxlZnQgcGFuZWwsIGBsZWZ0YCBmb3IgdGhlIHJpZ2h0IHBhbmVsKS4gKi9cbmV4cG9ydCB0eXBlIFBhbmVsU2xpZGVBbmNob3IgPSBcImxlZnRcIiB8IFwicmlnaHRcIjtcblxuLy8gQ2xpcHMgdGhlIGJvZHkgdG8gdGhlIGNvbHVtbiB3aGlsZSBpdHMgd2lkdGggYW5pbWF0ZXMuXG5jb25zdCBTdHlsZWRQYW5lbFNsaWRlQ2xpcCA9IHN0eWxlZC5kaXYoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIG92ZXJmbG93OiBcImhpZGRlblwiLFxufSk7XG5cbi8vIFdoaWxlIHRoZSBjb2x1bW4ncyB3aWR0aCBhbmltYXRlcywgdGhlIGJvZHkgaXMgcGlubmVkIHRvIGl0cyByZXN0aW5nIHdpZHRoIGFuZFxuLy8gYW5jaG9yZWQgdG8gdGhlIGRvY2tlZCBlZGdlOiB0aGUgZ3Jvd2luZyBjbGlwIHRoZW4gcmV2ZWFscyBpdCBmcm9tIHRoZVxuLy8gb3Bwb3NpdGUgZWRnZSAtIHJlYWRpbmcgYXMgdGhlIHBhbmVsIHNsaWRpbmcgaW4gd2hpbGUgdGhlIGNvbnRlbnQgaXMgcHVzaGVkIC1cbi8vIGFuZCBpdHMgY29udGVudCBuZXZlciByZWZsb3dzIG1pZC1hbmltYXRpb24uIEF0IHJlc3QgKHBpbm5lZFdpZHRoID09IG51bGwpIGl0XG4vLyBmaWxscyB0aGUgY29sdW1uIHNvIHRoZSBwYW5lbCBzdGF5cyByZXNpemFibGUuXG5jb25zdCBTdHlsZWRQYW5lbFNsaWRlQm9keSA9IHN0eWxlZChcImRpdlwiLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiAocHJvcCkgPT4gcHJvcCAhPT0gXCJwaW5uZWRXaWR0aFwiICYmIHByb3AgIT09IFwiYW5jaG9yXCIsXG59KTx7IHBpbm5lZFdpZHRoOiBudW1iZXIgfCBudWxsOyBhbmNob3I6IFBhbmVsU2xpZGVBbmNob3IgfT4oXG4gICh7IHBpbm5lZFdpZHRoLCBhbmNob3IgfSkgPT4gKHtcbiAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAuLi4ocGlubmVkV2lkdGggIT0gbnVsbCAmJiB7XG4gICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgdG9wOiAwLFxuICAgICAgW2FuY2hvcl06IDAsXG4gICAgICB3aWR0aDogYCR7cGlubmVkV2lkdGh9cHhgLFxuICAgIH0pLFxuICB9KVxuKTtcblxuZXhwb3J0IHR5cGUgUGFuZWxTbGlkZUJvZHlQcm9wcyA9IHtcbiAgLyoqIEJvZHkgd2lkdGggKHB4KSB3aGlsZSBzbGlkaW5nOyBgbnVsbGAgYXQgcmVzdCAoZmlsbHMgdGhlIGNvbHVtbikuIENvbWVzXG4gICAqICBmcm9tIHtAbGluayB1c2VQYW5lbERvY2tlZFNsaWRlfS4gKi9cbiAgcGlubmVkV2lkdGg6IG51bWJlciB8IG51bGw7XG4gIC8qKiBUaGUgZWRnZSB0aGUgcGFuZWwgZG9ja3MgYWdhaW5zdC4gKi9cbiAgYW5jaG9yOiBQYW5lbFNsaWRlQW5jaG9yO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuLyoqXG4gKiBUaGUgY2xpcHBlZCwgZWRnZS1hbmNob3JlZCBib2R5IGEgZG9ja2VkIHNpZGUgcGFuZWwncyBjb250ZW50IGxpdmVzIGluIHNvXG4gKiBpdHMgb3Blbi9jbG9zZSB3aWR0aCBhbmltYXRpb24gcmVhZHMgYXMgYSBkcmF3ZXIgc2xpZGUuIFBhaXIgd2l0aFxuICoge0BsaW5rIHVzZVBhbmVsRG9ja2VkU2xpZGV9LCB3aGljaCBzdXBwbGllcyBgcGlubmVkV2lkdGhgLlxuICovXG5leHBvcnQgY29uc3QgUGFuZWxTbGlkZUJvZHk6IFJlYWN0LkZDPFBhbmVsU2xpZGVCb2R5UHJvcHM+ID0gKHtcbiAgcGlubmVkV2lkdGgsXG4gIGFuY2hvcixcbiAgY2hpbGRyZW4sXG59KSA9PiAoXG4gIDxTdHlsZWRQYW5lbFNsaWRlQ2xpcD5cbiAgICA8U3R5bGVkUGFuZWxTbGlkZUJvZHkgcGlubmVkV2lkdGg9e3Bpbm5lZFdpZHRofSBhbmNob3I9e2FuY2hvcn0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQYW5lbFNsaWRlQm9keT5cbiAgPC9TdHlsZWRQYW5lbFNsaWRlQ2xpcD5cbik7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0I2QiJ9 */");export const PanelSlideBody=({pinnedWidth,anchor,children})=>React.createElement(StyledPanelSlideClip,null,React.createElement(StyledPanelSlideBody,{pinnedWidth:pinnedWidth,anchor:anchor},children));
@@ -2,10 +2,12 @@ import React from "react";
2
2
  import type { RightPanelProps } from "../-types";
3
3
  /**
4
4
  * Right side panel. Declares the `rightPanel` slot and portals its content into
5
- * the Group's host while visible. Renders in-flow (a resizable column) - the
6
- * offcanvas overlay / mobile sheet is deferred. Content is wrapped in a slot
7
- * that tracks the `--ds-layout-subnav-offset` var. `Layout.RightPanelHeader`
8
- * / `Layout.RightPanelFooter` children stick to the panel edges; the
9
- * remaining content scrolls.
5
+ * the Group's host while visible. Renders in-flow (a resizable column) on
6
+ * desktop - the offcanvas overlay is deferred - and as a bottom sheet below
7
+ * the mobile breakpoint (`Sheet` portals itself, so the layout portal is
8
+ * bypassed there; content remounts on a breakpoint cross). Docked content is
9
+ * wrapped in a slot that tracks the `--ds-layout-subnav-offset` var.
10
+ * `Layout.RightPanelHeader` / `Layout.RightPanelFooter` children stick to the
11
+ * panel edges; the remaining content scrolls.
10
12
  */
11
13
  export declare const RightPanel: React.FC<RightPanelProps>;
@@ -1 +1 @@
1
- import React from"react";import styled from"@emotion/styled";import{Slot,SUBNAV_OFFSET_VAR}from"../-constants";import{useDeclarePanel,useLayoutPortal,useVisibleChange}from"../registry";import{useLayout}from"../useLayout";import{PanelContainer}from"../PanelContainer";let StyledRightPanelSlot=styled("div",{target:"e4qhg680",label:"StyledRightPanelSlot"})(({theme})=>({position:"absolute",left:0,right:0,bottom:0,top:`var(${SUBNAV_OFFSET_VAR}, 0px)`,overflow:"hidden",transition:`top ${theme.variables.animation.navSlide.open.duration} ${theme.variables.animation.navSlide.open.timingFunction}`}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L1JpZ2h0UGFuZWwvUmlnaHRQYW5lbC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0xheW91dC9SaWdodFBhbmVsL1JpZ2h0UGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgU2xvdCwgU1VCTkFWX09GRlNFVF9WQVIgfSBmcm9tIFwiLi4vLWNvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgdXNlRGVjbGFyZVBhbmVsLFxuICB1c2VMYXlvdXRQb3J0YWwsXG4gIHVzZVZpc2libGVDaGFuZ2UsXG59IGZyb20gXCIuLi9yZWdpc3RyeVwiO1xuaW1wb3J0IHsgdXNlTGF5b3V0IH0gZnJvbSBcIi4uL3VzZUxheW91dFwiO1xuaW1wb3J0IHsgUGFuZWxDb250YWluZXIgfSBmcm9tIFwiLi4vUGFuZWxDb250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgUmlnaHRQYW5lbFByb3BzIH0gZnJvbSBcIi4uLy10eXBlc1wiO1xuXG4vLyBCdWlsdC1pbiBzbG90OiBvZmZzZXRzIHRoZSBwYW5lbCBjb250ZW50IGJ5IHRoZSBzdWJuYXYtb2Zmc2V0IHZhciAoMCB3aGVuXG4vLyB1bnNldCksIHRyYW5zaXRpb25lZCB3aXRoIHRoZSB0aGVtZSdzIGBuYXZTbGlkZWAgdGltaW5nIOKAlCBzbyB0aGUgcmlnaHQgcGFuZWxcbi8vIHRyYWNrcyBhIHN0aWNreSBzdWJuYXYgd2l0aCBubyB3aXJpbmcgb24gdGhlIGNvbnN1bWVyJ3Mgc2lkZS5cbmNvbnN0IFN0eWxlZFJpZ2h0UGFuZWxTbG90ID0gc3R5bGVkLmRpdigoeyB0aGVtZSB9KSA9PiAoe1xuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICBsZWZ0OiAwLFxuICByaWdodDogMCxcbiAgYm90dG9tOiAwLFxuICB0b3A6IGB2YXIoJHtTVUJOQVZfT0ZGU0VUX1ZBUn0sIDBweClgLFxuICBvdmVyZmxvdzogXCJoaWRkZW5cIixcbiAgdHJhbnNpdGlvbjogYHRvcCAke3RoZW1lLnZhcmlhYmxlcy5hbmltYXRpb24ubmF2U2xpZGUub3Blbi5kdXJhdGlvbn0gJHt0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLm5hdlNsaWRlLm9wZW4udGltaW5nRnVuY3Rpb259YCxcbn0pKTtcblxuLyoqXG4gKiBSaWdodCBzaWRlIHBhbmVsLiBEZWNsYXJlcyB0aGUgYHJpZ2h0UGFuZWxgIHNsb3QgYW5kIHBvcnRhbHMgaXRzIGNvbnRlbnQgaW50b1xuICogdGhlIEdyb3VwJ3MgaG9zdCB3aGlsZSB2aXNpYmxlLiBSZW5kZXJzIGluLWZsb3cgKGEgcmVzaXphYmxlIGNvbHVtbikgLSB0aGVcbiAqIG9mZmNhbnZhcyBvdmVybGF5IC8gbW9iaWxlIHNoZWV0IGlzIGRlZmVycmVkLiBDb250ZW50IGlzIHdyYXBwZWQgaW4gYSBzbG90XG4gKiB0aGF0IHRyYWNrcyB0aGUgYC0tZHMtbGF5b3V0LXN1Ym5hdi1vZmZzZXRgIHZhci4gYExheW91dC5SaWdodFBhbmVsSGVhZGVyYFxuICogLyBgTGF5b3V0LlJpZ2h0UGFuZWxGb290ZXJgIGNoaWxkcmVuIHN0aWNrIHRvIHRoZSBwYW5lbCBlZGdlczsgdGhlXG4gKiByZW1haW5pbmcgY29udGVudCBzY3JvbGxzLlxuICovXG5leHBvcnQgY29uc3QgUmlnaHRQYW5lbDogUmVhY3QuRkM8UmlnaHRQYW5lbFByb3BzPiA9ICh7XG4gIGNoaWxkcmVuLFxuICBkZWZhdWx0U2l6ZSA9IDM3OCxcbiAgbWluU2l6ZSA9IDMyOCxcbiAgbWF4U2l6ZSA9IFwiMzAlXCIsXG4gIGNvbGxhcHNpYmxlID0gZmFsc2UsXG4gIG9uVmlzaWJsZUNoYW5nZSxcbiAgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCxcbiAgc2Nyb2xsQ29udGFpbmVyUmVmLFxuICBvblNjcm9sbCxcbn0pID0+IHtcbiAgY29uc3QgeyBpc1Zpc2libGUgfSA9IHVzZUxheW91dCgpW1Nsb3QucmlnaHRQYW5lbF07XG4gIHVzZURlY2xhcmVQYW5lbChTbG90LnJpZ2h0UGFuZWwsIHtcbiAgICBkZWZhdWx0U2l6ZSxcbiAgICBtaW5TaXplLFxuICAgIG1heFNpemUsXG4gICAgY29sbGFwc2libGUsXG4gIH0pO1xuICB1c2VWaXNpYmxlQ2hhbmdlKGlzVmlzaWJsZSwgb25WaXNpYmxlQ2hhbmdlKTtcbiAgcmV0dXJuIHVzZUxheW91dFBvcnRhbChcbiAgICBTbG90LnJpZ2h0UGFuZWwsXG4gICAgaXNWaXNpYmxlID8gKFxuICAgICAgPFN0eWxlZFJpZ2h0UGFuZWxTbG90PlxuICAgICAgICA8UGFuZWxDb250YWluZXJcbiAgICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgICAgc2Nyb2xsQ29udGFpbmVyUmVmPXtzY3JvbGxDb250YWluZXJSZWZ9XG4gICAgICAgICAgb25TY3JvbGw9e29uU2Nyb2xsfVxuICAgICAgICAgIHNob3dCb3JkZXJMZWZ0XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvUGFuZWxDb250YWluZXI+XG4gICAgICA8L1N0eWxlZFJpZ2h0UGFuZWxTbG90PlxuICAgICkgOiBudWxsXG4gICk7XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWU2QiJ9 */");export const RightPanel=({children,defaultSize=378,minSize=328,maxSize="30%",collapsible=!1,onVisibleChange,"aria-label":ariaLabel,scrollContainerRef,onScroll})=>{let{isVisible}=useLayout()[Slot.rightPanel];return useDeclarePanel(Slot.rightPanel,{defaultSize,minSize,maxSize,collapsible}),useVisibleChange(isVisible,onVisibleChange),useLayoutPortal(Slot.rightPanel,isVisible?React.createElement(StyledRightPanelSlot,null,React.createElement(PanelContainer,{"aria-label":ariaLabel,scrollContainerRef:scrollContainerRef,onScroll:onScroll,showBorderLeft:!0},children)):null)};
1
+ import React from"react";import styled from"@emotion/styled";import{Slot,SUBNAV_OFFSET_VAR}from"../-constants";import{useDeclarePanel,useLayoutPortal,useRunCallbackOnValueChange}from"../registry";import{useLayout}from"../useLayout";import{useCanRenderPanel}from"../context";import{useBreakpoints}from"../../../shared/useBreakpoints";import{PanelContainer}from"../PanelContainer";import{Sheet,SHEET_MAX_HEIGHT}from"../../Sheet/Sheet";let StyledSheetPanelShell=styled("div",{target:"e12v2el90",label:"StyledSheetPanelShell"})({height:SHEET_MAX_HEIGHT},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L1JpZ2h0UGFuZWwvUmlnaHRQYW5lbC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0xheW91dC9SaWdodFBhbmVsL1JpZ2h0UGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgU2xvdCwgU1VCTkFWX09GRlNFVF9WQVIgfSBmcm9tIFwiLi4vLWNvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgdXNlRGVjbGFyZVBhbmVsLFxuICB1c2VMYXlvdXRQb3J0YWwsXG4gIHVzZVJ1bkNhbGxiYWNrT25WYWx1ZUNoYW5nZSxcbn0gZnJvbSBcIi4uL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgeyB1c2VMYXlvdXQgfSBmcm9tIFwiLi4vdXNlTGF5b3V0XCI7XG5pbXBvcnQgeyB1c2VDYW5SZW5kZXJQYW5lbCB9IGZyb20gXCIuLi9jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VCcmVha3BvaW50cyB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWQvdXNlQnJlYWtwb2ludHNcIjtcbmltcG9ydCB7IFBhbmVsQ29udGFpbmVyIH0gZnJvbSBcIi4uL1BhbmVsQ29udGFpbmVyXCI7XG5pbXBvcnQgeyBTaGVldCwgU0hFRVRfTUFYX0hFSUdIVCB9IGZyb20gXCIuLi8uLi9TaGVldC9TaGVldFwiO1xuaW1wb3J0IHR5cGUgeyBSaWdodFBhbmVsUHJvcHMgfSBmcm9tIFwiLi4vLXR5cGVzXCI7XG5cbi8vIEdpdmVzIHRoZSBwYW5lbCBzaGVsbCBhIGRlZmluaXRlIGhlaWdodCBpbnNpZGUgdGhlIFNoZWV0ICh3aGljaCBvbmx5IGNhcHNcbi8vIGl0cyBjb250ZW50IGF0IFNIRUVUX01BWF9IRUlHSFQpLiBXaXRoIHRoZSBoZWlnaHQgYm91bmRlZCwgdGhlIFNhbmR3aWNoXG4vLyBpbnNpZGUgUGFuZWxDb250YWluZXIgc2Nyb2xscyBpdHMgYm9keSByZWdpb24gaXRzZWxmLCBzb1xuLy8gYExheW91dC5SaWdodFBhbmVsSGVhZGVyYCAvIGBMYXlvdXQuUmlnaHRQYW5lbEZvb3RlcmAgc3RpY2sgdG8gdGhlIHNoZWV0XG4vLyBlZGdlcyBleGFjdGx5IGFzIHRoZXkgZG8gaW4gdGhlIGRvY2tlZCBwYW5lbC5cbmNvbnN0IFN0eWxlZFNoZWV0UGFuZWxTaGVsbCA9IHN0eWxlZC5kaXYoe1xuICBoZWlnaHQ6IFNIRUVUX01BWF9IRUlHSFQsXG59KTtcblxuLy8gQnVpbHQtaW4gc2xvdDogb2Zmc2V0cyB0aGUgcGFuZWwgY29udGVudCBieSB0aGUgc3VibmF2LW9mZnNldCB2YXIgKDAgd2hlblxuLy8gdW5zZXQpLCB0cmFuc2l0aW9uZWQgd2l0aCB0aGUgdGhlbWUncyBgbmF2U2xpZGVgIHRpbWluZyDigJQgc28gdGhlIHJpZ2h0IHBhbmVsXG4vLyB0cmFja3MgYSBzdGlja3kgc3VibmF2IHdpdGggbm8gd2lyaW5nIG9uIHRoZSBjb25zdW1lcidzIHNpZGUuXG5jb25zdCBTdHlsZWRSaWdodFBhbmVsU2xvdCA9IHN0eWxlZC5kaXYoKHsgdGhlbWUgfSkgPT4gKHtcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgbGVmdDogMCxcbiAgcmlnaHQ6IDAsXG4gIGJvdHRvbTogMCxcbiAgdG9wOiBgdmFyKCR7U1VCTkFWX09GRlNFVF9WQVJ9LCAwcHgpYCxcbiAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gIHRyYW5zaXRpb246IGB0b3AgJHt0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLm5hdlNsaWRlLm9wZW4uZHVyYXRpb259ICR7dGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5uYXZTbGlkZS5vcGVuLnRpbWluZ0Z1bmN0aW9ufWAsXG59KSk7XG5cbi8qKlxuICogUmlnaHQgc2lkZSBwYW5lbC4gRGVjbGFyZXMgdGhlIGByaWdodFBhbmVsYCBzbG90IGFuZCBwb3J0YWxzIGl0cyBjb250ZW50IGludG9cbiAqIHRoZSBHcm91cCdzIGhvc3Qgd2hpbGUgdmlzaWJsZS4gUmVuZGVycyBpbi1mbG93IChhIHJlc2l6YWJsZSBjb2x1bW4pIG9uXG4gKiBkZXNrdG9wIC0gdGhlIG9mZmNhbnZhcyBvdmVybGF5IGlzIGRlZmVycmVkIC0gYW5kIGFzIGEgYm90dG9tIHNoZWV0IGJlbG93XG4gKiB0aGUgbW9iaWxlIGJyZWFrcG9pbnQgKGBTaGVldGAgcG9ydGFscyBpdHNlbGYsIHNvIHRoZSBsYXlvdXQgcG9ydGFsIGlzXG4gKiBieXBhc3NlZCB0aGVyZTsgY29udGVudCByZW1vdW50cyBvbiBhIGJyZWFrcG9pbnQgY3Jvc3MpLiBEb2NrZWQgY29udGVudCBpc1xuICogd3JhcHBlZCBpbiBhIHNsb3QgdGhhdCB0cmFja3MgdGhlIGAtLWRzLWxheW91dC1zdWJuYXYtb2Zmc2V0YCB2YXIuXG4gKiBgTGF5b3V0LlJpZ2h0UGFuZWxIZWFkZXJgIC8gYExheW91dC5SaWdodFBhbmVsRm9vdGVyYCBjaGlsZHJlbiBzdGljayB0byB0aGVcbiAqIHBhbmVsIGVkZ2VzOyB0aGUgcmVtYWluaW5nIGNvbnRlbnQgc2Nyb2xscy5cbiAqL1xuZXhwb3J0IGNvbnN0IFJpZ2h0UGFuZWw6IFJlYWN0LkZDPFJpZ2h0UGFuZWxQcm9wcz4gPSAoe1xuICBjaGlsZHJlbixcbiAgZGVmYXVsdFNpemUgPSAzNzgsXG4gIG1pblNpemUgPSAzMjgsXG4gIG1heFNpemUgPSBcIjMwJVwiLFxuICBjb2xsYXBzaWJsZSA9IGZhbHNlLFxuICBvblZpc2libGVDaGFuZ2UsXG4gIG9uVmFyaWFudENoYW5nZSxcbiAgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCxcbiAgc2Nyb2xsQ29udGFpbmVyUmVmLFxuICBvblNjcm9sbCxcbn0pID0+IHtcbiAgY29uc3QgeyBpc1Zpc2libGUsIGhpZGUsIHN0YXRlIH0gPSB1c2VMYXlvdXQoKVtTbG90LnJpZ2h0UGFuZWxdO1xuICBjb25zdCB7IGlzTW9iaWxlIH0gPSB1c2VCcmVha3BvaW50cygpO1xuICBjb25zdCBjYW5SZW5kZXIgPSB1c2VDYW5SZW5kZXJQYW5lbCgpO1xuICB1c2VEZWNsYXJlUGFuZWwoU2xvdC5yaWdodFBhbmVsLCB7XG4gICAgZGVmYXVsdFNpemUsXG4gICAgbWluU2l6ZSxcbiAgICBtYXhTaXplLFxuICAgIGNvbGxhcHNpYmxlLFxuICB9KTtcbiAgdXNlUnVuQ2FsbGJhY2tPblZhbHVlQ2hhbmdlKGlzVmlzaWJsZSwgb25WaXNpYmxlQ2hhbmdlKTtcbiAgdXNlUnVuQ2FsbGJhY2tPblZhbHVlQ2hhbmdlKHN0YXRlLnZhcmlhbnQsIG9uVmFyaWFudENoYW5nZSk7XG4gIGNvbnN0IGRvY2tlZFBhbmVsID0gdXNlTGF5b3V0UG9ydGFsKFxuICAgIFNsb3QucmlnaHRQYW5lbCxcbiAgICBjYW5SZW5kZXIgJiYgaXNWaXNpYmxlICYmICFpc01vYmlsZSA/IChcbiAgICAgIDxTdHlsZWRSaWdodFBhbmVsU2xvdD5cbiAgICAgICAgPFBhbmVsQ29udGFpbmVyXG4gICAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsfVxuICAgICAgICAgIHNjcm9sbENvbnRhaW5lclJlZj17c2Nyb2xsQ29udGFpbmVyUmVmfVxuICAgICAgICAgIG9uU2Nyb2xsPXtvblNjcm9sbH1cbiAgICAgICAgICAvLyBUaGUgbGVmdCBib3JkZXIgc2VwYXJhdGVzIHRoZSBkb2NrZWQgY29sdW1uIGZyb20gdGhlIGNvbnRlbnQ7IHRoZVxuICAgICAgICAgIC8vIGZsb2F0aW5nIHdpbmRvdyBoYXMgaXRzIG93biBib3JkZXIsIHNvIGRyb3AgaXQgdGhlcmUuXG4gICAgICAgICAgc2hvd0JvcmRlckxlZnQ9e3N0YXRlLnZhcmlhbnQgIT09IFwiZmxvYXRcIn1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9QYW5lbENvbnRhaW5lcj5cbiAgICAgIDwvU3R5bGVkUmlnaHRQYW5lbFNsb3Q+XG4gICAgKSA6IG51bGxcbiAgKTtcbiAgaWYgKCFjYW5SZW5kZXIpIHJldHVybiBudWxsO1xuICBpZiAoaXNNb2JpbGUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgLy8gSW5pdGlhbCBmb2N1cyBpcyBzdXBwcmVzc2VkIHNvIG9wZW5pbmcgdGhlIHNoZWV0IG5ldmVyIHBvcHMgdGhlXG4gICAgICAvLyBvbi1zY3JlZW4ga2V5Ym9hcmQuXG4gICAgICA8U2hlZXRcbiAgICAgICAgaXNWaXNpYmxlPXtpc1Zpc2libGV9XG4gICAgICAgIG9uQ2xvc2U9e2hpZGV9XG4gICAgICAgIGhhc0JhY2tkcm9wXG4gICAgICAgIGRpc21pc3NPbk91dHNpZGVDbGlja1xuICAgICAgICBkaXNhYmxlSW5pdGlhbEZvY3VzXG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRTaGVldFBhbmVsU2hlbGw+XG4gICAgICAgICAgPFBhbmVsQ29udGFpbmVyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgICAgICBzY3JvbGxDb250YWluZXJSZWY9e3Njcm9sbENvbnRhaW5lclJlZn1cbiAgICAgICAgICAgIG9uU2Nyb2xsPXtvblNjcm9sbH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9QYW5lbENvbnRhaW5lcj5cbiAgICAgICAgPC9TdHlsZWRTaGVldFBhbmVsU2hlbGw+XG4gICAgICA8L1NoZWV0PlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGRvY2tlZFBhbmVsO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQjhCIn0= */"),StyledRightPanelSlot=styled("div",{target:"e12v2el91",label:"StyledRightPanelSlot"})(({theme})=>({position:"absolute",left:0,right:0,bottom:0,top:`var(${SUBNAV_OFFSET_VAR}, 0px)`,overflow:"hidden",transition:`top ${theme.variables.animation.navSlide.open.duration} ${theme.variables.animation.navSlide.open.timingFunction}`}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L1JpZ2h0UGFuZWwvUmlnaHRQYW5lbC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0xheW91dC9SaWdodFBhbmVsL1JpZ2h0UGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgU2xvdCwgU1VCTkFWX09GRlNFVF9WQVIgfSBmcm9tIFwiLi4vLWNvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgdXNlRGVjbGFyZVBhbmVsLFxuICB1c2VMYXlvdXRQb3J0YWwsXG4gIHVzZVJ1bkNhbGxiYWNrT25WYWx1ZUNoYW5nZSxcbn0gZnJvbSBcIi4uL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgeyB1c2VMYXlvdXQgfSBmcm9tIFwiLi4vdXNlTGF5b3V0XCI7XG5pbXBvcnQgeyB1c2VDYW5SZW5kZXJQYW5lbCB9IGZyb20gXCIuLi9jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VCcmVha3BvaW50cyB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWQvdXNlQnJlYWtwb2ludHNcIjtcbmltcG9ydCB7IFBhbmVsQ29udGFpbmVyIH0gZnJvbSBcIi4uL1BhbmVsQ29udGFpbmVyXCI7XG5pbXBvcnQgeyBTaGVldCwgU0hFRVRfTUFYX0hFSUdIVCB9IGZyb20gXCIuLi8uLi9TaGVldC9TaGVldFwiO1xuaW1wb3J0IHR5cGUgeyBSaWdodFBhbmVsUHJvcHMgfSBmcm9tIFwiLi4vLXR5cGVzXCI7XG5cbi8vIEdpdmVzIHRoZSBwYW5lbCBzaGVsbCBhIGRlZmluaXRlIGhlaWdodCBpbnNpZGUgdGhlIFNoZWV0ICh3aGljaCBvbmx5IGNhcHNcbi8vIGl0cyBjb250ZW50IGF0IFNIRUVUX01BWF9IRUlHSFQpLiBXaXRoIHRoZSBoZWlnaHQgYm91bmRlZCwgdGhlIFNhbmR3aWNoXG4vLyBpbnNpZGUgUGFuZWxDb250YWluZXIgc2Nyb2xscyBpdHMgYm9keSByZWdpb24gaXRzZWxmLCBzb1xuLy8gYExheW91dC5SaWdodFBhbmVsSGVhZGVyYCAvIGBMYXlvdXQuUmlnaHRQYW5lbEZvb3RlcmAgc3RpY2sgdG8gdGhlIHNoZWV0XG4vLyBlZGdlcyBleGFjdGx5IGFzIHRoZXkgZG8gaW4gdGhlIGRvY2tlZCBwYW5lbC5cbmNvbnN0IFN0eWxlZFNoZWV0UGFuZWxTaGVsbCA9IHN0eWxlZC5kaXYoe1xuICBoZWlnaHQ6IFNIRUVUX01BWF9IRUlHSFQsXG59KTtcblxuLy8gQnVpbHQtaW4gc2xvdDogb2Zmc2V0cyB0aGUgcGFuZWwgY29udGVudCBieSB0aGUgc3VibmF2LW9mZnNldCB2YXIgKDAgd2hlblxuLy8gdW5zZXQpLCB0cmFuc2l0aW9uZWQgd2l0aCB0aGUgdGhlbWUncyBgbmF2U2xpZGVgIHRpbWluZyDigJQgc28gdGhlIHJpZ2h0IHBhbmVsXG4vLyB0cmFja3MgYSBzdGlja3kgc3VibmF2IHdpdGggbm8gd2lyaW5nIG9uIHRoZSBjb25zdW1lcidzIHNpZGUuXG5jb25zdCBTdHlsZWRSaWdodFBhbmVsU2xvdCA9IHN0eWxlZC5kaXYoKHsgdGhlbWUgfSkgPT4gKHtcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgbGVmdDogMCxcbiAgcmlnaHQ6IDAsXG4gIGJvdHRvbTogMCxcbiAgdG9wOiBgdmFyKCR7U1VCTkFWX09GRlNFVF9WQVJ9LCAwcHgpYCxcbiAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gIHRyYW5zaXRpb246IGB0b3AgJHt0aGVtZS52YXJpYWJsZXMuYW5pbWF0aW9uLm5hdlNsaWRlLm9wZW4uZHVyYXRpb259ICR7dGhlbWUudmFyaWFibGVzLmFuaW1hdGlvbi5uYXZTbGlkZS5vcGVuLnRpbWluZ0Z1bmN0aW9ufWAsXG59KSk7XG5cbi8qKlxuICogUmlnaHQgc2lkZSBwYW5lbC4gRGVjbGFyZXMgdGhlIGByaWdodFBhbmVsYCBzbG90IGFuZCBwb3J0YWxzIGl0cyBjb250ZW50IGludG9cbiAqIHRoZSBHcm91cCdzIGhvc3Qgd2hpbGUgdmlzaWJsZS4gUmVuZGVycyBpbi1mbG93IChhIHJlc2l6YWJsZSBjb2x1bW4pIG9uXG4gKiBkZXNrdG9wIC0gdGhlIG9mZmNhbnZhcyBvdmVybGF5IGlzIGRlZmVycmVkIC0gYW5kIGFzIGEgYm90dG9tIHNoZWV0IGJlbG93XG4gKiB0aGUgbW9iaWxlIGJyZWFrcG9pbnQgKGBTaGVldGAgcG9ydGFscyBpdHNlbGYsIHNvIHRoZSBsYXlvdXQgcG9ydGFsIGlzXG4gKiBieXBhc3NlZCB0aGVyZTsgY29udGVudCByZW1vdW50cyBvbiBhIGJyZWFrcG9pbnQgY3Jvc3MpLiBEb2NrZWQgY29udGVudCBpc1xuICogd3JhcHBlZCBpbiBhIHNsb3QgdGhhdCB0cmFja3MgdGhlIGAtLWRzLWxheW91dC1zdWJuYXYtb2Zmc2V0YCB2YXIuXG4gKiBgTGF5b3V0LlJpZ2h0UGFuZWxIZWFkZXJgIC8gYExheW91dC5SaWdodFBhbmVsRm9vdGVyYCBjaGlsZHJlbiBzdGljayB0byB0aGVcbiAqIHBhbmVsIGVkZ2VzOyB0aGUgcmVtYWluaW5nIGNvbnRlbnQgc2Nyb2xscy5cbiAqL1xuZXhwb3J0IGNvbnN0IFJpZ2h0UGFuZWw6IFJlYWN0LkZDPFJpZ2h0UGFuZWxQcm9wcz4gPSAoe1xuICBjaGlsZHJlbixcbiAgZGVmYXVsdFNpemUgPSAzNzgsXG4gIG1pblNpemUgPSAzMjgsXG4gIG1heFNpemUgPSBcIjMwJVwiLFxuICBjb2xsYXBzaWJsZSA9IGZhbHNlLFxuICBvblZpc2libGVDaGFuZ2UsXG4gIG9uVmFyaWFudENoYW5nZSxcbiAgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCxcbiAgc2Nyb2xsQ29udGFpbmVyUmVmLFxuICBvblNjcm9sbCxcbn0pID0+IHtcbiAgY29uc3QgeyBpc1Zpc2libGUsIGhpZGUsIHN0YXRlIH0gPSB1c2VMYXlvdXQoKVtTbG90LnJpZ2h0UGFuZWxdO1xuICBjb25zdCB7IGlzTW9iaWxlIH0gPSB1c2VCcmVha3BvaW50cygpO1xuICBjb25zdCBjYW5SZW5kZXIgPSB1c2VDYW5SZW5kZXJQYW5lbCgpO1xuICB1c2VEZWNsYXJlUGFuZWwoU2xvdC5yaWdodFBhbmVsLCB7XG4gICAgZGVmYXVsdFNpemUsXG4gICAgbWluU2l6ZSxcbiAgICBtYXhTaXplLFxuICAgIGNvbGxhcHNpYmxlLFxuICB9KTtcbiAgdXNlUnVuQ2FsbGJhY2tPblZhbHVlQ2hhbmdlKGlzVmlzaWJsZSwgb25WaXNpYmxlQ2hhbmdlKTtcbiAgdXNlUnVuQ2FsbGJhY2tPblZhbHVlQ2hhbmdlKHN0YXRlLnZhcmlhbnQsIG9uVmFyaWFudENoYW5nZSk7XG4gIGNvbnN0IGRvY2tlZFBhbmVsID0gdXNlTGF5b3V0UG9ydGFsKFxuICAgIFNsb3QucmlnaHRQYW5lbCxcbiAgICBjYW5SZW5kZXIgJiYgaXNWaXNpYmxlICYmICFpc01vYmlsZSA/IChcbiAgICAgIDxTdHlsZWRSaWdodFBhbmVsU2xvdD5cbiAgICAgICAgPFBhbmVsQ29udGFpbmVyXG4gICAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsfVxuICAgICAgICAgIHNjcm9sbENvbnRhaW5lclJlZj17c2Nyb2xsQ29udGFpbmVyUmVmfVxuICAgICAgICAgIG9uU2Nyb2xsPXtvblNjcm9sbH1cbiAgICAgICAgICAvLyBUaGUgbGVmdCBib3JkZXIgc2VwYXJhdGVzIHRoZSBkb2NrZWQgY29sdW1uIGZyb20gdGhlIGNvbnRlbnQ7IHRoZVxuICAgICAgICAgIC8vIGZsb2F0aW5nIHdpbmRvdyBoYXMgaXRzIG93biBib3JkZXIsIHNvIGRyb3AgaXQgdGhlcmUuXG4gICAgICAgICAgc2hvd0JvcmRlckxlZnQ9e3N0YXRlLnZhcmlhbnQgIT09IFwiZmxvYXRcIn1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9QYW5lbENvbnRhaW5lcj5cbiAgICAgIDwvU3R5bGVkUmlnaHRQYW5lbFNsb3Q+XG4gICAgKSA6IG51bGxcbiAgKTtcbiAgaWYgKCFjYW5SZW5kZXIpIHJldHVybiBudWxsO1xuICBpZiAoaXNNb2JpbGUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgLy8gSW5pdGlhbCBmb2N1cyBpcyBzdXBwcmVzc2VkIHNvIG9wZW5pbmcgdGhlIHNoZWV0IG5ldmVyIHBvcHMgdGhlXG4gICAgICAvLyBvbi1zY3JlZW4ga2V5Ym9hcmQuXG4gICAgICA8U2hlZXRcbiAgICAgICAgaXNWaXNpYmxlPXtpc1Zpc2libGV9XG4gICAgICAgIG9uQ2xvc2U9e2hpZGV9XG4gICAgICAgIGhhc0JhY2tkcm9wXG4gICAgICAgIGRpc21pc3NPbk91dHNpZGVDbGlja1xuICAgICAgICBkaXNhYmxlSW5pdGlhbEZvY3VzXG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRTaGVldFBhbmVsU2hlbGw+XG4gICAgICAgICAgPFBhbmVsQ29udGFpbmVyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgICAgICBzY3JvbGxDb250YWluZXJSZWY9e3Njcm9sbENvbnRhaW5lclJlZn1cbiAgICAgICAgICAgIG9uU2Nyb2xsPXtvblNjcm9sbH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9QYW5lbENvbnRhaW5lcj5cbiAgICAgICAgPC9TdHlsZWRTaGVldFBhbmVsU2hlbGw+XG4gICAgICA8L1NoZWV0PlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGRvY2tlZFBhbmVsO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEyQjZCIn0= */");export const RightPanel=({children,defaultSize=378,minSize=328,maxSize="30%",collapsible=!1,onVisibleChange,onVariantChange,"aria-label":ariaLabel,scrollContainerRef,onScroll})=>{let{isVisible,hide,state}=useLayout()[Slot.rightPanel],{isMobile}=useBreakpoints(),canRender=useCanRenderPanel();useDeclarePanel(Slot.rightPanel,{defaultSize,minSize,maxSize,collapsible}),useRunCallbackOnValueChange(isVisible,onVisibleChange),useRunCallbackOnValueChange(state.variant,onVariantChange);let dockedPanel=useLayoutPortal(Slot.rightPanel,canRender&&isVisible&&!isMobile?React.createElement(StyledRightPanelSlot,null,React.createElement(PanelContainer,{"aria-label":ariaLabel,scrollContainerRef:scrollContainerRef,onScroll:onScroll,showBorderLeft:"float"!==state.variant},children)):null);return canRender?isMobile?React.createElement(Sheet,{isVisible:isVisible,onClose:hide,hasBackdrop:!0,dismissOnOutsideClick:!0,disableInitialFocus:!0},React.createElement(StyledSheetPanelShell,null,React.createElement(PanelContainer,{"aria-label":ariaLabel,scrollContainerRef:scrollContainerRef,onScroll:onScroll},children))):dockedPanel:null};
@@ -3,8 +3,13 @@ import type { RightPanelHeaderProps } from "../-types";
3
3
  /**
4
4
  * Optional sticky header for `Layout.RightPanel` - place it among the
5
5
  * panel's children; it sticks to the top while the rest of the content
6
- * scrolls. Renders the `title` block after `leftSlot` and always renders a
7
- * close button at the header end (after `rightSlot`) that hides the panel via
8
- * the layout state.
6
+ * scrolls. Renders the `title` block after `leftSlot` and buttons at the
7
+ * header end (after `rightSlot`): a variant toggle that minimizes the panel
8
+ * into the floating window / docks it back, and a close button that hides the
9
+ * panel via the layout state. The header travels with the panel content into
10
+ * the floating window, so the same toggle serves both directions. On mobile
11
+ * viewports the panel renders as a bottom sheet where dock/float has no
12
+ * meaning and the sheet brings its own dismiss affordances (drag handle,
13
+ * backdrop), so both built-in buttons are omitted there.
9
14
  */
10
15
  export declare function RightPanelHeader({ leftSlot, rightSlot, title, slotProps, "data-e2e-test-id": dataE2eTestId, }: RightPanelHeaderProps): React.ReactElement;
@@ -1 +1 @@
1
- import React from"react";import{Slot}from"../-constants";import{useLayout}from"../useLayout";import{Sandwich}from"../../Internal/Sandwich/Sandwich";import{PanelHeader}from"../../Internal/PanelHeader/PanelHeader";import{PictogramButton}from"../../PictogramButton/PictogramButton";export function RightPanelHeader({leftSlot,rightSlot,title,slotProps,"data-e2e-test-id":dataE2eTestId}){let{hide}=useLayout()[Slot.rightPanel];return React.createElement(Sandwich.Header,{"data-e2e-test-id":dataE2eTestId},React.createElement(PanelHeader,{leftSlot:leftSlot,title:title,rightSlot:React.createElement(React.Fragment,null,rightSlot,React.createElement(PictogramButton,{icon:"x",size:"s",variant:"tertiary","aria-label":slotProps.closeButton["aria-label"],onClick:hide}))}))}
1
+ import React from"react";import{Slot}from"../-constants";import{useLayout}from"../useLayout";import{useBreakpoints}from"../../../shared/useBreakpoints";import{Sandwich}from"../../Internal/Sandwich/Sandwich";import{PanelHeader}from"../../Internal/PanelHeader/PanelHeader";import{PictogramButton}from"../../PictogramButton/PictogramButton";export function RightPanelHeader({leftSlot,rightSlot,title,slotProps,"data-e2e-test-id":dataE2eTestId}){let{hide,setVariant,state}=useLayout()[Slot.rightPanel],{isMobile}=useBreakpoints(),isFloating="float"===state.variant;return React.createElement(Sandwich.Header,{"data-e2e-test-id":dataE2eTestId},React.createElement(PanelHeader,{leftSlot:leftSlot,title:title,rightSlot:React.createElement(React.Fragment,null,rightSlot,!isMobile&&React.createElement(React.Fragment,null,React.createElement(PictogramButton,{icon:isFloating?"open-sidebar-right":"minimize",size:"s",variant:"tertiary","aria-label":isFloating?slotProps.variantButton.dockLabel:slotProps.variantButton.minimizeLabel,onClick:()=>setVariant(isFloating?"sidebar":"float")}),React.createElement(PictogramButton,{icon:"x",size:"s",variant:"tertiary","aria-label":slotProps.closeButton["aria-label"],onClick:hide})))}))}
@@ -1 +1 @@
1
- import React from"react";import{Slot}from"../-constants";import{useDeclarePanel,useLayoutPortal}from"../registry";import{useLayout}from"../useLayout";import{PanelContainer}from"../PanelContainer";export const Split=({children,"aria-label":ariaLabel,defaultSize,minSize,maxSize})=>{let{isVisible}=useLayout()[Slot.splitview];return useDeclarePanel(Slot.splitview,{defaultSize,minSize,maxSize,collapsible:!0}),useLayoutPortal(Slot.splitview,isVisible?React.createElement(PanelContainer,{"aria-label":ariaLabel,showBorderLeft:!0},children):null)};
1
+ import React from"react";import{Slot}from"../-constants";import{useDeclarePanel,useLayoutPortal}from"../registry";import{useLayout}from"../useLayout";import{useLayoutPanelsEnabled}from"../context";import{PanelContainer}from"../PanelContainer";export const Split=({children,"aria-label":ariaLabel,defaultSize,minSize,maxSize})=>{let{isVisible}=useLayout()[Slot.splitview],panelsEnabled=useLayoutPanelsEnabled();return useDeclarePanel(Slot.splitview,{defaultSize,minSize,maxSize,collapsible:!0}),useLayoutPortal(Slot.splitview,!0===panelsEnabled&&isVisible?React.createElement(PanelContainer,{"aria-label":ariaLabel,showBorderLeft:!0},children):null)};
@@ -1,7 +1,20 @@
1
- import type { LayoutState, LayoutStorage, LayoutStore } from "./-types";
1
+ import type { LayoutPanelsMode, LayoutState, LayoutStorage, LayoutStore } from "./-types";
2
2
  export declare const LayoutStoreProvider: React.Provider<LayoutStore>;
3
3
  /** Get the store from context, or throw if used outside the provider. */
4
4
  export declare function useLayoutStore(): LayoutStore;
5
+ export declare const LayoutPanelsEnabledProvider: React.Provider<LayoutPanelsMode>;
6
+ /** The panels mode from the nearest `Layout.Provider`'s
7
+ * `config.enablePanels`; `false` when unset. */
8
+ export declare function useLayoutPanelsEnabled(): LayoutPanelsMode;
9
+ /** TEMPORARY - part of the `enablePanels` kill switch for the staged panels
10
+ * rollout; remove (together with `LayoutPanelsMode`) once panels are enabled
11
+ * everywhere.
12
+ *
13
+ * Whether the calling panel marker may render for the current viewport:
14
+ * mode `true` always allows; `"mobile"` allows only below the mobile
15
+ * breakpoint (the overlay presentations - drawer/sheet - which never mount
16
+ * the resizable row); `false` never allows. */
17
+ export declare function useCanRenderPanel(): boolean;
5
18
  /**
6
19
  * Persistence config for the layout namespace. Set on `Layout.Provider` (single
7
20
  * external surface) and read by the nested `<Layout>`. The Provider only
@@ -1 +1 @@
1
- import{createContext,useContext,useSyncExternalStore}from"react";let LayoutStoreContext=createContext(null);export const LayoutStoreProvider=LayoutStoreContext.Provider;export function useLayoutStore(){let store=useContext(LayoutStoreContext);if(!store)throw Error("useLayout must be used within a <LayoutProvider>.");return store}let LayoutPersistenceContext=createContext({});export const LayoutPersistenceProvider=LayoutPersistenceContext.Provider;export function useLayoutPersistence(){return useContext(LayoutPersistenceContext)}export function useLayoutSelector(selector){let store=useLayoutStore(),getSnapshot=()=>selector(store.getState());return useSyncExternalStore(store.subscribe,getSnapshot,getSnapshot)}
1
+ import{createContext,useContext,useSyncExternalStore}from"react";import{useBreakpoints}from"../../shared/useBreakpoints";let LayoutStoreContext=createContext(null);export const LayoutStoreProvider=LayoutStoreContext.Provider;export function useLayoutStore(){let store=useContext(LayoutStoreContext);if(!store)throw Error("useLayout must be used within a <LayoutProvider>.");return store}let LayoutPanelsEnabledContext=createContext(!1);export const LayoutPanelsEnabledProvider=LayoutPanelsEnabledContext.Provider;export function useLayoutPanelsEnabled(){return useContext(LayoutPanelsEnabledContext)}export function useCanRenderPanel(){let mode=useLayoutPanelsEnabled(),{isMobile}=useBreakpoints();return!0===mode||"mobile"===mode&&isMobile}let LayoutPersistenceContext=createContext({});export const LayoutPersistenceProvider=LayoutPersistenceContext.Provider;export function useLayoutPersistence(){return useContext(LayoutPersistenceContext)}export function useLayoutSelector(selector){let store=useLayoutStore(),getSnapshot=()=>selector(store.getState());return useSyncExternalStore(store.subscribe,getSnapshot,getSnapshot)}
@@ -1,6 +1,7 @@
1
1
  import { type ReactNode } from "react";
2
+ import type { PanelImperativeHandle } from "react-resizable-panels";
2
3
  import type { Size, SlotKey } from "./-types";
3
- export type HostNodes = Partial<Record<SlotKey, HTMLElement | null>>;
4
+ export type PortalTargets = Partial<Record<SlotKey, HTMLElement | null>>;
4
5
  export declare const LayoutPortalContext: React.Context<Partial<Record<"content" | "leftPanel" | "splitview" | "rightPanel", HTMLElement>>>;
5
6
  /**
6
7
  * Portal `children` into the host DOM node registered for `slot`. Returns the
@@ -27,5 +28,41 @@ export type PanelRegistry = {
27
28
  export declare const PanelRegistryContext: React.Context<PanelRegistry>;
28
29
  /** Register this slot as a panel for the marker's lifetime. */
29
30
  export declare function useDeclarePanel(slot: SlotKey, reg: PanelReg): void;
31
+ /**
32
+ * Keeps an animating-out panel in the resizable row while its exit plays - the
33
+ * Group would otherwise drop the column the instant it's hidden. The panel
34
+ * reports its live presence (mounted incl. mid-exit); the Layout keeps any
35
+ * present slot in the row until presence flips false.
36
+ */
37
+ export type PanelPresence = {
38
+ setPresent: (slot: SlotKey, isPresent: boolean) => void;
39
+ };
40
+ export declare const PanelPresenceContext: React.Context<PanelPresence>;
41
+ /** Report this slot's live presence so the Layout keeps its column mounted
42
+ * through the exit animation. No-op outside a Layout. */
43
+ export declare function usePanelPresence(slot: SlotKey, isPresent: boolean): void;
44
+ /**
45
+ * Lets a sliding side panel reach its column's `react-resizable-panels`
46
+ * imperative handle and DOM element, and mute the Group's layout callbacks
47
+ * mid-slide - the 0-width start of an open would otherwise be read as a
48
+ * drag-to-collapse, and mid-slide sizes would be persisted.
49
+ */
50
+ export type PanelAnimationControl = {
51
+ /** Register/clear the RRP handle for a slot's column (wired by the Group). */
52
+ setHandle: (slot: SlotKey, handle: PanelImperativeHandle | null) => void;
53
+ /** Read a slot's current RRP handle (null until its column has mounted). */
54
+ getHandle: (slot: SlotKey) => PanelImperativeHandle | null;
55
+ /** Register/clear the DOM element for a slot's column (wired by the Group). */
56
+ setElement: (slot: SlotKey, element: HTMLElement | null) => void;
57
+ /** Read a slot's column element (null until its column has mounted). */
58
+ getElement: (slot: SlotKey) => HTMLElement | null;
59
+ /** Mute the Group's resize/collapse/persist callbacks for a slot mid-slide. */
60
+ setResizeSuppressed: (slot: SlotKey, suppressed: boolean) => void;
61
+ };
62
+ export declare const PanelAnimationContext: React.Context<PanelAnimationControl>;
63
+ /** Access the Layout's panel-animation control. Null outside a Layout. */
64
+ export declare function usePanelAnimationControl(): PanelAnimationControl | null;
65
+ /** Run `onChange(value)` when `value` transitions (not on initial mount). */
66
+ export declare function useRunCallbackOnValueChange<T>(value: T, onChange?: (value: T) => void): void;
30
67
  /** Fire `onChange(visible)` when `visible` transitions (not on initial mount). */
31
68
  export declare function useVisibleChange(visible: boolean, onChange?: (visible: boolean) => void): void;
@@ -1 +1 @@
1
- import{createContext,useContext,useEffect,useLayoutEffect,useRef}from"react";import{createPortal}from"react-dom";export const LayoutPortalContext=createContext({});export function useLayoutPortal(slot,children){let slotNode=useContext(LayoutPortalContext)[slot]??null;return slotNode?createPortal(children,slotNode):null}export const PanelRegistryContext=createContext(null);export function useDeclarePanel(slot,reg){let registry=useContext(PanelRegistryContext),{defaultSize,minSize,maxSize,collapsible}=reg;useLayoutEffect(()=>{if(registry)return registry.register(slot,{defaultSize,minSize,maxSize,collapsible}),()=>registry.unregister(slot)},[registry,slot,defaultSize,minSize,maxSize,collapsible])}export function useVisibleChange(visible,onChange){let prev=useRef(visible);useEffect(()=>{prev.current!==visible&&(prev.current=visible,onChange?.(visible))},[visible,onChange])}
1
+ import{createContext,useContext,useEffect,useLayoutEffect,useRef}from"react";import{createPortal}from"react-dom";import{Slot}from"./-constants";import{useLayoutPanelsEnabled}from"./context";export const LayoutPortalContext=createContext({});export function useLayoutPortal(slot,children){let slotNode=useContext(LayoutPortalContext)[slot]??null;return slotNode?createPortal(children,slotNode):null}export const PanelRegistryContext=createContext(null);export function useDeclarePanel(slot,reg){let registry=useContext(PanelRegistryContext),declarationEnabled=!0===useLayoutPanelsEnabled()||slot===Slot.content,{defaultSize,minSize,maxSize,collapsible}=reg;useLayoutEffect(()=>{if(registry&&declarationEnabled)return registry.register(slot,{defaultSize,minSize,maxSize,collapsible}),()=>registry.unregister(slot)},[registry,declarationEnabled,slot,defaultSize,minSize,maxSize,collapsible])}export const PanelPresenceContext=createContext(null);export function usePanelPresence(slot,isPresent){let presence=useContext(PanelPresenceContext);useLayoutEffect(()=>{if(presence)return presence.setPresent(slot,isPresent),()=>presence.setPresent(slot,!1)},[presence,slot,isPresent])}export const PanelAnimationContext=createContext(null);export function usePanelAnimationControl(){return useContext(PanelAnimationContext)}export function useRunCallbackOnValueChange(value,onChange){let prev=useRef(value);useEffect(()=>{prev.current!==value&&(prev.current=value,onChange?.(value))},[value,onChange])}export function useVisibleChange(visible,onChange){useRunCallbackOnValueChange(visible,onChange)}
@@ -0,0 +1,37 @@
1
+ import type { PortalTargets } from "./registry";
2
+ import type { SlotKey } from "./-types";
3
+ /**
4
+ * Portal-target wiring for the Layout, including the one slot that can float.
5
+ *
6
+ * The vocabulary:
7
+ * - **slot host** - the `<div>` a panel occupies in the docked row (one per
8
+ * shown slot, captured via ref).
9
+ * - **float host** - the `<div>` inside the floating window's shell.
10
+ * - **carrier** - a persistent `<div>` that carries the floatable slot's
11
+ * children, physically reparented between its slot host (docked) and the
12
+ * float host (floating).
13
+ * - **portal target** - what a marker portals its content into. For normal
14
+ * slots the target IS the slot host; for the floatable slot it is the
15
+ * carrier, whose identity never changes - so the panel's children keep
16
+ * their state across dock ↔ float instead of remounting.
17
+ */
18
+ type FloatablePortalTargetsArgs = {
19
+ /** All slots, in row order. */
20
+ slots: readonly SlotKey[];
21
+ /** The single slot whose content may move into the floating window. */
22
+ floatableSlot: SlotKey;
23
+ /** Whether the floatable slot is currently floating. */
24
+ isFloating: boolean;
25
+ };
26
+ type FloatablePortalTargetsResult = {
27
+ /** Per-slot portal targets - what markers portal content into. */
28
+ portalTargets: PortalTargets;
29
+ /** The docked-row host elements, keyed by slot (for width observers etc.). */
30
+ slotHosts: PortalTargets;
31
+ /** Stable ref callbacks - attach one to each slot's docked host `<div>`. */
32
+ slotHostRefs: Record<SlotKey, (el: HTMLElement | null) => void>;
33
+ /** Ref callback for the floating window's content host `<div>`. */
34
+ floatHostRef: (el: HTMLElement | null) => void;
35
+ };
36
+ export declare const useFloatablePortalTargets: ({ slots, floatableSlot, isFloating, }: FloatablePortalTargetsArgs) => FloatablePortalTargetsResult;
37
+ export {};
@@ -0,0 +1 @@
1
+ import{useLayoutEffect,useMemo,useState}from"react";import{useDocument}from"../../shared/useDocument";let usePortalContainerRefs=keys=>{let[elements,setElements]=useState({});return[elements,useMemo(()=>{let map={};return keys.forEach(key=>{map[key]=el=>setElements(prev=>prev[key]===el?prev:{...prev,[key]:el})}),map},[keys])]},useReparentingPortalNode=hostNode=>{let document=useDocument(),[portalNode]=useState(()=>{if(!document)return null;let node=document.createElement("div");return node.style.height="100%",node.style.width="100%",node.style.position="relative",node});return useLayoutEffect(()=>{portalNode&&hostNode&&portalNode.parentElement!==hostNode&&hostNode.appendChild(portalNode)},[portalNode,hostNode]),portalNode};export const useFloatablePortalTargets=({slots,floatableSlot,isFloating})=>{let[slotHosts,slotHostRefs]=usePortalContainerRefs(slots),[floatHost,setFloatHost]=useState(null),carrier=useReparentingPortalNode(isFloating?floatHost:slotHosts[floatableSlot]??null);return{portalTargets:useMemo(()=>carrier?{...slotHosts,[floatableSlot]:carrier}:slotHosts,[slotHosts,floatableSlot,carrier]),slotHosts,slotHostRefs,floatHostRef:setFloatHost}};
@@ -0,0 +1,28 @@
1
+ import type { SidePanelKey } from "./-constants";
2
+ import type { Size } from "./-types";
3
+ export type PanelDockedSlideOptions = {
4
+ /** Which side-panel slot this animates. */
5
+ slot: SidePanelKey;
6
+ defaultSize?: Size;
7
+ minSize?: Size;
8
+ maxSize?: Size;
9
+ collapsible: boolean;
10
+ };
11
+ export type PanelDockedSlide = {
12
+ /** Whether the panel's content should render at all (entering, open, or
13
+ * mid-exit). Kept true through the close so the exit slide can play. */
14
+ isMounted: boolean;
15
+ /** Body width (px) while the column slides; `null` at rest, where the body
16
+ * fills the column and the panel stays resizable. */
17
+ pinnedWidth: number | null;
18
+ };
19
+ /**
20
+ * Animates a docked side panel's open/close as a width slide on its
21
+ * `react-resizable-panels` column, pushing neighbouring content smoothly
22
+ * instead of snapping. Slot-generic - works for either side panel; render the
23
+ * returned state with {@link PanelSlideBody}. Falls back to an instant
24
+ * open/close when the panel isn't collapsible, no handle is available, or
25
+ * reduced motion is requested. The mobile modal-drawer lifecycle lives in
26
+ * {@link useExitAnimation} and the Drawer's styled components.
27
+ */
28
+ export declare function usePanelDockedSlide({ slot, defaultSize, minSize, maxSize, collapsible, }: PanelDockedSlideOptions): PanelDockedSlide;
@@ -0,0 +1 @@
1
+ import{useLayoutEffect,useState}from"react";import{useTheme}from"@emotion/react";import{useWindow}from"../../shared/useWindow";import{prefersReducedMotion}from"../../shared/prefersReducedMotion";import{useDeclarePanel,usePanelAnimationControl,usePanelPresence}from"./registry";import{useLayout}from"./useLayout";let parseDurationMs=duration=>{let trimmed=duration.trim();return trimmed.endsWith("ms")?parseFloat(trimmed):trimmed.endsWith("s")?1e3*parseFloat(trimmed):parseFloat(trimmed)||0},resolveSizePx=(size,groupWidthPx)=>{if("number"==typeof size)return size;if("string"!=typeof size)return null;let parsed=parseFloat(size);return Number.isFinite(parsed)?size.trim().endsWith("px")?parsed:null!=groupWidthPx?parsed/100*groupWidthPx:null:null},groupColumnsOf=element=>{let columns=element.closest("[data-group]")?.querySelectorAll("[data-panel]");return columns?Array.from(columns):[element]},isHandleReady=handle=>{try{return handle.isCollapsed(),!0}catch{return!1}};export function usePanelDockedSlide({slot,defaultSize,minSize,maxSize,collapsible}){let{isVisible,state}=useLayout()[slot],theme=useTheme(),window=useWindow(),animation=usePanelAnimationControl(),reducedMotion=prefersReducedMotion(window),[isMounted,setIsMounted]=useState(isVisible),[phase,setPhase]=useState("idle"),[pinnedWidth,setPinnedWidth]=useState(null),[prevVisible,setPrevVisible]=useState(isVisible);return isVisible!==prevVisible&&(setPrevVisible(isVisible),setPhase(isVisible?"entering":"exiting"),isVisible&&setIsMounted(!0)),useDeclarePanel(slot,{defaultSize:"entering"===phase&&collapsible&&!reducedMotion?0:defaultSize,minSize,maxSize,collapsible}),usePanelPresence(slot,isMounted),useLayoutEffect(()=>{if("idle"===phase)return;let cancelled=!1,frame=0,settleTimer=0,animatedColumns=[];animation?.setResizeSuppressed(slot,!0);let{duration,timingFunction}=theme.variables.animation.navSlide.open,durationMs=parseDurationMs(duration),setColumnTransitions=enabled=>{animatedColumns.forEach(column=>{enabled?column.style.setProperty("transition",`flex-grow ${duration} ${timingFunction}`):column.style.removeProperty("transition")})},targetSize=state.size??defaultSize??minSize,openColumn=(handle,targetPx)=>{handle.isCollapsed()&&handle.expand(),handle.resize(targetPx??targetSize??minSize??"20%")},settle=handle=>{if(setColumnTransitions(!1),animation?.setResizeSuppressed(slot,!1),"entering"===phase&&handle)try{handle.getSize().inPixels<1&&openColumn(handle,null)}catch{}setPinnedWidth(null),"exiting"===phase&&setIsMounted(!1),setPhase("idle")},runSlide=(handle,element)=>{animatedColumns=groupColumnsOf(element);let targetPx=resolveSizePx(targetSize,element.closest("[data-group]")?.getBoundingClientRect().width??null);setPinnedWidth("entering"===phase?targetPx:handle.getSize().inPixels),setColumnTransitions(!0),element.getBoundingClientRect();try{"entering"===phase?openColumn(handle,targetPx):handle.collapse()}catch{settle(handle);return}settleTimer=window.setTimeout(()=>settle(handle),durationMs+80)},waitForColumn=attempt=>{if(cancelled)return;let handle=animation?.getHandle(slot)??null,element=animation?.getElement(slot)??null;return handle&&element&&isHandleReady(handle)?void runSlide(handle,element):"exiting"===phase||!animation||attempt>=30?void settle(handle):void(frame=window.requestAnimationFrame(()=>waitForColumn(attempt+1)))};return!collapsible||reducedMotion?settle(animation?.getHandle(slot)??null):waitForColumn(0),()=>{cancelled=!0,window.cancelAnimationFrame(frame),window.clearTimeout(settleTimer),setColumnTransitions(!1),animation?.setResizeSuppressed(slot,!1)}},[phase,slot,collapsible,animation,window,theme]),{isMounted,pinnedWidth}}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Whether the user has requested reduced motion. Animations should skip to
3
+ * their end state when this is true. Pass the `window` from `useWindow()` rather
4
+ * than the global. Returns `false` when `matchMedia` is unavailable (e.g. jsdom).
5
+ */
6
+ export declare const prefersReducedMotion: (window: Window) => boolean;
@@ -0,0 +1 @@
1
+ export const prefersReducedMotion=window=>!!window.matchMedia?.("(prefers-reduced-motion: reduce)")?.matches;