@netless/fastboard-react 0.2.6 → 0.2.9

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 (35) hide show
  1. package/dist/index.js +3281 -342
  2. package/dist/index.js.map +1 -1
  3. package/dist/index.mjs +3245 -306
  4. package/dist/index.mjs.map +1 -1
  5. package/package.json +10 -15
  6. package/src/components/Fastboard.scss +6 -1
  7. package/src/components/Fastboard.tsx +3 -2
  8. package/src/components/PageControl/PageControl.scss +15 -11
  9. package/src/components/PageControl/PageControl.tsx +15 -17
  10. package/src/components/PlayerControl/PlayerControl.scss +13 -12
  11. package/src/components/PlayerControl/PlayerControl.tsx +3 -3
  12. package/src/components/RedoUndo/RedoUndo.scss +10 -10
  13. package/src/components/ReplayFastboard.tsx +36 -0
  14. package/src/components/Toolbar/Toolbar.scss +54 -15
  15. package/src/components/Toolbar/components/AppsButton.tsx +41 -8
  16. package/src/components/Toolbar/components/ShapesButton.tsx +11 -3
  17. package/src/components/Toolbar/hooks.ts +9 -0
  18. package/src/components/Toolbar/icons/Laser.tsx +21 -0
  19. package/src/components/Toolbar/icons/Loading.tsx +13 -0
  20. package/src/components/ZoomControl/ZoomControl.scss +15 -11
  21. package/src/components/ZoomControl/ZoomControl.tsx +4 -2
  22. package/src/components/tippy-util.ts +18 -0
  23. package/src/icons/Left.tsx +15 -0
  24. package/src/icons/Minus.tsx +2 -2
  25. package/src/icons/Plus.tsx +2 -2
  26. package/src/icons/Redo.tsx +6 -5
  27. package/src/icons/Reset.tsx +4 -6
  28. package/src/icons/Right.tsx +15 -0
  29. package/src/icons/Undo.tsx +6 -5
  30. package/src/icons/WhiteboardAdd.tsx +26 -0
  31. package/src/index.ts +1 -0
  32. package/src/vanilla/index.tsx +14 -4
  33. package/src/icons/ChevronLeft.tsx +0 -21
  34. package/src/icons/ChevronRight.tsx +0 -21
  35. package/src/icons/FilePlus.tsx +0 -18
package/dist/index.js CHANGED
@@ -64,11 +64,13 @@ __export(src_exports, {
64
64
  PageControl: () => PageControl,
65
65
  PlayerControl: () => PlayerControl,
66
66
  RedoUndo: () => RedoUndo,
67
+ ReplayFastboard: () => ReplayFastboard,
67
68
  ScalePoints: () => ScalePoints,
68
69
  ThemeContext: () => ThemeContext,
69
70
  Toolbar: () => Toolbar,
70
71
  ZoomControl: () => ZoomControl,
71
72
  mount: () => mount,
73
+ useAppsStatus: () => useAppsStatus,
72
74
  useBoxState: () => useBoxState,
73
75
  useFastboardApp: () => useFastboardApp,
74
76
  useFastboardValue: () => useFastboardValue,
@@ -95,8 +97,8 @@ function applyStyles(css) {
95
97
  document.head.appendChild(el);
96
98
  return el;
97
99
  }
98
- function clamp(value, min, max) {
99
- return value < min ? min : value > max ? max : value;
100
+ function clamp(value, min2, max2) {
101
+ return value < min2 ? min2 : value > max2 ? max2 : value;
100
102
  }
101
103
  function isEqualArray(a, b) {
102
104
  return a.length === b.length && a.every((e, i) => e === b[i]);
@@ -123,10 +125,10 @@ function useLastValue(value) {
123
125
  }, [value]);
124
126
  return ref.current;
125
127
  }
126
- function useAsyncValue(fn) {
128
+ function useAsyncValue(fn2) {
127
129
  const [value, setValue] = (0, import_react.useState)(null);
128
130
  (0, import_react.useEffect)(() => {
129
- fn().then(setValue);
131
+ fn2().then(setValue);
130
132
  }, []);
131
133
  return value;
132
134
  }
@@ -136,7 +138,7 @@ function useForceUpdate() {
136
138
  }
137
139
 
138
140
  // src/style.scss?inline
139
- var style_default = '.netless-window-manager-playground{width:100%;height:100%;position:relative;z-index:1;overflow:hidden;user-select:none}.netless-window-manager-sizer{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;overflow:hidden;display:flex}.netless-window-manager-sizer-horizontal{flex-direction:column}.netless-window-manager-sizer:before,.netless-window-manager-sizer:after{flex:1;content:"";display:block}.netless-window-manager-chess-sizer:before,.netless-window-manager-chess-sizer:after{background-image:linear-gradient(45deg,#b0b0b0 25%,transparent 25%),linear-gradient(-45deg,#b0b0b0 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#b0b0b0 75%),linear-gradient(-45deg,transparent 75%,#b0b0b0 75%);background-color:#fff;background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px}.netless-window-manager-wrapper{position:relative;z-index:1;width:100%;height:100%;overflow:hidden}.netless-window-manager-main-view{width:100%;height:100%}.netless-window-manager-cursor-pencil-image,.netless-window-manager-cursor-eraser-image{width:26px;height:26px}.netless-window-manager-cursor-selector-image{width:24px;height:24px}.netless-window-manager-cursor-selector-avatar{border-radius:50%;border-style:solid;border-width:2px;border-color:#fff;margin-bottom:2px}.netless-window-manager-cursor-selector-avatar img{width:12px}.netless-window-manager-cursor-inner{border-radius:4px;display:flex;align-items:center;justify-content:center;flex-direction:row;padding-left:4px;padding-right:4px;font-size:12px}.netless-window-manager-cursor-inner-mellow{height:32px;border-radius:16px;display:flex;align-items:center;justify-content:center;flex-direction:row;padding-left:16px;padding-right:16px}.netless-window-manager-cursor-tag-name{font-size:12px;margin-left:4px;padding:2px 8px;border-radius:4px}.netless-window-manager-cursor-mid{display:flex;flex-direction:column;align-items:center;justify-content:center;position:absolute;width:26px;height:26px;z-index:2147483647;left:0;top:0;will-change:transform;transition:transform .1s;transform-origin:0 0;user-select:none}.netless-window-manager-cursor-pencil-offset{margin-left:-20px}.netless-window-manager-cursor-selector-offset{margin-left:-22px;margin-top:56px}.netless-window-manager-cursor-text-offset{margin-left:-30px;margin-top:18px}.netless-window-manager-cursor-shape-offset{display:flex;flex-direction:column;align-items:center;justify-content:center;position:absolute;width:180px;height:64px;margin-left:-30px;margin-top:12px}.netless-window-manager-cursor-laserPointer-image{margin-left:-22px;margin-top:3px}.netless-window-manager-cursor-name{width:100%;height:48px;display:flex;align-items:center;justify-content:center;position:absolute;top:-40px}.cursor-image-wrapper{display:flex;justify-content:center}.telebox-collector{position:absolute;right:10px;bottom:15px}.tele-fancy-scrollbar{overscroll-behavior:contain;overflow:auto;overflow-y:scroll;overflow-y:overlay;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;scrollbar-width:auto}.tele-fancy-scrollbar::-webkit-scrollbar{height:8px;width:8px}.tele-fancy-scrollbar::-webkit-scrollbar-track{background-color:transparent}.tele-fancy-scrollbar::-webkit-scrollbar-thumb{background-color:#444e601a;background-color:transparent;border-radius:4px;transition:background-color .4s}.tele-fancy-scrollbar:hover::-webkit-scrollbar-thumb{background-color:#444e601a}.tele-fancy-scrollbar::-webkit-scrollbar-thumb:hover{background-color:#444e6033}.tele-fancy-scrollbar::-webkit-scrollbar-thumb:active{background-color:#444e6033}.tele-fancy-scrollbar::-webkit-scrollbar-thumb:vertical{min-height:50px}.tele-fancy-scrollbar::-webkit-scrollbar-thumb:horizontal{min-width:50px}.telebox-box{position:absolute;top:0;left:0;z-index:100;transition:width .4s cubic-bezier(.4,.9,.71,1.02),height .4s cubic-bezier(.55,.82,.63,.95),opacity .6s cubic-bezier(.7,0,.84,0),transform .4s ease}.telebox-box-main{position:relative;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden;background:#f9f9fc;box-shadow:0 4px 10px #2f419226;border-radius:6px;border:1px solid #e3e3ec}.telebox-titlebar-wrap{flex-shrink:0;position:relative;z-index:1}.telebox-content-wrap{flex:1;width:100%;overflow:hidden;display:flex;justify-content:center;align-items:center}.telebox-content{width:100%;height:100%;position:relative}.telebox-footer-wrap{flex-shrink:0;display:flex;flex-direction:column}.telebox-footer-wrap:before{content:"";display:block;flex:1}.telebox-resize-handle{position:absolute;z-index:2147483647}.telebox-n{width:100%;height:5px;left:0;top:-5px;cursor:n-resize}.telebox-s{width:100%;height:5px;left:0;bottom:-5px;cursor:s-resize}.telebox-w{width:5px;height:100%;left:-5px;top:0;cursor:w-resize}.telebox-e{width:5px;height:100%;right:-5px;top:0;cursor:e-resize}.telebox-nw{width:15px;height:15px;top:-5px;left:-5px;cursor:nw-resize}.telebox-ne{width:15px;height:15px;top:-5px;right:-5px;cursor:ne-resize}.telebox-se{width:15px;height:15px;bottom:-5px;right:-5px;cursor:se-resize}.telebox-sw{width:15px;height:15px;bottom:-5px;left:-5px;cursor:sw-resize}.telebox-track-mask{position:fixed;top:0;left:0;z-index:2147483647;width:100%;height:100%;background:rgba(0,0,0,.0001);cursor:move}.telebox-cursor-n{cursor:n-resize}.telebox-cursor-s{cursor:s-resize}.telebox-cursor-w{cursor:w-resize}.telebox-cursor-e{cursor:e-resize}.telebox-cursor-nw{cursor:nw-resize}.telebox-cursor-ne{cursor:ne-resize}.telebox-cursor-se{cursor:se-resize}.telebox-cursor-sw{cursor:sw-resize}.telebox-maximized .telebox-resize-handles,.telebox-no-resize .telebox-resize-handles{display:none}.telebox-maximized{box-shadow:none;transition:none}.telebox-minimized{transition:width 50ms cubic-bezier(.4,.9,.71,1.02),height 50ms cubic-bezier(.55,.82,.63,.95),opacity .6s cubic-bezier(.7,0,.84,0),transform .6s ease;opacity:0;pointer-events:none;user-select:none}.telebox-transforming{will-change:transform;transition:opacity .6s cubic-bezier(.7,0,.84,0)}.telebox-readonly .telebox-resize-handle{cursor:initial!important;pointer-events:none!important}.telebox-color-scheme-dark .telebox-box-main{color:#e9e9e9;background:#212126;border-color:#43434d}.telebox-titlebar{box-sizing:border-box;height:26px;display:flex;align-items:center;padding:0 16px;background:#fff;user-select:none;border-bottom:1px solid #eeeef7;touch-action:manipulation}.telebox-title-area{overflow:hidden;position:relative;height:100%;flex:1;display:flex;align-items:center}.telebox-title{overflow:hidden;margin:0;padding:0;font-size:14px;font-weight:400;font-family:PingFangSC-Regular,PingFang SC;white-space:nowrap;word-break:keep-all;text-overflow:ellipsis;color:#191919}.telebox-drag-area{position:absolute;inset:0;margin:auto;z-index:10}.telebox-titlebar-btns{white-space:nowrap;word-break:keep-all;margin-left:auto;font-size:0}.telebox-titlebar-btn{width:22px;height:22px;padding:0;outline:0;border:none;background:0 0;cursor:pointer}.telebox-titlebar-btn~.telebox-titlebar-btn{margin-left:10px}.telebox-titlebar-btn-icon{width:22px;height:22px}.telebox-readonly .telebox-titlebar-btn{cursor:not-allowed}.telebox-titlebar-icon-minimize{background:center/cover no-repeat url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjggMjgiPgogICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjh2MjhIMHoiIC8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj4KICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjYSIgLz4KICAgICAgICA8L21hc2s+CiAgICAgICAgPHBhdGggZmlsbD0iI0E3QTdDQSIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOSAxM2gxMHYxLjZIOXoiIG1hc2s9InVybCgjYikiIC8+CiAgICA8L2c+Cjwvc3ZnPgo=)}.telebox-titlebar-icon-maximize{background:center/cover no-repeat url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjggMjgiPgogICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjh2MjhIMHoiIC8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj4KICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjYSIgLz4KICAgICAgICA8L21hc2s+CiAgICAgICAgPGcgZmlsbD0iI0E3QTdDQSIgZmlsbC1ydWxlPSJub256ZXJvIiBtYXNrPSJ1cmwoI2IpIj4KICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgIGQ9Ik0yMC40ODEgMTcuMWgxLjJ2NC41ODFIMTcuMXYtMS4yaDMuMzgxVjE3LjF6bS0xNC4xOTA1LS4wMDloMS4ydjMuMzgxaDMuMzgwOXYxLjJoLTQuNTgxdi00LjU4MXpNMTcuMSA2LjE5MDVoNC41ODF2NC41ODA5aC0xLjJ2LTMuMzgxSDE3LjF2LTEuMnptLTEwLjcwMDguMTA4N2g0Ljc5ODV2MS4ySDcuNTk5MnYzLjU5ODVoLTEuMlY2LjI5OTJ6IiAvPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==)}.telebox-titlebar-icon-maximize.is-active{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjggMjgiPgogICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjZ2MjZIMHoiIC8+CiAgICAgICAgPHBhdGggaWQ9ImMiIGQ9Ik0yNi44NjkgMEwyOCAxLjEzMVYyNi44N0wyNi44NjkgMjhIMS4xM0wwIDI2Ljg3VjEuMTMxTDEuMTMgMHoiIC8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiPgogICAgICAgICAgICA8bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNhIiAvPgogICAgICAgICAgICA8L21hc2s+CiAgICAgICAgICAgIDxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0tNC42NDI5LTQuNjQyOWgzNS4yODU4djM1LjI4NThILTQuNjQyOXoiIG1hc2s9InVybCgjYikiIC8+CiAgICAgICAgPC9nPgogICAgICAgIDxnPgogICAgICAgICAgICA8bWFzayBpZD0iZCIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNjIiAvPgogICAgICAgICAgICA8L21hc2s+CiAgICAgICAgICAgIDxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0tMTcuNTE2OCAxNEwxNC0xNy41MTY4IDQ1LjUxNjggMTQgMTQgNDUuNTE2OHoiIG1hc2s9InVybCgjZCkiIC8+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIHN0cm9rZT0iI0E3QTdDQSIgc3Ryb2tlLXdpZHRoPSIxLjIiCiAgICAgICAgICAgIGQ9Ik0xMC4wODg2IDIxLjQ4NjV2LTMuNjk2Nkg2LjM5Mk0yMS4zODU1IDEwLjE4OTVoLTMuNjk2NlY2LjQ5M00yMS40MDIgMTcuNzk4M2gtMy42OTY2djMuNjk2Nk0xMC4yNTAzIDYuMTQ5OHYzLjg5ODVINi4zNTE3IiAvPgogICAgPC9nPgo8L3N2Zz4K)}.telebox-titlebar-icon-close{background:center/cover no-repeat url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyOCAyOCI+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iI0E3QTdDQSIgc3Ryb2tlLXdpZHRoPSIxLjQiPgogICAgICAgIDxwYXRoIGQ9Ik04LjM1MyAyMC4zMzIxTDIwLjMzMiA4LjM1M00yMC4zMzIyIDIwLjMzMjFMOC4zNTMgOC4zNTMiIC8+CiAgICA8L2c+Cjwvc3ZnPgo=)}.telebox-color-scheme-dark .telebox-titlebar{color:#e9e9e9;background:#43434d;border-bottom:none}.telebox-collector{visibility:hidden;display:block;position:absolute;z-index:200;width:40px;height:40px;margin:0;padding:0;border:none;outline:0;font-size:0;border-radius:50%;background:#fff;box-shadow:0 2px 6px #2f419226;cursor:pointer;user-select:none;pointer-events:none;background-repeat:no-repeat;background-size:18px 16px;background-position:center}.telebox-collector-visible{visibility:visible;pointer-events:initial}.telebox-collector-readonly{cursor:not-allowed}.telebox-color-scheme-dark.telebox-collector{background-color:#43434d}.telebox-max-titlebar{display:none;position:absolute;top:0;left:0;z-index:50000;user-select:none}.telebox-max-titlebar .telebox-drag-area{height:100%;min-width:16px;position:static;margin:0;flex-grow:1;flex-shrink:0}.telebox-max-titlebar-maximized{display:flex}.telebox-titles{height:100%;margin:0;overflow-y:hidden;overflow-x:scroll;overflow-x:overlay;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;scrollbar-width:auto}.telebox-titles::-webkit-scrollbar{height:8px;width:8px}.telebox-titles::-webkit-scrollbar-track{background-color:transparent}.telebox-titles::-webkit-scrollbar-thumb{background-color:#eeeef7cc;background-color:transparent;border-radius:4px;transition:background-color .4s}.telebox-titles:hover::-webkit-scrollbar-thumb{background-color:#eeeef7cc}.telebox-titles::-webkit-scrollbar-thumb:hover{background-color:#eeeef7}.telebox-titles::-webkit-scrollbar-thumb:active{background-color:#eeeef7}.telebox-titles::-webkit-scrollbar-thumb:vertical{min-height:50px}.telebox-titles::-webkit-scrollbar-thumb:horizontal{min-width:50px}.telebox-titles-content{height:100%;display:flex;flex-wrap:nowrap;align-items:center;padding:0}.telebox-titles-tab{height:100%;overflow:hidden;max-width:182px;min-width:50px;padding:0 26px 0 16px;outline:0;font-size:13px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;text-overflow:ellipsis;white-space:nowrap;word-break:keep-all;border:none;border-right:1px solid #e5e5f0;color:#7b88a0;background:0 0;cursor:pointer;user-select:none}.telebox-titles-tab-focus{color:#357bf6}.telebox-readonly .telebox-titles-tab{cursor:not-allowed}.telebox-color-scheme-dark{color-scheme:dark}.telebox-color-scheme-dark.telebox-titlebar{color:#e9e9e9;background:#43434d;border-bottom:none}.telebox-color-scheme-dark .telebox-titles-tab{border-right-color:#7b88a0}.telebox-color-scheme-dark .telebox-title{color:#e9e9e9}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}.tippy-box[data-theme~=light]{color:#26323d;box-shadow:0 0 20px 4px #9aa1b126,0 4px 80px -8px #24282f40,0 4px 4px -2px #5b5e6926;background-color:#fff}.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff}.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff}.tippy-box[data-theme~=light]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light]>.tippy-svg-arrow{fill:#fff}.rc-slider{position:relative;height:14px;padding:5px 0;width:100%;border-radius:6px;touch-action:none;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.rc-slider *{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.rc-slider-rail{position:absolute;width:100%;background-color:#e9e9e9;height:4px;border-radius:6px}.rc-slider-track{position:absolute;left:0;height:4px;border-radius:6px;background-color:#abe2fb}.rc-slider-handle{position:absolute;width:14px;height:14px;cursor:pointer;cursor:-webkit-grab;margin-top:-5px;cursor:grab;border-radius:50%;border:solid 2px #96dbfa;background-color:#fff;touch-action:pan-x}.rc-slider-handle-dragging.rc-slider-handle-dragging.rc-slider-handle-dragging{border-color:#57c5f7;box-shadow:0 0 0 5px #96dbfa}.rc-slider-handle:focus{outline:none}.rc-slider-handle-click-focused:focus{border-color:#96dbfa;box-shadow:unset}.rc-slider-handle:hover{border-color:#57c5f7}.rc-slider-handle:active{border-color:#57c5f7;box-shadow:0 0 5px #57c5f7;cursor:-webkit-grabbing;cursor:grabbing}.rc-slider-mark{position:absolute;top:18px;left:0;width:100%;font-size:12px}.rc-slider-mark-text{position:absolute;display:inline-block;vertical-align:middle;text-align:center;cursor:pointer;color:#999}.rc-slider-mark-text-active{color:#666}.rc-slider-step{position:absolute;width:100%;height:4px;background:transparent}.rc-slider-dot{position:absolute;bottom:-2px;margin-left:-4px;width:8px;height:8px;border:2px solid #e9e9e9;background-color:#fff;cursor:pointer;border-radius:50%;vertical-align:middle}.rc-slider-dot-active{border-color:#96dbfa}.rc-slider-dot-reverse{margin-right:-4px}.rc-slider-disabled{background-color:#e9e9e9}.rc-slider-disabled .rc-slider-track{background-color:#ccc}.rc-slider-disabled .rc-slider-handle,.rc-slider-disabled .rc-slider-dot{border-color:#ccc;box-shadow:none;background-color:#fff;cursor:not-allowed}.rc-slider-disabled .rc-slider-mark-text,.rc-slider-disabled .rc-slider-dot{cursor:not-allowed!important}.rc-slider-vertical{width:14px;height:100%;padding:0 5px}.rc-slider-vertical .rc-slider-rail{height:100%;width:4px}.rc-slider-vertical .rc-slider-track{left:5px;bottom:0;width:4px}.rc-slider-vertical .rc-slider-handle{margin-left:-5px;touch-action:pan-y}.rc-slider-vertical .rc-slider-mark{top:0;left:18px;height:100%}.rc-slider-vertical .rc-slider-step{height:100%;width:4px}.rc-slider-vertical .rc-slider-dot{left:2px;margin-bottom:-4px}.rc-slider-vertical .rc-slider-dot:first-child{margin-bottom:-4px}.rc-slider-vertical .rc-slider-dot:last-child{margin-bottom:-4px}.rc-slider-tooltip-zoom-down-enter,.rc-slider-tooltip-zoom-down-appear,.rc-slider-tooltip-zoom-down-leave{animation-duration:.3s;animation-fill-mode:both;display:block!important;animation-play-state:paused}.rc-slider-tooltip-zoom-down-enter.rc-slider-tooltip-zoom-down-enter-active,.rc-slider-tooltip-zoom-down-appear.rc-slider-tooltip-zoom-down-appear-active{animation-name:rcSliderTooltipZoomDownIn;animation-play-state:running}.rc-slider-tooltip-zoom-down-leave.rc-slider-tooltip-zoom-down-leave-active{animation-name:rcSliderTooltipZoomDownOut;animation-play-state:running}.rc-slider-tooltip-zoom-down-enter,.rc-slider-tooltip-zoom-down-appear{transform:scale(0);animation-timing-function:cubic-bezier(.23,1,.32,1)}.rc-slider-tooltip-zoom-down-leave{animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@keyframes rcSliderTooltipZoomDownIn{0%{opacity:0;transform-origin:50% 100%;transform:scale(0)}to{transform-origin:50% 100%;transform:scale(1)}}@keyframes rcSliderTooltipZoomDownOut{0%{transform-origin:50% 100%;transform:scale(1)}to{opacity:0;transform-origin:50% 100%;transform:scale(0)}}.rc-slider-tooltip{position:absolute;left:-9999px;top:-9999px;visibility:visible;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.rc-slider-tooltip *{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.rc-slider-tooltip-hidden{display:none}.rc-slider-tooltip-placement-top{padding:4px 0 8px}.rc-slider-tooltip-inner{padding:6px 2px;min-width:24px;height:24px;font-size:12px;line-height:1;color:#fff;text-align:center;text-decoration:none;background-color:#6c6c6c;border-radius:6px;box-shadow:0 0 4px #d9d9d9}.rc-slider-tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.rc-slider-tooltip-placement-top .rc-slider-tooltip-arrow{bottom:4px;left:50%;margin-left:-4px;border-width:4px 4px 0;border-top-color:#6c6c6c}.fastboard-root{position:relative;width:100%;height:100%;overflow:hidden}.fastboard-view{position:absolute;top:0;left:0;width:100%;height:100%}.fastboard-left{position:absolute;top:0;left:0;height:calc(100% - 48px);padding:16px;z-index:201;display:flex;align-items:center}.fastboard-bottom-left,.fastboard-bottom-right{display:flex;gap:10px;position:absolute;bottom:8px;left:8px;padding:8px;z-index:200}.fastboard-bottom-right{left:initial;right:8px}.fastboard-redo-undo{display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:4px;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.fastboard-redo-undo.light{color:#333;background-color:#ffffffd9;border:1px solid rgba(0,0,0,.15)}.fastboard-redo-undo.dark{color:#ddd;background-color:#333333d9;border:1px solid rgba(0,0,0,.45)}.fastboard-redo-undo-btn{appearance:none;cursor:pointer;margin:0;border:0;padding:0;width:24px;height:24px;background-color:transparent;border-radius:4px;font-size:24px;line-height:1}.fastboard-redo-undo-btn svg,.fastboard-redo-undo-btn img{width:1em;height:1em}.fastboard-redo-undo-btn:disabled{opacity:.5;cursor:not-allowed}.fastboard-redo-undo-btn.light:not(:disabled):hover{background-color:#3381ff1a}.fastboard-redo-undo-btn.dark:not(:disabled):hover{background-color:#3381ff40}.fastboard-page-control{display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:4px;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.fastboard-page-control.light{color:#333;background-color:#ffffffd9;border:1px solid rgba(0,0,0,.15)}.fastboard-page-control.dark{color:#ddd;background-color:#333333d9;border:1px solid rgba(0,0,0,.45)}.fastboard-page-control-btn{appearance:none;cursor:pointer;margin:0;border:0;padding:0;width:24px;height:24px;background-color:transparent;border-radius:4px;font-size:24px;line-height:1}.fastboard-page-control-btn svg,.fastboard-page-control-btn img{width:1em;height:1em}.fastboard-page-control-btn:disabled{opacity:.5;cursor:not-allowed}.fastboard-page-control-btn.light:not(:disabled):hover{background-color:#3381ff1a}.fastboard-page-control-btn.dark:not(:disabled):hover{background-color:#3381ff40}.fastboard-page-control-cut-line{height:24px;width:.5px}.fastboard-page-control-cut-line.light{background-color:#e7e7e7}.fastboard-page-control-cut-line.dark{background-color:#ffffff26}.fastboard-page-control-slash{opacity:.6}.fastboard-page-control-page,.fastboard-page-control-slash,.fastboard-page-control-page-count{font-size:12px;font-variant-numeric:tabular-nums}.fastboard-zoom-control{position:relative;display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:4px;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.fastboard-zoom-control.light{color:#333;background-color:#ffffffd9;border:1px solid rgba(0,0,0,.15)}.fastboard-zoom-control.dark{color:#ddd;background-color:#333333d9;border:1px solid rgba(0,0,0,.45)}.fastboard-zoom-control-btn{appearance:none;cursor:pointer;margin:0;border:0;padding:0;width:24px;height:24px;background-color:transparent;border-radius:4px;font-size:24px;line-height:1}.fastboard-zoom-control-btn svg,.fastboard-zoom-control-btn img{width:1em;height:1em}.fastboard-zoom-control-btn:disabled{opacity:.5;cursor:not-allowed}.fastboard-zoom-control-btn.light:not(:disabled):hover{background-color:#3381ff1a}.fastboard-zoom-control-btn.dark:not(:disabled):hover{background-color:#3381ff40}.fastboard-zoom-control-cut-line{height:24px;width:.5px}.fastboard-zoom-control-cut-line.light{background-color:#e7e7e7}.fastboard-zoom-control-cut-line.dark{background-color:#ffffff26}.fastboard-zoom-control-percent{opacity:.6}.fastboard-zoom-control-scale,.fastboard-zoom-control-percent{font-size:12px;font-variant-numeric:tabular-nums}.fastboard-toolbar{display:flex;align-items:center;padding:4px;border-radius:4px;flex-direction:column;gap:4px;position:absolute;z-index:100;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.fastboard-toolbar .rc-slider{padding:6px 0}.fastboard-toolbar .rc-slider-rail,.fastboard-toolbar .rc-slider-track{height:2px}.fastboard-toolbar .tippy-content{padding:8px}.fastboard-toolbar .tippy-box{border:1px solid rgba(0,0,0,.15);background-color:#333333f2;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.fastboard-toolbar .tippy-box[data-theme~=light]{background-color:#fffffff2;box-shadow:0 5px 10px #00000040}.fastboard-toolbar.light{color:#333;background-color:#ffffffd9;border:1px solid rgba(0,0,0,.15)}.fastboard-toolbar.expanded{border:1px solid rgba(0,0,0,.15)}.fastboard-toolbar.dark{color:#ddd;background-color:#333333d9}.fastboard-toolbar.expanded:hover{box-shadow:0 0 5px #00000040;transform:translate(0)}.fastboard-toolbar.collapsed{padding:0;background-color:transparent}.fastboard-toolbar-tooltip{display:inline-flex;align-items:center;gap:4px}.fastboard-toolbar-hotkey{margin-right:-4px;width:24px;height:24px;border-radius:4px;background-color:#ffffff1a;display:inline-flex;align-items:center;justify-content:center}.fastboard-toolbar-btn{appearance:none;cursor:pointer;margin:0;border:0;padding:4px;width:32px;height:32px;background-color:transparent;border-radius:4px;font-size:24px;line-height:1;position:relative}.fastboard-toolbar-btn-interactive{display:inline-block;width:32px;height:32px}.fastboard-toolbar-btn svg,.fastboard-toolbar-btn img{width:100%;height:100%}.fastboard-toolbar-btn:disabled{opacity:.5;cursor:not-allowed}.fastboard-toolbar-btn.light:not(:disabled):hover{background-color:#3381ff1a}.fastboard-toolbar-btn.dark:not(:disabled):hover{background-color:#3381ff40}.fastboard-toolbar-triangle{width:0px;height:0px;border-bottom:4px solid;border-left:4px solid transparent;position:absolute;bottom:0;right:0}.fastboard-toolbar-cut-line{display:inline-block;height:.5px;width:100%}.fastboard-toolbar-cut-line.light{background-color:#e7e7e7}.fastboard-toolbar-cut-line.dark{background-color:#ffffff26}.fastboard-toolbar-section{display:inline-flex;flex-flow:column nowrap;gap:4px;scroll-behavior:smooth}.fastboard-toolbar-section.collapsed{transform:translate(-100%);transition:1s transform}.fastboard-toolbar-section+.fastboard-toolbar-mask{opacity:0;transition:.5s opacity .4s}.fastboard-toolbar-section:hover+.fastboard-toolbar-mask,.fastboard-toolbar-mask:hover{opacity:1;transition:.2s opacity}.fastboard-toolbar-panel{width:120px;padding:0;display:flex;flex-flow:column nowrap;align-items:center;gap:8px}.fastboard-toolbar-panel.apps{width:224px}.fastboard-toolbar-color-box,.fastboard-toolbar-shapes{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;align-items:center;justify-items:center}.fastboard-toolbar-color-box .fastboard-toolbar-btn,.fastboard-toolbar-shapes .fastboard-toolbar-btn{padding:0;width:24px;height:24px}.fastboard-toolbar-apps{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;align-items:center;justify-items:center}.fastboard-toolbar-apps .fastboard-toolbar-btn{width:40px;height:40px;font-size:0}.fastboard-toolbar-app-icon{padding-top:4px;display:inline-flex;flex-flow:column nowrap;align-items:center;gap:4px}.fastboard-toolbar-app-icon .fastboard-toolbar-btn{padding:0}.fastboard-toolbar-app-icon-text{font-size:12px;color:#5d5d5d;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.fastboard-toolbar-color-item{width:24px;height:24px;border-radius:4px;cursor:pointer}.fastboard-toolbar-color-item *.light:hover{background-color:#f5f5f5}.fastboard-toolbar-color-item *.dark:hover{background-color:#333}.fastboard-toolbar-color-border{width:24px;height:24px;border:1px solid transparent;border-radius:4px;display:inline-flex;align-items:center;justify-content:center}.fastboard-toolbar-color-border.active.light,.fastboard-toolbar-color-border.active.dark{border:1px solid rgba(51,129,255,.8)}.fastboard-toolbar-color-btn{margin:0;border:1px solid rgba(0,0,0,.24);padding:0;appearance:none;width:16px;height:16px;border-radius:4px;cursor:pointer}.fastboard-toolbar-color-btn:focus-visible{outline-offset:2px}.fastboard-toolbar-mask{position:absolute;left:calc(100% + 1px);top:50%;transform:translateY(-50%);opacity:.85}.fastboard-toolbar-mask.dark{left:100%}.fastboard-toolbar-mask-btn{width:17px;height:62px;cursor:pointer;opacity:.85}.fastboard-toolbar-mask-btn.dark{filter:invert(.8)}.fastboard-toolbar-expand-btn{display:flex;align-items:center;position:absolute;left:0}.fastboard-player-control{width:100%;display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:4px;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.fastboard-player-control.auto-hide{opacity:0;transition:opacity .2s}.fastboard-player-control.auto-hide:hover{opacity:1}.fastboard-player-control .rc-slider-disabled{background:transparent;opacity:.5}.fastboard-player-control .rc-slider-rail,.fastboard-player-control .rc-slider-track{height:2px}.fastboard-player-control .tippy-content{padding:8px}.fastboard-player-control .tippy-box{border:1px solid rgba(0,0,0,.15);background-color:#333333f2;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.fastboard-player-control .tippy-box[data-theme~=light]{background-color:#fffffff2;box-shadow:0 5px 10px #00000040}.fastboard-player-control.light{color:#333;background-color:#ffffffd9;border:1px solid rgba(0,0,0,.15)}.fastboard-player-control.dark{color:#ddd;background-color:#333333d9;border:1px solid rgba(0,0,0,.45)}.fastboard-player-control-btn{appearance:none;cursor:pointer;margin:0;border:0;padding:0;min-width:24px;height:24px;background-color:transparent;border-radius:4px;font-size:24px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.fastboard-player-control-btn svg,.fastboard-player-control-btn img{width:1em;height:1em}.fastboard-player-control-btn:disabled{opacity:.5;cursor:not-allowed}.fastboard-player-control-btn.light:not(:disabled):hover{background-color:#3381ff1a}.fastboard-player-control-btn.dark:not(:disabled):hover{background-color:#3381ff40}.fastboard-player-control-btn.loading{animation:fastboard-player-control-rotate .5s linear infinite}@keyframes fastboard-player-control-rotate{to{transform:rotate(360deg)}}.fastboard-player-control-panel{padding:0;display:flex;flex-flow:column nowrap;align-items:stretch;gap:4px}.fastboard-player-control-panel .fastboard-player-control-btn{width:initial;height:initial;user-select:none;font-size:12px;padding:4px;justify-content:flex-end}.fastboard-player-control-panel .fastboard-player-control-btn.active{color:#3381ff}.fastboard-player-control-slider{width:100%;padding:0 7px}.fastboard-player-control-slider.loading{cursor:not-allowed}.fastboard-player-control-slash{opacity:.6}.fastboard-player-control-current,.fastboard-player-control-slash,.fastboard-player-control-total,.fastboard-player-control-speed-text{font-size:12px;font-variant-numeric:tabular-nums}.tippy-box.fastboard-tip{color:#eee;background-color:#000000f2;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.tippy-box.fastboard-tip[data-placement^=right]>.tippy-arrow:before{top:4px;border-width:4px;border-right-color:#000}.tippy-box.fastboard-tip[data-placement^=top]>.tippy-arrow:before{left:4px;border-width:4px;border-top-color:#000}\n';
141
+ var style_default = '@charset "UTF-8";.vjs-modal-dialog .vjs-modal-dialog-content,.video-js .vjs-modal-dialog,.vjs-button>.vjs-icon-placeholder:before,.video-js .vjs-big-play-button .vjs-icon-placeholder:before{position:absolute;top:0;left:0;width:100%;height:100%}.vjs-button>.vjs-icon-placeholder:before,.video-js .vjs-big-play-button .vjs-icon-placeholder:before{text-align:center}@font-face{font-family:VideoJS;src:url(data:application/font-woff;charset=utf-8;base64,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) format("woff");font-weight:400;font-style:normal}.vjs-icon-play,.video-js .vjs-play-control .vjs-icon-placeholder,.video-js .vjs-big-play-button .vjs-icon-placeholder:before{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play:before,.video-js .vjs-play-control .vjs-icon-placeholder:before,.video-js .vjs-big-play-button .vjs-icon-placeholder:before{content:"\\f101"}.vjs-icon-play-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play-circle:before{content:"\\f102"}.vjs-icon-pause,.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-pause:before,.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder:before{content:"\\f103"}.vjs-icon-volume-mute,.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-mute:before,.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder:before{content:"\\f104"}.vjs-icon-volume-low,.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-low:before,.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder:before{content:"\\f105"}.vjs-icon-volume-mid,.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-mid:before,.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder:before{content:"\\f106"}.vjs-icon-volume-high,.video-js .vjs-mute-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-high:before,.video-js .vjs-mute-control .vjs-icon-placeholder:before{content:"\\f107"}.vjs-icon-fullscreen-enter,.video-js .vjs-fullscreen-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-fullscreen-enter:before,.video-js .vjs-fullscreen-control .vjs-icon-placeholder:before{content:"\\f108"}.vjs-icon-fullscreen-exit,.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-fullscreen-exit:before,.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder:before{content:"\\f109"}.vjs-icon-square{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-square:before{content:"\\f10a"}.vjs-icon-spinner{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-spinner:before{content:"\\f10b"}.vjs-icon-subtitles,.video-js .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js .vjs-subtitles-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-subtitles:before,.video-js .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js .vjs-subtitles-button .vjs-icon-placeholder:before{content:"\\f10c"}.vjs-icon-captions,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js .vjs-captions-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-captions:before,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js .vjs-captions-button .vjs-icon-placeholder:before{content:"\\f10d"}.vjs-icon-chapters,.video-js .vjs-chapters-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-chapters:before,.video-js .vjs-chapters-button .vjs-icon-placeholder:before{content:"\\f10e"}.vjs-icon-share{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-share:before{content:"\\f10f"}.vjs-icon-cog{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cog:before{content:"\\f110"}.vjs-icon-circle,.vjs-seek-to-live-control .vjs-icon-placeholder,.video-js .vjs-volume-level,.video-js .vjs-play-progress{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle:before,.vjs-seek-to-live-control .vjs-icon-placeholder:before,.video-js .vjs-volume-level:before,.video-js .vjs-play-progress:before{content:"\\f111"}.vjs-icon-circle-outline{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-outline:before{content:"\\f112"}.vjs-icon-circle-inner-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-inner-circle:before{content:"\\f113"}.vjs-icon-hd{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-hd:before{content:"\\f114"}.vjs-icon-cancel,.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cancel:before,.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder:before{content:"\\f115"}.vjs-icon-replay,.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-replay:before,.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder:before{content:"\\f116"}.vjs-icon-facebook{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-facebook:before{content:"\\f117"}.vjs-icon-gplus{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-gplus:before{content:"\\f118"}.vjs-icon-linkedin{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-linkedin:before{content:"\\f119"}.vjs-icon-twitter{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-twitter:before{content:"\\f11a"}.vjs-icon-tumblr{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-tumblr:before{content:"\\f11b"}.vjs-icon-pinterest{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-pinterest:before{content:"\\f11c"}.vjs-icon-audio-description,.video-js .vjs-descriptions-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-audio-description:before,.video-js .vjs-descriptions-button .vjs-icon-placeholder:before{content:"\\f11d"}.vjs-icon-audio,.video-js .vjs-audio-button .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-audio:before,.video-js .vjs-audio-button .vjs-icon-placeholder:before{content:"\\f11e"}.vjs-icon-next-item{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-next-item:before{content:"\\f11f"}.vjs-icon-previous-item{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-previous-item:before{content:"\\f120"}.vjs-icon-picture-in-picture-enter,.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-picture-in-picture-enter:before,.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder:before{content:"\\f121"}.vjs-icon-picture-in-picture-exit,.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-picture-in-picture-exit:before,.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder:before{content:"\\f122"}.video-js{display:block;vertical-align:top;box-sizing:border-box;color:#fff;background-color:#000;position:relative;padding:0;font-size:10px;line-height:1;font-weight:400;font-style:normal;font-family:Arial,Helvetica,sans-serif;word-break:initial}.video-js:-moz-full-screen{position:absolute}.video-js:-webkit-full-screen{width:100%!important;height:100%!important}.video-js[tabindex="-1"]{outline:none}.video-js *,.video-js *:before,.video-js *:after{box-sizing:inherit}.video-js ul{font-family:inherit;font-size:inherit;line-height:inherit;list-style-position:outside;margin:0}.video-js.vjs-fluid,.video-js.vjs-16-9,.video-js.vjs-4-3,.video-js.vjs-9-16,.video-js.vjs-1-1{width:100%;max-width:100%;height:0}.video-js.vjs-16-9{padding-top:56.25%}.video-js.vjs-4-3{padding-top:75%}.video-js.vjs-9-16{padding-top:177.7777777778%}.video-js.vjs-1-1{padding-top:100%}.video-js.vjs-fill{width:100%;height:100%}.video-js .vjs-tech{position:absolute;top:0;left:0;width:100%;height:100%}body.vjs-full-window{padding:0;margin:0;height:100%}.vjs-full-window .video-js.vjs-fullscreen{position:fixed;overflow:hidden;z-index:1000;inset:0}.video-js.vjs-fullscreen:not(.vjs-ios-native-fs){width:100%!important;height:100%!important;padding-top:0!important}.video-js.vjs-fullscreen.vjs-user-inactive{cursor:none}.vjs-hidden{display:none!important}.vjs-disabled{opacity:.5;cursor:default}.video-js .vjs-offscreen{height:1px;left:-9999px;position:absolute;top:0;width:1px}.vjs-lock-showing{display:block!important;opacity:1!important;visibility:visible!important}.vjs-no-js{padding:20px;color:#fff;background-color:#000;font-size:18px;font-family:Arial,Helvetica,sans-serif;text-align:center;width:300px;height:150px;margin:0 auto}.vjs-no-js a,.vjs-no-js a:visited{color:#66a8cc}.video-js .vjs-big-play-button{font-size:3em;line-height:1.5em;height:1.63332em;width:3em;display:block;position:absolute;top:10px;left:10px;padding:0;cursor:pointer;opacity:1;border:.06666em solid #fff;background-color:#2b333f;background-color:#2b333fb3;border-radius:.3em;transition:all .4s}.vjs-big-play-centered .vjs-big-play-button{top:50%;left:50%;margin-top:-.81666em;margin-left:-1.5em}.video-js:hover .vjs-big-play-button,.video-js .vjs-big-play-button:focus{border-color:#fff;background-color:#73859f;background-color:#73859f80;transition:all 0s}.vjs-controls-disabled .vjs-big-play-button,.vjs-has-started .vjs-big-play-button,.vjs-using-native-controls .vjs-big-play-button,.vjs-error .vjs-big-play-button{display:none}.vjs-has-started.vjs-paused.vjs-show-big-play-button-on-pause .vjs-big-play-button{display:block}.video-js button{background:none;border:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;text-transform:none;text-decoration:none;transition:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.vjs-control .vjs-button{width:100%;height:100%}.video-js .vjs-control.vjs-close-button{cursor:pointer;height:3em;position:absolute;right:0;top:.5em;z-index:2}.video-js .vjs-modal-dialog{background:rgba(0,0,0,.8);background:linear-gradient(180deg,rgba(0,0,0,.8),rgba(255,255,255,0));overflow:auto}.video-js .vjs-modal-dialog>*{box-sizing:border-box}.vjs-modal-dialog .vjs-modal-dialog-content{font-size:1.2em;line-height:1.5;padding:20px 24px;z-index:1}.vjs-menu-button{cursor:pointer}.vjs-menu-button.vjs-disabled{cursor:default}.vjs-workinghover .vjs-menu-button.vjs-disabled:hover .vjs-menu{display:none}.vjs-menu .vjs-menu-content{display:block;padding:0;margin:0;font-family:Arial,Helvetica,sans-serif;overflow:auto}.vjs-menu .vjs-menu-content>*{box-sizing:border-box}.vjs-scrubbing .vjs-control.vjs-menu-button:hover .vjs-menu{display:none}.vjs-menu li{list-style:none;margin:0;padding:.2em 0;line-height:1.4em;font-size:1.2em;text-align:center;text-transform:lowercase}.vjs-menu li.vjs-menu-item:focus,.vjs-menu li.vjs-menu-item:hover,.js-focus-visible .vjs-menu li.vjs-menu-item:hover{background-color:#73859f;background-color:#73859f80}.vjs-menu li.vjs-selected,.vjs-menu li.vjs-selected:focus,.vjs-menu li.vjs-selected:hover,.js-focus-visible .vjs-menu li.vjs-selected:hover{background-color:#fff;color:#2b333f}.video-js .vjs-menu *:not(.vjs-selected):focus:not(:focus-visible),.js-focus-visible .vjs-menu *:not(.vjs-selected):focus:not(.focus-visible){background:none}.vjs-menu li.vjs-menu-title{text-align:center;text-transform:uppercase;font-size:1em;line-height:2em;padding:0;margin:0 0 .3em;font-weight:700;cursor:default}.vjs-menu-button-popup .vjs-menu{display:none;position:absolute;bottom:0;width:10em;left:-3em;height:0em;margin-bottom:1.5em;border-top-color:#2b333fb3}.vjs-menu-button-popup .vjs-menu .vjs-menu-content{background-color:#2b333f;background-color:#2b333fb3;position:absolute;width:100%;bottom:1.5em;max-height:15em}.vjs-layout-tiny .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-x-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:5em}.vjs-layout-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:10em}.vjs-layout-medium .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:14em}.vjs-layout-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-x-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-huge .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:25em}.vjs-workinghover .vjs-menu-button-popup.vjs-hover .vjs-menu,.vjs-menu-button-popup .vjs-menu.vjs-lock-showing{display:block}.video-js .vjs-menu-button-inline{transition:all .4s;overflow:hidden}.video-js .vjs-menu-button-inline:before{width:2.222222222em}.video-js .vjs-menu-button-inline:hover,.video-js .vjs-menu-button-inline:focus,.video-js .vjs-menu-button-inline.vjs-slider-active,.video-js.vjs-no-flex .vjs-menu-button-inline{width:12em}.vjs-menu-button-inline .vjs-menu{opacity:0;height:100%;width:auto;position:absolute;left:4em;top:0;padding:0;margin:0;transition:all .4s}.vjs-menu-button-inline:hover .vjs-menu,.vjs-menu-button-inline:focus .vjs-menu,.vjs-menu-button-inline.vjs-slider-active .vjs-menu{display:block;opacity:1}.vjs-no-flex .vjs-menu-button-inline .vjs-menu{display:block;opacity:1;position:relative;width:auto}.vjs-no-flex .vjs-menu-button-inline:hover .vjs-menu,.vjs-no-flex .vjs-menu-button-inline:focus .vjs-menu,.vjs-no-flex .vjs-menu-button-inline.vjs-slider-active .vjs-menu{width:auto}.vjs-menu-button-inline .vjs-menu-content{width:auto;height:100%;margin:0;overflow:hidden}.video-js .vjs-control-bar{display:none;width:100%;position:absolute;bottom:0;left:0;right:0;height:3em;background-color:#2b333f;background-color:#2b333fb3}.vjs-has-started .vjs-control-bar{display:flex;visibility:visible;opacity:1;transition:visibility .1s,opacity .1s}.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{visibility:visible;opacity:0;transition:visibility 1s,opacity 1s}.vjs-controls-disabled .vjs-control-bar,.vjs-using-native-controls .vjs-control-bar,.vjs-error .vjs-control-bar{display:none!important}.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{opacity:1;visibility:visible}.vjs-has-started.vjs-no-flex .vjs-control-bar{display:table}.video-js .vjs-control{position:relative;text-align:center;margin:0;padding:0;height:100%;width:4em;flex:none}.vjs-button>.vjs-icon-placeholder:before{font-size:1.8em;line-height:1.67}.vjs-button>.vjs-icon-placeholder{display:block}.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before,.video-js .vjs-control:focus{text-shadow:0em 0em 1em white}.video-js .vjs-control-text{border:0;clip:rect(0 0 0 0);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-no-flex .vjs-control{display:table-cell;vertical-align:middle}.video-js .vjs-custom-control-spacer{display:none}.video-js .vjs-progress-control{cursor:pointer;flex:auto;display:flex;align-items:center;min-width:4em;touch-action:none}.video-js .vjs-progress-control.disabled{cursor:default}.vjs-live .vjs-progress-control{display:none}.vjs-liveui .vjs-progress-control{display:flex;align-items:center}.vjs-no-flex .vjs-progress-control{width:auto}.video-js .vjs-progress-holder{flex:auto;transition:all .2s;height:.3em}.video-js .vjs-progress-control .vjs-progress-holder{margin:0 10px}.video-js .vjs-progress-control:hover .vjs-progress-holder{font-size:1.6666666667em}.video-js .vjs-progress-control:hover .vjs-progress-holder.disabled{font-size:1em}.video-js .vjs-progress-holder .vjs-play-progress,.video-js .vjs-progress-holder .vjs-load-progress,.video-js .vjs-progress-holder .vjs-load-progress div{position:absolute;display:block;height:100%;margin:0;padding:0;width:0}.video-js .vjs-play-progress{background-color:#fff}.video-js .vjs-play-progress:before{font-size:.9em;position:absolute;right:-.5em;top:-.3333333333em;z-index:1}.video-js .vjs-load-progress{background:rgba(115,133,159,.5)}.video-js .vjs-load-progress div{background:rgba(115,133,159,.75)}.video-js .vjs-time-tooltip{background-color:#fff;background-color:#fffc;border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-progress-holder:focus .vjs-time-tooltip{display:none}.video-js .vjs-progress-control:hover .vjs-time-tooltip,.video-js .vjs-progress-control:hover .vjs-progress-holder:focus .vjs-time-tooltip{display:block;font-size:.6em;visibility:visible}.video-js .vjs-progress-control.disabled:hover .vjs-time-tooltip{font-size:1em}.video-js .vjs-progress-control .vjs-mouse-display{display:none;position:absolute;width:1px;height:100%;background-color:#000;z-index:1}.vjs-no-flex .vjs-progress-control .vjs-mouse-display{z-index:0}.video-js .vjs-progress-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display{visibility:hidden;opacity:0;transition:visibility 1s,opacity 1s}.video-js.vjs-user-inactive.vjs-no-flex .vjs-progress-control .vjs-mouse-display{display:none}.vjs-mouse-display .vjs-time-tooltip{color:#fff;background-color:#000;background-color:#000c}.video-js .vjs-slider{position:relative;cursor:pointer;padding:0;margin:0 .45em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#73859f;background-color:#73859f80}.video-js .vjs-slider.disabled{cursor:default}.video-js .vjs-slider:focus{text-shadow:0em 0em 1em white;box-shadow:0 0 1em #fff}.video-js .vjs-mute-control{cursor:pointer;flex:none}.video-js .vjs-volume-control{cursor:pointer;margin-right:1em;display:flex}.video-js .vjs-volume-control.vjs-volume-horizontal{width:5em}.video-js .vjs-volume-panel .vjs-volume-control{visibility:visible;opacity:0;width:1px;height:1px;margin-left:-1px}.video-js .vjs-volume-panel{transition:width 1s}.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control,.video-js .vjs-volume-panel:active .vjs-volume-control,.video-js .vjs-volume-panel:focus .vjs-volume-control,.video-js .vjs-volume-panel .vjs-volume-control:active,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active{visibility:visible;opacity:1;position:relative;transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s}.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-horizontal,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-horizontal{width:5em;height:3em;margin-right:0}.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-vertical,.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-vertical{left:-3.5em;transition:left 0s}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active{width:10em;transition:width .1s}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-mute-toggle-only{width:4em}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{height:8em;width:3em;left:-3000em;transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s}.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{width:5em;height:3em;visibility:visible;opacity:1;position:relative;transition:none}.video-js.vjs-no-flex .vjs-volume-control.vjs-volume-vertical,.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{position:absolute;bottom:3em;left:.5em}.video-js .vjs-volume-panel{display:flex}.video-js .vjs-volume-bar{margin:1.35em .45em}.vjs-volume-bar.vjs-slider-horizontal{width:5em;height:.3em}.vjs-volume-bar.vjs-slider-vertical{width:.3em;height:5em;margin:1.35em auto}.video-js .vjs-volume-level{position:absolute;bottom:0;left:0;background-color:#fff}.video-js .vjs-volume-level:before{position:absolute;font-size:.9em;z-index:1}.vjs-slider-vertical .vjs-volume-level{width:.3em}.vjs-slider-vertical .vjs-volume-level:before{top:-.5em;left:-.3em;z-index:1}.vjs-slider-horizontal .vjs-volume-level{height:.3em}.vjs-slider-horizontal .vjs-volume-level:before{top:-.3em;right:-.5em}.video-js .vjs-volume-panel.vjs-volume-panel-vertical{width:4em}.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level{height:100%}.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level{width:100%}.video-js .vjs-volume-vertical{width:3em;height:8em;bottom:8em;background-color:#2b333f;background-color:#2b333fb3}.video-js .vjs-volume-horizontal .vjs-menu{left:-2em}.video-js .vjs-volume-tooltip{background-color:#fff;background-color:#fffc;border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-volume-control:hover .vjs-volume-tooltip,.video-js .vjs-volume-control:hover .vjs-progress-holder:focus .vjs-volume-tooltip{display:block;font-size:1em;visibility:visible}.video-js .vjs-volume-vertical:hover .vjs-volume-tooltip,.video-js .vjs-volume-vertical:hover .vjs-progress-holder:focus .vjs-volume-tooltip{left:1em;top:-12px}.video-js .vjs-volume-control.disabled:hover .vjs-volume-tooltip{font-size:1em}.video-js .vjs-volume-control .vjs-mouse-display{display:none;position:absolute;width:100%;height:1px;background-color:#000;z-index:1}.video-js .vjs-volume-horizontal .vjs-mouse-display{width:1px;height:100%}.vjs-no-flex .vjs-volume-control .vjs-mouse-display{z-index:0}.video-js .vjs-volume-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-volume-control .vjs-mouse-display{visibility:hidden;opacity:0;transition:visibility 1s,opacity 1s}.video-js.vjs-user-inactive.vjs-no-flex .vjs-volume-control .vjs-mouse-display{display:none}.vjs-mouse-display .vjs-volume-tooltip{color:#fff;background-color:#000;background-color:#000c}.vjs-poster{display:inline-block;vertical-align:middle;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;background-color:#000;cursor:pointer;margin:0;padding:0;position:absolute;inset:0;height:100%}.vjs-has-started .vjs-poster{display:none}.vjs-audio.vjs-has-started .vjs-poster{display:block}.vjs-using-native-controls .vjs-poster{display:none}.video-js .vjs-live-control{display:flex;align-items:flex-start;flex:auto;font-size:1em;line-height:3em}.vjs-no-flex .vjs-live-control{display:table-cell;width:auto;text-align:left}.video-js:not(.vjs-live) .vjs-live-control,.video-js.vjs-liveui .vjs-live-control{display:none}.video-js .vjs-seek-to-live-control{align-items:center;cursor:pointer;flex:none;display:inline-flex;height:100%;padding-left:.5em;padding-right:.5em;font-size:1em;line-height:3em;width:auto;min-width:4em}.vjs-no-flex .vjs-seek-to-live-control{display:table-cell;width:auto;text-align:left}.video-js.vjs-live:not(.vjs-liveui) .vjs-seek-to-live-control,.video-js:not(.vjs-live) .vjs-seek-to-live-control{display:none}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge{cursor:auto}.vjs-seek-to-live-control .vjs-icon-placeholder{margin-right:.5em;color:#888}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge .vjs-icon-placeholder{color:red}.video-js .vjs-time-control{flex:none;font-size:1em;line-height:3em;min-width:2em;width:auto;padding-left:1em;padding-right:1em}.vjs-live .vjs-time-control,.video-js .vjs-current-time,.vjs-no-flex .vjs-current-time,.video-js .vjs-duration,.vjs-no-flex .vjs-duration{display:none}.vjs-time-divider{display:none;line-height:3em}.vjs-live .vjs-time-divider{display:none}.video-js .vjs-play-control{cursor:pointer}.video-js .vjs-play-control .vjs-icon-placeholder{flex:none}.vjs-text-track-display{position:absolute;inset:0 0 3em;pointer-events:none}.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display{bottom:1em}.video-js .vjs-text-track{font-size:1.4em;text-align:center;margin-bottom:.1em}.vjs-subtitles{color:#fff}.vjs-captions{color:#fc6}.vjs-tt-cue{display:block}video::-webkit-media-text-track-display{transform:translateY(-3em)}.video-js.vjs-user-inactive.vjs-playing video::-webkit-media-text-track-display{transform:translateY(-1.5em)}.video-js .vjs-picture-in-picture-control,.video-js .vjs-fullscreen-control{cursor:pointer;flex:none}.vjs-playback-rate>.vjs-menu-button,.vjs-playback-rate .vjs-playback-rate-value{position:absolute;top:0;left:0;width:100%;height:100%}.vjs-playback-rate .vjs-playback-rate-value{pointer-events:none;font-size:1.5em;line-height:2;text-align:center}.vjs-playback-rate .vjs-menu{width:4em;left:0}.vjs-error .vjs-error-display .vjs-modal-dialog-content{font-size:1.4em;text-align:center}.vjs-error .vjs-error-display:before{color:#fff;content:"X";font-family:Arial,Helvetica,sans-serif;font-size:4em;left:0;line-height:1;margin-top:-.5em;position:absolute;text-shadow:.05em .05em .1em #000;text-align:center;top:50%;vertical-align:middle;width:100%}.vjs-loading-spinner{display:none;position:absolute;top:50%;left:50%;margin:-25px 0 0 -25px;opacity:.85;text-align:left;border:6px solid rgba(43,51,63,.7);box-sizing:border-box;background-clip:padding-box;width:50px;height:50px;border-radius:25px;visibility:hidden}.vjs-seeking .vjs-loading-spinner,.vjs-waiting .vjs-loading-spinner{display:block;-webkit-animation:vjs-spinner-show 0s linear .3s forwards;animation:vjs-spinner-show 0s linear .3s forwards}.vjs-loading-spinner:before,.vjs-loading-spinner:after{content:"";position:absolute;margin:-6px;box-sizing:inherit;width:inherit;height:inherit;border-radius:inherit;opacity:1;border:inherit;border-color:transparent;border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:before,.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:after{-webkit-animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite;animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite}.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:before{border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:after{border-top-color:#fff;-webkit-animation-delay:.44s;animation-delay:.44s}@keyframes vjs-spinner-show{to{visibility:visible}}@-webkit-keyframes vjs-spinner-show{to{visibility:visible}}@keyframes vjs-spinner-spin{to{transform:rotate(360deg)}}@-webkit-keyframes vjs-spinner-spin{to{-webkit-transform:rotate(360deg)}}@keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}to{border-top-color:#73859f}}@-webkit-keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}to{border-top-color:#73859f}}.vjs-chapters-button .vjs-menu ul{width:24em}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder{vertical-align:middle;display:inline-block;margin-bottom:-.1em}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{font-family:VideoJS;content:"\\f10d";font-size:1.5em;line-height:inherit}.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder{vertical-align:middle;display:inline-block;margin-bottom:-.1em}.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{font-family:VideoJS;content:" \\f11d";font-size:1.5em;line-height:inherit}.video-js.vjs-layout-small .vjs-current-time,.video-js.vjs-layout-small .vjs-time-divider,.video-js.vjs-layout-small .vjs-duration,.video-js.vjs-layout-small .vjs-remaining-time,.video-js.vjs-layout-small .vjs-playback-rate,.video-js.vjs-layout-small .vjs-chapters-button,.video-js.vjs-layout-small .vjs-descriptions-button,.video-js.vjs-layout-small .vjs-captions-button,.video-js.vjs-layout-small .vjs-subtitles-button,.video-js.vjs-layout-small .vjs-audio-button,.video-js.vjs-layout-small .vjs-volume-control,.video-js.vjs-layout-x-small .vjs-current-time,.video-js.vjs-layout-x-small .vjs-time-divider,.video-js.vjs-layout-x-small .vjs-duration,.video-js.vjs-layout-x-small .vjs-remaining-time,.video-js.vjs-layout-x-small .vjs-playback-rate,.video-js.vjs-layout-x-small .vjs-chapters-button,.video-js.vjs-layout-x-small .vjs-descriptions-button,.video-js.vjs-layout-x-small .vjs-captions-button,.video-js.vjs-layout-x-small .vjs-subtitles-button,.video-js.vjs-layout-x-small .vjs-audio-button,.video-js.vjs-layout-x-small .vjs-volume-control,.video-js.vjs-layout-tiny .vjs-current-time,.video-js.vjs-layout-tiny .vjs-time-divider,.video-js.vjs-layout-tiny .vjs-duration,.video-js.vjs-layout-tiny .vjs-remaining-time,.video-js.vjs-layout-tiny .vjs-playback-rate,.video-js.vjs-layout-tiny .vjs-chapters-button,.video-js.vjs-layout-tiny .vjs-descriptions-button,.video-js.vjs-layout-tiny .vjs-captions-button,.video-js.vjs-layout-tiny .vjs-subtitles-button,.video-js.vjs-layout-tiny .vjs-audio-button,.video-js.vjs-layout-tiny .vjs-volume-control{display:none!important}.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active{width:auto;width:initial}.video-js.vjs-layout-x-small:not(.vjs-liveui) .vjs-subs-caps-button,.video-js.vjs-layout-x-small:not(.vjs-live) .vjs-subs-caps-button,.video-js.vjs-layout-tiny .vjs-subs-caps-button{display:none}.video-js.vjs-layout-x-small.vjs-liveui .vjs-custom-control-spacer,.video-js.vjs-layout-tiny .vjs-custom-control-spacer{flex:auto;display:block}.video-js.vjs-layout-x-small.vjs-liveui.vjs-no-flex .vjs-custom-control-spacer,.video-js.vjs-layout-tiny.vjs-no-flex .vjs-custom-control-spacer{width:auto}.video-js.vjs-layout-x-small.vjs-liveui .vjs-progress-control,.video-js.vjs-layout-tiny .vjs-progress-control{display:none}.vjs-modal-dialog.vjs-text-track-settings{background-color:#2b333f;background-color:#2b333fbf;color:#fff;height:70%}.vjs-text-track-settings .vjs-modal-dialog-content{display:table}.vjs-text-track-settings .vjs-track-settings-colors,.vjs-text-track-settings .vjs-track-settings-font,.vjs-text-track-settings .vjs-track-settings-controls{display:table-cell}.vjs-text-track-settings .vjs-track-settings-controls{text-align:right;vertical-align:bottom}@supports (display: grid){.vjs-text-track-settings .vjs-modal-dialog-content{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr;padding:20px 24px 0}.vjs-track-settings-controls .vjs-default-button{margin-bottom:20px}.vjs-text-track-settings .vjs-track-settings-controls{grid-column:1/-1}.vjs-layout-small .vjs-text-track-settings .vjs-modal-dialog-content,.vjs-layout-x-small .vjs-text-track-settings .vjs-modal-dialog-content,.vjs-layout-tiny .vjs-text-track-settings .vjs-modal-dialog-content{grid-template-columns:1fr}}.vjs-track-setting>select{margin-right:1em;margin-bottom:.5em}.vjs-text-track-settings fieldset{margin:5px;padding:3px;border:none}.vjs-text-track-settings fieldset span{display:inline-block}.vjs-text-track-settings fieldset span>select{max-width:7.3em}.vjs-text-track-settings legend{color:#fff;margin:0 0 5px}.vjs-text-track-settings .vjs-label{position:absolute;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);display:block;margin:0 0 5px;padding:0;border:0;height:1px;width:1px;overflow:hidden}.vjs-track-settings-controls button:focus,.vjs-track-settings-controls button:active{outline-style:solid;outline-width:medium;background-image:linear-gradient(0deg,#fff 88%,#73859f 100%)}.vjs-track-settings-controls button:hover{color:#2b333fbf}.vjs-track-settings-controls button{background-color:#fff;background-image:linear-gradient(-180deg,#fff 88%,#73859f 100%);color:#2b333f;cursor:pointer;border-radius:2px}.vjs-track-settings-controls .vjs-default-button{margin-right:1em}@media print{.video-js>*:not(.vjs-tech):not(.vjs-poster){visibility:hidden}}.vjs-resize-manager{position:absolute;top:0;left:0;width:100%;height:100%;border:none;z-index:-1000}.js-focus-visible .video-js *:focus:not(.focus-visible){outline:none}.video-js *:focus:not(:focus-visible){outline:none}.netless-window-manager-playground{width:100%;height:100%;position:relative;z-index:1;overflow:hidden;user-select:none}.netless-window-manager-sizer{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;overflow:hidden;display:flex}.netless-window-manager-sizer-horizontal{flex-direction:column}.netless-window-manager-sizer:before,.netless-window-manager-sizer:after{flex:1;content:"";display:block}.netless-window-manager-chess-sizer:before,.netless-window-manager-chess-sizer:after{background-image:linear-gradient(45deg,#b0b0b0 25%,transparent 25%),linear-gradient(-45deg,#b0b0b0 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#b0b0b0 75%),linear-gradient(-45deg,transparent 75%,#b0b0b0 75%);background-color:#fff;background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px}.netless-window-manager-wrapper{position:relative;z-index:1;width:100%;height:100%;overflow:hidden}.netless-window-manager-main-view{width:100%;height:100%}.netless-window-manager-cursor-pencil-image,.netless-window-manager-cursor-eraser-image{width:26px;height:26px}.netless-window-manager-cursor-selector-image{width:24px;height:24px}.netless-window-manager-cursor-selector-avatar{border-radius:50%;border-style:solid;border-width:2px;border-color:#fff;margin-bottom:2px}.netless-window-manager-cursor-selector-avatar img{width:12px}.netless-window-manager-cursor-inner{border-radius:4px;display:flex;align-items:center;justify-content:center;flex-direction:row;padding-left:4px;padding-right:4px;font-size:12px}.netless-window-manager-cursor-inner-mellow{height:32px;border-radius:16px;display:flex;align-items:center;justify-content:center;flex-direction:row;padding-left:16px;padding-right:16px}.netless-window-manager-cursor-tag-name{font-size:12px;margin-left:4px;padding:2px 8px;border-radius:4px}.netless-window-manager-cursor-mid{display:flex;flex-direction:column;align-items:center;justify-content:center;position:absolute;width:26px;height:26px;z-index:2147483647;left:0;top:0;will-change:transform;transition:transform .1s;transform-origin:0 0;user-select:none}.netless-window-manager-cursor-pencil-offset{margin-left:-20px}.netless-window-manager-cursor-selector-offset{margin-left:-22px;margin-top:56px}.netless-window-manager-cursor-text-offset{margin-left:-30px;margin-top:18px}.netless-window-manager-cursor-shape-offset{display:flex;flex-direction:column;align-items:center;justify-content:center;position:absolute;width:180px;height:64px;margin-left:-30px;margin-top:12px}.netless-window-manager-cursor-laserPointer-image{margin-left:-22px;margin-top:3px}.netless-window-manager-cursor-name{width:100%;height:48px;display:flex;align-items:center;justify-content:center;position:absolute;top:-40px}.cursor-image-wrapper{display:flex;justify-content:center}.telebox-collector{position:absolute;right:10px;bottom:15px}.tele-fancy-scrollbar{overscroll-behavior:contain;overflow:auto;overflow-y:scroll;overflow-y:overlay;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;scrollbar-width:auto}.tele-fancy-scrollbar::-webkit-scrollbar{height:8px;width:8px}.tele-fancy-scrollbar::-webkit-scrollbar-track{background-color:transparent}.tele-fancy-scrollbar::-webkit-scrollbar-thumb{background-color:#444e601a;background-color:transparent;border-radius:4px;transition:background-color .4s}.tele-fancy-scrollbar:hover::-webkit-scrollbar-thumb{background-color:#444e601a}.tele-fancy-scrollbar::-webkit-scrollbar-thumb:hover{background-color:#444e6033}.tele-fancy-scrollbar::-webkit-scrollbar-thumb:active{background-color:#444e6033}.tele-fancy-scrollbar::-webkit-scrollbar-thumb:vertical{min-height:50px}.tele-fancy-scrollbar::-webkit-scrollbar-thumb:horizontal{min-width:50px}.telebox-box{position:absolute;top:0;left:0;z-index:100;transition:width .4s cubic-bezier(.4,.9,.71,1.02),height .4s cubic-bezier(.55,.82,.63,.95),opacity .6s cubic-bezier(.7,0,.84,0),transform .4s ease}.telebox-box-main{position:relative;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden;background:#f9f9fc;box-shadow:0 4px 10px #2f419226;border-radius:6px;border:1px solid #e3e3ec}.telebox-titlebar-wrap{flex-shrink:0;position:relative;z-index:1}.telebox-content-wrap{flex:1;width:100%;overflow:hidden;display:flex;justify-content:center;align-items:center}.telebox-content{width:100%;height:100%;position:relative}.telebox-footer-wrap{flex-shrink:0;display:flex;flex-direction:column}.telebox-footer-wrap:before{content:"";display:block;flex:1}.telebox-resize-handle{position:absolute;z-index:2147483647}.telebox-n{width:100%;height:5px;left:0;top:-5px;cursor:n-resize}.telebox-s{width:100%;height:5px;left:0;bottom:-5px;cursor:s-resize}.telebox-w{width:5px;height:100%;left:-5px;top:0;cursor:w-resize}.telebox-e{width:5px;height:100%;right:-5px;top:0;cursor:e-resize}.telebox-nw{width:15px;height:15px;top:-5px;left:-5px;cursor:nw-resize}.telebox-ne{width:15px;height:15px;top:-5px;right:-5px;cursor:ne-resize}.telebox-se{width:15px;height:15px;bottom:-5px;right:-5px;cursor:se-resize}.telebox-sw{width:15px;height:15px;bottom:-5px;left:-5px;cursor:sw-resize}.telebox-track-mask{position:fixed;top:0;left:0;z-index:2147483647;width:100%;height:100%;background:rgba(0,0,0,.0001);cursor:move}.telebox-cursor-n{cursor:n-resize}.telebox-cursor-s{cursor:s-resize}.telebox-cursor-w{cursor:w-resize}.telebox-cursor-e{cursor:e-resize}.telebox-cursor-nw{cursor:nw-resize}.telebox-cursor-ne{cursor:ne-resize}.telebox-cursor-se{cursor:se-resize}.telebox-cursor-sw{cursor:sw-resize}.telebox-maximized .telebox-resize-handles,.telebox-no-resize .telebox-resize-handles{display:none}.telebox-maximized{box-shadow:none;transition:none}.telebox-minimized{transition:width 50ms cubic-bezier(.4,.9,.71,1.02),height 50ms cubic-bezier(.55,.82,.63,.95),opacity .6s cubic-bezier(.7,0,.84,0),transform .6s ease;opacity:0;pointer-events:none;user-select:none}.telebox-transforming{will-change:transform;transition:opacity .6s cubic-bezier(.7,0,.84,0)}.telebox-readonly .telebox-resize-handle{cursor:initial!important;pointer-events:none!important}.telebox-color-scheme-dark .telebox-box-main{color:#e9e9e9;background:#212126;border-color:#43434d}.telebox-titlebar{box-sizing:border-box;height:26px;display:flex;align-items:center;background:#fff;user-select:none;border-bottom:1px solid #eeeef7;touch-action:manipulation}.telebox-title-area{padding-left:16px;overflow:hidden;position:relative;height:100%;flex:1;display:flex;align-items:center}.telebox-title{overflow:hidden;margin:0;padding:0;font-size:14px;font-weight:400;font-family:PingFangSC-Regular,PingFang SC;white-space:nowrap;word-break:keep-all;text-overflow:ellipsis;color:#191919}.telebox-drag-area{position:absolute;inset:0;margin:auto;z-index:10}.telebox-titlebar-btns{padding-right:16px;white-space:nowrap;word-break:keep-all;margin-left:auto;font-size:0}.telebox-titlebar-btn{width:22px;height:22px;padding:0;outline:0;border:none;background:0 0;cursor:pointer}.telebox-titlebar-btn~.telebox-titlebar-btn{margin-left:10px}.telebox-titlebar-btn-icon{width:22px;height:22px}.telebox-readonly .telebox-titlebar-btn{cursor:not-allowed}.telebox-titlebar-icon-minimize{background:center/cover no-repeat url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjggMjgiPgogICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjh2MjhIMHoiIC8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj4KICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjYSIgLz4KICAgICAgICA8L21hc2s+CiAgICAgICAgPHBhdGggZmlsbD0iI0E3QTdDQSIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOSAxM2gxMHYxLjZIOXoiIG1hc2s9InVybCgjYikiIC8+CiAgICA8L2c+Cjwvc3ZnPgo=)}.telebox-titlebar-icon-maximize{background:center/cover no-repeat url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjggMjgiPgogICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjh2MjhIMHoiIC8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj4KICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjYSIgLz4KICAgICAgICA8L21hc2s+CiAgICAgICAgPGcgZmlsbD0iI0E3QTdDQSIgZmlsbC1ydWxlPSJub256ZXJvIiBtYXNrPSJ1cmwoI2IpIj4KICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgIGQ9Ik0yMC40ODEgMTcuMWgxLjJ2NC41ODFIMTcuMXYtMS4yaDMuMzgxVjE3LjF6bS0xNC4xOTA1LS4wMDloMS4ydjMuMzgxaDMuMzgwOXYxLjJoLTQuNTgxdi00LjU4MXpNMTcuMSA2LjE5MDVoNC41ODF2NC41ODA5aC0xLjJ2LTMuMzgxSDE3LjF2LTEuMnptLTEwLjcwMDguMTA4N2g0Ljc5ODV2MS4ySDcuNTk5MnYzLjU5ODVoLTEuMlY2LjI5OTJ6IiAvPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==)}.telebox-titlebar-icon-maximize.is-active{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjggMjgiPgogICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjZ2MjZIMHoiIC8+CiAgICAgICAgPHBhdGggaWQ9ImMiIGQ9Ik0yNi44NjkgMEwyOCAxLjEzMVYyNi44N0wyNi44NjkgMjhIMS4xM0wwIDI2Ljg3VjEuMTMxTDEuMTMgMHoiIC8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiPgogICAgICAgICAgICA8bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNhIiAvPgogICAgICAgICAgICA8L21hc2s+CiAgICAgICAgICAgIDxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0tNC42NDI5LTQuNjQyOWgzNS4yODU4djM1LjI4NThILTQuNjQyOXoiIG1hc2s9InVybCgjYikiIC8+CiAgICAgICAgPC9nPgogICAgICAgIDxnPgogICAgICAgICAgICA8bWFzayBpZD0iZCIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNjIiAvPgogICAgICAgICAgICA8L21hc2s+CiAgICAgICAgICAgIDxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0tMTcuNTE2OCAxNEwxNC0xNy41MTY4IDQ1LjUxNjggMTQgMTQgNDUuNTE2OHoiIG1hc2s9InVybCgjZCkiIC8+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIHN0cm9rZT0iI0E3QTdDQSIgc3Ryb2tlLXdpZHRoPSIxLjIiCiAgICAgICAgICAgIGQ9Ik0xMC4wODg2IDIxLjQ4NjV2LTMuNjk2Nkg2LjM5Mk0yMS4zODU1IDEwLjE4OTVoLTMuNjk2NlY2LjQ5M00yMS40MDIgMTcuNzk4M2gtMy42OTY2djMuNjk2Nk0xMC4yNTAzIDYuMTQ5OHYzLjg5ODVINi4zNTE3IiAvPgogICAgPC9nPgo8L3N2Zz4K)}.telebox-titlebar-icon-close{background:center/cover no-repeat url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyOCAyOCI+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iI0E3QTdDQSIgc3Ryb2tlLXdpZHRoPSIxLjQiPgogICAgICAgIDxwYXRoIGQ9Ik04LjM1MyAyMC4zMzIxTDIwLjMzMiA4LjM1M00yMC4zMzIyIDIwLjMzMjFMOC4zNTMgOC4zNTMiIC8+CiAgICA8L2c+Cjwvc3ZnPgo=)}.telebox-color-scheme-dark .telebox-titlebar{color:#e9e9e9;background:#43434d;border-bottom:none}.telebox-collector{visibility:hidden;display:block;position:absolute;z-index:200;width:40px;height:40px;margin:0;padding:0;border:none;outline:0;font-size:0;border-radius:50%;background:#fff;box-shadow:0 2px 6px #2f419226;cursor:pointer;user-select:none;pointer-events:none;background-repeat:no-repeat;background-size:18px 16px;background-position:center;-webkit-tap-highlight-color:transparent}.telebox-collector-visible{visibility:visible;pointer-events:initial}.telebox-collector-readonly{cursor:not-allowed}.telebox-color-scheme-dark.telebox-collector{background-color:#43434d}.telebox-max-titlebar{display:none;position:absolute;top:0;left:0;z-index:50000;user-select:none}.telebox-max-titlebar .telebox-title,.telebox-max-titlebar.telebox-max-titlebar-single-title .telebox-titles{display:none}.telebox-max-titlebar.telebox-max-titlebar-single-title .telebox-title{display:block}.telebox-max-titlebar-maximized{display:flex}.telebox-titles{height:100%;margin:0;overflow-y:hidden;overflow-x:scroll;overflow-x:overlay;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;scrollbar-width:auto}.telebox-titles::-webkit-scrollbar{height:8px;width:8px}.telebox-titles::-webkit-scrollbar-track{background-color:transparent}.telebox-titles::-webkit-scrollbar-thumb{background-color:#eeeef7cc;background-color:transparent;border-radius:4px;transition:background-color .4s}.telebox-titles:hover::-webkit-scrollbar-thumb{background-color:#eeeef7cc}.telebox-titles::-webkit-scrollbar-thumb:hover{background-color:#eeeef7}.telebox-titles::-webkit-scrollbar-thumb:active{background-color:#eeeef7}.telebox-titles::-webkit-scrollbar-thumb:vertical{min-height:50px}.telebox-titles::-webkit-scrollbar-thumb:horizontal{min-width:50px}.telebox-titles-content{height:100%;display:flex;flex-wrap:nowrap;align-items:center;padding:0}.telebox-titles-tab{height:100%;overflow:hidden;max-width:182px;min-width:50px;padding:0 26px 0 16px;outline:0;font-size:13px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;text-overflow:ellipsis;white-space:nowrap;word-break:keep-all;border:none;border-right:1px solid #e5e5f0;color:#7b88a0;background:0 0;cursor:pointer;user-select:none}.telebox-titles-tab-focus{color:#357bf6}.telebox-readonly .telebox-titles-tab{cursor:not-allowed}.telebox-color-scheme-dark{color-scheme:dark}.telebox-color-scheme-dark.telebox-titlebar{color:#e9e9e9;background:#43434d;border-bottom:none}.telebox-color-scheme-dark .telebox-titles-tab{border-right-color:#7b88a0}.telebox-color-scheme-dark .telebox-title{color:#e9e9e9}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}.tippy-box[data-theme~=light]{color:#26323d;box-shadow:0 0 20px 4px #9aa1b126,0 4px 80px -8px #24282f40,0 4px 4px -2px #5b5e6926;background-color:#fff}.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff}.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff}.tippy-box[data-theme~=light]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light]>.tippy-svg-arrow{fill:#fff}.rc-slider{position:relative;height:14px;padding:5px 0;width:100%;border-radius:6px;touch-action:none;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.rc-slider *{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.rc-slider-rail{position:absolute;width:100%;background-color:#e9e9e9;height:4px;border-radius:6px}.rc-slider-track{position:absolute;left:0;height:4px;border-radius:6px;background-color:#abe2fb}.rc-slider-handle{position:absolute;width:14px;height:14px;cursor:pointer;cursor:-webkit-grab;margin-top:-5px;cursor:grab;border-radius:50%;border:solid 2px #96dbfa;background-color:#fff;touch-action:pan-x}.rc-slider-handle-dragging.rc-slider-handle-dragging.rc-slider-handle-dragging{border-color:#57c5f7;box-shadow:0 0 0 5px #96dbfa}.rc-slider-handle:focus{outline:none}.rc-slider-handle-click-focused:focus{border-color:#96dbfa;box-shadow:unset}.rc-slider-handle:hover{border-color:#57c5f7}.rc-slider-handle:active{border-color:#57c5f7;box-shadow:0 0 5px #57c5f7;cursor:-webkit-grabbing;cursor:grabbing}.rc-slider-mark{position:absolute;top:18px;left:0;width:100%;font-size:12px}.rc-slider-mark-text{position:absolute;display:inline-block;vertical-align:middle;text-align:center;cursor:pointer;color:#999}.rc-slider-mark-text-active{color:#666}.rc-slider-step{position:absolute;width:100%;height:4px;background:transparent}.rc-slider-dot{position:absolute;bottom:-2px;margin-left:-4px;width:8px;height:8px;border:2px solid #e9e9e9;background-color:#fff;cursor:pointer;border-radius:50%;vertical-align:middle}.rc-slider-dot-active{border-color:#96dbfa}.rc-slider-dot-reverse{margin-right:-4px}.rc-slider-disabled{background-color:#e9e9e9}.rc-slider-disabled .rc-slider-track{background-color:#ccc}.rc-slider-disabled .rc-slider-handle,.rc-slider-disabled .rc-slider-dot{border-color:#ccc;box-shadow:none;background-color:#fff;cursor:not-allowed}.rc-slider-disabled .rc-slider-mark-text,.rc-slider-disabled .rc-slider-dot{cursor:not-allowed!important}.rc-slider-vertical{width:14px;height:100%;padding:0 5px}.rc-slider-vertical .rc-slider-rail{height:100%;width:4px}.rc-slider-vertical .rc-slider-track{left:5px;bottom:0;width:4px}.rc-slider-vertical .rc-slider-handle{margin-left:-5px;touch-action:pan-y}.rc-slider-vertical .rc-slider-mark{top:0;left:18px;height:100%}.rc-slider-vertical .rc-slider-step{height:100%;width:4px}.rc-slider-vertical .rc-slider-dot{left:2px;margin-bottom:-4px}.rc-slider-vertical .rc-slider-dot:first-child{margin-bottom:-4px}.rc-slider-vertical .rc-slider-dot:last-child{margin-bottom:-4px}.rc-slider-tooltip-zoom-down-enter,.rc-slider-tooltip-zoom-down-appear,.rc-slider-tooltip-zoom-down-leave{animation-duration:.3s;animation-fill-mode:both;display:block!important;animation-play-state:paused}.rc-slider-tooltip-zoom-down-enter.rc-slider-tooltip-zoom-down-enter-active,.rc-slider-tooltip-zoom-down-appear.rc-slider-tooltip-zoom-down-appear-active{animation-name:rcSliderTooltipZoomDownIn;animation-play-state:running}.rc-slider-tooltip-zoom-down-leave.rc-slider-tooltip-zoom-down-leave-active{animation-name:rcSliderTooltipZoomDownOut;animation-play-state:running}.rc-slider-tooltip-zoom-down-enter,.rc-slider-tooltip-zoom-down-appear{transform:scale(0);animation-timing-function:cubic-bezier(.23,1,.32,1)}.rc-slider-tooltip-zoom-down-leave{animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@keyframes rcSliderTooltipZoomDownIn{0%{opacity:0;transform-origin:50% 100%;transform:scale(0)}to{transform-origin:50% 100%;transform:scale(1)}}@keyframes rcSliderTooltipZoomDownOut{0%{transform-origin:50% 100%;transform:scale(1)}to{opacity:0;transform-origin:50% 100%;transform:scale(0)}}.rc-slider-tooltip{position:absolute;left:-9999px;top:-9999px;visibility:visible;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.rc-slider-tooltip *{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.rc-slider-tooltip-hidden{display:none}.rc-slider-tooltip-placement-top{padding:4px 0 8px}.rc-slider-tooltip-inner{padding:6px 2px;min-width:24px;height:24px;font-size:12px;line-height:1;color:#fff;text-align:center;text-decoration:none;background-color:#6c6c6c;border-radius:6px;box-shadow:0 0 4px #d9d9d9}.rc-slider-tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.rc-slider-tooltip-placement-top .rc-slider-tooltip-arrow{bottom:4px;left:50%;margin-left:-4px;border-width:4px 4px 0;border-top-color:#6c6c6c}.fastboard-root{position:relative;width:100%;height:100%;overflow:hidden}.fastboard-view{position:absolute;top:0;left:0;width:100%;height:100%}.fastboard-left{position:absolute;top:0;left:0;height:calc(100% - 48px);padding:16px;z-index:201;display:flex;align-items:center}.fastboard-bottom-left,.fastboard-bottom,.fastboard-bottom-right{display:flex;gap:10px;position:absolute;bottom:8px;left:8px;padding:8px;z-index:200}.fastboard-bottom-right{left:auto;right:8px}.fastboard-bottom{right:8px}.fastboard-redo-undo{display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:4px;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.fastboard-redo-undo.light{color:#333;background-color:#ffffffe6;border:1px solid #e5e8f0}.fastboard-redo-undo.dark{color:#ddd;background-color:#14181e;border:1px solid #383b42}.fastboard-redo-undo-btn{appearance:none;cursor:pointer;margin:0;border:0;padding:0;width:24px;height:24px;background-color:transparent;border-radius:4px;font-size:24px;line-height:1}.fastboard-redo-undo-btn svg,.fastboard-redo-undo-btn img{width:100%;height:100%}.fastboard-redo-undo-btn:disabled{opacity:.5;cursor:not-allowed}.fastboard-redo-undo-btn.light:not(:disabled):hover{background-color:#ebf2ff}.fastboard-redo-undo-btn.dark:not(:disabled):hover{background-color:#383b42}.fastboard-page-control{display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:4px;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.fastboard-page-control.light{color:#333;background-color:#ffffffe6;border:1px solid #e5e8f0}.fastboard-page-control.dark{color:#ddd;background-color:#14181e;border:1px solid #383b42}.fastboard-page-control-btn{appearance:none;cursor:pointer;margin:0;border:0;padding:0;width:24px;height:24px;background-color:transparent;border-radius:4px;font-size:24px;line-height:1}.fastboard-page-control-btn svg,.fastboard-page-control-btn img{width:100%;height:100%}.fastboard-page-control-btn:disabled{opacity:.5;cursor:not-allowed}.fastboard-page-control-btn.light:not(:disabled):hover{background-color:#ebf2ff}.fastboard-page-control-btn.dark:not(:disabled):hover{background-color:#383b42}.fastboard-page-control-cut-line{height:24px;width:.5px}.fastboard-page-control-cut-line.light{background-color:#e7e7e7}.fastboard-page-control-cut-line.dark{background-color:#ffffff26}.fastboard-page-control-slash{opacity:.6}.fastboard-page-control-text{line-height:24px}.fastboard-page-control-page,.fastboard-page-control-slash,.fastboard-page-control-page-count{font-size:14px;font-variant-numeric:tabular-nums}.fastboard-zoom-control{position:relative;display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:4px;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.fastboard-zoom-control.light{color:#333;background-color:#ffffffe6;border:1px solid #e5e8f0}.fastboard-zoom-control.dark{color:#ddd;background-color:#14181e;border:1px solid #383b42}.fastboard-zoom-control-btn{appearance:none;cursor:pointer;margin:0;border:0;padding:0;width:24px;height:24px;background-color:transparent;border-radius:4px;font-size:24px;line-height:1}.fastboard-zoom-control-btn svg,.fastboard-zoom-control-btn img{width:100%;height:100%}.fastboard-zoom-control-btn:disabled{opacity:.5;cursor:not-allowed}.fastboard-zoom-control-btn.light:not(:disabled):hover{background-color:#ebf2ff}.fastboard-zoom-control-btn.dark:not(:disabled):hover{background-color:#383b42}.fastboard-zoom-control-cut-line{height:24px;width:.5px}.fastboard-zoom-control-cut-line.light{background-color:#e7e7e7}.fastboard-zoom-control-cut-line.dark{background-color:#ffffff26}.fastboard-zoom-control-text{line-height:24px}.fastboard-zoom-control-percent{opacity:.6}.fastboard-zoom-control-scale,.fastboard-zoom-control-percent{font-size:14px;font-variant-numeric:tabular-nums}.fastboard-toolbar{display:flex;align-items:center;padding:4px;border-radius:4px;flex-direction:column;gap:4px;position:absolute;z-index:100;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.fastboard-toolbar .rc-slider{padding:6px 0}.fastboard-toolbar .rc-slider-rail,.fastboard-toolbar .rc-slider-track{height:2px}.fastboard-toolbar .tippy-content{padding:8px}.fastboard-toolbar .tippy-box{border:1px solid rgba(0,0,0,.15);background-color:#333333f2;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.fastboard-toolbar .tippy-box[data-theme~=light]{background-color:#fffffff2;box-shadow:0 5px 10px #00000040}.fastboard-toolbar.light{color:#333;background-color:#ffffffe6;border:1px solid #e5e8f0}.fastboard-toolbar.dark{color:#ddd;background-color:#14181e;border:1px solid #383b42}.fastboard-toolbar.expanded{border:1px solid rgba(0,0,0,.15)}.fastboard-toolbar.expanded:hover{box-shadow:0 0 5px #00000040;transform:translate(0)}.fastboard-toolbar.collapsed{padding:0;background-color:transparent}.fastboard-toolbar-tooltip{display:inline-flex;align-items:center;gap:4px}.fastboard-toolbar-hotkey{margin-right:-4px;width:24px;height:24px;border-radius:4px;background-color:#ffffff1a;display:inline-flex;align-items:center;justify-content:center}.fastboard-toolbar-btn{appearance:none;cursor:pointer;margin:0;border:0;padding:4px;width:32px;height:32px;background-color:transparent;border-radius:4px;font-size:24px;line-height:1;position:relative}.fastboard-toolbar-btn-interactive{display:inline-block;width:32px;height:32px}.fastboard-toolbar-btn svg,.fastboard-toolbar-btn img{width:100%;height:100%}.fastboard-toolbar-btn:disabled{opacity:.5;cursor:not-allowed}.fastboard-toolbar-btn.light:not(:disabled):hover{background-color:#ebf2ff}.fastboard-toolbar-btn.dark:not(:disabled):hover{background-color:#383b42}.fastboard-toolbar-triangle{width:0px;height:0px;border-bottom:4px solid;border-left:4px solid transparent;position:absolute;bottom:0;right:0}.fastboard-toolbar-cut-line{display:inline-block;height:.5px;width:100%}.fastboard-toolbar-cut-line.light{background-color:#e7e7e7}.fastboard-toolbar-cut-line.dark{background-color:#ffffff26}.fastboard-toolbar-section{display:inline-flex;flex-flow:column nowrap;gap:4px;scroll-behavior:smooth}.fastboard-toolbar-section.collapsed{transform:translate(-100%);transition:1s transform}.fastboard-toolbar-section~.fastboard-toolbar-mask{opacity:0;transition:.5s opacity .4s}.fastboard-toolbar-section:hover~.fastboard-toolbar-mask,.fastboard-toolbar-mask:hover{opacity:1;transition:.2s opacity}.fastboard-toolbar-panel{width:120px;padding:0;display:flex;flex-flow:column nowrap;align-items:center;gap:8px}.fastboard-toolbar-panel.apps{width:256px}.fastboard-toolbar-color-box,.fastboard-toolbar-shapes{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;align-items:center;justify-items:center}.fastboard-toolbar-color-box .fastboard-toolbar-btn,.fastboard-toolbar-shapes .fastboard-toolbar-btn{padding:0;width:24px;height:24px}.fastboard-toolbar-apps{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;align-items:center;justify-items:center}.fastboard-toolbar-apps .fastboard-toolbar-btn{width:40px;height:40px;font-size:0}.fastboard-toolbar-app-icon-wrapper{position:relative;display:flex;align-items:center;justify-content:center}.fastboard-toolbar-app-icon-mask{position:absolute;width:36px;height:36px;animation:fastboard-app-loading-rotate .5s linear infinite;transform-origin:center}.fastboard-toolbar-app-is-loading{cursor:wait}.fastboard-toolbar-app-is-loading button:disabled{cursor:wait}.fastboard-toolbar-app-is-failed{cursor:not-allowed}.fastboard-toolbar-app-is-failed button:disabled{cursor:not-allowed}.fastboard-toolbar-app-icon{padding-top:4px;display:inline-flex;flex-flow:column nowrap;align-items:center;gap:4px}.fastboard-toolbar-app-icon .fastboard-toolbar-btn{padding:0}.fastboard-toolbar-app-icon-text{font-size:14px;color:#5d5d5d;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.fastboard-toolbar-color-item{width:24px;height:24px;border-radius:4px;cursor:pointer}.fastboard-toolbar-color-item *.light:hover{background-color:#f5f5f5}.fastboard-toolbar-color-item *.dark:hover{background-color:#333}.fastboard-toolbar-color-border{width:24px;height:24px;border:1px solid transparent;border-radius:4px;display:inline-flex;align-items:center;justify-content:center}.fastboard-toolbar-color-border.active.light,.fastboard-toolbar-color-border.active.dark{border:1px solid rgba(51,129,255,.8)}.fastboard-toolbar-color-btn{margin:0;border:1px solid rgba(0,0,0,.24);padding:0;appearance:none;width:16px;height:16px;border-radius:4px;cursor:pointer}.fastboard-toolbar-color-btn:focus-visible{outline-offset:2px}.fastboard-toolbar-mask{position:absolute;left:calc(100% + 1px);top:50%;transform:translateY(-50%);opacity:.85}.fastboard-toolbar-mask.dark{left:100%}.fastboard-toolbar-mask-btn{width:17px;height:62px;cursor:pointer;opacity:.85}.fastboard-toolbar-mask-btn.dark{filter:invert(.8)}.fastboard-toolbar-expand-btn{display:flex;align-items:center;position:absolute;left:0}@keyframes fastboard-app-loading-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fastboard-player-control{width:100%;display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:4px;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);z-index:100}.fastboard-player-control.auto-hide{opacity:0;transition:opacity .2s}.fastboard-player-control.auto-hide:hover{opacity:1}.fastboard-player-control .rc-slider-disabled{background:transparent;opacity:.5}.fastboard-player-control .rc-slider-rail,.fastboard-player-control .rc-slider-track{height:2px}.fastboard-player-control .tippy-content{padding:8px}.fastboard-player-control .tippy-box{border:1px solid rgba(0,0,0,.15);background-color:#333333f2;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.fastboard-player-control .tippy-box[data-theme~=light]{background-color:#fffffff2;box-shadow:0 5px 10px #00000040}.fastboard-player-control.light{color:#333;background-color:#ffffffe6;border:1px solid #e5e8f0}.fastboard-player-control.dark{color:#ddd;background-color:#14181e;border:1px solid #383b42}.fastboard-player-control-btn{appearance:none;cursor:pointer;margin:0;border:0;padding:0;min-width:24px;height:24px;background-color:transparent;border-radius:4px;font-size:24px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.fastboard-player-control-btn svg,.fastboard-player-control-btn img{width:100%;height:100%}.fastboard-player-control-btn:disabled{opacity:.5;cursor:not-allowed}.fastboard-player-control-btn.light:not(:disabled):hover{background-color:#ebf2ff}.fastboard-player-control-btn.dark:not(:disabled):hover{background-color:#383b42}.fastboard-player-control-btn.loading{animation:fastboard-player-control-rotate .5s linear infinite}@keyframes fastboard-player-control-rotate{to{transform:rotate(360deg)}}.fastboard-player-control-panel{padding:0;display:flex;flex-flow:column nowrap;align-items:stretch;gap:4px}.fastboard-player-control-panel .fastboard-player-control-btn{width:initial;height:initial;user-select:none;font-size:14px;padding:4px;justify-content:flex-end}.fastboard-player-control-panel .fastboard-player-control-btn.active{color:#3381ff}.fastboard-player-control-slider{width:100%;padding:0 7px}.fastboard-player-control-slider.loading{cursor:not-allowed}.fastboard-player-control-slash{opacity:.6}.fastboard-player-control-current,.fastboard-player-control-slash,.fastboard-player-control-total,.fastboard-player-control-speed-text{font-size:14px;font-variant-numeric:tabular-nums}.tippy-box.fastboard-tip{color:#eee;background-color:#000000f2;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.tippy-box.fastboard-tip[data-placement^=right]>.tippy-arrow:before{top:4px;border-width:4px;border-right-color:#000}.tippy-box.fastboard-tip[data-placement^=top]>.tippy-arrow:before{left:4px;border-width:4px;border-top-color:#000}\n';
140
142
 
141
143
  // src/behaviors/style.ts
142
144
  applyStyles(style_default);
@@ -344,18 +346,17 @@ function Redo({ theme = "light", active }) {
344
346
  const config = themes[theme];
345
347
  const stroke = active ? config.activeColor : config.color;
346
348
  return /* @__PURE__ */ import_react6.default.createElement("svg", {
347
- viewBox: "0 0 24 24"
348
- }, /* @__PURE__ */ import_react6.default.createElement("g", {
349
- fill: "none",
350
- fillRule: "evenodd",
351
- stroke,
352
- strokeLinecap: "round",
353
- strokeLinejoin: "round"
349
+ viewBox: "0 0 24 24",
350
+ fill: "none"
354
351
  }, /* @__PURE__ */ import_react6.default.createElement("path", {
355
- d: "M14 14h4v-4"
352
+ d: "M19 9.625H9v-1.25h10v1.25ZM5.625 13v6h-1.25v-6h1.25ZM9 9.625A3.375 3.375 0 0 0 5.625 13h-1.25A4.625 4.625 0 0 1 9 8.375v1.25Z",
353
+ fill: stroke
356
354
  }), /* @__PURE__ */ import_react6.default.createElement("path", {
357
- d: "m18 14-.788-.9A7.005 7.005 0 0 0 6 14h0"
358
- })));
355
+ d: "m15 5 4 4-4 4",
356
+ stroke,
357
+ strokeLinejoin: "round",
358
+ strokeWidth: "1.25"
359
+ }));
359
360
  }
360
361
 
361
362
  // src/icons/Undo.tsx
@@ -364,18 +365,17 @@ function Undo({ theme = "light", active }) {
364
365
  const config = themes[theme];
365
366
  const stroke = active ? config.activeColor : config.color;
366
367
  return /* @__PURE__ */ import_react7.default.createElement("svg", {
367
- viewBox: "0 0 24 24"
368
- }, /* @__PURE__ */ import_react7.default.createElement("g", {
369
- fill: "none",
370
- fillRule: "evenodd",
371
- stroke,
372
- strokeLinecap: "round",
373
- strokeLinejoin: "round"
368
+ viewBox: "0 0 24 24",
369
+ fill: "none"
374
370
  }, /* @__PURE__ */ import_react7.default.createElement("path", {
375
- d: "M10 14H6v-4"
371
+ d: "M5 9.625h10v-1.25H5v1.25ZM18.375 13v6h1.25v-6h-1.25ZM15 9.625A3.375 3.375 0 0 1 18.375 13h1.25A4.625 4.625 0 0 0 15 8.375v1.25Z",
372
+ fill: stroke
376
373
  }), /* @__PURE__ */ import_react7.default.createElement("path", {
377
- d: "m6 14 .788-.9A7.005 7.005 0 0 1 18 14h0"
378
- })));
374
+ d: "M9 5 5 9l4 4",
375
+ stroke,
376
+ strokeLinejoin: "round",
377
+ strokeWidth: "1.25"
378
+ }));
379
379
  }
380
380
 
381
381
  // src/components/RedoUndo/RedoUndo.tsx
@@ -494,13 +494,13 @@ function Minus({ theme = "light", active }) {
494
494
  const config = themes[theme];
495
495
  const stroke = active ? config.activeColor : config.color;
496
496
  return /* @__PURE__ */ import_react11.default.createElement("svg", {
497
- viewBox: "0 0 24 24"
497
+ viewBox: "0 0 24 24",
498
+ fill: "none"
498
499
  }, /* @__PURE__ */ import_react11.default.createElement("path", {
499
- fill: "none",
500
+ d: "M5 12h14",
500
501
  stroke,
501
- strokeLinecap: "round",
502
502
  strokeLinejoin: "round",
503
- d: "M7 12h10"
503
+ strokeWidth: "1.25"
504
504
  }));
505
505
  }
506
506
 
@@ -510,13 +510,13 @@ function Plus({ theme = "light", active }) {
510
510
  const config = themes[theme];
511
511
  const stroke = active ? config.activeColor : config.color;
512
512
  return /* @__PURE__ */ import_react12.default.createElement("svg", {
513
- viewBox: "0 0 24 24"
513
+ viewBox: "0 0 24 24",
514
+ fill: "none"
514
515
  }, /* @__PURE__ */ import_react12.default.createElement("path", {
515
- fill: "none",
516
+ d: "M5 12h14m-7-7v14",
516
517
  stroke,
517
- strokeLinecap: "round",
518
518
  strokeLinejoin: "round",
519
- d: "M12 7v10m-5-5h10"
519
+ strokeWidth: "1.25"
520
520
  }));
521
521
  }
522
522
 
@@ -526,26 +526,26 @@ function Reset({ theme = "light", active }) {
526
526
  const config = themes[theme];
527
527
  const stroke = active ? config.activeColor : config.color;
528
528
  return /* @__PURE__ */ import_react13.default.createElement("svg", {
529
- viewBox: "0 0 24 24"
530
- }, /* @__PURE__ */ import_react13.default.createElement("g", {
531
- fill: "none",
532
- fillRule: "evenodd",
533
- transform: "translate(-176 -684)"
534
- }, /* @__PURE__ */ import_react13.default.createElement("path", {
529
+ viewBox: "0 0 24 24",
530
+ fill: "none"
531
+ }, /* @__PURE__ */ import_react13.default.createElement("circle", {
532
+ cx: "12",
533
+ cy: "12",
534
+ fill: stroke,
535
+ r: "2"
536
+ }), /* @__PURE__ */ import_react13.default.createElement("path", {
537
+ d: "M12 3v4m0 10v4m9-9h-4M7 12H3",
535
538
  stroke,
536
539
  strokeLinejoin: "round",
537
- d: "M188 688v4m0 8v4m8-8h-4m-8 0h-4"
540
+ strokeWidth: "1.25"
538
541
  }), /* @__PURE__ */ import_react13.default.createElement("circle", {
539
- cx: "188",
540
- cy: "696",
541
- r: "6",
542
- stroke
543
- }), /* @__PURE__ */ import_react13.default.createElement("circle", {
544
- cx: "188",
545
- cy: "696",
546
- r: "1",
547
- fill: stroke
548
- })));
542
+ cx: "12",
543
+ cy: "12",
544
+ r: "7",
545
+ stroke,
546
+ strokeLinejoin: "round",
547
+ strokeWidth: "1.25"
548
+ }));
549
549
  }
550
550
 
551
551
  // src/components/ZoomControl/ZoomControl.tsx
@@ -586,10 +586,12 @@ function ZoomControl({
586
586
  src: disabled ? minusIconDisable : minusIcon,
587
587
  alt: "[minus]"
588
588
  }))), /* @__PURE__ */ import_react15.default.createElement("span", {
589
+ className: (0, import_clsx2.default)(`${name2}-text`, theme)
590
+ }, /* @__PURE__ */ import_react15.default.createElement("span", {
589
591
  className: (0, import_clsx2.default)(`${name2}-scale`, theme)
590
592
  }, Math.ceil(scale * 100)), /* @__PURE__ */ import_react15.default.createElement("span", {
591
593
  className: (0, import_clsx2.default)(`${name2}-percent`, theme)
592
- }, "%"), /* @__PURE__ */ import_react15.default.createElement(import_react14.default, {
594
+ }, "%")), /* @__PURE__ */ import_react15.default.createElement(import_react14.default, {
593
595
  className: "fastboard-tip",
594
596
  content: t("zoomIn"),
595
597
  theme,
@@ -655,48 +657,65 @@ var import_react20 = __toESM(require("@tippyjs/react"));
655
657
  var import_clsx3 = __toESM(require("clsx"));
656
658
  var import_react21 = __toESM(require("react"));
657
659
 
658
- // src/icons/ChevronLeft.tsx
660
+ // src/icons/Left.tsx
659
661
  var import_react17 = __toESM(require("react"));
660
- function ChevronLeft({ theme = "light", active }) {
662
+ function Left({ theme = "light", active }) {
661
663
  const config = themes[theme];
662
664
  const stroke = active ? config.activeColor : config.color;
663
665
  return /* @__PURE__ */ import_react17.default.createElement("svg", {
664
- viewBox: "0 0 24 24"
666
+ viewBox: "0 0 24 24",
667
+ fill: "none"
665
668
  }, /* @__PURE__ */ import_react17.default.createElement("path", {
666
- fill: "none",
669
+ d: "m14 8-2 2-2 2 2 2 2 2",
667
670
  stroke,
668
- strokeLinecap: "round",
669
671
  strokeLinejoin: "round",
670
- d: "m14 16-2-2-2-2 2-2 2-2"
672
+ strokeWidth: "1.25"
671
673
  }));
672
674
  }
673
675
 
674
- // src/icons/ChevronRight.tsx
676
+ // src/icons/Right.tsx
675
677
  var import_react18 = __toESM(require("react"));
676
- function ChevronRight({ theme = "light", active }) {
678
+ function Right({ theme = "light", active }) {
677
679
  const config = themes[theme];
678
680
  const stroke = active ? config.activeColor : config.color;
679
681
  return /* @__PURE__ */ import_react18.default.createElement("svg", {
680
- viewBox: "0 0 24 24"
682
+ viewBox: "0 0 24 24",
683
+ fill: "none"
681
684
  }, /* @__PURE__ */ import_react18.default.createElement("path", {
682
- fill: "none",
685
+ d: "m10 8 2 2 2 2-2 2-2 2",
683
686
  stroke,
684
- strokeLinecap: "round",
685
687
  strokeLinejoin: "round",
686
- d: "m10 16 2-2 2-2-2-2-2-2"
688
+ strokeWidth: "1.25"
687
689
  }));
688
690
  }
689
691
 
690
- // src/icons/FilePlus.tsx
692
+ // src/icons/WhiteboardAdd.tsx
691
693
  var import_react19 = __toESM(require("react"));
692
- function FilePlus({ theme = "light", active }) {
694
+ function WhiteboardAdd({ theme = "light", active }) {
693
695
  const config = themes[theme];
694
696
  const stroke = active ? config.activeColor : config.color;
695
697
  return /* @__PURE__ */ import_react19.default.createElement("svg", {
696
- viewBox: "0 0 24 24"
698
+ viewBox: "0 0 24 24",
699
+ fill: "none"
697
700
  }, /* @__PURE__ */ import_react19.default.createElement("path", {
698
- fill: stroke,
699
- d: "M12 7.5a.5.5 0 0 1 .09.992L12 8.5H8a1.5 1.5 0 0 0-1.493 1.356L6.5 10v6a1.5 1.5 0 0 0 1.356 1.493L8 17.5h6a1.5 1.5 0 0 0 1.493-1.356L15.5 16v-4a.5.5 0 0 1 .992-.09l.008.09v4a2.5 2.5 0 0 1-2.336 2.495L14 18.5H8a2.5 2.5 0 0 1-2.495-2.336L5.5 16v-6a2.5 2.5 0 0 1 2.336-2.495L8 7.5h4Zm4-2a.5.5 0 0 1 .492.41L16.5 6v1.5H18a.5.5 0 0 1 .09.992L18 8.5h-1.5V10a.5.5 0 0 1-.992.09L15.5 10V8.5H14a.5.5 0 0 1-.09-.992L14 7.5h1.5V6a.5.5 0 0 1 .5-.5Z"
701
+ d: "M4 20h16M4 6h16",
702
+ stroke,
703
+ strokeLinejoin: "round",
704
+ strokeWidth: "1.25"
705
+ }), /* @__PURE__ */ import_react19.default.createElement("rect", {
706
+ height: "10",
707
+ rx: "1",
708
+ stroke,
709
+ strokeLinejoin: "round",
710
+ strokeWidth: "1.25",
711
+ width: "14",
712
+ x: "5",
713
+ y: "8"
714
+ }), /* @__PURE__ */ import_react19.default.createElement("path", {
715
+ d: "M12 4v2m-3 7h6m-3-3v6",
716
+ stroke,
717
+ strokeLinejoin: "round",
718
+ strokeWidth: "1.25"
700
719
  }));
701
720
  }
702
721
 
@@ -732,18 +751,20 @@ function PageControl({
732
751
  disabled: disabled || pageIndex === 0,
733
752
  onClick: actions.prevPage
734
753
  }, /* @__PURE__ */ import_react21.default.createElement(Icon, {
735
- fallback: /* @__PURE__ */ import_react21.default.createElement(ChevronLeft, {
754
+ fallback: /* @__PURE__ */ import_react21.default.createElement(Left, {
736
755
  theme
737
756
  }),
738
757
  src: disabled ? prevIconDisable : prevIcon,
739
758
  alt: "[prev]"
740
759
  }))), /* @__PURE__ */ import_react21.default.createElement("span", {
760
+ className: (0, import_clsx3.default)(`${name3}-text`, theme)
761
+ }, /* @__PURE__ */ import_react21.default.createElement("span", {
741
762
  className: (0, import_clsx3.default)(`${name3}-page`, theme)
742
763
  }, pageCount === 0 ? "\u2026" : pageIndex + 1), /* @__PURE__ */ import_react21.default.createElement("span", {
743
764
  className: (0, import_clsx3.default)(`${name3}-slash`, theme)
744
765
  }, "/"), /* @__PURE__ */ import_react21.default.createElement("span", {
745
766
  className: (0, import_clsx3.default)(`${name3}-page-count`, theme)
746
- }, pageCount), /* @__PURE__ */ import_react21.default.createElement(import_react20.default, {
767
+ }, pageCount)), /* @__PURE__ */ import_react21.default.createElement(import_react20.default, {
747
768
  className: "fastboard-tip",
748
769
  content: t("nextPage"),
749
770
  theme,
@@ -757,7 +778,7 @@ function PageControl({
757
778
  disabled: disabled || pageIndex === pageCount - 1,
758
779
  onClick: actions.nextPage
759
780
  }, /* @__PURE__ */ import_react21.default.createElement(Icon, {
760
- fallback: /* @__PURE__ */ import_react21.default.createElement(ChevronRight, {
781
+ fallback: /* @__PURE__ */ import_react21.default.createElement(Right, {
761
782
  theme
762
783
  }),
763
784
  src: disabled ? nextIconDisable : nextIcon,
@@ -776,7 +797,7 @@ function PageControl({
776
797
  disabled,
777
798
  onClick: actions.addPage
778
799
  }, /* @__PURE__ */ import_react21.default.createElement(Icon, {
779
- fallback: /* @__PURE__ */ import_react21.default.createElement(FilePlus, {
800
+ fallback: /* @__PURE__ */ import_react21.default.createElement(WhiteboardAdd, {
780
801
  theme
781
802
  }),
782
803
  src: disabled ? addIconDisable : addIcon,
@@ -1097,10 +1118,14 @@ var MinHeight = ItemHeight * 2 - 4;
1097
1118
  function useRoomState() {
1098
1119
  return useFastboardValue(useFastboardApp().memberState);
1099
1120
  }
1121
+ function useAppsStatus() {
1122
+ return useFastboardValue(useFastboardApp().appsStatus);
1123
+ }
1100
1124
  function useToolbar() {
1101
1125
  const app = useFastboardApp();
1102
1126
  const writable = useWritable();
1103
1127
  const memberState = useRoomState();
1128
+ const appsStatus = useAppsStatus();
1104
1129
  const [lastShape, setLastShape] = (0, import_react42.useState)("rectangle");
1105
1130
  const cleanCurrentScene = (0, import_react42.useCallback)(() => {
1106
1131
  app.cleanCurrentScene();
@@ -1123,6 +1148,7 @@ function useToolbar() {
1123
1148
  writable,
1124
1149
  memberState,
1125
1150
  lastShape,
1151
+ appsStatus,
1126
1152
  cleanCurrentScene,
1127
1153
  setAppliance,
1128
1154
  setStrokeWidth,
@@ -1133,6 +1159,7 @@ var EmptyToolbarHook = {
1133
1159
  writable: false,
1134
1160
  memberState: void 0,
1135
1161
  lastShape: "rectangle",
1162
+ appsStatus: {},
1136
1163
  cleanCurrentScene: noop,
1137
1164
  setAppliance: noop,
1138
1165
  setStrokeWidth: noop,
@@ -1140,16 +1167,16 @@ var EmptyToolbarHook = {
1140
1167
  };
1141
1168
 
1142
1169
  // src/components/Toolbar/Toolbar.tsx
1143
- var import_clsx9 = __toESM(require("clsx"));
1170
+ var import_clsx10 = __toESM(require("clsx"));
1144
1171
  var import_framer_motion = require("framer-motion");
1145
- var import_react59 = __toESM(require("react"));
1172
+ var import_react60 = __toESM(require("react"));
1146
1173
 
1147
1174
  // src/components/Toolbar/components/assets/expanded.png
1148
1175
  var expanded_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAB8CAYAAAAMw2JFAAAAAXNSR0IArs4c6QAAA5xJREFUeF7tnL9v00AUx5/TlRkJMSAxZ+jYCf4GtopK6dB2qBBsjshaJErboWVJpYaNLGDaIR2YYAFXqlxhlvzAJkhGJGlyDhVNSpWgyOiqBJnQ+urznW2Jy1JVVnKffv3x8yV9LxLE5CEBwFUA6ALAzyiZJFVVX21ubj7N5/MmACAAGEQBJDWbzQZCqGcYRm52dlbpdDpNAPgRNozkOE691+tBo9FItNtto1AorC0tLX0EAAzUDwvoDGS02NHREU4IarXatizLOV3XvwHAdwBweAP9BYIXGwwGcHh4mLBtG2matrGwsPB2mA5Xmf8BGf3lJycn+HRNtFqtd2HIfCEIBnIcBxBCEkKobxjGFk+ZPUFG6YQh86VAPGSuAUCbhcy+QMZktjVNW2cls28QD5k/A0CLtjJTg4zLbJpmLpVKvaStzIFAWMrMBISFzExBgsjMHIRWZm4gfmXmCnKezIqiLK+srOjDG+mfu3ooIG6Z6/X6r/39/Udzc3OvAQBX5jOYUEHwgqenp2BZlrS7u/sgnU6/Ge53wgfBMN1uV6pWq/b09PTdSqVSwtU49ERGp8myrISqqsszMzPPcSqRgRwfH0vlcvnD1NTUIgB8jQyk3+9DuVy2Jycn7wBANTIQvPsrlUqJZDJ5GwA+RQaCXSkWixPJZPKWABldOSKR8XeLIhGRCOkTBOGIcEQ4QkpAOEJKSNQR4YhwhJSAcISUkKgjTBy5fuPmNfxCNetLA/98srp25WFaxv+UpH5QnZpxEPz7/XuLnSAwzEBwFEFgmIIEgWEOQgvDBYQGhhuIXxiuIH5g/g8QP5czt0T8QFB/mHdeZXXXdr8QXEBoIJiD0EIwBQkCwQwksm0A9abD44lUl68A4ZEAkz0rDzDhiDg1JK+EI8IR4QgpAeEIKSFRR4QjwhFSAsIRUkKijsTSkdi0f8WmIS42LYKxaJqMRRtpLBpr8URTpK3GrrEYU1GUx6E3X7sHhUzTfJZKpV5cNFvBrY10NDqFEFKz2ex6Pp/3nDZhDuIaJrMPDg425ufncac3HrXzHCZjCuIar9vJZDI5TdPweN2lJpKYgLhlLBQKqzQDh4FA/MhI2ptQg/iVkTkIrYxMQdwyyrK8pet6uONxLGQMlAhLGalBXDK+z2azG6TKSFqIdNxrzNZXZSQtRDp+0eDxDmsZLwUSxvQqEWQ4nN4n3aZJLxT0uLS3t7cdhowk0Ph8gQGJNKzjvwGKWUjXcvHclAAAAABJRU5ErkJggg==";
1149
1176
 
1150
1177
  // src/components/Toolbar/Content.tsx
1151
- var import_clsx8 = __toESM(require("clsx"));
1152
- var import_react58 = __toESM(require("react"));
1178
+ var import_clsx9 = __toESM(require("clsx"));
1179
+ var import_react59 = __toESM(require("react"));
1153
1180
 
1154
1181
  // src/components/Toolbar/components/ApplianceButtons.tsx
1155
1182
  var import_react45 = __toESM(require("react"));
@@ -1274,8 +1301,9 @@ function CleanButton() {
1274
1301
  }
1275
1302
 
1276
1303
  // src/components/Toolbar/components/AppsButton.tsx
1277
- var import_react46 = __toESM(require("@tippyjs/react"));
1278
- var import_react47 = __toESM(require("react"));
1304
+ var import_clsx5 = __toESM(require("clsx"));
1305
+ var import_react47 = __toESM(require("@tippyjs/react"));
1306
+ var import_react48 = __toESM(require("react"));
1279
1307
 
1280
1308
  // src/components/Toolbar/components/assets/vscode.png
1281
1309
  var vscode_default = "data:image/png;base64,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";
@@ -1286,23 +1314,35 @@ var geogebra_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCA
1286
1314
  // src/components/Toolbar/components/assets/countdown.png
1287
1315
  var countdown_default = "data:image/png;base64,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";
1288
1316
 
1317
+ // src/components/Toolbar/icons/Loading.tsx
1318
+ var import_react46 = __toESM(require("react"));
1319
+ var Loading = (props) => {
1320
+ const stroke = getStroke(props);
1321
+ return /* @__PURE__ */ import_react46.default.createElement("svg", {
1322
+ viewBox: "0 0 24 24"
1323
+ }, /* @__PURE__ */ import_react46.default.createElement("path", {
1324
+ fill: stroke,
1325
+ d: "M12 4V2A10 10 0 0 0 2 12h2a8 8 0 0 1 8-8Z"
1326
+ }));
1327
+ };
1328
+
1289
1329
  // src/components/Toolbar/components/AppsButton.tsx
1290
1330
  function AppsButton({ content, onClick }) {
1291
- const { theme, icons, writable } = (0, import_react47.useContext)(ToolbarContext);
1331
+ const { theme, icons, writable } = (0, import_react48.useContext)(ToolbarContext);
1292
1332
  const disabled = !writable;
1293
- const button = /* @__PURE__ */ import_react47.default.createElement(Button, {
1333
+ const button = /* @__PURE__ */ import_react48.default.createElement(Button, {
1294
1334
  content: "Apps",
1295
1335
  onClick
1296
- }, /* @__PURE__ */ import_react47.default.createElement(Icon, {
1297
- fallback: /* @__PURE__ */ import_react47.default.createElement(Icons.Apps, {
1336
+ }, /* @__PURE__ */ import_react48.default.createElement(Icon, {
1337
+ fallback: /* @__PURE__ */ import_react48.default.createElement(Icons.Apps, {
1298
1338
  theme
1299
1339
  }),
1300
1340
  src: disabled ? icons == null ? void 0 : icons.appsIconDisable : icons == null ? void 0 : icons.appsIcon,
1301
1341
  alt: "[apps]"
1302
1342
  }));
1303
- return content === false ? button : /* @__PURE__ */ import_react47.default.createElement("span", {
1343
+ return content === false ? button : /* @__PURE__ */ import_react48.default.createElement("span", {
1304
1344
  className: "fastboard-toolbar-btn-interactive"
1305
- }, /* @__PURE__ */ import_react47.default.createElement(import_react46.default, {
1345
+ }, /* @__PURE__ */ import_react48.default.createElement(import_react47.default, {
1306
1346
  className: "fastboard-tip",
1307
1347
  content: renderAppsButtonContent(content),
1308
1348
  theme,
@@ -1314,55 +1354,74 @@ function AppsButton({ content, onClick }) {
1314
1354
  }, button));
1315
1355
  }
1316
1356
  function renderAppsButtonContent(content) {
1317
- return /* @__PURE__ */ import_react47.default.createElement("div", {
1357
+ return /* @__PURE__ */ import_react48.default.createElement("div", {
1318
1358
  className: "fastboard-toolbar-panel apps"
1319
- }, /* @__PURE__ */ import_react47.default.createElement("div", {
1359
+ }, /* @__PURE__ */ import_react48.default.createElement("div", {
1320
1360
  className: "fastboard-toolbar-apps"
1321
- }, content || /* @__PURE__ */ import_react47.default.createElement(DefaultApps, null)));
1361
+ }, content || /* @__PURE__ */ import_react48.default.createElement(DefaultApps, null)));
1322
1362
  }
1323
1363
  function DefaultApps() {
1324
1364
  const app = useFastboardApp();
1325
- return /* @__PURE__ */ import_react47.default.createElement(import_react47.default.Fragment, null, /* @__PURE__ */ import_react47.default.createElement(AppIcon, {
1365
+ const { appsStatus } = (0, import_react48.useContext)(ToolbarContext);
1366
+ return /* @__PURE__ */ import_react48.default.createElement(import_react48.default.Fragment, null, /* @__PURE__ */ import_react48.default.createElement(AppIcon, {
1326
1367
  title: "Code Editor",
1327
1368
  src: vscode_default,
1328
1369
  alt: "[code editor]",
1370
+ appStatus: appsStatus["Monaco"],
1329
1371
  onClick: app == null ? void 0 : app.insertCodeEditor.bind(app)
1330
- }), /* @__PURE__ */ import_react47.default.createElement(AppIcon, {
1372
+ }), /* @__PURE__ */ import_react48.default.createElement(AppIcon, {
1331
1373
  title: "GeoGebra",
1332
1374
  src: geogebra_default,
1333
1375
  alt: "[geogebra]",
1376
+ appStatus: appsStatus["GeoGebra"],
1334
1377
  onClick: app == null ? void 0 : app.insertGeoGebra.bind(app)
1335
- }), /* @__PURE__ */ import_react47.default.createElement(AppIcon, {
1378
+ }), /* @__PURE__ */ import_react48.default.createElement(AppIcon, {
1336
1379
  title: "Countdown",
1337
1380
  src: countdown_default,
1338
1381
  alt: "[countdown]",
1382
+ appStatus: appsStatus["Countdown"],
1339
1383
  onClick: app == null ? void 0 : app.insertCountdown.bind(app)
1340
1384
  }));
1341
1385
  }
1342
- function AppIcon({ title, src, alt, onClick }) {
1343
- return /* @__PURE__ */ import_react47.default.createElement("span", {
1344
- className: "fastboard-toolbar-app-icon"
1345
- }, /* @__PURE__ */ import_react47.default.createElement(Button, {
1386
+ function AppIcon({ title, src, alt, appStatus, onClick }) {
1387
+ const { theme } = (0, import_react48.useContext)(ToolbarContext);
1388
+ const { status = "idle", reason } = appStatus || {};
1389
+ const loading = status === "loading";
1390
+ const failed = status === "failed";
1391
+ const unifiedTitle = loading ? "loading" : failed ? reason : title;
1392
+ return /* @__PURE__ */ import_react48.default.createElement("div", {
1393
+ className: "fastboard-toolbar-app-icon-wrapper"
1394
+ }, /* @__PURE__ */ import_react48.default.createElement("span", {
1395
+ className: (0, import_clsx5.default)("fastboard-toolbar-app-icon", {
1396
+ "fastboard-toolbar-app-is-loading": loading,
1397
+ "fastboard-toolbar-app-is-failed": failed
1398
+ })
1399
+ }, /* @__PURE__ */ import_react48.default.createElement(Button, {
1400
+ disabled: failed || loading,
1346
1401
  placement: "top",
1347
- content: title,
1402
+ content: unifiedTitle,
1348
1403
  onClick
1349
- }, /* @__PURE__ */ import_react47.default.createElement("img", {
1404
+ }, /* @__PURE__ */ import_react48.default.createElement("img", {
1350
1405
  src,
1351
1406
  alt,
1352
- title
1353
- })), /* @__PURE__ */ import_react47.default.createElement("span", {
1407
+ title: unifiedTitle
1408
+ })), /* @__PURE__ */ import_react48.default.createElement("span", {
1354
1409
  className: "fastboard-toolbar-app-icon-text"
1355
- }, title));
1410
+ }, title)), loading && /* @__PURE__ */ import_react48.default.createElement("span", {
1411
+ className: "fastboard-toolbar-app-icon-mask"
1412
+ }, /* @__PURE__ */ import_react48.default.createElement(Loading, {
1413
+ theme
1414
+ })));
1356
1415
  }
1357
1416
 
1358
1417
  // src/components/Toolbar/components/PencilButton.tsx
1359
- var import_react51 = __toESM(require("@tippyjs/react"));
1360
- var import_react52 = __toESM(require("react"));
1418
+ var import_react52 = __toESM(require("@tippyjs/react"));
1419
+ var import_react53 = __toESM(require("react"));
1361
1420
  var import_white_web_sdk3 = require("white-web-sdk");
1362
1421
 
1363
1422
  // src/components/Toolbar/components/ColorBox.tsx
1364
- var import_clsx5 = __toESM(require("clsx"));
1365
- var import_react48 = __toESM(require("react"));
1423
+ var import_clsx6 = __toESM(require("clsx"));
1424
+ var import_react49 = __toESM(require("react"));
1366
1425
  var colors = {
1367
1426
  "#E02020": [224, 32, 32],
1368
1427
  "#F7B500": [247, 181, 0],
@@ -1375,21 +1434,21 @@ var colors = {
1375
1434
  };
1376
1435
  var colorKeys = Object.keys(colors);
1377
1436
  function ColorBox() {
1378
- const { theme, memberState, setStrokeColor, writable } = (0, import_react48.useContext)(ToolbarContext);
1437
+ const { theme, memberState, setStrokeColor, writable } = (0, import_react49.useContext)(ToolbarContext);
1379
1438
  const strokeColor = memberState == null ? void 0 : memberState.strokeColor;
1380
1439
  const disabled = !writable;
1381
- return /* @__PURE__ */ import_react48.default.createElement("div", {
1382
- className: (0, import_clsx5.default)("fastboard-toolbar-color-box", theme)
1383
- }, colorKeys.map((key) => /* @__PURE__ */ import_react48.default.createElement("div", {
1440
+ return /* @__PURE__ */ import_react49.default.createElement("div", {
1441
+ className: (0, import_clsx6.default)("fastboard-toolbar-color-box", theme)
1442
+ }, colorKeys.map((key) => /* @__PURE__ */ import_react49.default.createElement("div", {
1384
1443
  key,
1385
- className: (0, import_clsx5.default)("fastboard-toolbar-color-item", theme),
1444
+ className: (0, import_clsx6.default)("fastboard-toolbar-color-item", theme),
1386
1445
  onClick: () => setStrokeColor(colors[key])
1387
- }, /* @__PURE__ */ import_react48.default.createElement("div", {
1388
- className: (0, import_clsx5.default)("fastboard-toolbar-color-border", theme, {
1446
+ }, /* @__PURE__ */ import_react49.default.createElement("div", {
1447
+ className: (0, import_clsx6.default)("fastboard-toolbar-color-border", theme, {
1389
1448
  active: strokeColor && isEqualArray(strokeColor, colors[key])
1390
1449
  })
1391
- }, /* @__PURE__ */ import_react48.default.createElement("button", {
1392
- className: (0, import_clsx5.default)("fastboard-toolbar-color-btn"),
1450
+ }, /* @__PURE__ */ import_react49.default.createElement("button", {
1451
+ className: (0, import_clsx6.default)("fastboard-toolbar-color-btn"),
1393
1452
  style: { background: key },
1394
1453
  disabled,
1395
1454
  onClick: (ev) => {
@@ -1400,26 +1459,26 @@ function ColorBox() {
1400
1459
  }
1401
1460
 
1402
1461
  // src/components/Toolbar/components/CutLine.tsx
1403
- var import_clsx6 = __toESM(require("clsx"));
1404
- var import_react49 = __toESM(require("react"));
1462
+ var import_clsx7 = __toESM(require("clsx"));
1463
+ var import_react50 = __toESM(require("react"));
1405
1464
  function CutLine() {
1406
- const { theme } = (0, import_react49.useContext)(ToolbarContext);
1407
- return /* @__PURE__ */ import_react49.default.createElement("span", {
1408
- className: (0, import_clsx6.default)(`${name4}-cut-line`, theme)
1465
+ const { theme } = (0, import_react50.useContext)(ToolbarContext);
1466
+ return /* @__PURE__ */ import_react50.default.createElement("span", {
1467
+ className: (0, import_clsx7.default)(`${name4}-cut-line`, theme)
1409
1468
  });
1410
1469
  }
1411
1470
 
1412
1471
  // src/components/Toolbar/components/Slider.tsx
1413
- var import_clsx7 = __toESM(require("clsx"));
1472
+ var import_clsx8 = __toESM(require("clsx"));
1414
1473
  var import_rc_slider = __toESM(require("rc-slider"));
1415
- var import_react50 = __toESM(require("react"));
1474
+ var import_react51 = __toESM(require("react"));
1416
1475
  function Slider() {
1417
- const { theme, writable, memberState, setStrokeWidth } = (0, import_react50.useContext)(ToolbarContext);
1476
+ const { theme, writable, memberState, setStrokeWidth } = (0, import_react51.useContext)(ToolbarContext);
1418
1477
  const { activeColor } = themes[theme];
1419
1478
  const strokeWidth = (memberState == null ? void 0 : memberState.strokeWidth) || 0;
1420
- return /* @__PURE__ */ import_react50.default.createElement(import_rc_slider.default, {
1479
+ return /* @__PURE__ */ import_react51.default.createElement(import_rc_slider.default, {
1421
1480
  disabled: !writable,
1422
- className: (0, import_clsx7.default)("fastboard-toolbar-slider", theme),
1481
+ className: (0, import_clsx8.default)("fastboard-toolbar-slider", theme),
1423
1482
  trackStyle: { background: activeColor },
1424
1483
  handleStyle: { border: `1px solid ${activeColor}` },
1425
1484
  value: strokeWidth,
@@ -1433,17 +1492,17 @@ function Slider() {
1433
1492
  function PencilButton() {
1434
1493
  const app = useFastboardApp();
1435
1494
  const { t } = useTranslation();
1436
- const { theme, icons, writable, setAppliance, memberState } = (0, import_react52.useContext)(ToolbarContext);
1437
- const changeAppliance = (0, import_react52.useCallback)(() => {
1495
+ const { theme, icons, writable, setAppliance, memberState } = (0, import_react53.useContext)(ToolbarContext);
1496
+ const changeAppliance = (0, import_react53.useCallback)(() => {
1438
1497
  setAppliance(import_white_web_sdk3.ApplianceNames.pencil);
1439
1498
  }, [setAppliance]);
1440
1499
  const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
1441
1500
  const active = appliance === import_white_web_sdk3.ApplianceNames.pencil;
1442
1501
  const disabled = !writable;
1443
1502
  const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToPencil;
1444
- return /* @__PURE__ */ import_react52.default.createElement("span", {
1503
+ return /* @__PURE__ */ import_react53.default.createElement("span", {
1445
1504
  className: "fastboard-toolbar-btn-interactive"
1446
- }, /* @__PURE__ */ import_react52.default.createElement(import_react51.default, {
1505
+ }, /* @__PURE__ */ import_react53.default.createElement(import_react52.default, {
1447
1506
  className: "fastboard-tip",
1448
1507
  content: renderPencilButtonContent(),
1449
1508
  theme,
@@ -1452,43 +1511,50 @@ function PencilButton() {
1452
1511
  offset: RightOffset,
1453
1512
  arrow: false,
1454
1513
  interactive: true
1455
- }, /* @__PURE__ */ import_react52.default.createElement(Button, {
1514
+ }, /* @__PURE__ */ import_react53.default.createElement(Button, {
1456
1515
  content: renderToolTip(t("pencil"), shortcut),
1457
1516
  active,
1458
1517
  onClick: changeAppliance
1459
- }, /* @__PURE__ */ import_react52.default.createElement(Icon, {
1460
- fallback: /* @__PURE__ */ import_react52.default.createElement(Icons.Pencil, {
1518
+ }, /* @__PURE__ */ import_react53.default.createElement(Icon, {
1519
+ fallback: /* @__PURE__ */ import_react53.default.createElement(Icons.Pencil, {
1461
1520
  theme,
1462
1521
  active
1463
1522
  }),
1464
1523
  src: disabled ? icons == null ? void 0 : icons.pencilIconDisable : icons == null ? void 0 : icons.pencilIcon,
1465
1524
  alt: "[pencil]"
1466
- }), /* @__PURE__ */ import_react52.default.createElement("span", {
1525
+ }), /* @__PURE__ */ import_react53.default.createElement("span", {
1467
1526
  className: "fastboard-toolbar-triangle"
1468
1527
  }))));
1469
1528
  }
1470
1529
  function renderPencilButtonContent() {
1471
- return /* @__PURE__ */ import_react52.default.createElement("div", {
1530
+ return /* @__PURE__ */ import_react53.default.createElement("div", {
1472
1531
  className: "fastboard-toolbar-panel pencil"
1473
- }, /* @__PURE__ */ import_react52.default.createElement(Slider, null), /* @__PURE__ */ import_react52.default.createElement(CutLine, null), /* @__PURE__ */ import_react52.default.createElement(ColorBox, null));
1532
+ }, /* @__PURE__ */ import_react53.default.createElement(Slider, null), /* @__PURE__ */ import_react53.default.createElement(CutLine, null), /* @__PURE__ */ import_react53.default.createElement(ColorBox, null));
1474
1533
  }
1475
1534
 
1476
1535
  // src/components/Toolbar/components/ShapesButton.tsx
1477
- var import_react53 = __toESM(require("@tippyjs/react"));
1478
- var import_react54 = __toESM(require("react"));
1536
+ var import_react54 = __toESM(require("@tippyjs/react"));
1537
+ var import_react55 = __toESM(require("react"));
1479
1538
  var import_white_web_sdk4 = require("white-web-sdk");
1480
1539
  var ShapeTypes = /* @__PURE__ */ new Set([...ApplianceShapes, ...Shapes]);
1481
1540
  function ShapesButton() {
1482
1541
  const { t } = useTranslation();
1483
- const { theme, memberState, lastShape } = (0, import_react54.useContext)(ToolbarContext);
1542
+ const { writable, theme, memberState, lastShape, setAppliance } = (0, import_react55.useContext)(ToolbarContext);
1484
1543
  const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
1485
1544
  const shape = memberState == null ? void 0 : memberState.shapeType;
1486
1545
  const key = appliance === import_white_web_sdk4.ApplianceNames.shape ? shape : appliance;
1487
1546
  const active = ShapeTypes.has(key);
1488
1547
  const CurrentIcon = ShapesMap[lastShape];
1489
- return /* @__PURE__ */ import_react54.default.createElement("span", {
1548
+ const onClick = (0, import_react55.useCallback)(() => {
1549
+ if (ApplianceShapes.includes(lastShape)) {
1550
+ setAppliance(lastShape);
1551
+ } else if (Shapes.includes(lastShape)) {
1552
+ setAppliance(import_white_web_sdk4.ApplianceNames.shape, lastShape);
1553
+ }
1554
+ }, [lastShape, setAppliance]);
1555
+ return /* @__PURE__ */ import_react55.default.createElement("span", {
1490
1556
  className: "fastboard-toolbar-btn-interactive"
1491
- }, /* @__PURE__ */ import_react54.default.createElement(import_react53.default, {
1557
+ }, /* @__PURE__ */ import_react55.default.createElement(import_react54.default, {
1492
1558
  className: "fastboard-tip",
1493
1559
  content: renderShapesButtonContent(),
1494
1560
  theme,
@@ -1497,31 +1563,33 @@ function ShapesButton() {
1497
1563
  offset: RightOffset,
1498
1564
  arrow: false,
1499
1565
  interactive: true
1500
- }, /* @__PURE__ */ import_react54.default.createElement(Button, {
1566
+ }, /* @__PURE__ */ import_react55.default.createElement(Button, {
1501
1567
  content: t("shape"),
1502
- active
1503
- }, /* @__PURE__ */ import_react54.default.createElement(CurrentIcon, {
1568
+ active,
1569
+ disabled: !writable,
1570
+ onClick
1571
+ }, /* @__PURE__ */ import_react55.default.createElement(CurrentIcon, {
1504
1572
  theme,
1505
1573
  active
1506
- }), /* @__PURE__ */ import_react54.default.createElement("span", {
1574
+ }), /* @__PURE__ */ import_react55.default.createElement("span", {
1507
1575
  className: "fastboard-toolbar-triangle"
1508
1576
  }))));
1509
1577
  }
1510
1578
  function renderShapesButtonContent() {
1511
- return /* @__PURE__ */ import_react54.default.createElement("div", {
1579
+ return /* @__PURE__ */ import_react55.default.createElement("div", {
1512
1580
  className: "fastboard-toolbar-panel shapes"
1513
- }, /* @__PURE__ */ import_react54.default.createElement(ShapesBox, null), /* @__PURE__ */ import_react54.default.createElement(CutLine, null), /* @__PURE__ */ import_react54.default.createElement(Slider, null), /* @__PURE__ */ import_react54.default.createElement(CutLine, null), /* @__PURE__ */ import_react54.default.createElement(ColorBox, null));
1581
+ }, /* @__PURE__ */ import_react55.default.createElement(ShapesBox, null), /* @__PURE__ */ import_react55.default.createElement(CutLine, null), /* @__PURE__ */ import_react55.default.createElement(Slider, null), /* @__PURE__ */ import_react55.default.createElement(CutLine, null), /* @__PURE__ */ import_react55.default.createElement(ColorBox, null));
1514
1582
  }
1515
1583
  function ShapesBox() {
1516
1584
  const { t } = useTranslation();
1517
- return /* @__PURE__ */ import_react54.default.createElement("div", {
1585
+ return /* @__PURE__ */ import_react55.default.createElement("div", {
1518
1586
  className: "fastboard-toolbar-shapes"
1519
- }, ApplianceShapes.map((Appliance) => /* @__PURE__ */ import_react54.default.createElement(ApplianceShapeButton, {
1587
+ }, ApplianceShapes.map((Appliance) => /* @__PURE__ */ import_react55.default.createElement(ApplianceShapeButton, {
1520
1588
  key: Appliance,
1521
1589
  content: t(Appliance),
1522
1590
  Appliance,
1523
1591
  Icon: ShapesMap[Appliance]
1524
- })), Shapes.map((shape) => /* @__PURE__ */ import_react54.default.createElement(ShapeShapeButton, {
1592
+ })), Shapes.map((shape) => /* @__PURE__ */ import_react55.default.createElement(ShapeShapeButton, {
1525
1593
  key: shape,
1526
1594
  content: t(shape),
1527
1595
  shape,
@@ -1529,53 +1597,53 @@ function ShapesBox() {
1529
1597
  })));
1530
1598
  }
1531
1599
  function ApplianceShapeButton({ content, Appliance, Icon: Icon2 }) {
1532
- const { theme, writable, setAppliance, memberState } = (0, import_react54.useContext)(ToolbarContext);
1600
+ const { theme, writable, setAppliance, memberState } = (0, import_react55.useContext)(ToolbarContext);
1533
1601
  const current = memberState == null ? void 0 : memberState.currentApplianceName;
1534
1602
  const disabled = !writable;
1535
- return /* @__PURE__ */ import_react54.default.createElement(Button, {
1603
+ return /* @__PURE__ */ import_react55.default.createElement(Button, {
1536
1604
  content,
1537
1605
  disabled,
1538
1606
  placement: "top",
1539
1607
  onClick: () => setAppliance(Appliance)
1540
- }, /* @__PURE__ */ import_react54.default.createElement(Icon2, {
1608
+ }, /* @__PURE__ */ import_react55.default.createElement(Icon2, {
1541
1609
  theme,
1542
1610
  active: current === Appliance
1543
1611
  }));
1544
1612
  }
1545
1613
  function ShapeShapeButton({ content, shape, Icon: Icon2 }) {
1546
- const { theme, writable, setAppliance, memberState } = (0, import_react54.useContext)(ToolbarContext);
1614
+ const { theme, writable, setAppliance, memberState } = (0, import_react55.useContext)(ToolbarContext);
1547
1615
  const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
1548
1616
  const current = appliance === import_white_web_sdk4.ApplianceNames.shape && (memberState == null ? void 0 : memberState.shapeType);
1549
1617
  const disabled = !writable;
1550
- return /* @__PURE__ */ import_react54.default.createElement(Button, {
1618
+ return /* @__PURE__ */ import_react55.default.createElement(Button, {
1551
1619
  content,
1552
1620
  disabled,
1553
1621
  placement: "top",
1554
1622
  onClick: () => setAppliance(import_white_web_sdk4.ApplianceNames.shape, shape)
1555
- }, /* @__PURE__ */ import_react54.default.createElement(Icon2, {
1623
+ }, /* @__PURE__ */ import_react55.default.createElement(Icon2, {
1556
1624
  theme,
1557
1625
  active: current === shape
1558
1626
  }));
1559
1627
  }
1560
1628
 
1561
1629
  // src/components/Toolbar/components/TextButton.tsx
1562
- var import_react55 = __toESM(require("@tippyjs/react"));
1563
- var import_react56 = __toESM(require("react"));
1630
+ var import_react56 = __toESM(require("@tippyjs/react"));
1631
+ var import_react57 = __toESM(require("react"));
1564
1632
  var import_white_web_sdk5 = require("white-web-sdk");
1565
1633
  function TextButton() {
1566
1634
  const app = useFastboardApp();
1567
1635
  const { t } = useTranslation();
1568
- const { theme, icons, writable, setAppliance, memberState } = (0, import_react56.useContext)(ToolbarContext);
1569
- const changeAppliance = (0, import_react56.useCallback)(() => {
1636
+ const { theme, icons, writable, setAppliance, memberState } = (0, import_react57.useContext)(ToolbarContext);
1637
+ const changeAppliance = (0, import_react57.useCallback)(() => {
1570
1638
  setAppliance(import_white_web_sdk5.ApplianceNames.text);
1571
1639
  }, [setAppliance]);
1572
1640
  const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
1573
1641
  const active = appliance === import_white_web_sdk5.ApplianceNames.text;
1574
1642
  const disabled = !writable;
1575
1643
  const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToText;
1576
- return /* @__PURE__ */ import_react56.default.createElement("span", {
1644
+ return /* @__PURE__ */ import_react57.default.createElement("span", {
1577
1645
  className: "fastboard-toolbar-btn-interactive"
1578
- }, /* @__PURE__ */ import_react56.default.createElement(import_react55.default, {
1646
+ }, /* @__PURE__ */ import_react57.default.createElement(import_react56.default, {
1579
1647
  className: "fastboard-tip",
1580
1648
  content: renderTextButtonContent(),
1581
1649
  theme,
@@ -1584,53 +1652,53 @@ function TextButton() {
1584
1652
  offset: RightOffset,
1585
1653
  arrow: false,
1586
1654
  interactive: true
1587
- }, /* @__PURE__ */ import_react56.default.createElement(Button, {
1655
+ }, /* @__PURE__ */ import_react57.default.createElement(Button, {
1588
1656
  content: renderToolTip(t("text"), shortcut),
1589
1657
  active,
1590
1658
  onClick: changeAppliance
1591
- }, /* @__PURE__ */ import_react56.default.createElement(Icon, {
1592
- fallback: /* @__PURE__ */ import_react56.default.createElement(Icons.Text, {
1659
+ }, /* @__PURE__ */ import_react57.default.createElement(Icon, {
1660
+ fallback: /* @__PURE__ */ import_react57.default.createElement(Icons.Text, {
1593
1661
  theme,
1594
1662
  active
1595
1663
  }),
1596
1664
  src: disabled ? icons == null ? void 0 : icons.textIconDisable : icons == null ? void 0 : icons.textIcon,
1597
1665
  alt: "[text]"
1598
- }), /* @__PURE__ */ import_react56.default.createElement("span", {
1666
+ }), /* @__PURE__ */ import_react57.default.createElement("span", {
1599
1667
  className: "fastboard-toolbar-triangle"
1600
1668
  }))));
1601
1669
  }
1602
1670
  function renderTextButtonContent() {
1603
- return /* @__PURE__ */ import_react56.default.createElement("div", {
1671
+ return /* @__PURE__ */ import_react57.default.createElement("div", {
1604
1672
  className: "fastboard-toolbar-panel text"
1605
- }, /* @__PURE__ */ import_react56.default.createElement(ColorBox, null));
1673
+ }, /* @__PURE__ */ import_react57.default.createElement(ColorBox, null));
1606
1674
  }
1607
1675
 
1608
1676
  // src/components/Toolbar/components/UpDownButtons.tsx
1609
- var import_react57 = __toESM(require("react"));
1677
+ var import_react58 = __toESM(require("react"));
1610
1678
  function UpButton({ disabled, scrollTo }) {
1611
- const { theme, icons } = (0, import_react57.useContext)(ToolbarContext);
1612
- const scrollUp = (0, import_react57.useCallback)(() => scrollTo(-ItemHeight), [scrollTo]);
1613
- return /* @__PURE__ */ import_react57.default.createElement(import_react57.default.Fragment, null, /* @__PURE__ */ import_react57.default.createElement(Button, {
1679
+ const { theme, icons } = (0, import_react58.useContext)(ToolbarContext);
1680
+ const scrollUp = (0, import_react58.useCallback)(() => scrollTo(-ItemHeight), [scrollTo]);
1681
+ return /* @__PURE__ */ import_react58.default.createElement(import_react58.default.Fragment, null, /* @__PURE__ */ import_react58.default.createElement(Button, {
1614
1682
  content: "Up",
1615
1683
  disabled,
1616
1684
  onClick: scrollUp
1617
- }, /* @__PURE__ */ import_react57.default.createElement(Icon, {
1618
- fallback: /* @__PURE__ */ import_react57.default.createElement(Icons.Up, {
1685
+ }, /* @__PURE__ */ import_react58.default.createElement(Icon, {
1686
+ fallback: /* @__PURE__ */ import_react58.default.createElement(Icons.Up, {
1619
1687
  theme
1620
1688
  }),
1621
1689
  src: disabled ? icons == null ? void 0 : icons.upIconDisable : icons == null ? void 0 : icons.upIcon,
1622
1690
  alt: "[up]"
1623
- })), /* @__PURE__ */ import_react57.default.createElement(CutLine, null));
1691
+ })), /* @__PURE__ */ import_react58.default.createElement(CutLine, null));
1624
1692
  }
1625
1693
  function DownButton({ disabled, scrollTo }) {
1626
- const { theme, icons } = (0, import_react57.useContext)(ToolbarContext);
1627
- const scrollDown = (0, import_react57.useCallback)(() => scrollTo(ItemHeight), [scrollTo]);
1628
- return /* @__PURE__ */ import_react57.default.createElement(import_react57.default.Fragment, null, /* @__PURE__ */ import_react57.default.createElement(CutLine, null), /* @__PURE__ */ import_react57.default.createElement(Button, {
1694
+ const { theme, icons } = (0, import_react58.useContext)(ToolbarContext);
1695
+ const scrollDown = (0, import_react58.useCallback)(() => scrollTo(ItemHeight), [scrollTo]);
1696
+ return /* @__PURE__ */ import_react58.default.createElement(import_react58.default.Fragment, null, /* @__PURE__ */ import_react58.default.createElement(CutLine, null), /* @__PURE__ */ import_react58.default.createElement(Button, {
1629
1697
  content: "Down",
1630
1698
  disabled,
1631
1699
  onClick: scrollDown
1632
- }, /* @__PURE__ */ import_react57.default.createElement(Icon, {
1633
- fallback: /* @__PURE__ */ import_react57.default.createElement(Icons.Down, {
1700
+ }, /* @__PURE__ */ import_react58.default.createElement(Icon, {
1701
+ fallback: /* @__PURE__ */ import_react58.default.createElement(Icons.Down, {
1634
1702
  theme
1635
1703
  }),
1636
1704
  src: disabled ? icons == null ? void 0 : icons.downIconDisable : icons == null ? void 0 : icons.downIcon,
@@ -1643,25 +1711,25 @@ var collapsed_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAB8C
1643
1711
 
1644
1712
  // src/components/Toolbar/Content.tsx
1645
1713
  function Content({ onCollapse }) {
1646
- const { theme, icons, writable } = (0, import_react58.useContext)(ToolbarContext);
1647
- const ref = (0, import_react58.useRef)(null);
1648
- const [scrollTop, setScrollTop] = (0, import_react58.useState)(0);
1649
- const [parentHeight, setParentHeight] = (0, import_react58.useState)(0);
1714
+ const { theme, icons, writable } = (0, import_react59.useContext)(ToolbarContext);
1715
+ const ref = (0, import_react59.useRef)(null);
1716
+ const [scrollTop, setScrollTop] = (0, import_react59.useState)(0);
1717
+ const [parentHeight, setParentHeight] = (0, import_react59.useState)(0);
1650
1718
  const disabled = !writable;
1651
1719
  const needScroll = parentHeight < ItemHeight * ItemsCount + 48;
1652
1720
  const sectionHeight = clamp(parentHeight - 48 * (needScroll ? 3 : 1), MinHeight, MaxHeight);
1653
1721
  const scrollBuffer = Math.max(parentHeight - sectionHeight - 1, 0);
1654
1722
  const disableScrollUp = scrollTop === 0;
1655
1723
  const disableScrollDown = scrollTop === scrollBuffer;
1656
- const scrollTo = (0, import_react58.useCallback)((height) => {
1724
+ const scrollTo = (0, import_react59.useCallback)((height) => {
1657
1725
  setScrollTop(clamp(scrollTop + height, 0, scrollBuffer));
1658
1726
  }, [scrollBuffer, scrollTop]);
1659
- (0, import_react58.useEffect)(() => {
1727
+ (0, import_react59.useEffect)(() => {
1660
1728
  if (ref.current) {
1661
1729
  ref.current.scrollTop = scrollTop;
1662
1730
  }
1663
1731
  }, [scrollTop]);
1664
- (0, import_react58.useEffect)(() => {
1732
+ (0, import_react59.useEffect)(() => {
1665
1733
  var _a, _b;
1666
1734
  const container = (_b = (_a = ref.current) == null ? void 0 : _a.parentElement) == null ? void 0 : _b.parentElement;
1667
1735
  if (container) {
@@ -1674,26 +1742,26 @@ function Content({ onCollapse }) {
1674
1742
  return () => resizeObserver.disconnect();
1675
1743
  }
1676
1744
  }, []);
1677
- return /* @__PURE__ */ import_react58.default.createElement(import_react58.default.Fragment, null, needScroll && /* @__PURE__ */ import_react58.default.createElement(UpButton, {
1745
+ return /* @__PURE__ */ import_react59.default.createElement(import_react59.default.Fragment, null, needScroll && /* @__PURE__ */ import_react59.default.createElement(UpButton, {
1678
1746
  scrollTo,
1679
1747
  disabled: disableScrollUp
1680
- }), /* @__PURE__ */ import_react58.default.createElement("div", {
1748
+ }), /* @__PURE__ */ import_react59.default.createElement("div", {
1681
1749
  ref,
1682
- className: (0, import_clsx8.default)(`${name4}-section`),
1750
+ className: (0, import_clsx9.default)(`${name4}-section`),
1683
1751
  style: {
1684
1752
  height: `${sectionHeight}px`,
1685
1753
  overflow: needScroll ? "hidden" : "visible"
1686
1754
  }
1687
- }, /* @__PURE__ */ import_react58.default.createElement(ClickerButton, null), /* @__PURE__ */ import_react58.default.createElement(SelectorButton, null), /* @__PURE__ */ import_react58.default.createElement(PencilButton, null), /* @__PURE__ */ import_react58.default.createElement(TextButton, null), /* @__PURE__ */ import_react58.default.createElement(ShapesButton, null), /* @__PURE__ */ import_react58.default.createElement(EraserButton, null), /* @__PURE__ */ import_react58.default.createElement(CleanButton, null), /* @__PURE__ */ import_react58.default.createElement(AppsButton, null)), needScroll && /* @__PURE__ */ import_react58.default.createElement(DownButton, {
1755
+ }, /* @__PURE__ */ import_react59.default.createElement(ClickerButton, null), /* @__PURE__ */ import_react59.default.createElement(SelectorButton, null), /* @__PURE__ */ import_react59.default.createElement(PencilButton, null), /* @__PURE__ */ import_react59.default.createElement(TextButton, null), /* @__PURE__ */ import_react59.default.createElement(ShapesButton, null), /* @__PURE__ */ import_react59.default.createElement(EraserButton, null), /* @__PURE__ */ import_react59.default.createElement(CleanButton, null), /* @__PURE__ */ import_react59.default.createElement(AppsButton, null)), needScroll && /* @__PURE__ */ import_react59.default.createElement(DownButton, {
1688
1756
  scrollTo,
1689
1757
  disabled: disableScrollDown
1690
- }), /* @__PURE__ */ import_react58.default.createElement("div", {
1691
- className: (0, import_clsx8.default)("fastboard-toolbar-mask", theme),
1758
+ }), /* @__PURE__ */ import_react59.default.createElement("div", {
1759
+ className: (0, import_clsx9.default)("fastboard-toolbar-mask", theme),
1692
1760
  onClick: onCollapse
1693
- }, /* @__PURE__ */ import_react58.default.createElement(Icon, {
1694
- fallback: /* @__PURE__ */ import_react58.default.createElement("img", {
1761
+ }, /* @__PURE__ */ import_react59.default.createElement(Icon, {
1762
+ fallback: /* @__PURE__ */ import_react59.default.createElement("img", {
1695
1763
  draggable: false,
1696
- className: (0, import_clsx8.default)(`${name4}-mask-btn`, theme),
1764
+ className: (0, import_clsx9.default)(`${name4}-mask-btn`, theme),
1697
1765
  src: collapsed_default
1698
1766
  }),
1699
1767
  src: disabled ? icons == null ? void 0 : icons.expandIconDisable : icons == null ? void 0 : icons.expandIcon
@@ -1701,55 +1769,55 @@ function Content({ onCollapse }) {
1701
1769
  }
1702
1770
 
1703
1771
  // src/components/Toolbar/Toolbar.tsx
1704
- var ToolbarContext = (0, import_react59.createContext)(__spreadValues({
1772
+ var ToolbarContext = (0, import_react60.createContext)(__spreadValues({
1705
1773
  theme: "light"
1706
1774
  }, EmptyToolbarHook));
1707
1775
  var name4 = "fastboard-toolbar";
1708
1776
  function Toolbar({ theme, icons }) {
1709
1777
  theme = useTheme(theme);
1710
1778
  const hook = useToolbar();
1711
- const [expanded, setExpanded] = (0, import_react59.useState)(true);
1712
- const [pointerEvents, setPointerEvents] = (0, import_react59.useState)("auto");
1779
+ const [expanded, setExpanded] = (0, import_react60.useState)(true);
1780
+ const [pointerEvents, setPointerEvents] = (0, import_react60.useState)("auto");
1713
1781
  const disabled = !hook.writable;
1714
- return /* @__PURE__ */ import_react59.default.createElement(ToolbarContext.Provider, {
1782
+ return /* @__PURE__ */ import_react60.default.createElement(ToolbarContext.Provider, {
1715
1783
  value: __spreadValues({ theme, icons }, hook)
1716
- }, /* @__PURE__ */ import_react59.default.createElement(import_framer_motion.AnimatePresence, null, expanded ? /* @__PURE__ */ import_react59.default.createElement(import_framer_motion.motion.div, {
1784
+ }, /* @__PURE__ */ import_react60.default.createElement(import_framer_motion.AnimatePresence, null, expanded ? /* @__PURE__ */ import_react60.default.createElement(import_framer_motion.motion.div, {
1717
1785
  key: "toolbar",
1718
- className: (0, import_clsx9.default)(name4, theme),
1786
+ className: (0, import_clsx10.default)(name4, theme),
1719
1787
  initial: { x: -100 },
1720
1788
  animate: { x: 0, transition: { duration: 0.5 } },
1721
1789
  exit: { x: -100, transition: { duration: 0.5 } },
1722
1790
  onAnimationStart: () => setPointerEvents("none"),
1723
1791
  onAnimationComplete: () => setPointerEvents("auto"),
1724
1792
  style: { pointerEvents }
1725
- }, /* @__PURE__ */ import_react59.default.createElement(Content, {
1793
+ }, /* @__PURE__ */ import_react60.default.createElement(Content, {
1726
1794
  onCollapse: () => setExpanded(false)
1727
- })) : /* @__PURE__ */ import_react59.default.createElement(import_framer_motion.motion.div, {
1728
- className: (0, import_clsx9.default)(`${name4}-expand-btn`, theme),
1795
+ })) : /* @__PURE__ */ import_react60.default.createElement(import_framer_motion.motion.div, {
1796
+ className: (0, import_clsx10.default)(`${name4}-expand-btn`, theme),
1729
1797
  key: "expand",
1730
1798
  onClick: () => setExpanded(true),
1731
1799
  initial: { x: -100 },
1732
1800
  animate: { x: 0, transition: { duration: 0.5 } }
1733
- }, /* @__PURE__ */ import_react59.default.createElement(Icon, {
1734
- fallback: /* @__PURE__ */ import_react59.default.createElement("img", {
1801
+ }, /* @__PURE__ */ import_react60.default.createElement(Icon, {
1802
+ fallback: /* @__PURE__ */ import_react60.default.createElement("img", {
1735
1803
  draggable: false,
1736
1804
  src: expanded_default,
1737
- className: (0, import_clsx9.default)(`${name4}-mask-btn`, theme)
1805
+ className: (0, import_clsx10.default)(`${name4}-mask-btn`, theme)
1738
1806
  }),
1739
1807
  src: disabled ? icons == null ? void 0 : icons.expandIconDisable : icons == null ? void 0 : icons.expandIcon
1740
1808
  }))));
1741
1809
  }
1742
1810
 
1743
1811
  // src/components/PlayerControl/hooks.ts
1744
- var import_react60 = require("react");
1812
+ var import_react61 = require("react");
1745
1813
  var import_white_web_sdk6 = require("white-web-sdk");
1746
1814
  var EMPTY_ARRAY = [];
1747
1815
  function useForceUpdate2() {
1748
- const [, forceUpdate_] = (0, import_react60.useState)({});
1749
- return (0, import_react60.useCallback)(() => forceUpdate_({}), EMPTY_ARRAY);
1816
+ const [, forceUpdate_] = (0, import_react61.useState)({});
1817
+ return (0, import_react61.useCallback)(() => forceUpdate_({}), EMPTY_ARRAY);
1750
1818
  }
1751
1819
  function usePlayerControl(player) {
1752
- const togglePlay = (0, import_react60.useCallback)(() => {
1820
+ const togglePlay = (0, import_react61.useCallback)(() => {
1753
1821
  if (player) {
1754
1822
  switch (player.phase) {
1755
1823
  case import_white_web_sdk6.PlayerPhase.WaitingFirstFrame:
@@ -1765,25 +1833,25 @@ function usePlayerControl(player) {
1765
1833
  }
1766
1834
  }
1767
1835
  }, [player]);
1768
- const seekToProgressTime = (0, import_react60.useCallback)((time) => {
1836
+ const seekToProgressTime = (0, import_react61.useCallback)((time) => {
1769
1837
  if (player) {
1770
1838
  player.seekToProgressTime(time);
1771
1839
  }
1772
1840
  }, [player]);
1773
1841
  const lastPlayer = useLastValue(player);
1774
1842
  const forceUpdate = useForceUpdate2();
1775
- const setSpeed = (0, import_react60.useCallback)((speed2) => {
1843
+ const setSpeed = (0, import_react61.useCallback)((speed2) => {
1776
1844
  if (player) {
1777
1845
  player.playbackSpeed = speed2;
1778
1846
  forceUpdate();
1779
1847
  }
1780
1848
  }, [forceUpdate, player]);
1781
- (0, import_react60.useEffect)(() => {
1849
+ (0, import_react61.useEffect)(() => {
1782
1850
  if (!lastPlayer && player) {
1783
1851
  forceUpdate();
1784
1852
  }
1785
1853
  }, [forceUpdate, lastPlayer, player]);
1786
- (0, import_react60.useEffect)(() => {
1854
+ (0, import_react61.useEffect)(() => {
1787
1855
  if (player) {
1788
1856
  player.callbacks.on("onPhaseChanged", forceUpdate);
1789
1857
  player.callbacks.on("onProgressTimeChanged", forceUpdate);
@@ -1809,19 +1877,19 @@ function usePlayerControl(player) {
1809
1877
  }
1810
1878
 
1811
1879
  // src/components/PlayerControl/PlayerControl.tsx
1812
- var import_react67 = __toESM(require("@tippyjs/react"));
1813
- var import_clsx11 = __toESM(require("clsx"));
1880
+ var import_react68 = __toESM(require("@tippyjs/react"));
1881
+ var import_clsx12 = __toESM(require("clsx"));
1814
1882
  var import_rc_slider2 = __toESM(require("rc-slider"));
1815
- var import_react68 = __toESM(require("react"));
1883
+ var import_react69 = __toESM(require("react"));
1816
1884
  var import_white_web_sdk7 = require("white-web-sdk");
1817
1885
 
1818
1886
  // src/components/PlayerControl/components/Button.tsx
1819
- var import_clsx10 = __toESM(require("clsx"));
1820
- var import_react61 = __toESM(require("react"));
1821
- var import_react62 = __toESM(require("@tippyjs/react"));
1822
- var Button2 = (0, import_react61.forwardRef)((props, ref) => {
1887
+ var import_clsx11 = __toESM(require("clsx"));
1888
+ var import_react62 = __toESM(require("react"));
1889
+ var import_react63 = __toESM(require("@tippyjs/react"));
1890
+ var Button2 = (0, import_react62.forwardRef)((props, ref) => {
1823
1891
  const { theme, content, disabled, active, onClick, interactive, placement = "top", children } = props;
1824
- return /* @__PURE__ */ import_react61.default.createElement(import_react62.default, {
1892
+ return /* @__PURE__ */ import_react62.default.createElement(import_react63.default, {
1825
1893
  className: "fastboard-tip",
1826
1894
  content,
1827
1895
  interactive,
@@ -1831,48 +1899,48 @@ var Button2 = (0, import_react61.forwardRef)((props, ref) => {
1831
1899
  offset: TopOffset,
1832
1900
  delay: [1e3, 400],
1833
1901
  duration: 300
1834
- }, /* @__PURE__ */ import_react61.default.createElement("button", {
1902
+ }, /* @__PURE__ */ import_react62.default.createElement("button", {
1835
1903
  ref,
1836
- className: (0, import_clsx10.default)("fastboard-player-control-btn", theme, { active }),
1904
+ className: (0, import_clsx11.default)("fastboard-player-control-btn", theme, { active }),
1837
1905
  onClick,
1838
1906
  disabled
1839
1907
  }, children));
1840
1908
  });
1841
1909
 
1842
1910
  // src/components/PlayerControl/icons/index.ts
1843
- var import_react66 = require("react");
1911
+ var import_react67 = require("react");
1844
1912
 
1845
1913
  // src/components/PlayerControl/icons/Loading.tsx
1846
- var import_react63 = __toESM(require("react"));
1847
- var Loading = (props) => {
1914
+ var import_react64 = __toESM(require("react"));
1915
+ var Loading2 = (props) => {
1848
1916
  const stroke = getStroke(props);
1849
- return /* @__PURE__ */ import_react63.default.createElement("svg", {
1917
+ return /* @__PURE__ */ import_react64.default.createElement("svg", {
1850
1918
  viewBox: "0 0 24 24"
1851
- }, /* @__PURE__ */ import_react63.default.createElement("path", {
1919
+ }, /* @__PURE__ */ import_react64.default.createElement("path", {
1852
1920
  d: "M12 4V2A10 10 0 0 0 2 12h2a8 8 0 0 1 8-8z",
1853
1921
  fill: stroke
1854
1922
  }));
1855
1923
  };
1856
1924
 
1857
1925
  // src/components/PlayerControl/icons/Pause.tsx
1858
- var import_react64 = __toESM(require("react"));
1926
+ var import_react65 = __toESM(require("react"));
1859
1927
  var Pause = (props) => {
1860
1928
  const stroke = getStroke(props);
1861
- return /* @__PURE__ */ import_react64.default.createElement("svg", {
1929
+ return /* @__PURE__ */ import_react65.default.createElement("svg", {
1862
1930
  viewBox: "0 0 24 24"
1863
- }, /* @__PURE__ */ import_react64.default.createElement("path", {
1931
+ }, /* @__PURE__ */ import_react65.default.createElement("path", {
1864
1932
  d: "M14 19h4V5h-4M6 19h4V5H6v14z",
1865
1933
  fill: stroke
1866
1934
  }));
1867
1935
  };
1868
1936
 
1869
1937
  // src/components/PlayerControl/icons/Play.tsx
1870
- var import_react65 = __toESM(require("react"));
1938
+ var import_react66 = __toESM(require("react"));
1871
1939
  var Play = (props) => {
1872
1940
  const stroke = getStroke(props);
1873
- return /* @__PURE__ */ import_react65.default.createElement("svg", {
1941
+ return /* @__PURE__ */ import_react66.default.createElement("svg", {
1874
1942
  viewBox: "0 0 24 24"
1875
- }, /* @__PURE__ */ import_react65.default.createElement("path", {
1943
+ }, /* @__PURE__ */ import_react66.default.createElement("path", {
1876
1944
  d: "M8 5.14v14l11-7l-11-7z",
1877
1945
  fill: stroke
1878
1946
  }));
@@ -1880,9 +1948,9 @@ var Play = (props) => {
1880
1948
 
1881
1949
  // src/components/PlayerControl/icons/index.ts
1882
1950
  var Icons2 = {
1883
- Play: (0, import_react66.memo)(Play),
1884
- Pause: (0, import_react66.memo)(Pause),
1885
- Loading: (0, import_react66.memo)(Loading)
1951
+ Play: (0, import_react67.memo)(Play),
1952
+ Pause: (0, import_react67.memo)(Pause),
1953
+ Loading: (0, import_react67.memo)(Loading2)
1886
1954
  };
1887
1955
 
1888
1956
  // src/components/PlayerControl/PlayerControl.tsx
@@ -1891,12 +1959,12 @@ function PlayerControl(_a) {
1891
1959
  var _b = _a, { theme, autoHide = false, player: player_ } = _b, icons = __objRest(_b, ["theme", "autoHide", "player"]);
1892
1960
  theme = useTheme(theme);
1893
1961
  const { t } = useTranslation();
1894
- const [currentTime, setCurrentTime] = (0, import_react68.useState)(0);
1895
- const player = usePlayerControl(player_);
1896
- (0, import_react68.useEffect)(() => {
1962
+ const [currentTime, setCurrentTime] = (0, import_react69.useState)(0);
1963
+ const player = usePlayerControl(player_ == null ? void 0 : player_.player);
1964
+ (0, import_react69.useEffect)(() => {
1897
1965
  setCurrentTime(player.currentTime);
1898
1966
  }, [player.currentTime]);
1899
- (0, import_react68.useEffect)(() => {
1967
+ (0, import_react69.useEffect)(() => {
1900
1968
  if (player.currentTime !== currentTime) {
1901
1969
  player.seekToProgressTime(currentTime);
1902
1970
  }
@@ -1904,25 +1972,25 @@ function PlayerControl(_a) {
1904
1972
  const isLoading = player.phase === import_white_web_sdk7.PlayerPhase.WaitingFirstFrame || player.phase === import_white_web_sdk7.PlayerPhase.Buffering;
1905
1973
  const isPlaying = player.phase === import_white_web_sdk7.PlayerPhase.Playing;
1906
1974
  const { activeColor } = themes[theme];
1907
- return /* @__PURE__ */ import_react68.default.createElement("div", {
1908
- className: (0, import_clsx11.default)(name5, theme, { "auto-hide": autoHide })
1909
- }, /* @__PURE__ */ import_react68.default.createElement("button", {
1910
- className: (0, import_clsx11.default)(`${name5}-btn`, isLoading ? "loading" : isPlaying ? "pause" : "play", theme),
1975
+ return /* @__PURE__ */ import_react69.default.createElement("div", {
1976
+ className: (0, import_clsx12.default)(name5, theme, { "auto-hide": autoHide })
1977
+ }, /* @__PURE__ */ import_react69.default.createElement("button", {
1978
+ className: (0, import_clsx12.default)(`${name5}-btn`, isLoading ? "loading" : isPlaying ? "pause" : "play", theme),
1911
1979
  disabled: isLoading,
1912
1980
  onClick: player.togglePlay
1913
- }, /* @__PURE__ */ import_react68.default.createElement(Icon, {
1914
- fallback: isLoading ? /* @__PURE__ */ import_react68.default.createElement(Icons2.Loading, {
1981
+ }, /* @__PURE__ */ import_react69.default.createElement(Icon, {
1982
+ fallback: isLoading ? /* @__PURE__ */ import_react69.default.createElement(Icons2.Loading, {
1915
1983
  theme
1916
- }) : isPlaying ? /* @__PURE__ */ import_react68.default.createElement(Icons2.Pause, {
1984
+ }) : isPlaying ? /* @__PURE__ */ import_react69.default.createElement(Icons2.Pause, {
1917
1985
  theme
1918
- }) : /* @__PURE__ */ import_react68.default.createElement(Icons2.Play, {
1986
+ }) : /* @__PURE__ */ import_react69.default.createElement(Icons2.Play, {
1919
1987
  theme
1920
1988
  }),
1921
1989
  src: isLoading ? icons.loadingIcon : isPlaying ? icons.pauseIcon : icons.playIcon,
1922
1990
  alt: isLoading ? "[loading]" : isPlaying ? "[pause]" : "[play]"
1923
- })), /* @__PURE__ */ import_react68.default.createElement("span", {
1924
- className: (0, import_clsx11.default)(`${name5}-slider`, { loading: isLoading }, theme)
1925
- }, /* @__PURE__ */ import_react68.default.createElement(import_rc_slider2.default, {
1991
+ })), /* @__PURE__ */ import_react69.default.createElement("span", {
1992
+ className: (0, import_clsx12.default)(`${name5}-slider`, { loading: isLoading }, theme)
1993
+ }, /* @__PURE__ */ import_react69.default.createElement(import_rc_slider2.default, {
1926
1994
  disabled: isLoading,
1927
1995
  trackStyle: { background: activeColor },
1928
1996
  handleStyle: { border: `1px solid ${activeColor}` },
@@ -1931,15 +1999,15 @@ function PlayerControl(_a) {
1931
1999
  min: 0,
1932
2000
  max: player.totalTime,
1933
2001
  step: 100
1934
- })), /* @__PURE__ */ import_react68.default.createElement("span", {
1935
- className: (0, import_clsx11.default)(`${name5}-current`, theme)
1936
- }, renderTime(player.currentTime)), /* @__PURE__ */ import_react68.default.createElement("span", {
1937
- className: (0, import_clsx11.default)(`${name5}-slash`, theme)
1938
- }, "/"), /* @__PURE__ */ import_react68.default.createElement("span", {
1939
- className: (0, import_clsx11.default)(`${name5}-total`, theme)
1940
- }, renderTime(player.totalTime)), /* @__PURE__ */ import_react68.default.createElement("span", {
2002
+ })), /* @__PURE__ */ import_react69.default.createElement("span", {
2003
+ className: (0, import_clsx12.default)(`${name5}-current`, theme)
2004
+ }, renderTime(player.currentTime)), /* @__PURE__ */ import_react69.default.createElement("span", {
2005
+ className: (0, import_clsx12.default)(`${name5}-slash`, theme)
2006
+ }, "/"), /* @__PURE__ */ import_react69.default.createElement("span", {
2007
+ className: (0, import_clsx12.default)(`${name5}-total`, theme)
2008
+ }, renderTime(player.totalTime)), /* @__PURE__ */ import_react69.default.createElement("span", {
1941
2009
  className: `${name5}-btn-interactive`
1942
- }, /* @__PURE__ */ import_react68.default.createElement(import_react67.default, {
2010
+ }, /* @__PURE__ */ import_react69.default.createElement(import_react68.default, {
1943
2011
  className: "fastboard-tip",
1944
2012
  content: renderSpeeds(player),
1945
2013
  theme,
@@ -1948,12 +2016,12 @@ function PlayerControl(_a) {
1948
2016
  offset: TopOffset,
1949
2017
  arrow: false,
1950
2018
  interactive: true
1951
- }, /* @__PURE__ */ import_react68.default.createElement(Button2, {
2019
+ }, /* @__PURE__ */ import_react69.default.createElement(Button2, {
1952
2020
  content: t("speed"),
1953
2021
  theme,
1954
2022
  disabled: isLoading
1955
- }, /* @__PURE__ */ import_react68.default.createElement("span", {
1956
- className: (0, import_clsx11.default)(`${name5}-speed-text`, theme)
2023
+ }, /* @__PURE__ */ import_react69.default.createElement("span", {
2024
+ className: (0, import_clsx12.default)(`${name5}-speed-text`, theme)
1957
2025
  }, player.speed, "x")))));
1958
2026
  }
1959
2027
  function renderTime(ms) {
@@ -1964,10 +2032,10 @@ function renderTime(ms) {
1964
2032
  }
1965
2033
  var Speeds = [2, 1.5, 1.25, 1, 0.75, 0.5];
1966
2034
  function renderSpeeds({ speed: current, setSpeed }) {
1967
- return /* @__PURE__ */ import_react68.default.createElement("div", {
1968
- className: (0, import_clsx11.default)(`${name5}-panel`, "speed")
1969
- }, Speeds.map((speed) => /* @__PURE__ */ import_react68.default.createElement("button", {
1970
- className: (0, import_clsx11.default)(`${name5}-btn`, "speed", {
2035
+ return /* @__PURE__ */ import_react69.default.createElement("div", {
2036
+ className: (0, import_clsx12.default)(`${name5}-panel`, "speed")
2037
+ }, Speeds.map((speed) => /* @__PURE__ */ import_react69.default.createElement("button", {
2038
+ className: (0, import_clsx12.default)(`${name5}-btn`, "speed", {
1971
2039
  active: speed === current
1972
2040
  }),
1973
2041
  key: speed,
@@ -1976,85 +2044,2956 @@ function renderSpeeds({ speed: current, setSpeed }) {
1976
2044
  }
1977
2045
 
1978
2046
  // src/components/Fastboard.tsx
1979
- var import_react69 = __toESM(require("react"));
1980
- var Fastboard = /* @__PURE__ */ (0, import_react69.forwardRef)(function Fastboard2(_a, ref) {
1981
- var _b = _a, { app, theme, layout, language } = _b, restProps = __objRest(_b, ["app", "theme", "layout", "language"]);
1982
- if (!app) {
1983
- return /* @__PURE__ */ import_react69.default.createElement("div", __spreadValues({
1984
- className: "fastboard-root",
1985
- ref
1986
- }, restProps));
2047
+ var import_react70 = __toESM(require("react"));
2048
+
2049
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/enums.js
2050
+ var top = "top";
2051
+ var bottom = "bottom";
2052
+ var right = "right";
2053
+ var left = "left";
2054
+ var auto = "auto";
2055
+ var basePlacements = [top, bottom, right, left];
2056
+ var start = "start";
2057
+ var end = "end";
2058
+ var clippingParents = "clippingParents";
2059
+ var viewport = "viewport";
2060
+ var popper = "popper";
2061
+ var reference = "reference";
2062
+ var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {
2063
+ return acc.concat([placement + "-" + start, placement + "-" + end]);
2064
+ }, []);
2065
+ var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
2066
+ return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
2067
+ }, []);
2068
+ var beforeRead = "beforeRead";
2069
+ var read = "read";
2070
+ var afterRead = "afterRead";
2071
+ var beforeMain = "beforeMain";
2072
+ var main = "main";
2073
+ var afterMain = "afterMain";
2074
+ var beforeWrite = "beforeWrite";
2075
+ var write = "write";
2076
+ var afterWrite = "afterWrite";
2077
+ var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
2078
+
2079
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js
2080
+ function getNodeName(element) {
2081
+ return element ? (element.nodeName || "").toLowerCase() : null;
2082
+ }
2083
+
2084
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getWindow.js
2085
+ function getWindow(node) {
2086
+ if (node == null) {
2087
+ return window;
1987
2088
  }
1988
- return /* @__PURE__ */ import_react69.default.createElement(FastboardAppContext.Provider, {
1989
- value: app
1990
- }, /* @__PURE__ */ import_react69.default.createElement(FastboardInternal, __spreadValues(__spreadValues({
1991
- forwardedRef: ref
1992
- }, { theme, layout, language }), restProps)));
1993
- });
1994
- function FastboardInternal(_a) {
1995
- var _b = _a, {
1996
- forwardedRef,
1997
- language,
1998
- layout = {},
1999
- theme = "light",
2000
- children
2001
- } = _b, restProps = __objRest(_b, [
2002
- "forwardedRef",
2003
- "language",
2004
- "layout",
2005
- "theme",
2006
- "children"
2007
- ]);
2008
- const app = useFastboardApp();
2009
- const forceUpdate = useForceUpdate();
2010
- const i18n = useAsyncValue(() => createI18n({ language }));
2011
- (0, import_react69.useEffect)(() => {
2012
- if (i18n)
2013
- i18n.changeLanguage(language);
2014
- forceUpdate();
2015
- }, [forceUpdate, i18n, language]);
2016
- (0, import_react69.useEffect)(() => {
2017
- app.manager.setPrefersColorScheme(theme);
2018
- }, [app, theme]);
2019
- const useWhiteboard = (0, import_react69.useCallback)((container) => {
2020
- if (container && app)
2021
- app.manager.bindContainer(container);
2022
- }, [app]);
2023
- const hideControls = useHideControls();
2024
- const showControls = !hideControls;
2025
- const {
2026
- Toolbar: toolbar = showControls || hideControls === "toolbar-only",
2027
- RedoUndo: redo_undo = showControls,
2028
- ZoomControl: zoom_control = showControls,
2029
- PageControl: page_control = showControls
2030
- } = layout;
2031
- return /* @__PURE__ */ import_react69.default.createElement(ThemeContext.Provider, {
2032
- value: theme
2033
- }, /* @__PURE__ */ import_react69.default.createElement(I18nContext.Provider, {
2034
- value: i18n
2035
- }, /* @__PURE__ */ import_react69.default.createElement("div", __spreadProps(__spreadValues({}, restProps), {
2036
- className: "fastboard-root",
2037
- ref: forwardedRef
2038
- }), /* @__PURE__ */ import_react69.default.createElement("div", {
2039
- className: "fastboard-view",
2040
- ref: useWhiteboard
2041
- }), children ? children : /* @__PURE__ */ import_react69.default.createElement(import_react69.default.Fragment, null, toolbar && /* @__PURE__ */ import_react69.default.createElement("div", {
2042
- className: "fastboard-left"
2043
- }, /* @__PURE__ */ import_react69.default.createElement(Toolbar, null)), (redo_undo || zoom_control) && /* @__PURE__ */ import_react69.default.createElement("div", {
2044
- className: "fastboard-bottom-left"
2045
- }, redo_undo && /* @__PURE__ */ import_react69.default.createElement(RedoUndo, null), zoom_control && /* @__PURE__ */ import_react69.default.createElement(ZoomControl, null)), page_control && /* @__PURE__ */ import_react69.default.createElement("div", {
2046
- className: "fastboard-bottom-right"
2047
- }, /* @__PURE__ */ import_react69.default.createElement(PageControl, null))))));
2089
+ if (node.toString() !== "[object Window]") {
2090
+ var ownerDocument = node.ownerDocument;
2091
+ return ownerDocument ? ownerDocument.defaultView || window : window;
2092
+ }
2093
+ return node;
2048
2094
  }
2049
2095
 
2050
- // src/vanilla/index.tsx
2051
- var import_react70 = __toESM(require("react"));
2052
- var import_react_dom = __toESM(require("react-dom"));
2053
- function mount(app, dom, props) {
2054
- import_react_dom.default.render(/* @__PURE__ */ import_react70.default.createElement(Fastboard, __spreadValues({
2055
- app
2056
- }, props)), dom);
2057
- return () => import_react_dom.default.unmountComponentAtNode(dom);
2096
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js
2097
+ function isElement(node) {
2098
+ var OwnElement = getWindow(node).Element;
2099
+ return node instanceof OwnElement || node instanceof Element;
2100
+ }
2101
+ function isHTMLElement(node) {
2102
+ var OwnElement = getWindow(node).HTMLElement;
2103
+ return node instanceof OwnElement || node instanceof HTMLElement;
2104
+ }
2105
+ function isShadowRoot(node) {
2106
+ if (typeof ShadowRoot === "undefined") {
2107
+ return false;
2108
+ }
2109
+ var OwnElement = getWindow(node).ShadowRoot;
2110
+ return node instanceof OwnElement || node instanceof ShadowRoot;
2111
+ }
2112
+
2113
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/applyStyles.js
2114
+ function applyStyles2(_ref) {
2115
+ var state = _ref.state;
2116
+ Object.keys(state.elements).forEach(function(name6) {
2117
+ var style = state.styles[name6] || {};
2118
+ var attributes = state.attributes[name6] || {};
2119
+ var element = state.elements[name6];
2120
+ if (!isHTMLElement(element) || !getNodeName(element)) {
2121
+ return;
2122
+ }
2123
+ Object.assign(element.style, style);
2124
+ Object.keys(attributes).forEach(function(name7) {
2125
+ var value = attributes[name7];
2126
+ if (value === false) {
2127
+ element.removeAttribute(name7);
2128
+ } else {
2129
+ element.setAttribute(name7, value === true ? "" : value);
2130
+ }
2131
+ });
2132
+ });
2133
+ }
2134
+ function effect(_ref2) {
2135
+ var state = _ref2.state;
2136
+ var initialStyles = {
2137
+ popper: {
2138
+ position: state.options.strategy,
2139
+ left: "0",
2140
+ top: "0",
2141
+ margin: "0"
2142
+ },
2143
+ arrow: {
2144
+ position: "absolute"
2145
+ },
2146
+ reference: {}
2147
+ };
2148
+ Object.assign(state.elements.popper.style, initialStyles.popper);
2149
+ state.styles = initialStyles;
2150
+ if (state.elements.arrow) {
2151
+ Object.assign(state.elements.arrow.style, initialStyles.arrow);
2152
+ }
2153
+ return function() {
2154
+ Object.keys(state.elements).forEach(function(name6) {
2155
+ var element = state.elements[name6];
2156
+ var attributes = state.attributes[name6] || {};
2157
+ var styleProperties = Object.keys(state.styles.hasOwnProperty(name6) ? state.styles[name6] : initialStyles[name6]);
2158
+ var style = styleProperties.reduce(function(style2, property) {
2159
+ style2[property] = "";
2160
+ return style2;
2161
+ }, {});
2162
+ if (!isHTMLElement(element) || !getNodeName(element)) {
2163
+ return;
2164
+ }
2165
+ Object.assign(element.style, style);
2166
+ Object.keys(attributes).forEach(function(attribute) {
2167
+ element.removeAttribute(attribute);
2168
+ });
2169
+ });
2170
+ };
2171
+ }
2172
+ var applyStyles_default = {
2173
+ name: "applyStyles",
2174
+ enabled: true,
2175
+ phase: "write",
2176
+ fn: applyStyles2,
2177
+ effect,
2178
+ requires: ["computeStyles"]
2179
+ };
2180
+
2181
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/getBasePlacement.js
2182
+ function getBasePlacement(placement) {
2183
+ return placement.split("-")[0];
2184
+ }
2185
+
2186
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/math.js
2187
+ var max = Math.max;
2188
+ var min = Math.min;
2189
+ var round = Math.round;
2190
+
2191
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js
2192
+ function getBoundingClientRect(element, includeScale) {
2193
+ if (includeScale === void 0) {
2194
+ includeScale = false;
2195
+ }
2196
+ var rect = element.getBoundingClientRect();
2197
+ var scaleX = 1;
2198
+ var scaleY = 1;
2199
+ if (isHTMLElement(element) && includeScale) {
2200
+ var offsetHeight = element.offsetHeight;
2201
+ var offsetWidth = element.offsetWidth;
2202
+ if (offsetWidth > 0) {
2203
+ scaleX = round(rect.width) / offsetWidth || 1;
2204
+ }
2205
+ if (offsetHeight > 0) {
2206
+ scaleY = round(rect.height) / offsetHeight || 1;
2207
+ }
2208
+ }
2209
+ return {
2210
+ width: rect.width / scaleX,
2211
+ height: rect.height / scaleY,
2212
+ top: rect.top / scaleY,
2213
+ right: rect.right / scaleX,
2214
+ bottom: rect.bottom / scaleY,
2215
+ left: rect.left / scaleX,
2216
+ x: rect.left / scaleX,
2217
+ y: rect.top / scaleY
2218
+ };
2219
+ }
2220
+
2221
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js
2222
+ function getLayoutRect(element) {
2223
+ var clientRect = getBoundingClientRect(element);
2224
+ var width = element.offsetWidth;
2225
+ var height = element.offsetHeight;
2226
+ if (Math.abs(clientRect.width - width) <= 1) {
2227
+ width = clientRect.width;
2228
+ }
2229
+ if (Math.abs(clientRect.height - height) <= 1) {
2230
+ height = clientRect.height;
2231
+ }
2232
+ return {
2233
+ x: element.offsetLeft,
2234
+ y: element.offsetTop,
2235
+ width,
2236
+ height
2237
+ };
2238
+ }
2239
+
2240
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/contains.js
2241
+ function contains(parent, child) {
2242
+ var rootNode = child.getRootNode && child.getRootNode();
2243
+ if (parent.contains(child)) {
2244
+ return true;
2245
+ } else if (rootNode && isShadowRoot(rootNode)) {
2246
+ var next = child;
2247
+ do {
2248
+ if (next && parent.isSameNode(next)) {
2249
+ return true;
2250
+ }
2251
+ next = next.parentNode || next.host;
2252
+ } while (next);
2253
+ }
2254
+ return false;
2255
+ }
2256
+
2257
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js
2258
+ function getComputedStyle2(element) {
2259
+ return getWindow(element).getComputedStyle(element);
2260
+ }
2261
+
2262
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js
2263
+ function isTableElement(element) {
2264
+ return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0;
2265
+ }
2266
+
2267
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js
2268
+ function getDocumentElement(element) {
2269
+ return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;
2270
+ }
2271
+
2272
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js
2273
+ function getParentNode(element) {
2274
+ if (getNodeName(element) === "html") {
2275
+ return element;
2276
+ }
2277
+ return element.assignedSlot || element.parentNode || (isShadowRoot(element) ? element.host : null) || getDocumentElement(element);
2278
+ }
2279
+
2280
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js
2281
+ function getTrueOffsetParent(element) {
2282
+ if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") {
2283
+ return null;
2284
+ }
2285
+ return element.offsetParent;
2286
+ }
2287
+ function getContainingBlock(element) {
2288
+ var isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1;
2289
+ var isIE = navigator.userAgent.indexOf("Trident") !== -1;
2290
+ if (isIE && isHTMLElement(element)) {
2291
+ var elementCss = getComputedStyle2(element);
2292
+ if (elementCss.position === "fixed") {
2293
+ return null;
2294
+ }
2295
+ }
2296
+ var currentNode = getParentNode(element);
2297
+ while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
2298
+ var css = getComputedStyle2(currentNode);
2299
+ if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") {
2300
+ return currentNode;
2301
+ } else {
2302
+ currentNode = currentNode.parentNode;
2303
+ }
2304
+ }
2305
+ return null;
2306
+ }
2307
+ function getOffsetParent(element) {
2308
+ var window2 = getWindow(element);
2309
+ var offsetParent = getTrueOffsetParent(element);
2310
+ while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") {
2311
+ offsetParent = getTrueOffsetParent(offsetParent);
2312
+ }
2313
+ if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) {
2314
+ return window2;
2315
+ }
2316
+ return offsetParent || getContainingBlock(element) || window2;
2317
+ }
2318
+
2319
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js
2320
+ function getMainAxisFromPlacement(placement) {
2321
+ return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
2322
+ }
2323
+
2324
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/within.js
2325
+ function within(min2, value, max2) {
2326
+ return max(min2, min(value, max2));
2327
+ }
2328
+ function withinMaxClamp(min2, value, max2) {
2329
+ var v = within(min2, value, max2);
2330
+ return v > max2 ? max2 : v;
2331
+ }
2332
+
2333
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js
2334
+ function getFreshSideObject() {
2335
+ return {
2336
+ top: 0,
2337
+ right: 0,
2338
+ bottom: 0,
2339
+ left: 0
2340
+ };
2341
+ }
2342
+
2343
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js
2344
+ function mergePaddingObject(paddingObject) {
2345
+ return Object.assign({}, getFreshSideObject(), paddingObject);
2346
+ }
2347
+
2348
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/expandToHashMap.js
2349
+ function expandToHashMap(value, keys) {
2350
+ return keys.reduce(function(hashMap, key) {
2351
+ hashMap[key] = value;
2352
+ return hashMap;
2353
+ }, {});
2354
+ }
2355
+
2356
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/arrow.js
2357
+ var toPaddingObject = function toPaddingObject2(padding, state) {
2358
+ padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, {
2359
+ placement: state.placement
2360
+ })) : padding;
2361
+ return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
2362
+ };
2363
+ function arrow(_ref) {
2364
+ var _state$modifiersData$;
2365
+ var state = _ref.state, name6 = _ref.name, options = _ref.options;
2366
+ var arrowElement = state.elements.arrow;
2367
+ var popperOffsets2 = state.modifiersData.popperOffsets;
2368
+ var basePlacement = getBasePlacement(state.placement);
2369
+ var axis = getMainAxisFromPlacement(basePlacement);
2370
+ var isVertical = [left, right].indexOf(basePlacement) >= 0;
2371
+ var len = isVertical ? "height" : "width";
2372
+ if (!arrowElement || !popperOffsets2) {
2373
+ return;
2374
+ }
2375
+ var paddingObject = toPaddingObject(options.padding, state);
2376
+ var arrowRect = getLayoutRect(arrowElement);
2377
+ var minProp = axis === "y" ? top : left;
2378
+ var maxProp = axis === "y" ? bottom : right;
2379
+ var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];
2380
+ var startDiff = popperOffsets2[axis] - state.rects.reference[axis];
2381
+ var arrowOffsetParent = getOffsetParent(arrowElement);
2382
+ var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
2383
+ var centerToReference = endDiff / 2 - startDiff / 2;
2384
+ var min2 = paddingObject[minProp];
2385
+ var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];
2386
+ var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
2387
+ var offset2 = within(min2, center, max2);
2388
+ var axisProp = axis;
2389
+ state.modifiersData[name6] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);
2390
+ }
2391
+ function effect2(_ref2) {
2392
+ var state = _ref2.state, options = _ref2.options;
2393
+ var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
2394
+ if (arrowElement == null) {
2395
+ return;
2396
+ }
2397
+ if (typeof arrowElement === "string") {
2398
+ arrowElement = state.elements.popper.querySelector(arrowElement);
2399
+ if (!arrowElement) {
2400
+ return;
2401
+ }
2402
+ }
2403
+ if (true) {
2404
+ if (!isHTMLElement(arrowElement)) {
2405
+ console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" "));
2406
+ }
2407
+ }
2408
+ if (!contains(state.elements.popper, arrowElement)) {
2409
+ if (true) {
2410
+ console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" "));
2411
+ }
2412
+ return;
2413
+ }
2414
+ state.elements.arrow = arrowElement;
2415
+ }
2416
+ var arrow_default = {
2417
+ name: "arrow",
2418
+ enabled: true,
2419
+ phase: "main",
2420
+ fn: arrow,
2421
+ effect: effect2,
2422
+ requires: ["popperOffsets"],
2423
+ requiresIfExists: ["preventOverflow"]
2424
+ };
2425
+
2426
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/getVariation.js
2427
+ function getVariation(placement) {
2428
+ return placement.split("-")[1];
2429
+ }
2430
+
2431
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/computeStyles.js
2432
+ var unsetSides = {
2433
+ top: "auto",
2434
+ right: "auto",
2435
+ bottom: "auto",
2436
+ left: "auto"
2437
+ };
2438
+ function roundOffsetsByDPR(_ref) {
2439
+ var x = _ref.x, y = _ref.y;
2440
+ var win = window;
2441
+ var dpr = win.devicePixelRatio || 1;
2442
+ return {
2443
+ x: round(x * dpr) / dpr || 0,
2444
+ y: round(y * dpr) / dpr || 0
2445
+ };
2446
+ }
2447
+ function mapToStyles(_ref2) {
2448
+ var _Object$assign2;
2449
+ var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
2450
+ var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;
2451
+ var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
2452
+ x,
2453
+ y
2454
+ }) : {
2455
+ x,
2456
+ y
2457
+ };
2458
+ x = _ref3.x;
2459
+ y = _ref3.y;
2460
+ var hasX = offsets.hasOwnProperty("x");
2461
+ var hasY = offsets.hasOwnProperty("y");
2462
+ var sideX = left;
2463
+ var sideY = top;
2464
+ var win = window;
2465
+ if (adaptive) {
2466
+ var offsetParent = getOffsetParent(popper2);
2467
+ var heightProp = "clientHeight";
2468
+ var widthProp = "clientWidth";
2469
+ if (offsetParent === getWindow(popper2)) {
2470
+ offsetParent = getDocumentElement(popper2);
2471
+ if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") {
2472
+ heightProp = "scrollHeight";
2473
+ widthProp = "scrollWidth";
2474
+ }
2475
+ }
2476
+ offsetParent = offsetParent;
2477
+ if (placement === top || (placement === left || placement === right) && variation === end) {
2478
+ sideY = bottom;
2479
+ var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : offsetParent[heightProp];
2480
+ y -= offsetY - popperRect.height;
2481
+ y *= gpuAcceleration ? 1 : -1;
2482
+ }
2483
+ if (placement === left || (placement === top || placement === bottom) && variation === end) {
2484
+ sideX = right;
2485
+ var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : offsetParent[widthProp];
2486
+ x -= offsetX - popperRect.width;
2487
+ x *= gpuAcceleration ? 1 : -1;
2488
+ }
2489
+ }
2490
+ var commonStyles = Object.assign({
2491
+ position
2492
+ }, adaptive && unsetSides);
2493
+ var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
2494
+ x,
2495
+ y
2496
+ }) : {
2497
+ x,
2498
+ y
2499
+ };
2500
+ x = _ref4.x;
2501
+ y = _ref4.y;
2502
+ if (gpuAcceleration) {
2503
+ var _Object$assign;
2504
+ return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
2505
+ }
2506
+ return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
2507
+ }
2508
+ function computeStyles(_ref5) {
2509
+ var state = _ref5.state, options = _ref5.options;
2510
+ var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
2511
+ if (true) {
2512
+ var transitionProperty = getComputedStyle2(state.elements.popper).transitionProperty || "";
2513
+ if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) {
2514
+ return transitionProperty.indexOf(property) >= 0;
2515
+ })) {
2516
+ console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" "));
2517
+ }
2518
+ }
2519
+ var commonStyles = {
2520
+ placement: getBasePlacement(state.placement),
2521
+ variation: getVariation(state.placement),
2522
+ popper: state.elements.popper,
2523
+ popperRect: state.rects.popper,
2524
+ gpuAcceleration,
2525
+ isFixed: state.options.strategy === "fixed"
2526
+ };
2527
+ if (state.modifiersData.popperOffsets != null) {
2528
+ state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
2529
+ offsets: state.modifiersData.popperOffsets,
2530
+ position: state.options.strategy,
2531
+ adaptive,
2532
+ roundOffsets
2533
+ })));
2534
+ }
2535
+ if (state.modifiersData.arrow != null) {
2536
+ state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
2537
+ offsets: state.modifiersData.arrow,
2538
+ position: "absolute",
2539
+ adaptive: false,
2540
+ roundOffsets
2541
+ })));
2542
+ }
2543
+ state.attributes.popper = Object.assign({}, state.attributes.popper, {
2544
+ "data-popper-placement": state.placement
2545
+ });
2546
+ }
2547
+ var computeStyles_default = {
2548
+ name: "computeStyles",
2549
+ enabled: true,
2550
+ phase: "beforeWrite",
2551
+ fn: computeStyles,
2552
+ data: {}
2553
+ };
2554
+
2555
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/eventListeners.js
2556
+ var passive = {
2557
+ passive: true
2558
+ };
2559
+ function effect3(_ref) {
2560
+ var state = _ref.state, instance = _ref.instance, options = _ref.options;
2561
+ var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
2562
+ var window2 = getWindow(state.elements.popper);
2563
+ var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
2564
+ if (scroll) {
2565
+ scrollParents.forEach(function(scrollParent) {
2566
+ scrollParent.addEventListener("scroll", instance.update, passive);
2567
+ });
2568
+ }
2569
+ if (resize) {
2570
+ window2.addEventListener("resize", instance.update, passive);
2571
+ }
2572
+ return function() {
2573
+ if (scroll) {
2574
+ scrollParents.forEach(function(scrollParent) {
2575
+ scrollParent.removeEventListener("scroll", instance.update, passive);
2576
+ });
2577
+ }
2578
+ if (resize) {
2579
+ window2.removeEventListener("resize", instance.update, passive);
2580
+ }
2581
+ };
2582
+ }
2583
+ var eventListeners_default = {
2584
+ name: "eventListeners",
2585
+ enabled: true,
2586
+ phase: "write",
2587
+ fn: function fn() {
2588
+ },
2589
+ effect: effect3,
2590
+ data: {}
2591
+ };
2592
+
2593
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js
2594
+ var hash = {
2595
+ left: "right",
2596
+ right: "left",
2597
+ bottom: "top",
2598
+ top: "bottom"
2599
+ };
2600
+ function getOppositePlacement(placement) {
2601
+ return placement.replace(/left|right|bottom|top/g, function(matched) {
2602
+ return hash[matched];
2603
+ });
2604
+ }
2605
+
2606
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js
2607
+ var hash2 = {
2608
+ start: "end",
2609
+ end: "start"
2610
+ };
2611
+ function getOppositeVariationPlacement(placement) {
2612
+ return placement.replace(/start|end/g, function(matched) {
2613
+ return hash2[matched];
2614
+ });
2615
+ }
2616
+
2617
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js
2618
+ function getWindowScroll(node) {
2619
+ var win = getWindow(node);
2620
+ var scrollLeft = win.pageXOffset;
2621
+ var scrollTop = win.pageYOffset;
2622
+ return {
2623
+ scrollLeft,
2624
+ scrollTop
2625
+ };
2626
+ }
2627
+
2628
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js
2629
+ function getWindowScrollBarX(element) {
2630
+ return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
2631
+ }
2632
+
2633
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
2634
+ function getViewportRect(element) {
2635
+ var win = getWindow(element);
2636
+ var html = getDocumentElement(element);
2637
+ var visualViewport = win.visualViewport;
2638
+ var width = html.clientWidth;
2639
+ var height = html.clientHeight;
2640
+ var x = 0;
2641
+ var y = 0;
2642
+ if (visualViewport) {
2643
+ width = visualViewport.width;
2644
+ height = visualViewport.height;
2645
+ if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
2646
+ x = visualViewport.offsetLeft;
2647
+ y = visualViewport.offsetTop;
2648
+ }
2649
+ }
2650
+ return {
2651
+ width,
2652
+ height,
2653
+ x: x + getWindowScrollBarX(element),
2654
+ y
2655
+ };
2656
+ }
2657
+
2658
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
2659
+ function getDocumentRect(element) {
2660
+ var _element$ownerDocumen;
2661
+ var html = getDocumentElement(element);
2662
+ var winScroll = getWindowScroll(element);
2663
+ var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
2664
+ var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
2665
+ var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
2666
+ var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
2667
+ var y = -winScroll.scrollTop;
2668
+ if (getComputedStyle2(body || html).direction === "rtl") {
2669
+ x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
2670
+ }
2671
+ return {
2672
+ width,
2673
+ height,
2674
+ x,
2675
+ y
2676
+ };
2677
+ }
2678
+
2679
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js
2680
+ function isScrollParent(element) {
2681
+ var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
2682
+ return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
2683
+ }
2684
+
2685
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js
2686
+ function getScrollParent(node) {
2687
+ if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) {
2688
+ return node.ownerDocument.body;
2689
+ }
2690
+ if (isHTMLElement(node) && isScrollParent(node)) {
2691
+ return node;
2692
+ }
2693
+ return getScrollParent(getParentNode(node));
2694
+ }
2695
+
2696
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
2697
+ function listScrollParents(element, list) {
2698
+ var _element$ownerDocumen;
2699
+ if (list === void 0) {
2700
+ list = [];
2701
+ }
2702
+ var scrollParent = getScrollParent(element);
2703
+ var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
2704
+ var win = getWindow(scrollParent);
2705
+ var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
2706
+ var updatedList = list.concat(target);
2707
+ return isBody ? updatedList : updatedList.concat(listScrollParents(getParentNode(target)));
2708
+ }
2709
+
2710
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/rectToClientRect.js
2711
+ function rectToClientRect(rect) {
2712
+ return Object.assign({}, rect, {
2713
+ left: rect.x,
2714
+ top: rect.y,
2715
+ right: rect.x + rect.width,
2716
+ bottom: rect.y + rect.height
2717
+ });
2718
+ }
2719
+
2720
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js
2721
+ function getInnerBoundingClientRect(element) {
2722
+ var rect = getBoundingClientRect(element);
2723
+ rect.top = rect.top + element.clientTop;
2724
+ rect.left = rect.left + element.clientLeft;
2725
+ rect.bottom = rect.top + element.clientHeight;
2726
+ rect.right = rect.left + element.clientWidth;
2727
+ rect.width = element.clientWidth;
2728
+ rect.height = element.clientHeight;
2729
+ rect.x = rect.left;
2730
+ rect.y = rect.top;
2731
+ return rect;
2732
+ }
2733
+ function getClientRectFromMixedType(element, clippingParent) {
2734
+ return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
2735
+ }
2736
+ function getClippingParents(element) {
2737
+ var clippingParents2 = listScrollParents(getParentNode(element));
2738
+ var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0;
2739
+ var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
2740
+ if (!isElement(clipperElement)) {
2741
+ return [];
2742
+ }
2743
+ return clippingParents2.filter(function(clippingParent) {
2744
+ return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
2745
+ });
2746
+ }
2747
+ function getClippingRect(element, boundary, rootBoundary) {
2748
+ var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
2749
+ var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);
2750
+ var firstClippingParent = clippingParents2[0];
2751
+ var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {
2752
+ var rect = getClientRectFromMixedType(element, clippingParent);
2753
+ accRect.top = max(rect.top, accRect.top);
2754
+ accRect.right = min(rect.right, accRect.right);
2755
+ accRect.bottom = min(rect.bottom, accRect.bottom);
2756
+ accRect.left = max(rect.left, accRect.left);
2757
+ return accRect;
2758
+ }, getClientRectFromMixedType(element, firstClippingParent));
2759
+ clippingRect.width = clippingRect.right - clippingRect.left;
2760
+ clippingRect.height = clippingRect.bottom - clippingRect.top;
2761
+ clippingRect.x = clippingRect.left;
2762
+ clippingRect.y = clippingRect.top;
2763
+ return clippingRect;
2764
+ }
2765
+
2766
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/computeOffsets.js
2767
+ function computeOffsets(_ref) {
2768
+ var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;
2769
+ var basePlacement = placement ? getBasePlacement(placement) : null;
2770
+ var variation = placement ? getVariation(placement) : null;
2771
+ var commonX = reference2.x + reference2.width / 2 - element.width / 2;
2772
+ var commonY = reference2.y + reference2.height / 2 - element.height / 2;
2773
+ var offsets;
2774
+ switch (basePlacement) {
2775
+ case top:
2776
+ offsets = {
2777
+ x: commonX,
2778
+ y: reference2.y - element.height
2779
+ };
2780
+ break;
2781
+ case bottom:
2782
+ offsets = {
2783
+ x: commonX,
2784
+ y: reference2.y + reference2.height
2785
+ };
2786
+ break;
2787
+ case right:
2788
+ offsets = {
2789
+ x: reference2.x + reference2.width,
2790
+ y: commonY
2791
+ };
2792
+ break;
2793
+ case left:
2794
+ offsets = {
2795
+ x: reference2.x - element.width,
2796
+ y: commonY
2797
+ };
2798
+ break;
2799
+ default:
2800
+ offsets = {
2801
+ x: reference2.x,
2802
+ y: reference2.y
2803
+ };
2804
+ }
2805
+ var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
2806
+ if (mainAxis != null) {
2807
+ var len = mainAxis === "y" ? "height" : "width";
2808
+ switch (variation) {
2809
+ case start:
2810
+ offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);
2811
+ break;
2812
+ case end:
2813
+ offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);
2814
+ break;
2815
+ default:
2816
+ }
2817
+ }
2818
+ return offsets;
2819
+ }
2820
+
2821
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/detectOverflow.js
2822
+ function detectOverflow(state, options) {
2823
+ if (options === void 0) {
2824
+ options = {};
2825
+ }
2826
+ var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
2827
+ var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
2828
+ var altContext = elementContext === popper ? reference : popper;
2829
+ var popperRect = state.rects.popper;
2830
+ var element = state.elements[altBoundary ? altContext : elementContext];
2831
+ var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
2832
+ var referenceClientRect = getBoundingClientRect(state.elements.reference);
2833
+ var popperOffsets2 = computeOffsets({
2834
+ reference: referenceClientRect,
2835
+ element: popperRect,
2836
+ strategy: "absolute",
2837
+ placement
2838
+ });
2839
+ var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));
2840
+ var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
2841
+ var overflowOffsets = {
2842
+ top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
2843
+ bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
2844
+ left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
2845
+ right: elementClientRect.right - clippingClientRect.right + paddingObject.right
2846
+ };
2847
+ var offsetData = state.modifiersData.offset;
2848
+ if (elementContext === popper && offsetData) {
2849
+ var offset2 = offsetData[placement];
2850
+ Object.keys(overflowOffsets).forEach(function(key) {
2851
+ var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
2852
+ var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x";
2853
+ overflowOffsets[key] += offset2[axis] * multiply;
2854
+ });
2855
+ }
2856
+ return overflowOffsets;
2857
+ }
2858
+
2859
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js
2860
+ function computeAutoPlacement(state, options) {
2861
+ if (options === void 0) {
2862
+ options = {};
2863
+ }
2864
+ var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
2865
+ var variation = getVariation(placement);
2866
+ var placements2 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
2867
+ return getVariation(placement2) === variation;
2868
+ }) : basePlacements;
2869
+ var allowedPlacements = placements2.filter(function(placement2) {
2870
+ return allowedAutoPlacements.indexOf(placement2) >= 0;
2871
+ });
2872
+ if (allowedPlacements.length === 0) {
2873
+ allowedPlacements = placements2;
2874
+ if (true) {
2875
+ console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" "));
2876
+ }
2877
+ }
2878
+ var overflows = allowedPlacements.reduce(function(acc, placement2) {
2879
+ acc[placement2] = detectOverflow(state, {
2880
+ placement: placement2,
2881
+ boundary,
2882
+ rootBoundary,
2883
+ padding
2884
+ })[getBasePlacement(placement2)];
2885
+ return acc;
2886
+ }, {});
2887
+ return Object.keys(overflows).sort(function(a, b) {
2888
+ return overflows[a] - overflows[b];
2889
+ });
2890
+ }
2891
+
2892
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/flip.js
2893
+ function getExpandedFallbackPlacements(placement) {
2894
+ if (getBasePlacement(placement) === auto) {
2895
+ return [];
2896
+ }
2897
+ var oppositePlacement = getOppositePlacement(placement);
2898
+ return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
2899
+ }
2900
+ function flip(_ref) {
2901
+ var state = _ref.state, options = _ref.options, name6 = _ref.name;
2902
+ if (state.modifiersData[name6]._skip) {
2903
+ return;
2904
+ }
2905
+ var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
2906
+ var preferredPlacement = state.options.placement;
2907
+ var basePlacement = getBasePlacement(preferredPlacement);
2908
+ var isBasePlacement = basePlacement === preferredPlacement;
2909
+ var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
2910
+ var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {
2911
+ return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {
2912
+ placement: placement2,
2913
+ boundary,
2914
+ rootBoundary,
2915
+ padding,
2916
+ flipVariations,
2917
+ allowedAutoPlacements
2918
+ }) : placement2);
2919
+ }, []);
2920
+ var referenceRect = state.rects.reference;
2921
+ var popperRect = state.rects.popper;
2922
+ var checksMap = /* @__PURE__ */ new Map();
2923
+ var makeFallbackChecks = true;
2924
+ var firstFittingPlacement = placements2[0];
2925
+ for (var i = 0; i < placements2.length; i++) {
2926
+ var placement = placements2[i];
2927
+ var _basePlacement = getBasePlacement(placement);
2928
+ var isStartVariation = getVariation(placement) === start;
2929
+ var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
2930
+ var len = isVertical ? "width" : "height";
2931
+ var overflow = detectOverflow(state, {
2932
+ placement,
2933
+ boundary,
2934
+ rootBoundary,
2935
+ altBoundary,
2936
+ padding
2937
+ });
2938
+ var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
2939
+ if (referenceRect[len] > popperRect[len]) {
2940
+ mainVariationSide = getOppositePlacement(mainVariationSide);
2941
+ }
2942
+ var altVariationSide = getOppositePlacement(mainVariationSide);
2943
+ var checks = [];
2944
+ if (checkMainAxis) {
2945
+ checks.push(overflow[_basePlacement] <= 0);
2946
+ }
2947
+ if (checkAltAxis) {
2948
+ checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
2949
+ }
2950
+ if (checks.every(function(check) {
2951
+ return check;
2952
+ })) {
2953
+ firstFittingPlacement = placement;
2954
+ makeFallbackChecks = false;
2955
+ break;
2956
+ }
2957
+ checksMap.set(placement, checks);
2958
+ }
2959
+ if (makeFallbackChecks) {
2960
+ var numberOfChecks = flipVariations ? 3 : 1;
2961
+ var _loop = function _loop2(_i2) {
2962
+ var fittingPlacement = placements2.find(function(placement2) {
2963
+ var checks2 = checksMap.get(placement2);
2964
+ if (checks2) {
2965
+ return checks2.slice(0, _i2).every(function(check) {
2966
+ return check;
2967
+ });
2968
+ }
2969
+ });
2970
+ if (fittingPlacement) {
2971
+ firstFittingPlacement = fittingPlacement;
2972
+ return "break";
2973
+ }
2974
+ };
2975
+ for (var _i = numberOfChecks; _i > 0; _i--) {
2976
+ var _ret = _loop(_i);
2977
+ if (_ret === "break")
2978
+ break;
2979
+ }
2980
+ }
2981
+ if (state.placement !== firstFittingPlacement) {
2982
+ state.modifiersData[name6]._skip = true;
2983
+ state.placement = firstFittingPlacement;
2984
+ state.reset = true;
2985
+ }
2986
+ }
2987
+ var flip_default = {
2988
+ name: "flip",
2989
+ enabled: true,
2990
+ phase: "main",
2991
+ fn: flip,
2992
+ requiresIfExists: ["offset"],
2993
+ data: {
2994
+ _skip: false
2995
+ }
2996
+ };
2997
+
2998
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/hide.js
2999
+ function getSideOffsets(overflow, rect, preventedOffsets) {
3000
+ if (preventedOffsets === void 0) {
3001
+ preventedOffsets = {
3002
+ x: 0,
3003
+ y: 0
3004
+ };
3005
+ }
3006
+ return {
3007
+ top: overflow.top - rect.height - preventedOffsets.y,
3008
+ right: overflow.right - rect.width + preventedOffsets.x,
3009
+ bottom: overflow.bottom - rect.height + preventedOffsets.y,
3010
+ left: overflow.left - rect.width - preventedOffsets.x
3011
+ };
3012
+ }
3013
+ function isAnySideFullyClipped(overflow) {
3014
+ return [top, right, bottom, left].some(function(side) {
3015
+ return overflow[side] >= 0;
3016
+ });
3017
+ }
3018
+ function hide(_ref) {
3019
+ var state = _ref.state, name6 = _ref.name;
3020
+ var referenceRect = state.rects.reference;
3021
+ var popperRect = state.rects.popper;
3022
+ var preventedOffsets = state.modifiersData.preventOverflow;
3023
+ var referenceOverflow = detectOverflow(state, {
3024
+ elementContext: "reference"
3025
+ });
3026
+ var popperAltOverflow = detectOverflow(state, {
3027
+ altBoundary: true
3028
+ });
3029
+ var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
3030
+ var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
3031
+ var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
3032
+ var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
3033
+ state.modifiersData[name6] = {
3034
+ referenceClippingOffsets,
3035
+ popperEscapeOffsets,
3036
+ isReferenceHidden,
3037
+ hasPopperEscaped
3038
+ };
3039
+ state.attributes.popper = Object.assign({}, state.attributes.popper, {
3040
+ "data-popper-reference-hidden": isReferenceHidden,
3041
+ "data-popper-escaped": hasPopperEscaped
3042
+ });
3043
+ }
3044
+ var hide_default = {
3045
+ name: "hide",
3046
+ enabled: true,
3047
+ phase: "main",
3048
+ requiresIfExists: ["preventOverflow"],
3049
+ fn: hide
3050
+ };
3051
+
3052
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/offset.js
3053
+ function distanceAndSkiddingToXY(placement, rects, offset2) {
3054
+ var basePlacement = getBasePlacement(placement);
3055
+ var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
3056
+ var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, {
3057
+ placement
3058
+ })) : offset2, skidding = _ref[0], distance = _ref[1];
3059
+ skidding = skidding || 0;
3060
+ distance = (distance || 0) * invertDistance;
3061
+ return [left, right].indexOf(basePlacement) >= 0 ? {
3062
+ x: distance,
3063
+ y: skidding
3064
+ } : {
3065
+ x: skidding,
3066
+ y: distance
3067
+ };
3068
+ }
3069
+ function offset(_ref2) {
3070
+ var state = _ref2.state, options = _ref2.options, name6 = _ref2.name;
3071
+ var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
3072
+ var data = placements.reduce(function(acc, placement) {
3073
+ acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);
3074
+ return acc;
3075
+ }, {});
3076
+ var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;
3077
+ if (state.modifiersData.popperOffsets != null) {
3078
+ state.modifiersData.popperOffsets.x += x;
3079
+ state.modifiersData.popperOffsets.y += y;
3080
+ }
3081
+ state.modifiersData[name6] = data;
3082
+ }
3083
+ var offset_default = {
3084
+ name: "offset",
3085
+ enabled: true,
3086
+ phase: "main",
3087
+ requires: ["popperOffsets"],
3088
+ fn: offset
3089
+ };
3090
+
3091
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js
3092
+ function popperOffsets(_ref) {
3093
+ var state = _ref.state, name6 = _ref.name;
3094
+ state.modifiersData[name6] = computeOffsets({
3095
+ reference: state.rects.reference,
3096
+ element: state.rects.popper,
3097
+ strategy: "absolute",
3098
+ placement: state.placement
3099
+ });
3100
+ }
3101
+ var popperOffsets_default = {
3102
+ name: "popperOffsets",
3103
+ enabled: true,
3104
+ phase: "read",
3105
+ fn: popperOffsets,
3106
+ data: {}
3107
+ };
3108
+
3109
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/getAltAxis.js
3110
+ function getAltAxis(axis) {
3111
+ return axis === "x" ? "y" : "x";
3112
+ }
3113
+
3114
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
3115
+ function preventOverflow(_ref) {
3116
+ var state = _ref.state, options = _ref.options, name6 = _ref.name;
3117
+ var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
3118
+ var overflow = detectOverflow(state, {
3119
+ boundary,
3120
+ rootBoundary,
3121
+ padding,
3122
+ altBoundary
3123
+ });
3124
+ var basePlacement = getBasePlacement(state.placement);
3125
+ var variation = getVariation(state.placement);
3126
+ var isBasePlacement = !variation;
3127
+ var mainAxis = getMainAxisFromPlacement(basePlacement);
3128
+ var altAxis = getAltAxis(mainAxis);
3129
+ var popperOffsets2 = state.modifiersData.popperOffsets;
3130
+ var referenceRect = state.rects.reference;
3131
+ var popperRect = state.rects.popper;
3132
+ var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, {
3133
+ placement: state.placement
3134
+ })) : tetherOffset;
3135
+ var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
3136
+ mainAxis: tetherOffsetValue,
3137
+ altAxis: tetherOffsetValue
3138
+ } : Object.assign({
3139
+ mainAxis: 0,
3140
+ altAxis: 0
3141
+ }, tetherOffsetValue);
3142
+ var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
3143
+ var data = {
3144
+ x: 0,
3145
+ y: 0
3146
+ };
3147
+ if (!popperOffsets2) {
3148
+ return;
3149
+ }
3150
+ if (checkMainAxis) {
3151
+ var _offsetModifierState$;
3152
+ var mainSide = mainAxis === "y" ? top : left;
3153
+ var altSide = mainAxis === "y" ? bottom : right;
3154
+ var len = mainAxis === "y" ? "height" : "width";
3155
+ var offset2 = popperOffsets2[mainAxis];
3156
+ var min2 = offset2 + overflow[mainSide];
3157
+ var max2 = offset2 - overflow[altSide];
3158
+ var additive = tether ? -popperRect[len] / 2 : 0;
3159
+ var minLen = variation === start ? referenceRect[len] : popperRect[len];
3160
+ var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
3161
+ var arrowElement = state.elements.arrow;
3162
+ var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
3163
+ width: 0,
3164
+ height: 0
3165
+ };
3166
+ var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
3167
+ var arrowPaddingMin = arrowPaddingObject[mainSide];
3168
+ var arrowPaddingMax = arrowPaddingObject[altSide];
3169
+ var arrowLen = within(0, referenceRect[len], arrowRect[len]);
3170
+ var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
3171
+ var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
3172
+ var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
3173
+ var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
3174
+ var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
3175
+ var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;
3176
+ var tetherMax = offset2 + maxOffset - offsetModifierValue;
3177
+ var preventedOffset = within(tether ? min(min2, tetherMin) : min2, offset2, tether ? max(max2, tetherMax) : max2);
3178
+ popperOffsets2[mainAxis] = preventedOffset;
3179
+ data[mainAxis] = preventedOffset - offset2;
3180
+ }
3181
+ if (checkAltAxis) {
3182
+ var _offsetModifierState$2;
3183
+ var _mainSide = mainAxis === "x" ? top : left;
3184
+ var _altSide = mainAxis === "x" ? bottom : right;
3185
+ var _offset = popperOffsets2[altAxis];
3186
+ var _len = altAxis === "y" ? "height" : "width";
3187
+ var _min = _offset + overflow[_mainSide];
3188
+ var _max = _offset - overflow[_altSide];
3189
+ var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
3190
+ var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
3191
+ var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
3192
+ var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
3193
+ var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
3194
+ popperOffsets2[altAxis] = _preventedOffset;
3195
+ data[altAxis] = _preventedOffset - _offset;
3196
+ }
3197
+ state.modifiersData[name6] = data;
3198
+ }
3199
+ var preventOverflow_default = {
3200
+ name: "preventOverflow",
3201
+ enabled: true,
3202
+ phase: "main",
3203
+ fn: preventOverflow,
3204
+ requiresIfExists: ["offset"]
3205
+ };
3206
+
3207
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js
3208
+ function getHTMLElementScroll(element) {
3209
+ return {
3210
+ scrollLeft: element.scrollLeft,
3211
+ scrollTop: element.scrollTop
3212
+ };
3213
+ }
3214
+
3215
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js
3216
+ function getNodeScroll(node) {
3217
+ if (node === getWindow(node) || !isHTMLElement(node)) {
3218
+ return getWindowScroll(node);
3219
+ } else {
3220
+ return getHTMLElementScroll(node);
3221
+ }
3222
+ }
3223
+
3224
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js
3225
+ function isElementScaled(element) {
3226
+ var rect = element.getBoundingClientRect();
3227
+ var scaleX = round(rect.width) / element.offsetWidth || 1;
3228
+ var scaleY = round(rect.height) / element.offsetHeight || 1;
3229
+ return scaleX !== 1 || scaleY !== 1;
3230
+ }
3231
+ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
3232
+ if (isFixed === void 0) {
3233
+ isFixed = false;
3234
+ }
3235
+ var isOffsetParentAnElement = isHTMLElement(offsetParent);
3236
+ var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
3237
+ var documentElement = getDocumentElement(offsetParent);
3238
+ var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);
3239
+ var scroll = {
3240
+ scrollLeft: 0,
3241
+ scrollTop: 0
3242
+ };
3243
+ var offsets = {
3244
+ x: 0,
3245
+ y: 0
3246
+ };
3247
+ if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
3248
+ if (getNodeName(offsetParent) !== "body" || isScrollParent(documentElement)) {
3249
+ scroll = getNodeScroll(offsetParent);
3250
+ }
3251
+ if (isHTMLElement(offsetParent)) {
3252
+ offsets = getBoundingClientRect(offsetParent, true);
3253
+ offsets.x += offsetParent.clientLeft;
3254
+ offsets.y += offsetParent.clientTop;
3255
+ } else if (documentElement) {
3256
+ offsets.x = getWindowScrollBarX(documentElement);
3257
+ }
3258
+ }
3259
+ return {
3260
+ x: rect.left + scroll.scrollLeft - offsets.x,
3261
+ y: rect.top + scroll.scrollTop - offsets.y,
3262
+ width: rect.width,
3263
+ height: rect.height
3264
+ };
3265
+ }
3266
+
3267
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/orderModifiers.js
3268
+ function order(modifiers) {
3269
+ var map = /* @__PURE__ */ new Map();
3270
+ var visited = /* @__PURE__ */ new Set();
3271
+ var result = [];
3272
+ modifiers.forEach(function(modifier) {
3273
+ map.set(modifier.name, modifier);
3274
+ });
3275
+ function sort(modifier) {
3276
+ visited.add(modifier.name);
3277
+ var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
3278
+ requires.forEach(function(dep) {
3279
+ if (!visited.has(dep)) {
3280
+ var depModifier = map.get(dep);
3281
+ if (depModifier) {
3282
+ sort(depModifier);
3283
+ }
3284
+ }
3285
+ });
3286
+ result.push(modifier);
3287
+ }
3288
+ modifiers.forEach(function(modifier) {
3289
+ if (!visited.has(modifier.name)) {
3290
+ sort(modifier);
3291
+ }
3292
+ });
3293
+ return result;
3294
+ }
3295
+ function orderModifiers(modifiers) {
3296
+ var orderedModifiers = order(modifiers);
3297
+ return modifierPhases.reduce(function(acc, phase) {
3298
+ return acc.concat(orderedModifiers.filter(function(modifier) {
3299
+ return modifier.phase === phase;
3300
+ }));
3301
+ }, []);
3302
+ }
3303
+
3304
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/debounce.js
3305
+ function debounce(fn2) {
3306
+ var pending;
3307
+ return function() {
3308
+ if (!pending) {
3309
+ pending = new Promise(function(resolve) {
3310
+ Promise.resolve().then(function() {
3311
+ pending = void 0;
3312
+ resolve(fn2());
3313
+ });
3314
+ });
3315
+ }
3316
+ return pending;
3317
+ };
3318
+ }
3319
+
3320
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/format.js
3321
+ function format(str) {
3322
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
3323
+ args[_key - 1] = arguments[_key];
3324
+ }
3325
+ return [].concat(args).reduce(function(p, c) {
3326
+ return p.replace(/%s/, c);
3327
+ }, str);
3328
+ }
3329
+
3330
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/validateModifiers.js
3331
+ var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s';
3332
+ var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available';
3333
+ var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"];
3334
+ function validateModifiers(modifiers) {
3335
+ modifiers.forEach(function(modifier) {
3336
+ [].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index, self) {
3337
+ return self.indexOf(value) === index;
3338
+ }).forEach(function(key) {
3339
+ switch (key) {
3340
+ case "name":
3341
+ if (typeof modifier.name !== "string") {
3342
+ console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"'));
3343
+ }
3344
+ break;
3345
+ case "enabled":
3346
+ if (typeof modifier.enabled !== "boolean") {
3347
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"'));
3348
+ }
3349
+ break;
3350
+ case "phase":
3351
+ if (modifierPhases.indexOf(modifier.phase) < 0) {
3352
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"'));
3353
+ }
3354
+ break;
3355
+ case "fn":
3356
+ if (typeof modifier.fn !== "function") {
3357
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"'));
3358
+ }
3359
+ break;
3360
+ case "effect":
3361
+ if (modifier.effect != null && typeof modifier.effect !== "function") {
3362
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"'));
3363
+ }
3364
+ break;
3365
+ case "requires":
3366
+ if (modifier.requires != null && !Array.isArray(modifier.requires)) {
3367
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"'));
3368
+ }
3369
+ break;
3370
+ case "requiresIfExists":
3371
+ if (!Array.isArray(modifier.requiresIfExists)) {
3372
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"'));
3373
+ }
3374
+ break;
3375
+ case "options":
3376
+ case "data":
3377
+ break;
3378
+ default:
3379
+ console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) {
3380
+ return '"' + s + '"';
3381
+ }).join(", ") + '; but "' + key + '" was provided.');
3382
+ }
3383
+ modifier.requires && modifier.requires.forEach(function(requirement) {
3384
+ if (modifiers.find(function(mod) {
3385
+ return mod.name === requirement;
3386
+ }) == null) {
3387
+ console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));
3388
+ }
3389
+ });
3390
+ });
3391
+ });
3392
+ }
3393
+
3394
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/uniqueBy.js
3395
+ function uniqueBy(arr, fn2) {
3396
+ var identifiers = /* @__PURE__ */ new Set();
3397
+ return arr.filter(function(item) {
3398
+ var identifier = fn2(item);
3399
+ if (!identifiers.has(identifier)) {
3400
+ identifiers.add(identifier);
3401
+ return true;
3402
+ }
3403
+ });
3404
+ }
3405
+
3406
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/mergeByName.js
3407
+ function mergeByName(modifiers) {
3408
+ var merged = modifiers.reduce(function(merged2, current) {
3409
+ var existing = merged2[current.name];
3410
+ merged2[current.name] = existing ? Object.assign({}, existing, current, {
3411
+ options: Object.assign({}, existing.options, current.options),
3412
+ data: Object.assign({}, existing.data, current.data)
3413
+ }) : current;
3414
+ return merged2;
3415
+ }, {});
3416
+ return Object.keys(merged).map(function(key) {
3417
+ return merged[key];
3418
+ });
3419
+ }
3420
+
3421
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/createPopper.js
3422
+ var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.";
3423
+ var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.";
3424
+ var DEFAULT_OPTIONS = {
3425
+ placement: "bottom",
3426
+ modifiers: [],
3427
+ strategy: "absolute"
3428
+ };
3429
+ function areValidElements() {
3430
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
3431
+ args[_key] = arguments[_key];
3432
+ }
3433
+ return !args.some(function(element) {
3434
+ return !(element && typeof element.getBoundingClientRect === "function");
3435
+ });
3436
+ }
3437
+ function popperGenerator(generatorOptions) {
3438
+ if (generatorOptions === void 0) {
3439
+ generatorOptions = {};
3440
+ }
3441
+ var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
3442
+ return function createPopper2(reference2, popper2, options) {
3443
+ if (options === void 0) {
3444
+ options = defaultOptions;
3445
+ }
3446
+ var state = {
3447
+ placement: "bottom",
3448
+ orderedModifiers: [],
3449
+ options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
3450
+ modifiersData: {},
3451
+ elements: {
3452
+ reference: reference2,
3453
+ popper: popper2
3454
+ },
3455
+ attributes: {},
3456
+ styles: {}
3457
+ };
3458
+ var effectCleanupFns = [];
3459
+ var isDestroyed = false;
3460
+ var instance = {
3461
+ state,
3462
+ setOptions: function setOptions(setOptionsAction) {
3463
+ var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
3464
+ cleanupModifierEffects();
3465
+ state.options = Object.assign({}, defaultOptions, state.options, options2);
3466
+ state.scrollParents = {
3467
+ reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],
3468
+ popper: listScrollParents(popper2)
3469
+ };
3470
+ var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers)));
3471
+ state.orderedModifiers = orderedModifiers.filter(function(m) {
3472
+ return m.enabled;
3473
+ });
3474
+ if (true) {
3475
+ var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) {
3476
+ var name6 = _ref.name;
3477
+ return name6;
3478
+ });
3479
+ validateModifiers(modifiers);
3480
+ if (getBasePlacement(state.options.placement) === auto) {
3481
+ var flipModifier = state.orderedModifiers.find(function(_ref2) {
3482
+ var name6 = _ref2.name;
3483
+ return name6 === "flip";
3484
+ });
3485
+ if (!flipModifier) {
3486
+ console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" "));
3487
+ }
3488
+ }
3489
+ var _getComputedStyle = getComputedStyle2(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft;
3490
+ if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) {
3491
+ return parseFloat(margin);
3492
+ })) {
3493
+ console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" "));
3494
+ }
3495
+ }
3496
+ runModifierEffects();
3497
+ return instance.update();
3498
+ },
3499
+ forceUpdate: function forceUpdate() {
3500
+ if (isDestroyed) {
3501
+ return;
3502
+ }
3503
+ var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;
3504
+ if (!areValidElements(reference3, popper3)) {
3505
+ if (true) {
3506
+ console.error(INVALID_ELEMENT_ERROR);
3507
+ }
3508
+ return;
3509
+ }
3510
+ state.rects = {
3511
+ reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"),
3512
+ popper: getLayoutRect(popper3)
3513
+ };
3514
+ state.reset = false;
3515
+ state.placement = state.options.placement;
3516
+ state.orderedModifiers.forEach(function(modifier) {
3517
+ return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
3518
+ });
3519
+ var __debug_loops__ = 0;
3520
+ for (var index = 0; index < state.orderedModifiers.length; index++) {
3521
+ if (true) {
3522
+ __debug_loops__ += 1;
3523
+ if (__debug_loops__ > 100) {
3524
+ console.error(INFINITE_LOOP_ERROR);
3525
+ break;
3526
+ }
3527
+ }
3528
+ if (state.reset === true) {
3529
+ state.reset = false;
3530
+ index = -1;
3531
+ continue;
3532
+ }
3533
+ var _state$orderedModifie = state.orderedModifiers[index], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name6 = _state$orderedModifie.name;
3534
+ if (typeof fn2 === "function") {
3535
+ state = fn2({
3536
+ state,
3537
+ options: _options,
3538
+ name: name6,
3539
+ instance
3540
+ }) || state;
3541
+ }
3542
+ }
3543
+ },
3544
+ update: debounce(function() {
3545
+ return new Promise(function(resolve) {
3546
+ instance.forceUpdate();
3547
+ resolve(state);
3548
+ });
3549
+ }),
3550
+ destroy: function destroy() {
3551
+ cleanupModifierEffects();
3552
+ isDestroyed = true;
3553
+ }
3554
+ };
3555
+ if (!areValidElements(reference2, popper2)) {
3556
+ if (true) {
3557
+ console.error(INVALID_ELEMENT_ERROR);
3558
+ }
3559
+ return instance;
3560
+ }
3561
+ instance.setOptions(options).then(function(state2) {
3562
+ if (!isDestroyed && options.onFirstUpdate) {
3563
+ options.onFirstUpdate(state2);
3564
+ }
3565
+ });
3566
+ function runModifierEffects() {
3567
+ state.orderedModifiers.forEach(function(_ref3) {
3568
+ var name6 = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect5 = _ref3.effect;
3569
+ if (typeof effect5 === "function") {
3570
+ var cleanupFn = effect5({
3571
+ state,
3572
+ name: name6,
3573
+ instance,
3574
+ options: options2
3575
+ });
3576
+ var noopFn = function noopFn2() {
3577
+ };
3578
+ effectCleanupFns.push(cleanupFn || noopFn);
3579
+ }
3580
+ });
3581
+ }
3582
+ function cleanupModifierEffects() {
3583
+ effectCleanupFns.forEach(function(fn2) {
3584
+ return fn2();
3585
+ });
3586
+ effectCleanupFns = [];
3587
+ }
3588
+ return instance;
3589
+ };
3590
+ }
3591
+
3592
+ // ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/popper.js
3593
+ var defaultModifiers = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default, offset_default, flip_default, preventOverflow_default, arrow_default, hide_default];
3594
+ var createPopper = /* @__PURE__ */ popperGenerator({
3595
+ defaultModifiers
3596
+ });
3597
+
3598
+ // ../../node_modules/.pnpm/tippy.js@6.3.7/node_modules/tippy.js/dist/tippy.esm.js
3599
+ var BOX_CLASS = "tippy-box";
3600
+ var CONTENT_CLASS = "tippy-content";
3601
+ var BACKDROP_CLASS = "tippy-backdrop";
3602
+ var ARROW_CLASS = "tippy-arrow";
3603
+ var SVG_ARROW_CLASS = "tippy-svg-arrow";
3604
+ var TOUCH_OPTIONS = {
3605
+ passive: true,
3606
+ capture: true
3607
+ };
3608
+ var TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO2() {
3609
+ return document.body;
3610
+ };
3611
+ function hasOwnProperty(obj, key) {
3612
+ return {}.hasOwnProperty.call(obj, key);
3613
+ }
3614
+ function getValueAtIndexOrReturn(value, index, defaultValue) {
3615
+ if (Array.isArray(value)) {
3616
+ var v = value[index];
3617
+ return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;
3618
+ }
3619
+ return value;
3620
+ }
3621
+ function isType(value, type) {
3622
+ var str = {}.toString.call(value);
3623
+ return str.indexOf("[object") === 0 && str.indexOf(type + "]") > -1;
3624
+ }
3625
+ function invokeWithArgsOrReturn(value, args) {
3626
+ return typeof value === "function" ? value.apply(void 0, args) : value;
3627
+ }
3628
+ function debounce2(fn2, ms) {
3629
+ if (ms === 0) {
3630
+ return fn2;
3631
+ }
3632
+ var timeout;
3633
+ return function(arg) {
3634
+ clearTimeout(timeout);
3635
+ timeout = setTimeout(function() {
3636
+ fn2(arg);
3637
+ }, ms);
3638
+ };
3639
+ }
3640
+ function removeProperties(obj, keys) {
3641
+ var clone = Object.assign({}, obj);
3642
+ keys.forEach(function(key) {
3643
+ delete clone[key];
3644
+ });
3645
+ return clone;
3646
+ }
3647
+ function splitBySpaces(value) {
3648
+ return value.split(/\s+/).filter(Boolean);
3649
+ }
3650
+ function normalizeToArray(value) {
3651
+ return [].concat(value);
3652
+ }
3653
+ function pushIfUnique(arr, value) {
3654
+ if (arr.indexOf(value) === -1) {
3655
+ arr.push(value);
3656
+ }
3657
+ }
3658
+ function unique(arr) {
3659
+ return arr.filter(function(item, index) {
3660
+ return arr.indexOf(item) === index;
3661
+ });
3662
+ }
3663
+ function getBasePlacement2(placement) {
3664
+ return placement.split("-")[0];
3665
+ }
3666
+ function arrayFrom(value) {
3667
+ return [].slice.call(value);
3668
+ }
3669
+ function removeUndefinedProps(obj) {
3670
+ return Object.keys(obj).reduce(function(acc, key) {
3671
+ if (obj[key] !== void 0) {
3672
+ acc[key] = obj[key];
3673
+ }
3674
+ return acc;
3675
+ }, {});
3676
+ }
3677
+ function div() {
3678
+ return document.createElement("div");
3679
+ }
3680
+ function isElement2(value) {
3681
+ return ["Element", "Fragment"].some(function(type) {
3682
+ return isType(value, type);
3683
+ });
3684
+ }
3685
+ function isNodeList(value) {
3686
+ return isType(value, "NodeList");
3687
+ }
3688
+ function isMouseEvent(value) {
3689
+ return isType(value, "MouseEvent");
3690
+ }
3691
+ function isReferenceElement(value) {
3692
+ return !!(value && value._tippy && value._tippy.reference === value);
3693
+ }
3694
+ function getArrayOfElements(value) {
3695
+ if (isElement2(value)) {
3696
+ return [value];
3697
+ }
3698
+ if (isNodeList(value)) {
3699
+ return arrayFrom(value);
3700
+ }
3701
+ if (Array.isArray(value)) {
3702
+ return value;
3703
+ }
3704
+ return arrayFrom(document.querySelectorAll(value));
3705
+ }
3706
+ function setTransitionDuration(els, value) {
3707
+ els.forEach(function(el) {
3708
+ if (el) {
3709
+ el.style.transitionDuration = value + "ms";
3710
+ }
3711
+ });
3712
+ }
3713
+ function setVisibilityState(els, state) {
3714
+ els.forEach(function(el) {
3715
+ if (el) {
3716
+ el.setAttribute("data-state", state);
3717
+ }
3718
+ });
3719
+ }
3720
+ function getOwnerDocument(elementOrElements) {
3721
+ var _element$ownerDocumen;
3722
+ var _normalizeToArray = normalizeToArray(elementOrElements), element = _normalizeToArray[0];
3723
+ return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;
3724
+ }
3725
+ function isCursorOutsideInteractiveBorder(popperTreeData, event) {
3726
+ var clientX = event.clientX, clientY = event.clientY;
3727
+ return popperTreeData.every(function(_ref) {
3728
+ var popperRect = _ref.popperRect, popperState = _ref.popperState, props = _ref.props;
3729
+ var interactiveBorder = props.interactiveBorder;
3730
+ var basePlacement = getBasePlacement2(popperState.placement);
3731
+ var offsetData = popperState.modifiersData.offset;
3732
+ if (!offsetData) {
3733
+ return true;
3734
+ }
3735
+ var topDistance = basePlacement === "bottom" ? offsetData.top.y : 0;
3736
+ var bottomDistance = basePlacement === "top" ? offsetData.bottom.y : 0;
3737
+ var leftDistance = basePlacement === "right" ? offsetData.left.x : 0;
3738
+ var rightDistance = basePlacement === "left" ? offsetData.right.x : 0;
3739
+ var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;
3740
+ var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;
3741
+ var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;
3742
+ var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;
3743
+ return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;
3744
+ });
3745
+ }
3746
+ function updateTransitionEndListener(box, action, listener) {
3747
+ var method = action + "EventListener";
3748
+ ["transitionend", "webkitTransitionEnd"].forEach(function(event) {
3749
+ box[method](event, listener);
3750
+ });
3751
+ }
3752
+ function actualContains(parent, child) {
3753
+ var target = child;
3754
+ while (target) {
3755
+ var _target$getRootNode;
3756
+ if (parent.contains(target)) {
3757
+ return true;
3758
+ }
3759
+ target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;
3760
+ }
3761
+ return false;
3762
+ }
3763
+ var currentInput = {
3764
+ isTouch: false
3765
+ };
3766
+ var lastMouseMoveTime = 0;
3767
+ function onDocumentTouchStart() {
3768
+ if (currentInput.isTouch) {
3769
+ return;
3770
+ }
3771
+ currentInput.isTouch = true;
3772
+ if (window.performance) {
3773
+ document.addEventListener("mousemove", onDocumentMouseMove);
3774
+ }
3775
+ }
3776
+ function onDocumentMouseMove() {
3777
+ var now = performance.now();
3778
+ if (now - lastMouseMoveTime < 20) {
3779
+ currentInput.isTouch = false;
3780
+ document.removeEventListener("mousemove", onDocumentMouseMove);
3781
+ }
3782
+ lastMouseMoveTime = now;
3783
+ }
3784
+ function onWindowBlur() {
3785
+ var activeElement = document.activeElement;
3786
+ if (isReferenceElement(activeElement)) {
3787
+ var instance = activeElement._tippy;
3788
+ if (activeElement.blur && !instance.state.isVisible) {
3789
+ activeElement.blur();
3790
+ }
3791
+ }
3792
+ }
3793
+ function bindGlobalEventListeners() {
3794
+ document.addEventListener("touchstart", onDocumentTouchStart, TOUCH_OPTIONS);
3795
+ window.addEventListener("blur", onWindowBlur);
3796
+ }
3797
+ var isBrowser = typeof window !== "undefined" && typeof document !== "undefined";
3798
+ var isIE11 = isBrowser ? !!window.msCrypto : false;
3799
+ function createMemoryLeakWarning(method) {
3800
+ var txt = method === "destroy" ? "n already-" : " ";
3801
+ return [method + "() was called on a" + txt + "destroyed instance. This is a no-op but", "indicates a potential memory leak."].join(" ");
3802
+ }
3803
+ function clean(value) {
3804
+ var spacesAndTabs = /[ \t]{2,}/g;
3805
+ var lineStartWithSpaces = /^[ \t]*/gm;
3806
+ return value.replace(spacesAndTabs, " ").replace(lineStartWithSpaces, "").trim();
3807
+ }
3808
+ function getDevMessage(message) {
3809
+ return clean("\n %ctippy.js\n\n %c" + clean(message) + "\n\n %c\u{1F477}\u200D This is a development-only message. It will be removed in production.\n ");
3810
+ }
3811
+ function getFormattedMessage(message) {
3812
+ return [
3813
+ getDevMessage(message),
3814
+ "color: #00C584; font-size: 1.3em; font-weight: bold;",
3815
+ "line-height: 1.5",
3816
+ "color: #a6a095;"
3817
+ ];
3818
+ }
3819
+ var visitedMessages;
3820
+ if (true) {
3821
+ resetVisitedMessages();
3822
+ }
3823
+ function resetVisitedMessages() {
3824
+ visitedMessages = /* @__PURE__ */ new Set();
3825
+ }
3826
+ function warnWhen(condition, message) {
3827
+ if (condition && !visitedMessages.has(message)) {
3828
+ var _console;
3829
+ visitedMessages.add(message);
3830
+ (_console = console).warn.apply(_console, getFormattedMessage(message));
3831
+ }
3832
+ }
3833
+ function errorWhen(condition, message) {
3834
+ if (condition && !visitedMessages.has(message)) {
3835
+ var _console2;
3836
+ visitedMessages.add(message);
3837
+ (_console2 = console).error.apply(_console2, getFormattedMessage(message));
3838
+ }
3839
+ }
3840
+ function validateTargets(targets) {
3841
+ var didPassFalsyValue = !targets;
3842
+ var didPassPlainObject = Object.prototype.toString.call(targets) === "[object Object]" && !targets.addEventListener;
3843
+ errorWhen(didPassFalsyValue, ["tippy() was passed", "`" + String(targets) + "`", "as its targets (first) argument. Valid types are: String, Element,", "Element[], or NodeList."].join(" "));
3844
+ errorWhen(didPassPlainObject, ["tippy() was passed a plain object which is not supported as an argument", "for virtual positioning. Use props.getReferenceClientRect instead."].join(" "));
3845
+ }
3846
+ var pluginProps = {
3847
+ animateFill: false,
3848
+ followCursor: false,
3849
+ inlinePositioning: false,
3850
+ sticky: false
3851
+ };
3852
+ var renderProps = {
3853
+ allowHTML: false,
3854
+ animation: "fade",
3855
+ arrow: true,
3856
+ content: "",
3857
+ inertia: false,
3858
+ maxWidth: 350,
3859
+ role: "tooltip",
3860
+ theme: "",
3861
+ zIndex: 9999
3862
+ };
3863
+ var defaultProps = Object.assign({
3864
+ appendTo: TIPPY_DEFAULT_APPEND_TO,
3865
+ aria: {
3866
+ content: "auto",
3867
+ expanded: "auto"
3868
+ },
3869
+ delay: 0,
3870
+ duration: [300, 250],
3871
+ getReferenceClientRect: null,
3872
+ hideOnClick: true,
3873
+ ignoreAttributes: false,
3874
+ interactive: false,
3875
+ interactiveBorder: 2,
3876
+ interactiveDebounce: 0,
3877
+ moveTransition: "",
3878
+ offset: [0, 10],
3879
+ onAfterUpdate: function onAfterUpdate() {
3880
+ },
3881
+ onBeforeUpdate: function onBeforeUpdate() {
3882
+ },
3883
+ onCreate: function onCreate() {
3884
+ },
3885
+ onDestroy: function onDestroy() {
3886
+ },
3887
+ onHidden: function onHidden() {
3888
+ },
3889
+ onHide: function onHide() {
3890
+ },
3891
+ onMount: function onMount() {
3892
+ },
3893
+ onShow: function onShow() {
3894
+ },
3895
+ onShown: function onShown() {
3896
+ },
3897
+ onTrigger: function onTrigger() {
3898
+ },
3899
+ onUntrigger: function onUntrigger() {
3900
+ },
3901
+ onClickOutside: function onClickOutside() {
3902
+ },
3903
+ placement: "top",
3904
+ plugins: [],
3905
+ popperOptions: {},
3906
+ render: null,
3907
+ showOnCreate: false,
3908
+ touch: true,
3909
+ trigger: "mouseenter focus",
3910
+ triggerTarget: null
3911
+ }, pluginProps, renderProps);
3912
+ var defaultKeys = Object.keys(defaultProps);
3913
+ var setDefaultProps = function setDefaultProps2(partialProps) {
3914
+ if (true) {
3915
+ validateProps(partialProps, []);
3916
+ }
3917
+ var keys = Object.keys(partialProps);
3918
+ keys.forEach(function(key) {
3919
+ defaultProps[key] = partialProps[key];
3920
+ });
3921
+ };
3922
+ function getExtendedPassedProps(passedProps) {
3923
+ var plugins = passedProps.plugins || [];
3924
+ var pluginProps2 = plugins.reduce(function(acc, plugin) {
3925
+ var name6 = plugin.name, defaultValue = plugin.defaultValue;
3926
+ if (name6) {
3927
+ var _name;
3928
+ acc[name6] = passedProps[name6] !== void 0 ? passedProps[name6] : (_name = defaultProps[name6]) != null ? _name : defaultValue;
3929
+ }
3930
+ return acc;
3931
+ }, {});
3932
+ return Object.assign({}, passedProps, pluginProps2);
3933
+ }
3934
+ function getDataAttributeProps(reference2, plugins) {
3935
+ var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {
3936
+ plugins
3937
+ }))) : defaultKeys;
3938
+ var props = propKeys.reduce(function(acc, key) {
3939
+ var valueAsString = (reference2.getAttribute("data-tippy-" + key) || "").trim();
3940
+ if (!valueAsString) {
3941
+ return acc;
3942
+ }
3943
+ if (key === "content") {
3944
+ acc[key] = valueAsString;
3945
+ } else {
3946
+ try {
3947
+ acc[key] = JSON.parse(valueAsString);
3948
+ } catch (e) {
3949
+ acc[key] = valueAsString;
3950
+ }
3951
+ }
3952
+ return acc;
3953
+ }, {});
3954
+ return props;
3955
+ }
3956
+ function evaluateProps(reference2, props) {
3957
+ var out = Object.assign({}, props, {
3958
+ content: invokeWithArgsOrReturn(props.content, [reference2])
3959
+ }, props.ignoreAttributes ? {} : getDataAttributeProps(reference2, props.plugins));
3960
+ out.aria = Object.assign({}, defaultProps.aria, out.aria);
3961
+ out.aria = {
3962
+ expanded: out.aria.expanded === "auto" ? props.interactive : out.aria.expanded,
3963
+ content: out.aria.content === "auto" ? props.interactive ? null : "describedby" : out.aria.content
3964
+ };
3965
+ return out;
3966
+ }
3967
+ function validateProps(partialProps, plugins) {
3968
+ if (partialProps === void 0) {
3969
+ partialProps = {};
3970
+ }
3971
+ if (plugins === void 0) {
3972
+ plugins = [];
3973
+ }
3974
+ var keys = Object.keys(partialProps);
3975
+ keys.forEach(function(prop) {
3976
+ var nonPluginProps = removeProperties(defaultProps, Object.keys(pluginProps));
3977
+ var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop);
3978
+ if (didPassUnknownProp) {
3979
+ didPassUnknownProp = plugins.filter(function(plugin) {
3980
+ return plugin.name === prop;
3981
+ }).length === 0;
3982
+ }
3983
+ warnWhen(didPassUnknownProp, ["`" + prop + "`", "is not a valid prop. You may have spelled it incorrectly, or if it's", "a plugin, forgot to pass it in an array as props.plugins.", "\n\n", "All props: https://atomiks.github.io/tippyjs/v6/all-props/\n", "Plugins: https://atomiks.github.io/tippyjs/v6/plugins/"].join(" "));
3984
+ });
3985
+ }
3986
+ var innerHTML = function innerHTML2() {
3987
+ return "innerHTML";
3988
+ };
3989
+ function dangerouslySetInnerHTML(element, html) {
3990
+ element[innerHTML()] = html;
3991
+ }
3992
+ function createArrowElement(value) {
3993
+ var arrow2 = div();
3994
+ if (value === true) {
3995
+ arrow2.className = ARROW_CLASS;
3996
+ } else {
3997
+ arrow2.className = SVG_ARROW_CLASS;
3998
+ if (isElement2(value)) {
3999
+ arrow2.appendChild(value);
4000
+ } else {
4001
+ dangerouslySetInnerHTML(arrow2, value);
4002
+ }
4003
+ }
4004
+ return arrow2;
4005
+ }
4006
+ function setContent(content, props) {
4007
+ if (isElement2(props.content)) {
4008
+ dangerouslySetInnerHTML(content, "");
4009
+ content.appendChild(props.content);
4010
+ } else if (typeof props.content !== "function") {
4011
+ if (props.allowHTML) {
4012
+ dangerouslySetInnerHTML(content, props.content);
4013
+ } else {
4014
+ content.textContent = props.content;
4015
+ }
4016
+ }
4017
+ }
4018
+ function getChildren(popper2) {
4019
+ var box = popper2.firstElementChild;
4020
+ var boxChildren = arrayFrom(box.children);
4021
+ return {
4022
+ box,
4023
+ content: boxChildren.find(function(node) {
4024
+ return node.classList.contains(CONTENT_CLASS);
4025
+ }),
4026
+ arrow: boxChildren.find(function(node) {
4027
+ return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);
4028
+ }),
4029
+ backdrop: boxChildren.find(function(node) {
4030
+ return node.classList.contains(BACKDROP_CLASS);
4031
+ })
4032
+ };
4033
+ }
4034
+ function render(instance) {
4035
+ var popper2 = div();
4036
+ var box = div();
4037
+ box.className = BOX_CLASS;
4038
+ box.setAttribute("data-state", "hidden");
4039
+ box.setAttribute("tabindex", "-1");
4040
+ var content = div();
4041
+ content.className = CONTENT_CLASS;
4042
+ content.setAttribute("data-state", "hidden");
4043
+ setContent(content, instance.props);
4044
+ popper2.appendChild(box);
4045
+ box.appendChild(content);
4046
+ onUpdate(instance.props, instance.props);
4047
+ function onUpdate(prevProps, nextProps) {
4048
+ var _getChildren = getChildren(popper2), box2 = _getChildren.box, content2 = _getChildren.content, arrow2 = _getChildren.arrow;
4049
+ if (nextProps.theme) {
4050
+ box2.setAttribute("data-theme", nextProps.theme);
4051
+ } else {
4052
+ box2.removeAttribute("data-theme");
4053
+ }
4054
+ if (typeof nextProps.animation === "string") {
4055
+ box2.setAttribute("data-animation", nextProps.animation);
4056
+ } else {
4057
+ box2.removeAttribute("data-animation");
4058
+ }
4059
+ if (nextProps.inertia) {
4060
+ box2.setAttribute("data-inertia", "");
4061
+ } else {
4062
+ box2.removeAttribute("data-inertia");
4063
+ }
4064
+ box2.style.maxWidth = typeof nextProps.maxWidth === "number" ? nextProps.maxWidth + "px" : nextProps.maxWidth;
4065
+ if (nextProps.role) {
4066
+ box2.setAttribute("role", nextProps.role);
4067
+ } else {
4068
+ box2.removeAttribute("role");
4069
+ }
4070
+ if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) {
4071
+ setContent(content2, instance.props);
4072
+ }
4073
+ if (nextProps.arrow) {
4074
+ if (!arrow2) {
4075
+ box2.appendChild(createArrowElement(nextProps.arrow));
4076
+ } else if (prevProps.arrow !== nextProps.arrow) {
4077
+ box2.removeChild(arrow2);
4078
+ box2.appendChild(createArrowElement(nextProps.arrow));
4079
+ }
4080
+ } else if (arrow2) {
4081
+ box2.removeChild(arrow2);
4082
+ }
4083
+ }
4084
+ return {
4085
+ popper: popper2,
4086
+ onUpdate
4087
+ };
4088
+ }
4089
+ render.$$tippy = true;
4090
+ var idCounter = 1;
4091
+ var mouseMoveListeners = [];
4092
+ var mountedInstances = [];
4093
+ function createTippy(reference2, passedProps) {
4094
+ var props = evaluateProps(reference2, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps))));
4095
+ var showTimeout;
4096
+ var hideTimeout;
4097
+ var scheduleHideAnimationFrame;
4098
+ var isVisibleFromClick = false;
4099
+ var didHideDueToDocumentMouseDown = false;
4100
+ var didTouchMove = false;
4101
+ var ignoreOnFirstUpdate = false;
4102
+ var lastTriggerEvent;
4103
+ var currentTransitionEndListener;
4104
+ var onFirstUpdate;
4105
+ var listeners = [];
4106
+ var debouncedOnMouseMove = debounce2(onMouseMove, props.interactiveDebounce);
4107
+ var currentTarget;
4108
+ var id = idCounter++;
4109
+ var popperInstance = null;
4110
+ var plugins = unique(props.plugins);
4111
+ var state = {
4112
+ isEnabled: true,
4113
+ isVisible: false,
4114
+ isDestroyed: false,
4115
+ isMounted: false,
4116
+ isShown: false
4117
+ };
4118
+ var instance = {
4119
+ id,
4120
+ reference: reference2,
4121
+ popper: div(),
4122
+ popperInstance,
4123
+ props,
4124
+ state,
4125
+ plugins,
4126
+ clearDelayTimeouts,
4127
+ setProps,
4128
+ setContent: setContent2,
4129
+ show,
4130
+ hide: hide2,
4131
+ hideWithInteractivity,
4132
+ enable,
4133
+ disable,
4134
+ unmount,
4135
+ destroy
4136
+ };
4137
+ if (!props.render) {
4138
+ if (true) {
4139
+ errorWhen(true, "render() function has not been supplied.");
4140
+ }
4141
+ return instance;
4142
+ }
4143
+ var _props$render = props.render(instance), popper2 = _props$render.popper, onUpdate = _props$render.onUpdate;
4144
+ popper2.setAttribute("data-tippy-root", "");
4145
+ popper2.id = "tippy-" + instance.id;
4146
+ instance.popper = popper2;
4147
+ reference2._tippy = instance;
4148
+ popper2._tippy = instance;
4149
+ var pluginsHooks = plugins.map(function(plugin) {
4150
+ return plugin.fn(instance);
4151
+ });
4152
+ var hasAriaExpanded = reference2.hasAttribute("aria-expanded");
4153
+ addListeners();
4154
+ handleAriaExpandedAttribute();
4155
+ handleStyles();
4156
+ invokeHook("onCreate", [instance]);
4157
+ if (props.showOnCreate) {
4158
+ scheduleShow();
4159
+ }
4160
+ popper2.addEventListener("mouseenter", function() {
4161
+ if (instance.props.interactive && instance.state.isVisible) {
4162
+ instance.clearDelayTimeouts();
4163
+ }
4164
+ });
4165
+ popper2.addEventListener("mouseleave", function() {
4166
+ if (instance.props.interactive && instance.props.trigger.indexOf("mouseenter") >= 0) {
4167
+ getDocument().addEventListener("mousemove", debouncedOnMouseMove);
4168
+ }
4169
+ });
4170
+ return instance;
4171
+ function getNormalizedTouchSettings() {
4172
+ var touch = instance.props.touch;
4173
+ return Array.isArray(touch) ? touch : [touch, 0];
4174
+ }
4175
+ function getIsCustomTouchBehavior() {
4176
+ return getNormalizedTouchSettings()[0] === "hold";
4177
+ }
4178
+ function getIsDefaultRenderFn() {
4179
+ var _instance$props$rende;
4180
+ return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);
4181
+ }
4182
+ function getCurrentTarget() {
4183
+ return currentTarget || reference2;
4184
+ }
4185
+ function getDocument() {
4186
+ var parent = getCurrentTarget().parentNode;
4187
+ return parent ? getOwnerDocument(parent) : document;
4188
+ }
4189
+ function getDefaultTemplateChildren() {
4190
+ return getChildren(popper2);
4191
+ }
4192
+ function getDelay(isShow) {
4193
+ if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === "focus") {
4194
+ return 0;
4195
+ }
4196
+ return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);
4197
+ }
4198
+ function handleStyles(fromHide) {
4199
+ if (fromHide === void 0) {
4200
+ fromHide = false;
4201
+ }
4202
+ popper2.style.pointerEvents = instance.props.interactive && !fromHide ? "" : "none";
4203
+ popper2.style.zIndex = "" + instance.props.zIndex;
4204
+ }
4205
+ function invokeHook(hook, args, shouldInvokePropsHook) {
4206
+ if (shouldInvokePropsHook === void 0) {
4207
+ shouldInvokePropsHook = true;
4208
+ }
4209
+ pluginsHooks.forEach(function(pluginHooks) {
4210
+ if (pluginHooks[hook]) {
4211
+ pluginHooks[hook].apply(pluginHooks, args);
4212
+ }
4213
+ });
4214
+ if (shouldInvokePropsHook) {
4215
+ var _instance$props;
4216
+ (_instance$props = instance.props)[hook].apply(_instance$props, args);
4217
+ }
4218
+ }
4219
+ function handleAriaContentAttribute() {
4220
+ var aria = instance.props.aria;
4221
+ if (!aria.content) {
4222
+ return;
4223
+ }
4224
+ var attr = "aria-" + aria.content;
4225
+ var id2 = popper2.id;
4226
+ var nodes = normalizeToArray(instance.props.triggerTarget || reference2);
4227
+ nodes.forEach(function(node) {
4228
+ var currentValue = node.getAttribute(attr);
4229
+ if (instance.state.isVisible) {
4230
+ node.setAttribute(attr, currentValue ? currentValue + " " + id2 : id2);
4231
+ } else {
4232
+ var nextValue = currentValue && currentValue.replace(id2, "").trim();
4233
+ if (nextValue) {
4234
+ node.setAttribute(attr, nextValue);
4235
+ } else {
4236
+ node.removeAttribute(attr);
4237
+ }
4238
+ }
4239
+ });
4240
+ }
4241
+ function handleAriaExpandedAttribute() {
4242
+ if (hasAriaExpanded || !instance.props.aria.expanded) {
4243
+ return;
4244
+ }
4245
+ var nodes = normalizeToArray(instance.props.triggerTarget || reference2);
4246
+ nodes.forEach(function(node) {
4247
+ if (instance.props.interactive) {
4248
+ node.setAttribute("aria-expanded", instance.state.isVisible && node === getCurrentTarget() ? "true" : "false");
4249
+ } else {
4250
+ node.removeAttribute("aria-expanded");
4251
+ }
4252
+ });
4253
+ }
4254
+ function cleanupInteractiveMouseListeners() {
4255
+ getDocument().removeEventListener("mousemove", debouncedOnMouseMove);
4256
+ mouseMoveListeners = mouseMoveListeners.filter(function(listener) {
4257
+ return listener !== debouncedOnMouseMove;
4258
+ });
4259
+ }
4260
+ function onDocumentPress(event) {
4261
+ if (currentInput.isTouch) {
4262
+ if (didTouchMove || event.type === "mousedown") {
4263
+ return;
4264
+ }
4265
+ }
4266
+ var actualTarget = event.composedPath && event.composedPath()[0] || event.target;
4267
+ if (instance.props.interactive && actualContains(popper2, actualTarget)) {
4268
+ return;
4269
+ }
4270
+ if (normalizeToArray(instance.props.triggerTarget || reference2).some(function(el) {
4271
+ return actualContains(el, actualTarget);
4272
+ })) {
4273
+ if (currentInput.isTouch) {
4274
+ return;
4275
+ }
4276
+ if (instance.state.isVisible && instance.props.trigger.indexOf("click") >= 0) {
4277
+ return;
4278
+ }
4279
+ } else {
4280
+ invokeHook("onClickOutside", [instance, event]);
4281
+ }
4282
+ if (instance.props.hideOnClick === true) {
4283
+ instance.clearDelayTimeouts();
4284
+ instance.hide();
4285
+ didHideDueToDocumentMouseDown = true;
4286
+ setTimeout(function() {
4287
+ didHideDueToDocumentMouseDown = false;
4288
+ });
4289
+ if (!instance.state.isMounted) {
4290
+ removeDocumentPress();
4291
+ }
4292
+ }
4293
+ }
4294
+ function onTouchMove() {
4295
+ didTouchMove = true;
4296
+ }
4297
+ function onTouchStart() {
4298
+ didTouchMove = false;
4299
+ }
4300
+ function addDocumentPress() {
4301
+ var doc = getDocument();
4302
+ doc.addEventListener("mousedown", onDocumentPress, true);
4303
+ doc.addEventListener("touchend", onDocumentPress, TOUCH_OPTIONS);
4304
+ doc.addEventListener("touchstart", onTouchStart, TOUCH_OPTIONS);
4305
+ doc.addEventListener("touchmove", onTouchMove, TOUCH_OPTIONS);
4306
+ }
4307
+ function removeDocumentPress() {
4308
+ var doc = getDocument();
4309
+ doc.removeEventListener("mousedown", onDocumentPress, true);
4310
+ doc.removeEventListener("touchend", onDocumentPress, TOUCH_OPTIONS);
4311
+ doc.removeEventListener("touchstart", onTouchStart, TOUCH_OPTIONS);
4312
+ doc.removeEventListener("touchmove", onTouchMove, TOUCH_OPTIONS);
4313
+ }
4314
+ function onTransitionedOut(duration, callback) {
4315
+ onTransitionEnd(duration, function() {
4316
+ if (!instance.state.isVisible && popper2.parentNode && popper2.parentNode.contains(popper2)) {
4317
+ callback();
4318
+ }
4319
+ });
4320
+ }
4321
+ function onTransitionedIn(duration, callback) {
4322
+ onTransitionEnd(duration, callback);
4323
+ }
4324
+ function onTransitionEnd(duration, callback) {
4325
+ var box = getDefaultTemplateChildren().box;
4326
+ function listener(event) {
4327
+ if (event.target === box) {
4328
+ updateTransitionEndListener(box, "remove", listener);
4329
+ callback();
4330
+ }
4331
+ }
4332
+ if (duration === 0) {
4333
+ return callback();
4334
+ }
4335
+ updateTransitionEndListener(box, "remove", currentTransitionEndListener);
4336
+ updateTransitionEndListener(box, "add", listener);
4337
+ currentTransitionEndListener = listener;
4338
+ }
4339
+ function on(eventType, handler, options) {
4340
+ if (options === void 0) {
4341
+ options = false;
4342
+ }
4343
+ var nodes = normalizeToArray(instance.props.triggerTarget || reference2);
4344
+ nodes.forEach(function(node) {
4345
+ node.addEventListener(eventType, handler, options);
4346
+ listeners.push({
4347
+ node,
4348
+ eventType,
4349
+ handler,
4350
+ options
4351
+ });
4352
+ });
4353
+ }
4354
+ function addListeners() {
4355
+ if (getIsCustomTouchBehavior()) {
4356
+ on("touchstart", onTrigger2, {
4357
+ passive: true
4358
+ });
4359
+ on("touchend", onMouseLeave, {
4360
+ passive: true
4361
+ });
4362
+ }
4363
+ splitBySpaces(instance.props.trigger).forEach(function(eventType) {
4364
+ if (eventType === "manual") {
4365
+ return;
4366
+ }
4367
+ on(eventType, onTrigger2);
4368
+ switch (eventType) {
4369
+ case "mouseenter":
4370
+ on("mouseleave", onMouseLeave);
4371
+ break;
4372
+ case "focus":
4373
+ on(isIE11 ? "focusout" : "blur", onBlurOrFocusOut);
4374
+ break;
4375
+ case "focusin":
4376
+ on("focusout", onBlurOrFocusOut);
4377
+ break;
4378
+ }
4379
+ });
4380
+ }
4381
+ function removeListeners() {
4382
+ listeners.forEach(function(_ref) {
4383
+ var node = _ref.node, eventType = _ref.eventType, handler = _ref.handler, options = _ref.options;
4384
+ node.removeEventListener(eventType, handler, options);
4385
+ });
4386
+ listeners = [];
4387
+ }
4388
+ function onTrigger2(event) {
4389
+ var _lastTriggerEvent;
4390
+ var shouldScheduleClickHide = false;
4391
+ if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {
4392
+ return;
4393
+ }
4394
+ var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === "focus";
4395
+ lastTriggerEvent = event;
4396
+ currentTarget = event.currentTarget;
4397
+ handleAriaExpandedAttribute();
4398
+ if (!instance.state.isVisible && isMouseEvent(event)) {
4399
+ mouseMoveListeners.forEach(function(listener) {
4400
+ return listener(event);
4401
+ });
4402
+ }
4403
+ if (event.type === "click" && (instance.props.trigger.indexOf("mouseenter") < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {
4404
+ shouldScheduleClickHide = true;
4405
+ } else {
4406
+ scheduleShow(event);
4407
+ }
4408
+ if (event.type === "click") {
4409
+ isVisibleFromClick = !shouldScheduleClickHide;
4410
+ }
4411
+ if (shouldScheduleClickHide && !wasFocused) {
4412
+ scheduleHide(event);
4413
+ }
4414
+ }
4415
+ function onMouseMove(event) {
4416
+ var target = event.target;
4417
+ var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper2.contains(target);
4418
+ if (event.type === "mousemove" && isCursorOverReferenceOrPopper) {
4419
+ return;
4420
+ }
4421
+ var popperTreeData = getNestedPopperTree().concat(popper2).map(function(popper3) {
4422
+ var _instance$popperInsta;
4423
+ var instance2 = popper3._tippy;
4424
+ var state2 = (_instance$popperInsta = instance2.popperInstance) == null ? void 0 : _instance$popperInsta.state;
4425
+ if (state2) {
4426
+ return {
4427
+ popperRect: popper3.getBoundingClientRect(),
4428
+ popperState: state2,
4429
+ props
4430
+ };
4431
+ }
4432
+ return null;
4433
+ }).filter(Boolean);
4434
+ if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {
4435
+ cleanupInteractiveMouseListeners();
4436
+ scheduleHide(event);
4437
+ }
4438
+ }
4439
+ function onMouseLeave(event) {
4440
+ var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf("click") >= 0 && isVisibleFromClick;
4441
+ if (shouldBail) {
4442
+ return;
4443
+ }
4444
+ if (instance.props.interactive) {
4445
+ instance.hideWithInteractivity(event);
4446
+ return;
4447
+ }
4448
+ scheduleHide(event);
4449
+ }
4450
+ function onBlurOrFocusOut(event) {
4451
+ if (instance.props.trigger.indexOf("focusin") < 0 && event.target !== getCurrentTarget()) {
4452
+ return;
4453
+ }
4454
+ if (instance.props.interactive && event.relatedTarget && popper2.contains(event.relatedTarget)) {
4455
+ return;
4456
+ }
4457
+ scheduleHide(event);
4458
+ }
4459
+ function isEventListenerStopped(event) {
4460
+ return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf("touch") >= 0 : false;
4461
+ }
4462
+ function createPopperInstance() {
4463
+ destroyPopperInstance();
4464
+ var _instance$props2 = instance.props, popperOptions = _instance$props2.popperOptions, placement = _instance$props2.placement, offset2 = _instance$props2.offset, getReferenceClientRect = _instance$props2.getReferenceClientRect, moveTransition = _instance$props2.moveTransition;
4465
+ var arrow2 = getIsDefaultRenderFn() ? getChildren(popper2).arrow : null;
4466
+ var computedReference = getReferenceClientRect ? {
4467
+ getBoundingClientRect: getReferenceClientRect,
4468
+ contextElement: getReferenceClientRect.contextElement || getCurrentTarget()
4469
+ } : reference2;
4470
+ var tippyModifier = {
4471
+ name: "$$tippy",
4472
+ enabled: true,
4473
+ phase: "beforeWrite",
4474
+ requires: ["computeStyles"],
4475
+ fn: function fn2(_ref2) {
4476
+ var state2 = _ref2.state;
4477
+ if (getIsDefaultRenderFn()) {
4478
+ var _getDefaultTemplateCh = getDefaultTemplateChildren(), box = _getDefaultTemplateCh.box;
4479
+ ["placement", "reference-hidden", "escaped"].forEach(function(attr) {
4480
+ if (attr === "placement") {
4481
+ box.setAttribute("data-placement", state2.placement);
4482
+ } else {
4483
+ if (state2.attributes.popper["data-popper-" + attr]) {
4484
+ box.setAttribute("data-" + attr, "");
4485
+ } else {
4486
+ box.removeAttribute("data-" + attr);
4487
+ }
4488
+ }
4489
+ });
4490
+ state2.attributes.popper = {};
4491
+ }
4492
+ }
4493
+ };
4494
+ var modifiers = [{
4495
+ name: "offset",
4496
+ options: {
4497
+ offset: offset2
4498
+ }
4499
+ }, {
4500
+ name: "preventOverflow",
4501
+ options: {
4502
+ padding: {
4503
+ top: 2,
4504
+ bottom: 2,
4505
+ left: 5,
4506
+ right: 5
4507
+ }
4508
+ }
4509
+ }, {
4510
+ name: "flip",
4511
+ options: {
4512
+ padding: 5
4513
+ }
4514
+ }, {
4515
+ name: "computeStyles",
4516
+ options: {
4517
+ adaptive: !moveTransition
4518
+ }
4519
+ }, tippyModifier];
4520
+ if (getIsDefaultRenderFn() && arrow2) {
4521
+ modifiers.push({
4522
+ name: "arrow",
4523
+ options: {
4524
+ element: arrow2,
4525
+ padding: 3
4526
+ }
4527
+ });
4528
+ }
4529
+ modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);
4530
+ instance.popperInstance = createPopper(computedReference, popper2, Object.assign({}, popperOptions, {
4531
+ placement,
4532
+ onFirstUpdate,
4533
+ modifiers
4534
+ }));
4535
+ }
4536
+ function destroyPopperInstance() {
4537
+ if (instance.popperInstance) {
4538
+ instance.popperInstance.destroy();
4539
+ instance.popperInstance = null;
4540
+ }
4541
+ }
4542
+ function mount2() {
4543
+ var appendTo = instance.props.appendTo;
4544
+ var parentNode;
4545
+ var node = getCurrentTarget();
4546
+ if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === "parent") {
4547
+ parentNode = node.parentNode;
4548
+ } else {
4549
+ parentNode = invokeWithArgsOrReturn(appendTo, [node]);
4550
+ }
4551
+ if (!parentNode.contains(popper2)) {
4552
+ parentNode.appendChild(popper2);
4553
+ }
4554
+ instance.state.isMounted = true;
4555
+ createPopperInstance();
4556
+ if (true) {
4557
+ warnWhen(instance.props.interactive && appendTo === defaultProps.appendTo && node.nextElementSibling !== popper2, ["Interactive tippy element may not be accessible via keyboard", "navigation because it is not directly after the reference element", "in the DOM source order.", "\n\n", "Using a wrapper <div> or <span> tag around the reference element", "solves this by creating a new parentNode context.", "\n\n", "Specifying `appendTo: document.body` silences this warning, but it", "assumes you are using a focus management solution to handle", "keyboard navigation.", "\n\n", "See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity"].join(" "));
4558
+ }
4559
+ }
4560
+ function getNestedPopperTree() {
4561
+ return arrayFrom(popper2.querySelectorAll("[data-tippy-root]"));
4562
+ }
4563
+ function scheduleShow(event) {
4564
+ instance.clearDelayTimeouts();
4565
+ if (event) {
4566
+ invokeHook("onTrigger", [instance, event]);
4567
+ }
4568
+ addDocumentPress();
4569
+ var delay = getDelay(true);
4570
+ var _getNormalizedTouchSe = getNormalizedTouchSettings(), touchValue = _getNormalizedTouchSe[0], touchDelay = _getNormalizedTouchSe[1];
4571
+ if (currentInput.isTouch && touchValue === "hold" && touchDelay) {
4572
+ delay = touchDelay;
4573
+ }
4574
+ if (delay) {
4575
+ showTimeout = setTimeout(function() {
4576
+ instance.show();
4577
+ }, delay);
4578
+ } else {
4579
+ instance.show();
4580
+ }
4581
+ }
4582
+ function scheduleHide(event) {
4583
+ instance.clearDelayTimeouts();
4584
+ invokeHook("onUntrigger", [instance, event]);
4585
+ if (!instance.state.isVisible) {
4586
+ removeDocumentPress();
4587
+ return;
4588
+ }
4589
+ if (instance.props.trigger.indexOf("mouseenter") >= 0 && instance.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(event.type) >= 0 && isVisibleFromClick) {
4590
+ return;
4591
+ }
4592
+ var delay = getDelay(false);
4593
+ if (delay) {
4594
+ hideTimeout = setTimeout(function() {
4595
+ if (instance.state.isVisible) {
4596
+ instance.hide();
4597
+ }
4598
+ }, delay);
4599
+ } else {
4600
+ scheduleHideAnimationFrame = requestAnimationFrame(function() {
4601
+ instance.hide();
4602
+ });
4603
+ }
4604
+ }
4605
+ function enable() {
4606
+ instance.state.isEnabled = true;
4607
+ }
4608
+ function disable() {
4609
+ instance.hide();
4610
+ instance.state.isEnabled = false;
4611
+ }
4612
+ function clearDelayTimeouts() {
4613
+ clearTimeout(showTimeout);
4614
+ clearTimeout(hideTimeout);
4615
+ cancelAnimationFrame(scheduleHideAnimationFrame);
4616
+ }
4617
+ function setProps(partialProps) {
4618
+ if (true) {
4619
+ warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("setProps"));
4620
+ }
4621
+ if (instance.state.isDestroyed) {
4622
+ return;
4623
+ }
4624
+ invokeHook("onBeforeUpdate", [instance, partialProps]);
4625
+ removeListeners();
4626
+ var prevProps = instance.props;
4627
+ var nextProps = evaluateProps(reference2, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {
4628
+ ignoreAttributes: true
4629
+ }));
4630
+ instance.props = nextProps;
4631
+ addListeners();
4632
+ if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {
4633
+ cleanupInteractiveMouseListeners();
4634
+ debouncedOnMouseMove = debounce2(onMouseMove, nextProps.interactiveDebounce);
4635
+ }
4636
+ if (prevProps.triggerTarget && !nextProps.triggerTarget) {
4637
+ normalizeToArray(prevProps.triggerTarget).forEach(function(node) {
4638
+ node.removeAttribute("aria-expanded");
4639
+ });
4640
+ } else if (nextProps.triggerTarget) {
4641
+ reference2.removeAttribute("aria-expanded");
4642
+ }
4643
+ handleAriaExpandedAttribute();
4644
+ handleStyles();
4645
+ if (onUpdate) {
4646
+ onUpdate(prevProps, nextProps);
4647
+ }
4648
+ if (instance.popperInstance) {
4649
+ createPopperInstance();
4650
+ getNestedPopperTree().forEach(function(nestedPopper) {
4651
+ requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);
4652
+ });
4653
+ }
4654
+ invokeHook("onAfterUpdate", [instance, partialProps]);
4655
+ }
4656
+ function setContent2(content) {
4657
+ instance.setProps({
4658
+ content
4659
+ });
4660
+ }
4661
+ function show() {
4662
+ if (true) {
4663
+ warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("show"));
4664
+ }
4665
+ var isAlreadyVisible = instance.state.isVisible;
4666
+ var isDestroyed = instance.state.isDestroyed;
4667
+ var isDisabled = !instance.state.isEnabled;
4668
+ var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;
4669
+ var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);
4670
+ if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {
4671
+ return;
4672
+ }
4673
+ if (getCurrentTarget().hasAttribute("disabled")) {
4674
+ return;
4675
+ }
4676
+ invokeHook("onShow", [instance], false);
4677
+ if (instance.props.onShow(instance) === false) {
4678
+ return;
4679
+ }
4680
+ instance.state.isVisible = true;
4681
+ if (getIsDefaultRenderFn()) {
4682
+ popper2.style.visibility = "visible";
4683
+ }
4684
+ handleStyles();
4685
+ addDocumentPress();
4686
+ if (!instance.state.isMounted) {
4687
+ popper2.style.transition = "none";
4688
+ }
4689
+ if (getIsDefaultRenderFn()) {
4690
+ var _getDefaultTemplateCh2 = getDefaultTemplateChildren(), box = _getDefaultTemplateCh2.box, content = _getDefaultTemplateCh2.content;
4691
+ setTransitionDuration([box, content], 0);
4692
+ }
4693
+ onFirstUpdate = function onFirstUpdate2() {
4694
+ var _instance$popperInsta2;
4695
+ if (!instance.state.isVisible || ignoreOnFirstUpdate) {
4696
+ return;
4697
+ }
4698
+ ignoreOnFirstUpdate = true;
4699
+ void popper2.offsetHeight;
4700
+ popper2.style.transition = instance.props.moveTransition;
4701
+ if (getIsDefaultRenderFn() && instance.props.animation) {
4702
+ var _getDefaultTemplateCh3 = getDefaultTemplateChildren(), _box = _getDefaultTemplateCh3.box, _content = _getDefaultTemplateCh3.content;
4703
+ setTransitionDuration([_box, _content], duration);
4704
+ setVisibilityState([_box, _content], "visible");
4705
+ }
4706
+ handleAriaContentAttribute();
4707
+ handleAriaExpandedAttribute();
4708
+ pushIfUnique(mountedInstances, instance);
4709
+ (_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();
4710
+ invokeHook("onMount", [instance]);
4711
+ if (instance.props.animation && getIsDefaultRenderFn()) {
4712
+ onTransitionedIn(duration, function() {
4713
+ instance.state.isShown = true;
4714
+ invokeHook("onShown", [instance]);
4715
+ });
4716
+ }
4717
+ };
4718
+ mount2();
4719
+ }
4720
+ function hide2() {
4721
+ if (true) {
4722
+ warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("hide"));
4723
+ }
4724
+ var isAlreadyHidden = !instance.state.isVisible;
4725
+ var isDestroyed = instance.state.isDestroyed;
4726
+ var isDisabled = !instance.state.isEnabled;
4727
+ var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);
4728
+ if (isAlreadyHidden || isDestroyed || isDisabled) {
4729
+ return;
4730
+ }
4731
+ invokeHook("onHide", [instance], false);
4732
+ if (instance.props.onHide(instance) === false) {
4733
+ return;
4734
+ }
4735
+ instance.state.isVisible = false;
4736
+ instance.state.isShown = false;
4737
+ ignoreOnFirstUpdate = false;
4738
+ isVisibleFromClick = false;
4739
+ if (getIsDefaultRenderFn()) {
4740
+ popper2.style.visibility = "hidden";
4741
+ }
4742
+ cleanupInteractiveMouseListeners();
4743
+ removeDocumentPress();
4744
+ handleStyles(true);
4745
+ if (getIsDefaultRenderFn()) {
4746
+ var _getDefaultTemplateCh4 = getDefaultTemplateChildren(), box = _getDefaultTemplateCh4.box, content = _getDefaultTemplateCh4.content;
4747
+ if (instance.props.animation) {
4748
+ setTransitionDuration([box, content], duration);
4749
+ setVisibilityState([box, content], "hidden");
4750
+ }
4751
+ }
4752
+ handleAriaContentAttribute();
4753
+ handleAriaExpandedAttribute();
4754
+ if (instance.props.animation) {
4755
+ if (getIsDefaultRenderFn()) {
4756
+ onTransitionedOut(duration, instance.unmount);
4757
+ }
4758
+ } else {
4759
+ instance.unmount();
4760
+ }
4761
+ }
4762
+ function hideWithInteractivity(event) {
4763
+ if (true) {
4764
+ warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("hideWithInteractivity"));
4765
+ }
4766
+ getDocument().addEventListener("mousemove", debouncedOnMouseMove);
4767
+ pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);
4768
+ debouncedOnMouseMove(event);
4769
+ }
4770
+ function unmount() {
4771
+ if (true) {
4772
+ warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("unmount"));
4773
+ }
4774
+ if (instance.state.isVisible) {
4775
+ instance.hide();
4776
+ }
4777
+ if (!instance.state.isMounted) {
4778
+ return;
4779
+ }
4780
+ destroyPopperInstance();
4781
+ getNestedPopperTree().forEach(function(nestedPopper) {
4782
+ nestedPopper._tippy.unmount();
4783
+ });
4784
+ if (popper2.parentNode) {
4785
+ popper2.parentNode.removeChild(popper2);
4786
+ }
4787
+ mountedInstances = mountedInstances.filter(function(i) {
4788
+ return i !== instance;
4789
+ });
4790
+ instance.state.isMounted = false;
4791
+ invokeHook("onHidden", [instance]);
4792
+ }
4793
+ function destroy() {
4794
+ if (true) {
4795
+ warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("destroy"));
4796
+ }
4797
+ if (instance.state.isDestroyed) {
4798
+ return;
4799
+ }
4800
+ instance.clearDelayTimeouts();
4801
+ instance.unmount();
4802
+ removeListeners();
4803
+ delete reference2._tippy;
4804
+ instance.state.isDestroyed = true;
4805
+ invokeHook("onDestroy", [instance]);
4806
+ }
4807
+ }
4808
+ function tippy(targets, optionalProps) {
4809
+ if (optionalProps === void 0) {
4810
+ optionalProps = {};
4811
+ }
4812
+ var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);
4813
+ if (true) {
4814
+ validateTargets(targets);
4815
+ validateProps(optionalProps, plugins);
4816
+ }
4817
+ bindGlobalEventListeners();
4818
+ var passedProps = Object.assign({}, optionalProps, {
4819
+ plugins
4820
+ });
4821
+ var elements = getArrayOfElements(targets);
4822
+ if (true) {
4823
+ var isSingleContentElement = isElement2(passedProps.content);
4824
+ var isMoreThanOneReferenceElement = elements.length > 1;
4825
+ warnWhen(isSingleContentElement && isMoreThanOneReferenceElement, ["tippy() was passed an Element as the `content` prop, but more than", "one tippy instance was created by this invocation. This means the", "content element will only be appended to the last tippy instance.", "\n\n", "Instead, pass the .innerHTML of the element, or use a function that", "returns a cloned version of the element instead.", "\n\n", "1) content: element.innerHTML\n", "2) content: () => element.cloneNode(true)"].join(" "));
4826
+ }
4827
+ var instances2 = elements.reduce(function(acc, reference2) {
4828
+ var instance = reference2 && createTippy(reference2, passedProps);
4829
+ if (instance) {
4830
+ acc.push(instance);
4831
+ }
4832
+ return acc;
4833
+ }, []);
4834
+ return isElement2(targets) ? instances2[0] : instances2;
4835
+ }
4836
+ tippy.defaultProps = defaultProps;
4837
+ tippy.setDefaultProps = setDefaultProps;
4838
+ tippy.currentInput = currentInput;
4839
+ var applyStylesModifier = Object.assign({}, applyStyles_default, {
4840
+ effect: function effect4(_ref) {
4841
+ var state = _ref.state;
4842
+ var initialStyles = {
4843
+ popper: {
4844
+ position: state.options.strategy,
4845
+ left: "0",
4846
+ top: "0",
4847
+ margin: "0"
4848
+ },
4849
+ arrow: {
4850
+ position: "absolute"
4851
+ },
4852
+ reference: {}
4853
+ };
4854
+ Object.assign(state.elements.popper.style, initialStyles.popper);
4855
+ state.styles = initialStyles;
4856
+ if (state.elements.arrow) {
4857
+ Object.assign(state.elements.arrow.style, initialStyles.arrow);
4858
+ }
4859
+ }
4860
+ });
4861
+ tippy.setDefaultProps({
4862
+ render
4863
+ });
4864
+ var tippy_esm_default = tippy;
4865
+
4866
+ // src/components/tippy-util.ts
4867
+ var instances = /* @__PURE__ */ new Set();
4868
+ function onCreate2(instance) {
4869
+ instances.add(instance);
4870
+ }
4871
+ function onDestroy2(instance) {
4872
+ instances.delete(instance);
4873
+ }
4874
+ tippy_esm_default.setDefaultProps({ onCreate: onCreate2, onDestroy: onDestroy2 });
4875
+ function hideAll() {
4876
+ instances.forEach((instance) => instance.hide());
4877
+ }
4878
+
4879
+ // src/components/Fastboard.tsx
4880
+ var Fastboard = /* @__PURE__ */ (0, import_react70.forwardRef)(function Fastboard2(_a, ref) {
4881
+ var _b = _a, { app, theme, layout, language } = _b, restProps = __objRest(_b, ["app", "theme", "layout", "language"]);
4882
+ if (!app) {
4883
+ return /* @__PURE__ */ import_react70.default.createElement("div", __spreadValues({
4884
+ className: "fastboard-root",
4885
+ ref
4886
+ }, restProps));
4887
+ }
4888
+ return /* @__PURE__ */ import_react70.default.createElement(FastboardAppContext.Provider, {
4889
+ value: app
4890
+ }, /* @__PURE__ */ import_react70.default.createElement(FastboardInternal, __spreadValues(__spreadValues({
4891
+ forwardedRef: ref
4892
+ }, { theme, layout, language }), restProps)));
4893
+ });
4894
+ function FastboardInternal(_a) {
4895
+ var _b = _a, {
4896
+ forwardedRef,
4897
+ language,
4898
+ layout = {},
4899
+ theme = "light",
4900
+ children
4901
+ } = _b, restProps = __objRest(_b, [
4902
+ "forwardedRef",
4903
+ "language",
4904
+ "layout",
4905
+ "theme",
4906
+ "children"
4907
+ ]);
4908
+ const app = useFastboardApp();
4909
+ const forceUpdate = useForceUpdate();
4910
+ const i18n = useAsyncValue(() => createI18n({ language }));
4911
+ (0, import_react70.useEffect)(() => {
4912
+ if (i18n)
4913
+ i18n.changeLanguage(language);
4914
+ forceUpdate();
4915
+ }, [forceUpdate, i18n, language]);
4916
+ (0, import_react70.useEffect)(() => {
4917
+ app.manager.setPrefersColorScheme(theme);
4918
+ }, [app, theme]);
4919
+ const useWhiteboard = (0, import_react70.useCallback)((container) => {
4920
+ if (container && app)
4921
+ app.bindContainer(container);
4922
+ }, [app]);
4923
+ const hideControls = useHideControls();
4924
+ const showControls = !hideControls;
4925
+ const {
4926
+ Toolbar: toolbar = showControls || hideControls === "toolbar-only",
4927
+ RedoUndo: redo_undo = showControls,
4928
+ ZoomControl: zoom_control = showControls,
4929
+ PageControl: page_control = showControls
4930
+ } = layout;
4931
+ return /* @__PURE__ */ import_react70.default.createElement(ThemeContext.Provider, {
4932
+ value: theme
4933
+ }, /* @__PURE__ */ import_react70.default.createElement(I18nContext.Provider, {
4934
+ value: i18n
4935
+ }, /* @__PURE__ */ import_react70.default.createElement("div", __spreadProps(__spreadValues({}, restProps), {
4936
+ className: "fastboard-root",
4937
+ ref: forwardedRef
4938
+ }), /* @__PURE__ */ import_react70.default.createElement("div", {
4939
+ className: "fastboard-view",
4940
+ ref: useWhiteboard,
4941
+ onTouchStartCapture: hideAll
4942
+ }), children ? children : /* @__PURE__ */ import_react70.default.createElement(import_react70.default.Fragment, null, toolbar && /* @__PURE__ */ import_react70.default.createElement("div", {
4943
+ className: "fastboard-left"
4944
+ }, /* @__PURE__ */ import_react70.default.createElement(Toolbar, null)), (redo_undo || zoom_control) && /* @__PURE__ */ import_react70.default.createElement("div", {
4945
+ className: "fastboard-bottom-left"
4946
+ }, redo_undo && /* @__PURE__ */ import_react70.default.createElement(RedoUndo, null), zoom_control && /* @__PURE__ */ import_react70.default.createElement(ZoomControl, null)), page_control && /* @__PURE__ */ import_react70.default.createElement("div", {
4947
+ className: "fastboard-bottom-right"
4948
+ }, /* @__PURE__ */ import_react70.default.createElement(PageControl, null))))));
4949
+ }
4950
+
4951
+ // src/components/ReplayFastboard.tsx
4952
+ var import_react71 = __toESM(require("react"));
4953
+ var ReplayFastboard = /* @__PURE__ */ (0, import_react71.forwardRef)(function ReplayFastboard2(_a, ref) {
4954
+ var _b = _a, { player, theme = "light", autoHideControl = false } = _b, restProps = __objRest(_b, ["player", "theme", "autoHideControl"]);
4955
+ const useWhiteboard = (0, import_react71.useCallback)((container) => {
4956
+ if (container && player)
4957
+ player.bindContainer(container);
4958
+ }, [player]);
4959
+ if (!player) {
4960
+ return /* @__PURE__ */ import_react71.default.createElement("div", __spreadValues({
4961
+ className: "fastboard-root",
4962
+ ref
4963
+ }, restProps));
4964
+ }
4965
+ return /* @__PURE__ */ import_react71.default.createElement("div", __spreadValues({
4966
+ className: "fastboard-root",
4967
+ ref
4968
+ }, restProps), /* @__PURE__ */ import_react71.default.createElement("div", {
4969
+ className: "fastboard-view",
4970
+ ref: useWhiteboard
4971
+ }), /* @__PURE__ */ import_react71.default.createElement("div", {
4972
+ className: "fastboard-bottom"
4973
+ }, /* @__PURE__ */ import_react71.default.createElement(PlayerControl, {
4974
+ player,
4975
+ theme,
4976
+ autoHide: autoHideControl
4977
+ })));
4978
+ });
4979
+
4980
+ // src/vanilla/index.tsx
4981
+ var import_react72 = __toESM(require("react"));
4982
+ var import_react_dom = __toESM(require("react-dom"));
4983
+ function mount(app, dom, props) {
4984
+ import_react_dom.default.render(/* @__PURE__ */ import_react72.default.createElement(Fastboard, __spreadValues({
4985
+ app
4986
+ }, props)), dom);
4987
+ return {
4988
+ update(props2) {
4989
+ import_react_dom.default.render(/* @__PURE__ */ import_react72.default.createElement(Fastboard, __spreadValues({
4990
+ app
4991
+ }, props2)), dom);
4992
+ },
4993
+ destroy() {
4994
+ import_react_dom.default.unmountComponentAtNode(dom);
4995
+ }
4996
+ };
2058
4997
  }
2059
4998
  module.exports = __toCommonJS(src_exports);
2060
4999
  //# sourceMappingURL=index.js.map