@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.
- package/dist/index.js +3281 -342
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3245 -306
- package/dist/index.mjs.map +1 -1
- package/package.json +10 -15
- package/src/components/Fastboard.scss +6 -1
- package/src/components/Fastboard.tsx +3 -2
- package/src/components/PageControl/PageControl.scss +15 -11
- package/src/components/PageControl/PageControl.tsx +15 -17
- package/src/components/PlayerControl/PlayerControl.scss +13 -12
- package/src/components/PlayerControl/PlayerControl.tsx +3 -3
- package/src/components/RedoUndo/RedoUndo.scss +10 -10
- package/src/components/ReplayFastboard.tsx +36 -0
- package/src/components/Toolbar/Toolbar.scss +54 -15
- package/src/components/Toolbar/components/AppsButton.tsx +41 -8
- package/src/components/Toolbar/components/ShapesButton.tsx +11 -3
- package/src/components/Toolbar/hooks.ts +9 -0
- package/src/components/Toolbar/icons/Laser.tsx +21 -0
- package/src/components/Toolbar/icons/Loading.tsx +13 -0
- package/src/components/ZoomControl/ZoomControl.scss +15 -11
- package/src/components/ZoomControl/ZoomControl.tsx +4 -2
- package/src/components/tippy-util.ts +18 -0
- package/src/icons/Left.tsx +15 -0
- package/src/icons/Minus.tsx +2 -2
- package/src/icons/Plus.tsx +2 -2
- package/src/icons/Redo.tsx +6 -5
- package/src/icons/Reset.tsx +4 -6
- package/src/icons/Right.tsx +15 -0
- package/src/icons/Undo.tsx +6 -5
- package/src/icons/WhiteboardAdd.tsx +26 -0
- package/src/index.ts +1 -0
- package/src/vanilla/index.tsx +14 -4
- package/src/icons/ChevronLeft.tsx +0 -21
- package/src/icons/ChevronRight.tsx +0 -21
- package/src/icons/FilePlus.tsx +0 -18
package/dist/index.mjs
CHANGED
|
@@ -40,8 +40,8 @@ function applyStyles(css) {
|
|
|
40
40
|
document.head.appendChild(el);
|
|
41
41
|
return el;
|
|
42
42
|
}
|
|
43
|
-
function clamp(value,
|
|
44
|
-
return value <
|
|
43
|
+
function clamp(value, min2, max2) {
|
|
44
|
+
return value < min2 ? min2 : value > max2 ? max2 : value;
|
|
45
45
|
}
|
|
46
46
|
function isEqualArray(a, b) {
|
|
47
47
|
return a.length === b.length && a.every((e, i) => e === b[i]);
|
|
@@ -68,10 +68,10 @@ function useLastValue(value) {
|
|
|
68
68
|
}, [value]);
|
|
69
69
|
return ref.current;
|
|
70
70
|
}
|
|
71
|
-
function useAsyncValue(
|
|
71
|
+
function useAsyncValue(fn2) {
|
|
72
72
|
const [value, setValue] = useState(null);
|
|
73
73
|
useEffect(() => {
|
|
74
|
-
|
|
74
|
+
fn2().then(setValue);
|
|
75
75
|
}, []);
|
|
76
76
|
return value;
|
|
77
77
|
}
|
|
@@ -81,7 +81,7 @@ function useForceUpdate() {
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
// src/style.scss?inline
|
|
84
|
-
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';
|
|
84
|
+
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';
|
|
85
85
|
|
|
86
86
|
// src/behaviors/style.ts
|
|
87
87
|
applyStyles(style_default);
|
|
@@ -289,18 +289,17 @@ function Redo({ theme = "light", active }) {
|
|
|
289
289
|
const config = themes[theme];
|
|
290
290
|
const stroke = active ? config.activeColor : config.color;
|
|
291
291
|
return /* @__PURE__ */ React2.createElement("svg", {
|
|
292
|
-
viewBox: "0 0 24 24"
|
|
293
|
-
|
|
294
|
-
fill: "none",
|
|
295
|
-
fillRule: "evenodd",
|
|
296
|
-
stroke,
|
|
297
|
-
strokeLinecap: "round",
|
|
298
|
-
strokeLinejoin: "round"
|
|
292
|
+
viewBox: "0 0 24 24",
|
|
293
|
+
fill: "none"
|
|
299
294
|
}, /* @__PURE__ */ React2.createElement("path", {
|
|
300
|
-
d: "
|
|
295
|
+
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",
|
|
296
|
+
fill: stroke
|
|
301
297
|
}), /* @__PURE__ */ React2.createElement("path", {
|
|
302
|
-
d: "
|
|
303
|
-
|
|
298
|
+
d: "m15 5 4 4-4 4",
|
|
299
|
+
stroke,
|
|
300
|
+
strokeLinejoin: "round",
|
|
301
|
+
strokeWidth: "1.25"
|
|
302
|
+
}));
|
|
304
303
|
}
|
|
305
304
|
|
|
306
305
|
// src/icons/Undo.tsx
|
|
@@ -309,18 +308,17 @@ function Undo({ theme = "light", active }) {
|
|
|
309
308
|
const config = themes[theme];
|
|
310
309
|
const stroke = active ? config.activeColor : config.color;
|
|
311
310
|
return /* @__PURE__ */ React3.createElement("svg", {
|
|
312
|
-
viewBox: "0 0 24 24"
|
|
313
|
-
|
|
314
|
-
fill: "none",
|
|
315
|
-
fillRule: "evenodd",
|
|
316
|
-
stroke,
|
|
317
|
-
strokeLinecap: "round",
|
|
318
|
-
strokeLinejoin: "round"
|
|
311
|
+
viewBox: "0 0 24 24",
|
|
312
|
+
fill: "none"
|
|
319
313
|
}, /* @__PURE__ */ React3.createElement("path", {
|
|
320
|
-
d: "
|
|
314
|
+
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",
|
|
315
|
+
fill: stroke
|
|
321
316
|
}), /* @__PURE__ */ React3.createElement("path", {
|
|
322
|
-
d: "
|
|
323
|
-
|
|
317
|
+
d: "M9 5 5 9l4 4",
|
|
318
|
+
stroke,
|
|
319
|
+
strokeLinejoin: "round",
|
|
320
|
+
strokeWidth: "1.25"
|
|
321
|
+
}));
|
|
324
322
|
}
|
|
325
323
|
|
|
326
324
|
// src/components/RedoUndo/RedoUndo.tsx
|
|
@@ -439,13 +437,13 @@ function Minus({ theme = "light", active }) {
|
|
|
439
437
|
const config = themes[theme];
|
|
440
438
|
const stroke = active ? config.activeColor : config.color;
|
|
441
439
|
return /* @__PURE__ */ React5.createElement("svg", {
|
|
442
|
-
viewBox: "0 0 24 24"
|
|
440
|
+
viewBox: "0 0 24 24",
|
|
441
|
+
fill: "none"
|
|
443
442
|
}, /* @__PURE__ */ React5.createElement("path", {
|
|
444
|
-
|
|
443
|
+
d: "M5 12h14",
|
|
445
444
|
stroke,
|
|
446
|
-
strokeLinecap: "round",
|
|
447
445
|
strokeLinejoin: "round",
|
|
448
|
-
|
|
446
|
+
strokeWidth: "1.25"
|
|
449
447
|
}));
|
|
450
448
|
}
|
|
451
449
|
|
|
@@ -455,13 +453,13 @@ function Plus({ theme = "light", active }) {
|
|
|
455
453
|
const config = themes[theme];
|
|
456
454
|
const stroke = active ? config.activeColor : config.color;
|
|
457
455
|
return /* @__PURE__ */ React6.createElement("svg", {
|
|
458
|
-
viewBox: "0 0 24 24"
|
|
456
|
+
viewBox: "0 0 24 24",
|
|
457
|
+
fill: "none"
|
|
459
458
|
}, /* @__PURE__ */ React6.createElement("path", {
|
|
460
|
-
|
|
459
|
+
d: "M5 12h14m-7-7v14",
|
|
461
460
|
stroke,
|
|
462
|
-
strokeLinecap: "round",
|
|
463
461
|
strokeLinejoin: "round",
|
|
464
|
-
|
|
462
|
+
strokeWidth: "1.25"
|
|
465
463
|
}));
|
|
466
464
|
}
|
|
467
465
|
|
|
@@ -471,26 +469,26 @@ function Reset({ theme = "light", active }) {
|
|
|
471
469
|
const config = themes[theme];
|
|
472
470
|
const stroke = active ? config.activeColor : config.color;
|
|
473
471
|
return /* @__PURE__ */ React7.createElement("svg", {
|
|
474
|
-
viewBox: "0 0 24 24"
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
472
|
+
viewBox: "0 0 24 24",
|
|
473
|
+
fill: "none"
|
|
474
|
+
}, /* @__PURE__ */ React7.createElement("circle", {
|
|
475
|
+
cx: "12",
|
|
476
|
+
cy: "12",
|
|
477
|
+
fill: stroke,
|
|
478
|
+
r: "2"
|
|
479
|
+
}), /* @__PURE__ */ React7.createElement("path", {
|
|
480
|
+
d: "M12 3v4m0 10v4m9-9h-4M7 12H3",
|
|
480
481
|
stroke,
|
|
481
482
|
strokeLinejoin: "round",
|
|
482
|
-
|
|
483
|
+
strokeWidth: "1.25"
|
|
483
484
|
}), /* @__PURE__ */ React7.createElement("circle", {
|
|
484
|
-
cx: "
|
|
485
|
-
cy: "
|
|
486
|
-
r: "
|
|
487
|
-
stroke
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
r: "1",
|
|
492
|
-
fill: stroke
|
|
493
|
-
})));
|
|
485
|
+
cx: "12",
|
|
486
|
+
cy: "12",
|
|
487
|
+
r: "7",
|
|
488
|
+
stroke,
|
|
489
|
+
strokeLinejoin: "round",
|
|
490
|
+
strokeWidth: "1.25"
|
|
491
|
+
}));
|
|
494
492
|
}
|
|
495
493
|
|
|
496
494
|
// src/components/ZoomControl/ZoomControl.tsx
|
|
@@ -531,10 +529,12 @@ function ZoomControl({
|
|
|
531
529
|
src: disabled ? minusIconDisable : minusIcon,
|
|
532
530
|
alt: "[minus]"
|
|
533
531
|
}))), /* @__PURE__ */ React8.createElement("span", {
|
|
532
|
+
className: clsx2(`${name2}-text`, theme)
|
|
533
|
+
}, /* @__PURE__ */ React8.createElement("span", {
|
|
534
534
|
className: clsx2(`${name2}-scale`, theme)
|
|
535
535
|
}, Math.ceil(scale * 100)), /* @__PURE__ */ React8.createElement("span", {
|
|
536
536
|
className: clsx2(`${name2}-percent`, theme)
|
|
537
|
-
}, "%"), /* @__PURE__ */ React8.createElement(Tippy2, {
|
|
537
|
+
}, "%")), /* @__PURE__ */ React8.createElement(Tippy2, {
|
|
538
538
|
className: "fastboard-tip",
|
|
539
539
|
content: t("zoomIn"),
|
|
540
540
|
theme,
|
|
@@ -600,48 +600,65 @@ import Tippy3 from "@tippyjs/react";
|
|
|
600
600
|
import clsx3 from "clsx";
|
|
601
601
|
import React12 from "react";
|
|
602
602
|
|
|
603
|
-
// src/icons/
|
|
603
|
+
// src/icons/Left.tsx
|
|
604
604
|
import React9 from "react";
|
|
605
|
-
function
|
|
605
|
+
function Left({ theme = "light", active }) {
|
|
606
606
|
const config = themes[theme];
|
|
607
607
|
const stroke = active ? config.activeColor : config.color;
|
|
608
608
|
return /* @__PURE__ */ React9.createElement("svg", {
|
|
609
|
-
viewBox: "0 0 24 24"
|
|
609
|
+
viewBox: "0 0 24 24",
|
|
610
|
+
fill: "none"
|
|
610
611
|
}, /* @__PURE__ */ React9.createElement("path", {
|
|
611
|
-
|
|
612
|
+
d: "m14 8-2 2-2 2 2 2 2 2",
|
|
612
613
|
stroke,
|
|
613
|
-
strokeLinecap: "round",
|
|
614
614
|
strokeLinejoin: "round",
|
|
615
|
-
|
|
615
|
+
strokeWidth: "1.25"
|
|
616
616
|
}));
|
|
617
617
|
}
|
|
618
618
|
|
|
619
|
-
// src/icons/
|
|
619
|
+
// src/icons/Right.tsx
|
|
620
620
|
import React10 from "react";
|
|
621
|
-
function
|
|
621
|
+
function Right({ theme = "light", active }) {
|
|
622
622
|
const config = themes[theme];
|
|
623
623
|
const stroke = active ? config.activeColor : config.color;
|
|
624
624
|
return /* @__PURE__ */ React10.createElement("svg", {
|
|
625
|
-
viewBox: "0 0 24 24"
|
|
625
|
+
viewBox: "0 0 24 24",
|
|
626
|
+
fill: "none"
|
|
626
627
|
}, /* @__PURE__ */ React10.createElement("path", {
|
|
627
|
-
|
|
628
|
+
d: "m10 8 2 2 2 2-2 2-2 2",
|
|
628
629
|
stroke,
|
|
629
|
-
strokeLinecap: "round",
|
|
630
630
|
strokeLinejoin: "round",
|
|
631
|
-
|
|
631
|
+
strokeWidth: "1.25"
|
|
632
632
|
}));
|
|
633
633
|
}
|
|
634
634
|
|
|
635
|
-
// src/icons/
|
|
635
|
+
// src/icons/WhiteboardAdd.tsx
|
|
636
636
|
import React11 from "react";
|
|
637
|
-
function
|
|
637
|
+
function WhiteboardAdd({ theme = "light", active }) {
|
|
638
638
|
const config = themes[theme];
|
|
639
639
|
const stroke = active ? config.activeColor : config.color;
|
|
640
640
|
return /* @__PURE__ */ React11.createElement("svg", {
|
|
641
|
-
viewBox: "0 0 24 24"
|
|
641
|
+
viewBox: "0 0 24 24",
|
|
642
|
+
fill: "none"
|
|
642
643
|
}, /* @__PURE__ */ React11.createElement("path", {
|
|
643
|
-
|
|
644
|
-
|
|
644
|
+
d: "M4 20h16M4 6h16",
|
|
645
|
+
stroke,
|
|
646
|
+
strokeLinejoin: "round",
|
|
647
|
+
strokeWidth: "1.25"
|
|
648
|
+
}), /* @__PURE__ */ React11.createElement("rect", {
|
|
649
|
+
height: "10",
|
|
650
|
+
rx: "1",
|
|
651
|
+
stroke,
|
|
652
|
+
strokeLinejoin: "round",
|
|
653
|
+
strokeWidth: "1.25",
|
|
654
|
+
width: "14",
|
|
655
|
+
x: "5",
|
|
656
|
+
y: "8"
|
|
657
|
+
}), /* @__PURE__ */ React11.createElement("path", {
|
|
658
|
+
d: "M12 4v2m-3 7h6m-3-3v6",
|
|
659
|
+
stroke,
|
|
660
|
+
strokeLinejoin: "round",
|
|
661
|
+
strokeWidth: "1.25"
|
|
645
662
|
}));
|
|
646
663
|
}
|
|
647
664
|
|
|
@@ -677,18 +694,20 @@ function PageControl({
|
|
|
677
694
|
disabled: disabled || pageIndex === 0,
|
|
678
695
|
onClick: actions.prevPage
|
|
679
696
|
}, /* @__PURE__ */ React12.createElement(Icon, {
|
|
680
|
-
fallback: /* @__PURE__ */ React12.createElement(
|
|
697
|
+
fallback: /* @__PURE__ */ React12.createElement(Left, {
|
|
681
698
|
theme
|
|
682
699
|
}),
|
|
683
700
|
src: disabled ? prevIconDisable : prevIcon,
|
|
684
701
|
alt: "[prev]"
|
|
685
702
|
}))), /* @__PURE__ */ React12.createElement("span", {
|
|
703
|
+
className: clsx3(`${name3}-text`, theme)
|
|
704
|
+
}, /* @__PURE__ */ React12.createElement("span", {
|
|
686
705
|
className: clsx3(`${name3}-page`, theme)
|
|
687
706
|
}, pageCount === 0 ? "\u2026" : pageIndex + 1), /* @__PURE__ */ React12.createElement("span", {
|
|
688
707
|
className: clsx3(`${name3}-slash`, theme)
|
|
689
708
|
}, "/"), /* @__PURE__ */ React12.createElement("span", {
|
|
690
709
|
className: clsx3(`${name3}-page-count`, theme)
|
|
691
|
-
}, pageCount), /* @__PURE__ */ React12.createElement(Tippy3, {
|
|
710
|
+
}, pageCount)), /* @__PURE__ */ React12.createElement(Tippy3, {
|
|
692
711
|
className: "fastboard-tip",
|
|
693
712
|
content: t("nextPage"),
|
|
694
713
|
theme,
|
|
@@ -702,7 +721,7 @@ function PageControl({
|
|
|
702
721
|
disabled: disabled || pageIndex === pageCount - 1,
|
|
703
722
|
onClick: actions.nextPage
|
|
704
723
|
}, /* @__PURE__ */ React12.createElement(Icon, {
|
|
705
|
-
fallback: /* @__PURE__ */ React12.createElement(
|
|
724
|
+
fallback: /* @__PURE__ */ React12.createElement(Right, {
|
|
706
725
|
theme
|
|
707
726
|
}),
|
|
708
727
|
src: disabled ? nextIconDisable : nextIcon,
|
|
@@ -721,7 +740,7 @@ function PageControl({
|
|
|
721
740
|
disabled,
|
|
722
741
|
onClick: actions.addPage
|
|
723
742
|
}, /* @__PURE__ */ React12.createElement(Icon, {
|
|
724
|
-
fallback: /* @__PURE__ */ React12.createElement(
|
|
743
|
+
fallback: /* @__PURE__ */ React12.createElement(WhiteboardAdd, {
|
|
725
744
|
theme
|
|
726
745
|
}),
|
|
727
746
|
src: disabled ? addIconDisable : addIcon,
|
|
@@ -1042,10 +1061,14 @@ var MinHeight = ItemHeight * 2 - 4;
|
|
|
1042
1061
|
function useRoomState() {
|
|
1043
1062
|
return useFastboardValue(useFastboardApp().memberState);
|
|
1044
1063
|
}
|
|
1064
|
+
function useAppsStatus() {
|
|
1065
|
+
return useFastboardValue(useFastboardApp().appsStatus);
|
|
1066
|
+
}
|
|
1045
1067
|
function useToolbar() {
|
|
1046
1068
|
const app = useFastboardApp();
|
|
1047
1069
|
const writable = useWritable();
|
|
1048
1070
|
const memberState = useRoomState();
|
|
1071
|
+
const appsStatus = useAppsStatus();
|
|
1049
1072
|
const [lastShape, setLastShape] = useState3("rectangle");
|
|
1050
1073
|
const cleanCurrentScene = useCallback5(() => {
|
|
1051
1074
|
app.cleanCurrentScene();
|
|
@@ -1068,6 +1091,7 @@ function useToolbar() {
|
|
|
1068
1091
|
writable,
|
|
1069
1092
|
memberState,
|
|
1070
1093
|
lastShape,
|
|
1094
|
+
appsStatus,
|
|
1071
1095
|
cleanCurrentScene,
|
|
1072
1096
|
setAppliance,
|
|
1073
1097
|
setStrokeWidth,
|
|
@@ -1078,6 +1102,7 @@ var EmptyToolbarHook = {
|
|
|
1078
1102
|
writable: false,
|
|
1079
1103
|
memberState: void 0,
|
|
1080
1104
|
lastShape: "rectangle",
|
|
1105
|
+
appsStatus: {},
|
|
1081
1106
|
cleanCurrentScene: noop,
|
|
1082
1107
|
setAppliance: noop,
|
|
1083
1108
|
setStrokeWidth: noop,
|
|
@@ -1085,16 +1110,16 @@ var EmptyToolbarHook = {
|
|
|
1085
1110
|
};
|
|
1086
1111
|
|
|
1087
1112
|
// src/components/Toolbar/Toolbar.tsx
|
|
1088
|
-
import
|
|
1113
|
+
import clsx10 from "clsx";
|
|
1089
1114
|
import { AnimatePresence, motion } from "framer-motion";
|
|
1090
|
-
import
|
|
1115
|
+
import React44, { createContext as createContext3, useState as useState5 } from "react";
|
|
1091
1116
|
|
|
1092
1117
|
// src/components/Toolbar/components/assets/expanded.png
|
|
1093
1118
|
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==";
|
|
1094
1119
|
|
|
1095
1120
|
// src/components/Toolbar/Content.tsx
|
|
1096
|
-
import
|
|
1097
|
-
import
|
|
1121
|
+
import clsx9 from "clsx";
|
|
1122
|
+
import React43, { useCallback as useCallback11, useContext as useContext13, useEffect as useEffect3, useRef as useRef2, useState as useState4 } from "react";
|
|
1098
1123
|
|
|
1099
1124
|
// src/components/Toolbar/components/ApplianceButtons.tsx
|
|
1100
1125
|
import React33, { useCallback as useCallback6, useContext as useContext4 } from "react";
|
|
@@ -1219,8 +1244,9 @@ function CleanButton() {
|
|
|
1219
1244
|
}
|
|
1220
1245
|
|
|
1221
1246
|
// src/components/Toolbar/components/AppsButton.tsx
|
|
1247
|
+
import clsx5 from "clsx";
|
|
1222
1248
|
import Tippy5 from "@tippyjs/react";
|
|
1223
|
-
import
|
|
1249
|
+
import React35, { useContext as useContext5 } from "react";
|
|
1224
1250
|
|
|
1225
1251
|
// src/components/Toolbar/components/assets/vscode.png
|
|
1226
1252
|
var vscode_default = "data:image/png;base64,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";
|
|
@@ -1231,23 +1257,35 @@ var geogebra_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCA
|
|
|
1231
1257
|
// src/components/Toolbar/components/assets/countdown.png
|
|
1232
1258
|
var countdown_default = "data:image/png;base64,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";
|
|
1233
1259
|
|
|
1260
|
+
// src/components/Toolbar/icons/Loading.tsx
|
|
1261
|
+
import React34 from "react";
|
|
1262
|
+
var Loading = (props) => {
|
|
1263
|
+
const stroke = getStroke(props);
|
|
1264
|
+
return /* @__PURE__ */ React34.createElement("svg", {
|
|
1265
|
+
viewBox: "0 0 24 24"
|
|
1266
|
+
}, /* @__PURE__ */ React34.createElement("path", {
|
|
1267
|
+
fill: stroke,
|
|
1268
|
+
d: "M12 4V2A10 10 0 0 0 2 12h2a8 8 0 0 1 8-8Z"
|
|
1269
|
+
}));
|
|
1270
|
+
};
|
|
1271
|
+
|
|
1234
1272
|
// src/components/Toolbar/components/AppsButton.tsx
|
|
1235
1273
|
function AppsButton({ content, onClick }) {
|
|
1236
1274
|
const { theme, icons, writable } = useContext5(ToolbarContext);
|
|
1237
1275
|
const disabled = !writable;
|
|
1238
|
-
const button = /* @__PURE__ */
|
|
1276
|
+
const button = /* @__PURE__ */ React35.createElement(Button, {
|
|
1239
1277
|
content: "Apps",
|
|
1240
1278
|
onClick
|
|
1241
|
-
}, /* @__PURE__ */
|
|
1242
|
-
fallback: /* @__PURE__ */
|
|
1279
|
+
}, /* @__PURE__ */ React35.createElement(Icon, {
|
|
1280
|
+
fallback: /* @__PURE__ */ React35.createElement(Icons.Apps, {
|
|
1243
1281
|
theme
|
|
1244
1282
|
}),
|
|
1245
1283
|
src: disabled ? icons == null ? void 0 : icons.appsIconDisable : icons == null ? void 0 : icons.appsIcon,
|
|
1246
1284
|
alt: "[apps]"
|
|
1247
1285
|
}));
|
|
1248
|
-
return content === false ? button : /* @__PURE__ */
|
|
1286
|
+
return content === false ? button : /* @__PURE__ */ React35.createElement("span", {
|
|
1249
1287
|
className: "fastboard-toolbar-btn-interactive"
|
|
1250
|
-
}, /* @__PURE__ */
|
|
1288
|
+
}, /* @__PURE__ */ React35.createElement(Tippy5, {
|
|
1251
1289
|
className: "fastboard-tip",
|
|
1252
1290
|
content: renderAppsButtonContent(content),
|
|
1253
1291
|
theme,
|
|
@@ -1259,55 +1297,74 @@ function AppsButton({ content, onClick }) {
|
|
|
1259
1297
|
}, button));
|
|
1260
1298
|
}
|
|
1261
1299
|
function renderAppsButtonContent(content) {
|
|
1262
|
-
return /* @__PURE__ */
|
|
1300
|
+
return /* @__PURE__ */ React35.createElement("div", {
|
|
1263
1301
|
className: "fastboard-toolbar-panel apps"
|
|
1264
|
-
}, /* @__PURE__ */
|
|
1302
|
+
}, /* @__PURE__ */ React35.createElement("div", {
|
|
1265
1303
|
className: "fastboard-toolbar-apps"
|
|
1266
|
-
}, content || /* @__PURE__ */
|
|
1304
|
+
}, content || /* @__PURE__ */ React35.createElement(DefaultApps, null)));
|
|
1267
1305
|
}
|
|
1268
1306
|
function DefaultApps() {
|
|
1269
1307
|
const app = useFastboardApp();
|
|
1270
|
-
|
|
1308
|
+
const { appsStatus } = useContext5(ToolbarContext);
|
|
1309
|
+
return /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement(AppIcon, {
|
|
1271
1310
|
title: "Code Editor",
|
|
1272
1311
|
src: vscode_default,
|
|
1273
1312
|
alt: "[code editor]",
|
|
1313
|
+
appStatus: appsStatus["Monaco"],
|
|
1274
1314
|
onClick: app == null ? void 0 : app.insertCodeEditor.bind(app)
|
|
1275
|
-
}), /* @__PURE__ */
|
|
1315
|
+
}), /* @__PURE__ */ React35.createElement(AppIcon, {
|
|
1276
1316
|
title: "GeoGebra",
|
|
1277
1317
|
src: geogebra_default,
|
|
1278
1318
|
alt: "[geogebra]",
|
|
1319
|
+
appStatus: appsStatus["GeoGebra"],
|
|
1279
1320
|
onClick: app == null ? void 0 : app.insertGeoGebra.bind(app)
|
|
1280
|
-
}), /* @__PURE__ */
|
|
1321
|
+
}), /* @__PURE__ */ React35.createElement(AppIcon, {
|
|
1281
1322
|
title: "Countdown",
|
|
1282
1323
|
src: countdown_default,
|
|
1283
1324
|
alt: "[countdown]",
|
|
1325
|
+
appStatus: appsStatus["Countdown"],
|
|
1284
1326
|
onClick: app == null ? void 0 : app.insertCountdown.bind(app)
|
|
1285
1327
|
}));
|
|
1286
1328
|
}
|
|
1287
|
-
function AppIcon({ title, src, alt, onClick }) {
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1329
|
+
function AppIcon({ title, src, alt, appStatus, onClick }) {
|
|
1330
|
+
const { theme } = useContext5(ToolbarContext);
|
|
1331
|
+
const { status = "idle", reason } = appStatus || {};
|
|
1332
|
+
const loading = status === "loading";
|
|
1333
|
+
const failed = status === "failed";
|
|
1334
|
+
const unifiedTitle = loading ? "loading" : failed ? reason : title;
|
|
1335
|
+
return /* @__PURE__ */ React35.createElement("div", {
|
|
1336
|
+
className: "fastboard-toolbar-app-icon-wrapper"
|
|
1337
|
+
}, /* @__PURE__ */ React35.createElement("span", {
|
|
1338
|
+
className: clsx5("fastboard-toolbar-app-icon", {
|
|
1339
|
+
"fastboard-toolbar-app-is-loading": loading,
|
|
1340
|
+
"fastboard-toolbar-app-is-failed": failed
|
|
1341
|
+
})
|
|
1342
|
+
}, /* @__PURE__ */ React35.createElement(Button, {
|
|
1343
|
+
disabled: failed || loading,
|
|
1291
1344
|
placement: "top",
|
|
1292
|
-
content:
|
|
1345
|
+
content: unifiedTitle,
|
|
1293
1346
|
onClick
|
|
1294
|
-
}, /* @__PURE__ */
|
|
1347
|
+
}, /* @__PURE__ */ React35.createElement("img", {
|
|
1295
1348
|
src,
|
|
1296
1349
|
alt,
|
|
1297
|
-
title
|
|
1298
|
-
})), /* @__PURE__ */
|
|
1350
|
+
title: unifiedTitle
|
|
1351
|
+
})), /* @__PURE__ */ React35.createElement("span", {
|
|
1299
1352
|
className: "fastboard-toolbar-app-icon-text"
|
|
1300
|
-
}, title))
|
|
1353
|
+
}, title)), loading && /* @__PURE__ */ React35.createElement("span", {
|
|
1354
|
+
className: "fastboard-toolbar-app-icon-mask"
|
|
1355
|
+
}, /* @__PURE__ */ React35.createElement(Loading, {
|
|
1356
|
+
theme
|
|
1357
|
+
})));
|
|
1301
1358
|
}
|
|
1302
1359
|
|
|
1303
1360
|
// src/components/Toolbar/components/PencilButton.tsx
|
|
1304
1361
|
import Tippy6 from "@tippyjs/react";
|
|
1305
|
-
import
|
|
1362
|
+
import React39, { useCallback as useCallback7, useContext as useContext9 } from "react";
|
|
1306
1363
|
import { ApplianceNames as ApplianceNames3 } from "white-web-sdk";
|
|
1307
1364
|
|
|
1308
1365
|
// src/components/Toolbar/components/ColorBox.tsx
|
|
1309
|
-
import
|
|
1310
|
-
import
|
|
1366
|
+
import clsx6 from "clsx";
|
|
1367
|
+
import React36, { useContext as useContext6 } from "react";
|
|
1311
1368
|
var colors = {
|
|
1312
1369
|
"#E02020": [224, 32, 32],
|
|
1313
1370
|
"#F7B500": [247, 181, 0],
|
|
@@ -1323,18 +1380,18 @@ function ColorBox() {
|
|
|
1323
1380
|
const { theme, memberState, setStrokeColor, writable } = useContext6(ToolbarContext);
|
|
1324
1381
|
const strokeColor = memberState == null ? void 0 : memberState.strokeColor;
|
|
1325
1382
|
const disabled = !writable;
|
|
1326
|
-
return /* @__PURE__ */
|
|
1327
|
-
className:
|
|
1328
|
-
}, colorKeys.map((key) => /* @__PURE__ */
|
|
1383
|
+
return /* @__PURE__ */ React36.createElement("div", {
|
|
1384
|
+
className: clsx6("fastboard-toolbar-color-box", theme)
|
|
1385
|
+
}, colorKeys.map((key) => /* @__PURE__ */ React36.createElement("div", {
|
|
1329
1386
|
key,
|
|
1330
|
-
className:
|
|
1387
|
+
className: clsx6("fastboard-toolbar-color-item", theme),
|
|
1331
1388
|
onClick: () => setStrokeColor(colors[key])
|
|
1332
|
-
}, /* @__PURE__ */
|
|
1333
|
-
className:
|
|
1389
|
+
}, /* @__PURE__ */ React36.createElement("div", {
|
|
1390
|
+
className: clsx6("fastboard-toolbar-color-border", theme, {
|
|
1334
1391
|
active: strokeColor && isEqualArray(strokeColor, colors[key])
|
|
1335
1392
|
})
|
|
1336
|
-
}, /* @__PURE__ */
|
|
1337
|
-
className:
|
|
1393
|
+
}, /* @__PURE__ */ React36.createElement("button", {
|
|
1394
|
+
className: clsx6("fastboard-toolbar-color-btn"),
|
|
1338
1395
|
style: { background: key },
|
|
1339
1396
|
disabled,
|
|
1340
1397
|
onClick: (ev) => {
|
|
@@ -1345,26 +1402,26 @@ function ColorBox() {
|
|
|
1345
1402
|
}
|
|
1346
1403
|
|
|
1347
1404
|
// src/components/Toolbar/components/CutLine.tsx
|
|
1348
|
-
import
|
|
1349
|
-
import
|
|
1405
|
+
import clsx7 from "clsx";
|
|
1406
|
+
import React37, { useContext as useContext7 } from "react";
|
|
1350
1407
|
function CutLine() {
|
|
1351
1408
|
const { theme } = useContext7(ToolbarContext);
|
|
1352
|
-
return /* @__PURE__ */
|
|
1353
|
-
className:
|
|
1409
|
+
return /* @__PURE__ */ React37.createElement("span", {
|
|
1410
|
+
className: clsx7(`${name4}-cut-line`, theme)
|
|
1354
1411
|
});
|
|
1355
1412
|
}
|
|
1356
1413
|
|
|
1357
1414
|
// src/components/Toolbar/components/Slider.tsx
|
|
1358
|
-
import
|
|
1415
|
+
import clsx8 from "clsx";
|
|
1359
1416
|
import RcSlider from "rc-slider";
|
|
1360
|
-
import
|
|
1417
|
+
import React38, { useContext as useContext8 } from "react";
|
|
1361
1418
|
function Slider() {
|
|
1362
1419
|
const { theme, writable, memberState, setStrokeWidth } = useContext8(ToolbarContext);
|
|
1363
1420
|
const { activeColor } = themes[theme];
|
|
1364
1421
|
const strokeWidth = (memberState == null ? void 0 : memberState.strokeWidth) || 0;
|
|
1365
|
-
return /* @__PURE__ */
|
|
1422
|
+
return /* @__PURE__ */ React38.createElement(RcSlider, {
|
|
1366
1423
|
disabled: !writable,
|
|
1367
|
-
className:
|
|
1424
|
+
className: clsx8("fastboard-toolbar-slider", theme),
|
|
1368
1425
|
trackStyle: { background: activeColor },
|
|
1369
1426
|
handleStyle: { border: `1px solid ${activeColor}` },
|
|
1370
1427
|
value: strokeWidth,
|
|
@@ -1386,9 +1443,9 @@ function PencilButton() {
|
|
|
1386
1443
|
const active = appliance === ApplianceNames3.pencil;
|
|
1387
1444
|
const disabled = !writable;
|
|
1388
1445
|
const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToPencil;
|
|
1389
|
-
return /* @__PURE__ */
|
|
1446
|
+
return /* @__PURE__ */ React39.createElement("span", {
|
|
1390
1447
|
className: "fastboard-toolbar-btn-interactive"
|
|
1391
|
-
}, /* @__PURE__ */
|
|
1448
|
+
}, /* @__PURE__ */ React39.createElement(Tippy6, {
|
|
1392
1449
|
className: "fastboard-tip",
|
|
1393
1450
|
content: renderPencilButtonContent(),
|
|
1394
1451
|
theme,
|
|
@@ -1397,43 +1454,50 @@ function PencilButton() {
|
|
|
1397
1454
|
offset: RightOffset,
|
|
1398
1455
|
arrow: false,
|
|
1399
1456
|
interactive: true
|
|
1400
|
-
}, /* @__PURE__ */
|
|
1457
|
+
}, /* @__PURE__ */ React39.createElement(Button, {
|
|
1401
1458
|
content: renderToolTip(t("pencil"), shortcut),
|
|
1402
1459
|
active,
|
|
1403
1460
|
onClick: changeAppliance
|
|
1404
|
-
}, /* @__PURE__ */
|
|
1405
|
-
fallback: /* @__PURE__ */
|
|
1461
|
+
}, /* @__PURE__ */ React39.createElement(Icon, {
|
|
1462
|
+
fallback: /* @__PURE__ */ React39.createElement(Icons.Pencil, {
|
|
1406
1463
|
theme,
|
|
1407
1464
|
active
|
|
1408
1465
|
}),
|
|
1409
1466
|
src: disabled ? icons == null ? void 0 : icons.pencilIconDisable : icons == null ? void 0 : icons.pencilIcon,
|
|
1410
1467
|
alt: "[pencil]"
|
|
1411
|
-
}), /* @__PURE__ */
|
|
1468
|
+
}), /* @__PURE__ */ React39.createElement("span", {
|
|
1412
1469
|
className: "fastboard-toolbar-triangle"
|
|
1413
1470
|
}))));
|
|
1414
1471
|
}
|
|
1415
1472
|
function renderPencilButtonContent() {
|
|
1416
|
-
return /* @__PURE__ */
|
|
1473
|
+
return /* @__PURE__ */ React39.createElement("div", {
|
|
1417
1474
|
className: "fastboard-toolbar-panel pencil"
|
|
1418
|
-
}, /* @__PURE__ */
|
|
1475
|
+
}, /* @__PURE__ */ React39.createElement(Slider, null), /* @__PURE__ */ React39.createElement(CutLine, null), /* @__PURE__ */ React39.createElement(ColorBox, null));
|
|
1419
1476
|
}
|
|
1420
1477
|
|
|
1421
1478
|
// src/components/Toolbar/components/ShapesButton.tsx
|
|
1422
1479
|
import Tippy7 from "@tippyjs/react";
|
|
1423
|
-
import
|
|
1480
|
+
import React40, { useCallback as useCallback8, useContext as useContext10 } from "react";
|
|
1424
1481
|
import { ApplianceNames as ApplianceNames4 } from "white-web-sdk";
|
|
1425
1482
|
var ShapeTypes = /* @__PURE__ */ new Set([...ApplianceShapes, ...Shapes]);
|
|
1426
1483
|
function ShapesButton() {
|
|
1427
1484
|
const { t } = useTranslation();
|
|
1428
|
-
const { theme, memberState, lastShape } = useContext10(ToolbarContext);
|
|
1485
|
+
const { writable, theme, memberState, lastShape, setAppliance } = useContext10(ToolbarContext);
|
|
1429
1486
|
const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1430
1487
|
const shape = memberState == null ? void 0 : memberState.shapeType;
|
|
1431
1488
|
const key = appliance === ApplianceNames4.shape ? shape : appliance;
|
|
1432
1489
|
const active = ShapeTypes.has(key);
|
|
1433
1490
|
const CurrentIcon = ShapesMap[lastShape];
|
|
1434
|
-
|
|
1491
|
+
const onClick = useCallback8(() => {
|
|
1492
|
+
if (ApplianceShapes.includes(lastShape)) {
|
|
1493
|
+
setAppliance(lastShape);
|
|
1494
|
+
} else if (Shapes.includes(lastShape)) {
|
|
1495
|
+
setAppliance(ApplianceNames4.shape, lastShape);
|
|
1496
|
+
}
|
|
1497
|
+
}, [lastShape, setAppliance]);
|
|
1498
|
+
return /* @__PURE__ */ React40.createElement("span", {
|
|
1435
1499
|
className: "fastboard-toolbar-btn-interactive"
|
|
1436
|
-
}, /* @__PURE__ */
|
|
1500
|
+
}, /* @__PURE__ */ React40.createElement(Tippy7, {
|
|
1437
1501
|
className: "fastboard-tip",
|
|
1438
1502
|
content: renderShapesButtonContent(),
|
|
1439
1503
|
theme,
|
|
@@ -1442,31 +1506,33 @@ function ShapesButton() {
|
|
|
1442
1506
|
offset: RightOffset,
|
|
1443
1507
|
arrow: false,
|
|
1444
1508
|
interactive: true
|
|
1445
|
-
}, /* @__PURE__ */
|
|
1509
|
+
}, /* @__PURE__ */ React40.createElement(Button, {
|
|
1446
1510
|
content: t("shape"),
|
|
1447
|
-
active
|
|
1448
|
-
|
|
1511
|
+
active,
|
|
1512
|
+
disabled: !writable,
|
|
1513
|
+
onClick
|
|
1514
|
+
}, /* @__PURE__ */ React40.createElement(CurrentIcon, {
|
|
1449
1515
|
theme,
|
|
1450
1516
|
active
|
|
1451
|
-
}), /* @__PURE__ */
|
|
1517
|
+
}), /* @__PURE__ */ React40.createElement("span", {
|
|
1452
1518
|
className: "fastboard-toolbar-triangle"
|
|
1453
1519
|
}))));
|
|
1454
1520
|
}
|
|
1455
1521
|
function renderShapesButtonContent() {
|
|
1456
|
-
return /* @__PURE__ */
|
|
1522
|
+
return /* @__PURE__ */ React40.createElement("div", {
|
|
1457
1523
|
className: "fastboard-toolbar-panel shapes"
|
|
1458
|
-
}, /* @__PURE__ */
|
|
1524
|
+
}, /* @__PURE__ */ React40.createElement(ShapesBox, null), /* @__PURE__ */ React40.createElement(CutLine, null), /* @__PURE__ */ React40.createElement(Slider, null), /* @__PURE__ */ React40.createElement(CutLine, null), /* @__PURE__ */ React40.createElement(ColorBox, null));
|
|
1459
1525
|
}
|
|
1460
1526
|
function ShapesBox() {
|
|
1461
1527
|
const { t } = useTranslation();
|
|
1462
|
-
return /* @__PURE__ */
|
|
1528
|
+
return /* @__PURE__ */ React40.createElement("div", {
|
|
1463
1529
|
className: "fastboard-toolbar-shapes"
|
|
1464
|
-
}, ApplianceShapes.map((Appliance) => /* @__PURE__ */
|
|
1530
|
+
}, ApplianceShapes.map((Appliance) => /* @__PURE__ */ React40.createElement(ApplianceShapeButton, {
|
|
1465
1531
|
key: Appliance,
|
|
1466
1532
|
content: t(Appliance),
|
|
1467
1533
|
Appliance,
|
|
1468
1534
|
Icon: ShapesMap[Appliance]
|
|
1469
|
-
})), Shapes.map((shape) => /* @__PURE__ */
|
|
1535
|
+
})), Shapes.map((shape) => /* @__PURE__ */ React40.createElement(ShapeShapeButton, {
|
|
1470
1536
|
key: shape,
|
|
1471
1537
|
content: t(shape),
|
|
1472
1538
|
shape,
|
|
@@ -1477,12 +1543,12 @@ function ApplianceShapeButton({ content, Appliance, Icon: Icon2 }) {
|
|
|
1477
1543
|
const { theme, writable, setAppliance, memberState } = useContext10(ToolbarContext);
|
|
1478
1544
|
const current = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1479
1545
|
const disabled = !writable;
|
|
1480
|
-
return /* @__PURE__ */
|
|
1546
|
+
return /* @__PURE__ */ React40.createElement(Button, {
|
|
1481
1547
|
content,
|
|
1482
1548
|
disabled,
|
|
1483
1549
|
placement: "top",
|
|
1484
1550
|
onClick: () => setAppliance(Appliance)
|
|
1485
|
-
}, /* @__PURE__ */
|
|
1551
|
+
}, /* @__PURE__ */ React40.createElement(Icon2, {
|
|
1486
1552
|
theme,
|
|
1487
1553
|
active: current === Appliance
|
|
1488
1554
|
}));
|
|
@@ -1492,12 +1558,12 @@ function ShapeShapeButton({ content, shape, Icon: Icon2 }) {
|
|
|
1492
1558
|
const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1493
1559
|
const current = appliance === ApplianceNames4.shape && (memberState == null ? void 0 : memberState.shapeType);
|
|
1494
1560
|
const disabled = !writable;
|
|
1495
|
-
return /* @__PURE__ */
|
|
1561
|
+
return /* @__PURE__ */ React40.createElement(Button, {
|
|
1496
1562
|
content,
|
|
1497
1563
|
disabled,
|
|
1498
1564
|
placement: "top",
|
|
1499
1565
|
onClick: () => setAppliance(ApplianceNames4.shape, shape)
|
|
1500
|
-
}, /* @__PURE__ */
|
|
1566
|
+
}, /* @__PURE__ */ React40.createElement(Icon2, {
|
|
1501
1567
|
theme,
|
|
1502
1568
|
active: current === shape
|
|
1503
1569
|
}));
|
|
@@ -1505,22 +1571,22 @@ function ShapeShapeButton({ content, shape, Icon: Icon2 }) {
|
|
|
1505
1571
|
|
|
1506
1572
|
// src/components/Toolbar/components/TextButton.tsx
|
|
1507
1573
|
import Tippy8 from "@tippyjs/react";
|
|
1508
|
-
import
|
|
1574
|
+
import React41, { useCallback as useCallback9, useContext as useContext11 } from "react";
|
|
1509
1575
|
import { ApplianceNames as ApplianceNames5 } from "white-web-sdk";
|
|
1510
1576
|
function TextButton() {
|
|
1511
1577
|
const app = useFastboardApp();
|
|
1512
1578
|
const { t } = useTranslation();
|
|
1513
1579
|
const { theme, icons, writable, setAppliance, memberState } = useContext11(ToolbarContext);
|
|
1514
|
-
const changeAppliance =
|
|
1580
|
+
const changeAppliance = useCallback9(() => {
|
|
1515
1581
|
setAppliance(ApplianceNames5.text);
|
|
1516
1582
|
}, [setAppliance]);
|
|
1517
1583
|
const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1518
1584
|
const active = appliance === ApplianceNames5.text;
|
|
1519
1585
|
const disabled = !writable;
|
|
1520
1586
|
const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToText;
|
|
1521
|
-
return /* @__PURE__ */
|
|
1587
|
+
return /* @__PURE__ */ React41.createElement("span", {
|
|
1522
1588
|
className: "fastboard-toolbar-btn-interactive"
|
|
1523
|
-
}, /* @__PURE__ */
|
|
1589
|
+
}, /* @__PURE__ */ React41.createElement(Tippy8, {
|
|
1524
1590
|
className: "fastboard-tip",
|
|
1525
1591
|
content: renderTextButtonContent(),
|
|
1526
1592
|
theme,
|
|
@@ -1529,53 +1595,53 @@ function TextButton() {
|
|
|
1529
1595
|
offset: RightOffset,
|
|
1530
1596
|
arrow: false,
|
|
1531
1597
|
interactive: true
|
|
1532
|
-
}, /* @__PURE__ */
|
|
1598
|
+
}, /* @__PURE__ */ React41.createElement(Button, {
|
|
1533
1599
|
content: renderToolTip(t("text"), shortcut),
|
|
1534
1600
|
active,
|
|
1535
1601
|
onClick: changeAppliance
|
|
1536
|
-
}, /* @__PURE__ */
|
|
1537
|
-
fallback: /* @__PURE__ */
|
|
1602
|
+
}, /* @__PURE__ */ React41.createElement(Icon, {
|
|
1603
|
+
fallback: /* @__PURE__ */ React41.createElement(Icons.Text, {
|
|
1538
1604
|
theme,
|
|
1539
1605
|
active
|
|
1540
1606
|
}),
|
|
1541
1607
|
src: disabled ? icons == null ? void 0 : icons.textIconDisable : icons == null ? void 0 : icons.textIcon,
|
|
1542
1608
|
alt: "[text]"
|
|
1543
|
-
}), /* @__PURE__ */
|
|
1609
|
+
}), /* @__PURE__ */ React41.createElement("span", {
|
|
1544
1610
|
className: "fastboard-toolbar-triangle"
|
|
1545
1611
|
}))));
|
|
1546
1612
|
}
|
|
1547
1613
|
function renderTextButtonContent() {
|
|
1548
|
-
return /* @__PURE__ */
|
|
1614
|
+
return /* @__PURE__ */ React41.createElement("div", {
|
|
1549
1615
|
className: "fastboard-toolbar-panel text"
|
|
1550
|
-
}, /* @__PURE__ */
|
|
1616
|
+
}, /* @__PURE__ */ React41.createElement(ColorBox, null));
|
|
1551
1617
|
}
|
|
1552
1618
|
|
|
1553
1619
|
// src/components/Toolbar/components/UpDownButtons.tsx
|
|
1554
|
-
import
|
|
1620
|
+
import React42, { useCallback as useCallback10, useContext as useContext12 } from "react";
|
|
1555
1621
|
function UpButton({ disabled, scrollTo }) {
|
|
1556
1622
|
const { theme, icons } = useContext12(ToolbarContext);
|
|
1557
|
-
const scrollUp =
|
|
1558
|
-
return /* @__PURE__ */
|
|
1623
|
+
const scrollUp = useCallback10(() => scrollTo(-ItemHeight), [scrollTo]);
|
|
1624
|
+
return /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(Button, {
|
|
1559
1625
|
content: "Up",
|
|
1560
1626
|
disabled,
|
|
1561
1627
|
onClick: scrollUp
|
|
1562
|
-
}, /* @__PURE__ */
|
|
1563
|
-
fallback: /* @__PURE__ */
|
|
1628
|
+
}, /* @__PURE__ */ React42.createElement(Icon, {
|
|
1629
|
+
fallback: /* @__PURE__ */ React42.createElement(Icons.Up, {
|
|
1564
1630
|
theme
|
|
1565
1631
|
}),
|
|
1566
1632
|
src: disabled ? icons == null ? void 0 : icons.upIconDisable : icons == null ? void 0 : icons.upIcon,
|
|
1567
1633
|
alt: "[up]"
|
|
1568
|
-
})), /* @__PURE__ */
|
|
1634
|
+
})), /* @__PURE__ */ React42.createElement(CutLine, null));
|
|
1569
1635
|
}
|
|
1570
1636
|
function DownButton({ disabled, scrollTo }) {
|
|
1571
1637
|
const { theme, icons } = useContext12(ToolbarContext);
|
|
1572
|
-
const scrollDown =
|
|
1573
|
-
return /* @__PURE__ */
|
|
1638
|
+
const scrollDown = useCallback10(() => scrollTo(ItemHeight), [scrollTo]);
|
|
1639
|
+
return /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(CutLine, null), /* @__PURE__ */ React42.createElement(Button, {
|
|
1574
1640
|
content: "Down",
|
|
1575
1641
|
disabled,
|
|
1576
1642
|
onClick: scrollDown
|
|
1577
|
-
}, /* @__PURE__ */
|
|
1578
|
-
fallback: /* @__PURE__ */
|
|
1643
|
+
}, /* @__PURE__ */ React42.createElement(Icon, {
|
|
1644
|
+
fallback: /* @__PURE__ */ React42.createElement(Icons.Down, {
|
|
1579
1645
|
theme
|
|
1580
1646
|
}),
|
|
1581
1647
|
src: disabled ? icons == null ? void 0 : icons.downIconDisable : icons == null ? void 0 : icons.downIcon,
|
|
@@ -1598,7 +1664,7 @@ function Content({ onCollapse }) {
|
|
|
1598
1664
|
const scrollBuffer = Math.max(parentHeight - sectionHeight - 1, 0);
|
|
1599
1665
|
const disableScrollUp = scrollTop === 0;
|
|
1600
1666
|
const disableScrollDown = scrollTop === scrollBuffer;
|
|
1601
|
-
const scrollTo =
|
|
1667
|
+
const scrollTo = useCallback11((height) => {
|
|
1602
1668
|
setScrollTop(clamp(scrollTop + height, 0, scrollBuffer));
|
|
1603
1669
|
}, [scrollBuffer, scrollTop]);
|
|
1604
1670
|
useEffect3(() => {
|
|
@@ -1619,26 +1685,26 @@ function Content({ onCollapse }) {
|
|
|
1619
1685
|
return () => resizeObserver.disconnect();
|
|
1620
1686
|
}
|
|
1621
1687
|
}, []);
|
|
1622
|
-
return /* @__PURE__ */
|
|
1688
|
+
return /* @__PURE__ */ React43.createElement(React43.Fragment, null, needScroll && /* @__PURE__ */ React43.createElement(UpButton, {
|
|
1623
1689
|
scrollTo,
|
|
1624
1690
|
disabled: disableScrollUp
|
|
1625
|
-
}), /* @__PURE__ */
|
|
1691
|
+
}), /* @__PURE__ */ React43.createElement("div", {
|
|
1626
1692
|
ref,
|
|
1627
|
-
className:
|
|
1693
|
+
className: clsx9(`${name4}-section`),
|
|
1628
1694
|
style: {
|
|
1629
1695
|
height: `${sectionHeight}px`,
|
|
1630
1696
|
overflow: needScroll ? "hidden" : "visible"
|
|
1631
1697
|
}
|
|
1632
|
-
}, /* @__PURE__ */
|
|
1698
|
+
}, /* @__PURE__ */ React43.createElement(ClickerButton, null), /* @__PURE__ */ React43.createElement(SelectorButton, null), /* @__PURE__ */ React43.createElement(PencilButton, null), /* @__PURE__ */ React43.createElement(TextButton, null), /* @__PURE__ */ React43.createElement(ShapesButton, null), /* @__PURE__ */ React43.createElement(EraserButton, null), /* @__PURE__ */ React43.createElement(CleanButton, null), /* @__PURE__ */ React43.createElement(AppsButton, null)), needScroll && /* @__PURE__ */ React43.createElement(DownButton, {
|
|
1633
1699
|
scrollTo,
|
|
1634
1700
|
disabled: disableScrollDown
|
|
1635
|
-
}), /* @__PURE__ */
|
|
1636
|
-
className:
|
|
1701
|
+
}), /* @__PURE__ */ React43.createElement("div", {
|
|
1702
|
+
className: clsx9("fastboard-toolbar-mask", theme),
|
|
1637
1703
|
onClick: onCollapse
|
|
1638
|
-
}, /* @__PURE__ */
|
|
1639
|
-
fallback: /* @__PURE__ */
|
|
1704
|
+
}, /* @__PURE__ */ React43.createElement(Icon, {
|
|
1705
|
+
fallback: /* @__PURE__ */ React43.createElement("img", {
|
|
1640
1706
|
draggable: false,
|
|
1641
|
-
className:
|
|
1707
|
+
className: clsx9(`${name4}-mask-btn`, theme),
|
|
1642
1708
|
src: collapsed_default
|
|
1643
1709
|
}),
|
|
1644
1710
|
src: disabled ? icons == null ? void 0 : icons.expandIconDisable : icons == null ? void 0 : icons.expandIcon
|
|
@@ -1656,45 +1722,45 @@ function Toolbar({ theme, icons }) {
|
|
|
1656
1722
|
const [expanded, setExpanded] = useState5(true);
|
|
1657
1723
|
const [pointerEvents, setPointerEvents] = useState5("auto");
|
|
1658
1724
|
const disabled = !hook.writable;
|
|
1659
|
-
return /* @__PURE__ */
|
|
1725
|
+
return /* @__PURE__ */ React44.createElement(ToolbarContext.Provider, {
|
|
1660
1726
|
value: __spreadValues({ theme, icons }, hook)
|
|
1661
|
-
}, /* @__PURE__ */
|
|
1727
|
+
}, /* @__PURE__ */ React44.createElement(AnimatePresence, null, expanded ? /* @__PURE__ */ React44.createElement(motion.div, {
|
|
1662
1728
|
key: "toolbar",
|
|
1663
|
-
className:
|
|
1729
|
+
className: clsx10(name4, theme),
|
|
1664
1730
|
initial: { x: -100 },
|
|
1665
1731
|
animate: { x: 0, transition: { duration: 0.5 } },
|
|
1666
1732
|
exit: { x: -100, transition: { duration: 0.5 } },
|
|
1667
1733
|
onAnimationStart: () => setPointerEvents("none"),
|
|
1668
1734
|
onAnimationComplete: () => setPointerEvents("auto"),
|
|
1669
1735
|
style: { pointerEvents }
|
|
1670
|
-
}, /* @__PURE__ */
|
|
1736
|
+
}, /* @__PURE__ */ React44.createElement(Content, {
|
|
1671
1737
|
onCollapse: () => setExpanded(false)
|
|
1672
|
-
})) : /* @__PURE__ */
|
|
1673
|
-
className:
|
|
1738
|
+
})) : /* @__PURE__ */ React44.createElement(motion.div, {
|
|
1739
|
+
className: clsx10(`${name4}-expand-btn`, theme),
|
|
1674
1740
|
key: "expand",
|
|
1675
1741
|
onClick: () => setExpanded(true),
|
|
1676
1742
|
initial: { x: -100 },
|
|
1677
1743
|
animate: { x: 0, transition: { duration: 0.5 } }
|
|
1678
|
-
}, /* @__PURE__ */
|
|
1679
|
-
fallback: /* @__PURE__ */
|
|
1744
|
+
}, /* @__PURE__ */ React44.createElement(Icon, {
|
|
1745
|
+
fallback: /* @__PURE__ */ React44.createElement("img", {
|
|
1680
1746
|
draggable: false,
|
|
1681
1747
|
src: expanded_default,
|
|
1682
|
-
className:
|
|
1748
|
+
className: clsx10(`${name4}-mask-btn`, theme)
|
|
1683
1749
|
}),
|
|
1684
1750
|
src: disabled ? icons == null ? void 0 : icons.expandIconDisable : icons == null ? void 0 : icons.expandIcon
|
|
1685
1751
|
}))));
|
|
1686
1752
|
}
|
|
1687
1753
|
|
|
1688
1754
|
// src/components/PlayerControl/hooks.ts
|
|
1689
|
-
import { useCallback as
|
|
1755
|
+
import { useCallback as useCallback12, useEffect as useEffect4, useState as useState6 } from "react";
|
|
1690
1756
|
import { PlayerPhase } from "white-web-sdk";
|
|
1691
1757
|
var EMPTY_ARRAY = [];
|
|
1692
1758
|
function useForceUpdate2() {
|
|
1693
1759
|
const [, forceUpdate_] = useState6({});
|
|
1694
|
-
return
|
|
1760
|
+
return useCallback12(() => forceUpdate_({}), EMPTY_ARRAY);
|
|
1695
1761
|
}
|
|
1696
1762
|
function usePlayerControl(player) {
|
|
1697
|
-
const togglePlay =
|
|
1763
|
+
const togglePlay = useCallback12(() => {
|
|
1698
1764
|
if (player) {
|
|
1699
1765
|
switch (player.phase) {
|
|
1700
1766
|
case PlayerPhase.WaitingFirstFrame:
|
|
@@ -1710,14 +1776,14 @@ function usePlayerControl(player) {
|
|
|
1710
1776
|
}
|
|
1711
1777
|
}
|
|
1712
1778
|
}, [player]);
|
|
1713
|
-
const seekToProgressTime =
|
|
1779
|
+
const seekToProgressTime = useCallback12((time) => {
|
|
1714
1780
|
if (player) {
|
|
1715
1781
|
player.seekToProgressTime(time);
|
|
1716
1782
|
}
|
|
1717
1783
|
}, [player]);
|
|
1718
1784
|
const lastPlayer = useLastValue(player);
|
|
1719
1785
|
const forceUpdate = useForceUpdate2();
|
|
1720
|
-
const setSpeed =
|
|
1786
|
+
const setSpeed = useCallback12((speed2) => {
|
|
1721
1787
|
if (player) {
|
|
1722
1788
|
player.playbackSpeed = speed2;
|
|
1723
1789
|
forceUpdate();
|
|
@@ -1755,18 +1821,18 @@ function usePlayerControl(player) {
|
|
|
1755
1821
|
|
|
1756
1822
|
// src/components/PlayerControl/PlayerControl.tsx
|
|
1757
1823
|
import Tippy10 from "@tippyjs/react";
|
|
1758
|
-
import
|
|
1824
|
+
import clsx12 from "clsx";
|
|
1759
1825
|
import RcSlider2 from "rc-slider";
|
|
1760
|
-
import
|
|
1826
|
+
import React49, { useEffect as useEffect5, useState as useState7 } from "react";
|
|
1761
1827
|
import { PlayerPhase as PlayerPhase2 } from "white-web-sdk";
|
|
1762
1828
|
|
|
1763
1829
|
// src/components/PlayerControl/components/Button.tsx
|
|
1764
|
-
import
|
|
1765
|
-
import
|
|
1830
|
+
import clsx11 from "clsx";
|
|
1831
|
+
import React45, { forwardRef as forwardRef2 } from "react";
|
|
1766
1832
|
import Tippy9 from "@tippyjs/react";
|
|
1767
1833
|
var Button2 = forwardRef2((props, ref) => {
|
|
1768
1834
|
const { theme, content, disabled, active, onClick, interactive, placement = "top", children } = props;
|
|
1769
|
-
return /* @__PURE__ */
|
|
1835
|
+
return /* @__PURE__ */ React45.createElement(Tippy9, {
|
|
1770
1836
|
className: "fastboard-tip",
|
|
1771
1837
|
content,
|
|
1772
1838
|
interactive,
|
|
@@ -1776,9 +1842,9 @@ var Button2 = forwardRef2((props, ref) => {
|
|
|
1776
1842
|
offset: TopOffset,
|
|
1777
1843
|
delay: [1e3, 400],
|
|
1778
1844
|
duration: 300
|
|
1779
|
-
}, /* @__PURE__ */
|
|
1845
|
+
}, /* @__PURE__ */ React45.createElement("button", {
|
|
1780
1846
|
ref,
|
|
1781
|
-
className:
|
|
1847
|
+
className: clsx11("fastboard-player-control-btn", theme, { active }),
|
|
1782
1848
|
onClick,
|
|
1783
1849
|
disabled
|
|
1784
1850
|
}, children));
|
|
@@ -1788,36 +1854,36 @@ var Button2 = forwardRef2((props, ref) => {
|
|
|
1788
1854
|
import { memo as memo2 } from "react";
|
|
1789
1855
|
|
|
1790
1856
|
// src/components/PlayerControl/icons/Loading.tsx
|
|
1791
|
-
import
|
|
1792
|
-
var
|
|
1857
|
+
import React46 from "react";
|
|
1858
|
+
var Loading2 = (props) => {
|
|
1793
1859
|
const stroke = getStroke(props);
|
|
1794
|
-
return /* @__PURE__ */
|
|
1860
|
+
return /* @__PURE__ */ React46.createElement("svg", {
|
|
1795
1861
|
viewBox: "0 0 24 24"
|
|
1796
|
-
}, /* @__PURE__ */
|
|
1862
|
+
}, /* @__PURE__ */ React46.createElement("path", {
|
|
1797
1863
|
d: "M12 4V2A10 10 0 0 0 2 12h2a8 8 0 0 1 8-8z",
|
|
1798
1864
|
fill: stroke
|
|
1799
1865
|
}));
|
|
1800
1866
|
};
|
|
1801
1867
|
|
|
1802
1868
|
// src/components/PlayerControl/icons/Pause.tsx
|
|
1803
|
-
import
|
|
1869
|
+
import React47 from "react";
|
|
1804
1870
|
var Pause = (props) => {
|
|
1805
1871
|
const stroke = getStroke(props);
|
|
1806
|
-
return /* @__PURE__ */
|
|
1872
|
+
return /* @__PURE__ */ React47.createElement("svg", {
|
|
1807
1873
|
viewBox: "0 0 24 24"
|
|
1808
|
-
}, /* @__PURE__ */
|
|
1874
|
+
}, /* @__PURE__ */ React47.createElement("path", {
|
|
1809
1875
|
d: "M14 19h4V5h-4M6 19h4V5H6v14z",
|
|
1810
1876
|
fill: stroke
|
|
1811
1877
|
}));
|
|
1812
1878
|
};
|
|
1813
1879
|
|
|
1814
1880
|
// src/components/PlayerControl/icons/Play.tsx
|
|
1815
|
-
import
|
|
1881
|
+
import React48 from "react";
|
|
1816
1882
|
var Play = (props) => {
|
|
1817
1883
|
const stroke = getStroke(props);
|
|
1818
|
-
return /* @__PURE__ */
|
|
1884
|
+
return /* @__PURE__ */ React48.createElement("svg", {
|
|
1819
1885
|
viewBox: "0 0 24 24"
|
|
1820
|
-
}, /* @__PURE__ */
|
|
1886
|
+
}, /* @__PURE__ */ React48.createElement("path", {
|
|
1821
1887
|
d: "M8 5.14v14l11-7l-11-7z",
|
|
1822
1888
|
fill: stroke
|
|
1823
1889
|
}));
|
|
@@ -1827,7 +1893,7 @@ var Play = (props) => {
|
|
|
1827
1893
|
var Icons2 = {
|
|
1828
1894
|
Play: memo2(Play),
|
|
1829
1895
|
Pause: memo2(Pause),
|
|
1830
|
-
Loading: memo2(
|
|
1896
|
+
Loading: memo2(Loading2)
|
|
1831
1897
|
};
|
|
1832
1898
|
|
|
1833
1899
|
// src/components/PlayerControl/PlayerControl.tsx
|
|
@@ -1837,7 +1903,7 @@ function PlayerControl(_a) {
|
|
|
1837
1903
|
theme = useTheme(theme);
|
|
1838
1904
|
const { t } = useTranslation();
|
|
1839
1905
|
const [currentTime, setCurrentTime] = useState7(0);
|
|
1840
|
-
const player = usePlayerControl(player_);
|
|
1906
|
+
const player = usePlayerControl(player_ == null ? void 0 : player_.player);
|
|
1841
1907
|
useEffect5(() => {
|
|
1842
1908
|
setCurrentTime(player.currentTime);
|
|
1843
1909
|
}, [player.currentTime]);
|
|
@@ -1849,25 +1915,25 @@ function PlayerControl(_a) {
|
|
|
1849
1915
|
const isLoading = player.phase === PlayerPhase2.WaitingFirstFrame || player.phase === PlayerPhase2.Buffering;
|
|
1850
1916
|
const isPlaying = player.phase === PlayerPhase2.Playing;
|
|
1851
1917
|
const { activeColor } = themes[theme];
|
|
1852
|
-
return /* @__PURE__ */
|
|
1853
|
-
className:
|
|
1854
|
-
}, /* @__PURE__ */
|
|
1855
|
-
className:
|
|
1918
|
+
return /* @__PURE__ */ React49.createElement("div", {
|
|
1919
|
+
className: clsx12(name5, theme, { "auto-hide": autoHide })
|
|
1920
|
+
}, /* @__PURE__ */ React49.createElement("button", {
|
|
1921
|
+
className: clsx12(`${name5}-btn`, isLoading ? "loading" : isPlaying ? "pause" : "play", theme),
|
|
1856
1922
|
disabled: isLoading,
|
|
1857
1923
|
onClick: player.togglePlay
|
|
1858
|
-
}, /* @__PURE__ */
|
|
1859
|
-
fallback: isLoading ? /* @__PURE__ */
|
|
1924
|
+
}, /* @__PURE__ */ React49.createElement(Icon, {
|
|
1925
|
+
fallback: isLoading ? /* @__PURE__ */ React49.createElement(Icons2.Loading, {
|
|
1860
1926
|
theme
|
|
1861
|
-
}) : isPlaying ? /* @__PURE__ */
|
|
1927
|
+
}) : isPlaying ? /* @__PURE__ */ React49.createElement(Icons2.Pause, {
|
|
1862
1928
|
theme
|
|
1863
|
-
}) : /* @__PURE__ */
|
|
1929
|
+
}) : /* @__PURE__ */ React49.createElement(Icons2.Play, {
|
|
1864
1930
|
theme
|
|
1865
1931
|
}),
|
|
1866
1932
|
src: isLoading ? icons.loadingIcon : isPlaying ? icons.pauseIcon : icons.playIcon,
|
|
1867
1933
|
alt: isLoading ? "[loading]" : isPlaying ? "[pause]" : "[play]"
|
|
1868
|
-
})), /* @__PURE__ */
|
|
1869
|
-
className:
|
|
1870
|
-
}, /* @__PURE__ */
|
|
1934
|
+
})), /* @__PURE__ */ React49.createElement("span", {
|
|
1935
|
+
className: clsx12(`${name5}-slider`, { loading: isLoading }, theme)
|
|
1936
|
+
}, /* @__PURE__ */ React49.createElement(RcSlider2, {
|
|
1871
1937
|
disabled: isLoading,
|
|
1872
1938
|
trackStyle: { background: activeColor },
|
|
1873
1939
|
handleStyle: { border: `1px solid ${activeColor}` },
|
|
@@ -1876,15 +1942,15 @@ function PlayerControl(_a) {
|
|
|
1876
1942
|
min: 0,
|
|
1877
1943
|
max: player.totalTime,
|
|
1878
1944
|
step: 100
|
|
1879
|
-
})), /* @__PURE__ */
|
|
1880
|
-
className:
|
|
1881
|
-
}, renderTime(player.currentTime)), /* @__PURE__ */
|
|
1882
|
-
className:
|
|
1883
|
-
}, "/"), /* @__PURE__ */
|
|
1884
|
-
className:
|
|
1885
|
-
}, renderTime(player.totalTime)), /* @__PURE__ */
|
|
1945
|
+
})), /* @__PURE__ */ React49.createElement("span", {
|
|
1946
|
+
className: clsx12(`${name5}-current`, theme)
|
|
1947
|
+
}, renderTime(player.currentTime)), /* @__PURE__ */ React49.createElement("span", {
|
|
1948
|
+
className: clsx12(`${name5}-slash`, theme)
|
|
1949
|
+
}, "/"), /* @__PURE__ */ React49.createElement("span", {
|
|
1950
|
+
className: clsx12(`${name5}-total`, theme)
|
|
1951
|
+
}, renderTime(player.totalTime)), /* @__PURE__ */ React49.createElement("span", {
|
|
1886
1952
|
className: `${name5}-btn-interactive`
|
|
1887
|
-
}, /* @__PURE__ */
|
|
1953
|
+
}, /* @__PURE__ */ React49.createElement(Tippy10, {
|
|
1888
1954
|
className: "fastboard-tip",
|
|
1889
1955
|
content: renderSpeeds(player),
|
|
1890
1956
|
theme,
|
|
@@ -1893,12 +1959,12 @@ function PlayerControl(_a) {
|
|
|
1893
1959
|
offset: TopOffset,
|
|
1894
1960
|
arrow: false,
|
|
1895
1961
|
interactive: true
|
|
1896
|
-
}, /* @__PURE__ */
|
|
1962
|
+
}, /* @__PURE__ */ React49.createElement(Button2, {
|
|
1897
1963
|
content: t("speed"),
|
|
1898
1964
|
theme,
|
|
1899
1965
|
disabled: isLoading
|
|
1900
|
-
}, /* @__PURE__ */
|
|
1901
|
-
className:
|
|
1966
|
+
}, /* @__PURE__ */ React49.createElement("span", {
|
|
1967
|
+
className: clsx12(`${name5}-speed-text`, theme)
|
|
1902
1968
|
}, player.speed, "x")))));
|
|
1903
1969
|
}
|
|
1904
1970
|
function renderTime(ms) {
|
|
@@ -1909,10 +1975,10 @@ function renderTime(ms) {
|
|
|
1909
1975
|
}
|
|
1910
1976
|
var Speeds = [2, 1.5, 1.25, 1, 0.75, 0.5];
|
|
1911
1977
|
function renderSpeeds({ speed: current, setSpeed }) {
|
|
1912
|
-
return /* @__PURE__ */
|
|
1913
|
-
className:
|
|
1914
|
-
}, Speeds.map((speed) => /* @__PURE__ */
|
|
1915
|
-
className:
|
|
1978
|
+
return /* @__PURE__ */ React49.createElement("div", {
|
|
1979
|
+
className: clsx12(`${name5}-panel`, "speed")
|
|
1980
|
+
}, Speeds.map((speed) => /* @__PURE__ */ React49.createElement("button", {
|
|
1981
|
+
className: clsx12(`${name5}-btn`, "speed", {
|
|
1916
1982
|
active: speed === current
|
|
1917
1983
|
}),
|
|
1918
1984
|
key: speed,
|
|
@@ -1921,85 +1987,2956 @@ function renderSpeeds({ speed: current, setSpeed }) {
|
|
|
1921
1987
|
}
|
|
1922
1988
|
|
|
1923
1989
|
// src/components/Fastboard.tsx
|
|
1924
|
-
import
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1990
|
+
import React50, { forwardRef as forwardRef3, useCallback as useCallback13, useEffect as useEffect6 } from "react";
|
|
1991
|
+
|
|
1992
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/enums.js
|
|
1993
|
+
var top = "top";
|
|
1994
|
+
var bottom = "bottom";
|
|
1995
|
+
var right = "right";
|
|
1996
|
+
var left = "left";
|
|
1997
|
+
var auto = "auto";
|
|
1998
|
+
var basePlacements = [top, bottom, right, left];
|
|
1999
|
+
var start = "start";
|
|
2000
|
+
var end = "end";
|
|
2001
|
+
var clippingParents = "clippingParents";
|
|
2002
|
+
var viewport = "viewport";
|
|
2003
|
+
var popper = "popper";
|
|
2004
|
+
var reference = "reference";
|
|
2005
|
+
var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {
|
|
2006
|
+
return acc.concat([placement + "-" + start, placement + "-" + end]);
|
|
2007
|
+
}, []);
|
|
2008
|
+
var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
|
|
2009
|
+
return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
|
|
2010
|
+
}, []);
|
|
2011
|
+
var beforeRead = "beforeRead";
|
|
2012
|
+
var read = "read";
|
|
2013
|
+
var afterRead = "afterRead";
|
|
2014
|
+
var beforeMain = "beforeMain";
|
|
2015
|
+
var main = "main";
|
|
2016
|
+
var afterMain = "afterMain";
|
|
2017
|
+
var beforeWrite = "beforeWrite";
|
|
2018
|
+
var write = "write";
|
|
2019
|
+
var afterWrite = "afterWrite";
|
|
2020
|
+
var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
|
|
2021
|
+
|
|
2022
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js
|
|
2023
|
+
function getNodeName(element) {
|
|
2024
|
+
return element ? (element.nodeName || "").toLowerCase() : null;
|
|
2025
|
+
}
|
|
2026
|
+
|
|
2027
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getWindow.js
|
|
2028
|
+
function getWindow(node) {
|
|
2029
|
+
if (node == null) {
|
|
2030
|
+
return window;
|
|
1932
2031
|
}
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
});
|
|
1939
|
-
function FastboardInternal(_a) {
|
|
1940
|
-
var _b = _a, {
|
|
1941
|
-
forwardedRef,
|
|
1942
|
-
language,
|
|
1943
|
-
layout = {},
|
|
1944
|
-
theme = "light",
|
|
1945
|
-
children
|
|
1946
|
-
} = _b, restProps = __objRest(_b, [
|
|
1947
|
-
"forwardedRef",
|
|
1948
|
-
"language",
|
|
1949
|
-
"layout",
|
|
1950
|
-
"theme",
|
|
1951
|
-
"children"
|
|
1952
|
-
]);
|
|
1953
|
-
const app = useFastboardApp();
|
|
1954
|
-
const forceUpdate = useForceUpdate();
|
|
1955
|
-
const i18n = useAsyncValue(() => createI18n({ language }));
|
|
1956
|
-
useEffect6(() => {
|
|
1957
|
-
if (i18n)
|
|
1958
|
-
i18n.changeLanguage(language);
|
|
1959
|
-
forceUpdate();
|
|
1960
|
-
}, [forceUpdate, i18n, language]);
|
|
1961
|
-
useEffect6(() => {
|
|
1962
|
-
app.manager.setPrefersColorScheme(theme);
|
|
1963
|
-
}, [app, theme]);
|
|
1964
|
-
const useWhiteboard = useCallback12((container) => {
|
|
1965
|
-
if (container && app)
|
|
1966
|
-
app.manager.bindContainer(container);
|
|
1967
|
-
}, [app]);
|
|
1968
|
-
const hideControls = useHideControls();
|
|
1969
|
-
const showControls = !hideControls;
|
|
1970
|
-
const {
|
|
1971
|
-
Toolbar: toolbar = showControls || hideControls === "toolbar-only",
|
|
1972
|
-
RedoUndo: redo_undo = showControls,
|
|
1973
|
-
ZoomControl: zoom_control = showControls,
|
|
1974
|
-
PageControl: page_control = showControls
|
|
1975
|
-
} = layout;
|
|
1976
|
-
return /* @__PURE__ */ React49.createElement(ThemeContext.Provider, {
|
|
1977
|
-
value: theme
|
|
1978
|
-
}, /* @__PURE__ */ React49.createElement(I18nContext.Provider, {
|
|
1979
|
-
value: i18n
|
|
1980
|
-
}, /* @__PURE__ */ React49.createElement("div", __spreadProps(__spreadValues({}, restProps), {
|
|
1981
|
-
className: "fastboard-root",
|
|
1982
|
-
ref: forwardedRef
|
|
1983
|
-
}), /* @__PURE__ */ React49.createElement("div", {
|
|
1984
|
-
className: "fastboard-view",
|
|
1985
|
-
ref: useWhiteboard
|
|
1986
|
-
}), children ? children : /* @__PURE__ */ React49.createElement(React49.Fragment, null, toolbar && /* @__PURE__ */ React49.createElement("div", {
|
|
1987
|
-
className: "fastboard-left"
|
|
1988
|
-
}, /* @__PURE__ */ React49.createElement(Toolbar, null)), (redo_undo || zoom_control) && /* @__PURE__ */ React49.createElement("div", {
|
|
1989
|
-
className: "fastboard-bottom-left"
|
|
1990
|
-
}, redo_undo && /* @__PURE__ */ React49.createElement(RedoUndo, null), zoom_control && /* @__PURE__ */ React49.createElement(ZoomControl, null)), page_control && /* @__PURE__ */ React49.createElement("div", {
|
|
1991
|
-
className: "fastboard-bottom-right"
|
|
1992
|
-
}, /* @__PURE__ */ React49.createElement(PageControl, null))))));
|
|
2032
|
+
if (node.toString() !== "[object Window]") {
|
|
2033
|
+
var ownerDocument = node.ownerDocument;
|
|
2034
|
+
return ownerDocument ? ownerDocument.defaultView || window : window;
|
|
2035
|
+
}
|
|
2036
|
+
return node;
|
|
1993
2037
|
}
|
|
1994
2038
|
|
|
1995
|
-
//
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
return
|
|
2039
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js
|
|
2040
|
+
function isElement(node) {
|
|
2041
|
+
var OwnElement = getWindow(node).Element;
|
|
2042
|
+
return node instanceof OwnElement || node instanceof Element;
|
|
2043
|
+
}
|
|
2044
|
+
function isHTMLElement(node) {
|
|
2045
|
+
var OwnElement = getWindow(node).HTMLElement;
|
|
2046
|
+
return node instanceof OwnElement || node instanceof HTMLElement;
|
|
2047
|
+
}
|
|
2048
|
+
function isShadowRoot(node) {
|
|
2049
|
+
if (typeof ShadowRoot === "undefined") {
|
|
2050
|
+
return false;
|
|
2051
|
+
}
|
|
2052
|
+
var OwnElement = getWindow(node).ShadowRoot;
|
|
2053
|
+
return node instanceof OwnElement || node instanceof ShadowRoot;
|
|
2054
|
+
}
|
|
2055
|
+
|
|
2056
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/applyStyles.js
|
|
2057
|
+
function applyStyles2(_ref) {
|
|
2058
|
+
var state = _ref.state;
|
|
2059
|
+
Object.keys(state.elements).forEach(function(name6) {
|
|
2060
|
+
var style = state.styles[name6] || {};
|
|
2061
|
+
var attributes = state.attributes[name6] || {};
|
|
2062
|
+
var element = state.elements[name6];
|
|
2063
|
+
if (!isHTMLElement(element) || !getNodeName(element)) {
|
|
2064
|
+
return;
|
|
2065
|
+
}
|
|
2066
|
+
Object.assign(element.style, style);
|
|
2067
|
+
Object.keys(attributes).forEach(function(name7) {
|
|
2068
|
+
var value = attributes[name7];
|
|
2069
|
+
if (value === false) {
|
|
2070
|
+
element.removeAttribute(name7);
|
|
2071
|
+
} else {
|
|
2072
|
+
element.setAttribute(name7, value === true ? "" : value);
|
|
2073
|
+
}
|
|
2074
|
+
});
|
|
2075
|
+
});
|
|
2076
|
+
}
|
|
2077
|
+
function effect(_ref2) {
|
|
2078
|
+
var state = _ref2.state;
|
|
2079
|
+
var initialStyles = {
|
|
2080
|
+
popper: {
|
|
2081
|
+
position: state.options.strategy,
|
|
2082
|
+
left: "0",
|
|
2083
|
+
top: "0",
|
|
2084
|
+
margin: "0"
|
|
2085
|
+
},
|
|
2086
|
+
arrow: {
|
|
2087
|
+
position: "absolute"
|
|
2088
|
+
},
|
|
2089
|
+
reference: {}
|
|
2090
|
+
};
|
|
2091
|
+
Object.assign(state.elements.popper.style, initialStyles.popper);
|
|
2092
|
+
state.styles = initialStyles;
|
|
2093
|
+
if (state.elements.arrow) {
|
|
2094
|
+
Object.assign(state.elements.arrow.style, initialStyles.arrow);
|
|
2095
|
+
}
|
|
2096
|
+
return function() {
|
|
2097
|
+
Object.keys(state.elements).forEach(function(name6) {
|
|
2098
|
+
var element = state.elements[name6];
|
|
2099
|
+
var attributes = state.attributes[name6] || {};
|
|
2100
|
+
var styleProperties = Object.keys(state.styles.hasOwnProperty(name6) ? state.styles[name6] : initialStyles[name6]);
|
|
2101
|
+
var style = styleProperties.reduce(function(style2, property) {
|
|
2102
|
+
style2[property] = "";
|
|
2103
|
+
return style2;
|
|
2104
|
+
}, {});
|
|
2105
|
+
if (!isHTMLElement(element) || !getNodeName(element)) {
|
|
2106
|
+
return;
|
|
2107
|
+
}
|
|
2108
|
+
Object.assign(element.style, style);
|
|
2109
|
+
Object.keys(attributes).forEach(function(attribute) {
|
|
2110
|
+
element.removeAttribute(attribute);
|
|
2111
|
+
});
|
|
2112
|
+
});
|
|
2113
|
+
};
|
|
2114
|
+
}
|
|
2115
|
+
var applyStyles_default = {
|
|
2116
|
+
name: "applyStyles",
|
|
2117
|
+
enabled: true,
|
|
2118
|
+
phase: "write",
|
|
2119
|
+
fn: applyStyles2,
|
|
2120
|
+
effect,
|
|
2121
|
+
requires: ["computeStyles"]
|
|
2122
|
+
};
|
|
2123
|
+
|
|
2124
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/getBasePlacement.js
|
|
2125
|
+
function getBasePlacement(placement) {
|
|
2126
|
+
return placement.split("-")[0];
|
|
2127
|
+
}
|
|
2128
|
+
|
|
2129
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/math.js
|
|
2130
|
+
var max = Math.max;
|
|
2131
|
+
var min = Math.min;
|
|
2132
|
+
var round = Math.round;
|
|
2133
|
+
|
|
2134
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js
|
|
2135
|
+
function getBoundingClientRect(element, includeScale) {
|
|
2136
|
+
if (includeScale === void 0) {
|
|
2137
|
+
includeScale = false;
|
|
2138
|
+
}
|
|
2139
|
+
var rect = element.getBoundingClientRect();
|
|
2140
|
+
var scaleX = 1;
|
|
2141
|
+
var scaleY = 1;
|
|
2142
|
+
if (isHTMLElement(element) && includeScale) {
|
|
2143
|
+
var offsetHeight = element.offsetHeight;
|
|
2144
|
+
var offsetWidth = element.offsetWidth;
|
|
2145
|
+
if (offsetWidth > 0) {
|
|
2146
|
+
scaleX = round(rect.width) / offsetWidth || 1;
|
|
2147
|
+
}
|
|
2148
|
+
if (offsetHeight > 0) {
|
|
2149
|
+
scaleY = round(rect.height) / offsetHeight || 1;
|
|
2150
|
+
}
|
|
2151
|
+
}
|
|
2152
|
+
return {
|
|
2153
|
+
width: rect.width / scaleX,
|
|
2154
|
+
height: rect.height / scaleY,
|
|
2155
|
+
top: rect.top / scaleY,
|
|
2156
|
+
right: rect.right / scaleX,
|
|
2157
|
+
bottom: rect.bottom / scaleY,
|
|
2158
|
+
left: rect.left / scaleX,
|
|
2159
|
+
x: rect.left / scaleX,
|
|
2160
|
+
y: rect.top / scaleY
|
|
2161
|
+
};
|
|
2162
|
+
}
|
|
2163
|
+
|
|
2164
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js
|
|
2165
|
+
function getLayoutRect(element) {
|
|
2166
|
+
var clientRect = getBoundingClientRect(element);
|
|
2167
|
+
var width = element.offsetWidth;
|
|
2168
|
+
var height = element.offsetHeight;
|
|
2169
|
+
if (Math.abs(clientRect.width - width) <= 1) {
|
|
2170
|
+
width = clientRect.width;
|
|
2171
|
+
}
|
|
2172
|
+
if (Math.abs(clientRect.height - height) <= 1) {
|
|
2173
|
+
height = clientRect.height;
|
|
2174
|
+
}
|
|
2175
|
+
return {
|
|
2176
|
+
x: element.offsetLeft,
|
|
2177
|
+
y: element.offsetTop,
|
|
2178
|
+
width,
|
|
2179
|
+
height
|
|
2180
|
+
};
|
|
2181
|
+
}
|
|
2182
|
+
|
|
2183
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/contains.js
|
|
2184
|
+
function contains(parent, child) {
|
|
2185
|
+
var rootNode = child.getRootNode && child.getRootNode();
|
|
2186
|
+
if (parent.contains(child)) {
|
|
2187
|
+
return true;
|
|
2188
|
+
} else if (rootNode && isShadowRoot(rootNode)) {
|
|
2189
|
+
var next = child;
|
|
2190
|
+
do {
|
|
2191
|
+
if (next && parent.isSameNode(next)) {
|
|
2192
|
+
return true;
|
|
2193
|
+
}
|
|
2194
|
+
next = next.parentNode || next.host;
|
|
2195
|
+
} while (next);
|
|
2196
|
+
}
|
|
2197
|
+
return false;
|
|
2198
|
+
}
|
|
2199
|
+
|
|
2200
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js
|
|
2201
|
+
function getComputedStyle2(element) {
|
|
2202
|
+
return getWindow(element).getComputedStyle(element);
|
|
2203
|
+
}
|
|
2204
|
+
|
|
2205
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js
|
|
2206
|
+
function isTableElement(element) {
|
|
2207
|
+
return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0;
|
|
2208
|
+
}
|
|
2209
|
+
|
|
2210
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js
|
|
2211
|
+
function getDocumentElement(element) {
|
|
2212
|
+
return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;
|
|
2213
|
+
}
|
|
2214
|
+
|
|
2215
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js
|
|
2216
|
+
function getParentNode(element) {
|
|
2217
|
+
if (getNodeName(element) === "html") {
|
|
2218
|
+
return element;
|
|
2219
|
+
}
|
|
2220
|
+
return element.assignedSlot || element.parentNode || (isShadowRoot(element) ? element.host : null) || getDocumentElement(element);
|
|
2221
|
+
}
|
|
2222
|
+
|
|
2223
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js
|
|
2224
|
+
function getTrueOffsetParent(element) {
|
|
2225
|
+
if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") {
|
|
2226
|
+
return null;
|
|
2227
|
+
}
|
|
2228
|
+
return element.offsetParent;
|
|
2229
|
+
}
|
|
2230
|
+
function getContainingBlock(element) {
|
|
2231
|
+
var isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1;
|
|
2232
|
+
var isIE = navigator.userAgent.indexOf("Trident") !== -1;
|
|
2233
|
+
if (isIE && isHTMLElement(element)) {
|
|
2234
|
+
var elementCss = getComputedStyle2(element);
|
|
2235
|
+
if (elementCss.position === "fixed") {
|
|
2236
|
+
return null;
|
|
2237
|
+
}
|
|
2238
|
+
}
|
|
2239
|
+
var currentNode = getParentNode(element);
|
|
2240
|
+
while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
|
|
2241
|
+
var css = getComputedStyle2(currentNode);
|
|
2242
|
+
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") {
|
|
2243
|
+
return currentNode;
|
|
2244
|
+
} else {
|
|
2245
|
+
currentNode = currentNode.parentNode;
|
|
2246
|
+
}
|
|
2247
|
+
}
|
|
2248
|
+
return null;
|
|
2249
|
+
}
|
|
2250
|
+
function getOffsetParent(element) {
|
|
2251
|
+
var window2 = getWindow(element);
|
|
2252
|
+
var offsetParent = getTrueOffsetParent(element);
|
|
2253
|
+
while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") {
|
|
2254
|
+
offsetParent = getTrueOffsetParent(offsetParent);
|
|
2255
|
+
}
|
|
2256
|
+
if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) {
|
|
2257
|
+
return window2;
|
|
2258
|
+
}
|
|
2259
|
+
return offsetParent || getContainingBlock(element) || window2;
|
|
2260
|
+
}
|
|
2261
|
+
|
|
2262
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js
|
|
2263
|
+
function getMainAxisFromPlacement(placement) {
|
|
2264
|
+
return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
|
|
2265
|
+
}
|
|
2266
|
+
|
|
2267
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/within.js
|
|
2268
|
+
function within(min2, value, max2) {
|
|
2269
|
+
return max(min2, min(value, max2));
|
|
2270
|
+
}
|
|
2271
|
+
function withinMaxClamp(min2, value, max2) {
|
|
2272
|
+
var v = within(min2, value, max2);
|
|
2273
|
+
return v > max2 ? max2 : v;
|
|
2274
|
+
}
|
|
2275
|
+
|
|
2276
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js
|
|
2277
|
+
function getFreshSideObject() {
|
|
2278
|
+
return {
|
|
2279
|
+
top: 0,
|
|
2280
|
+
right: 0,
|
|
2281
|
+
bottom: 0,
|
|
2282
|
+
left: 0
|
|
2283
|
+
};
|
|
2284
|
+
}
|
|
2285
|
+
|
|
2286
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js
|
|
2287
|
+
function mergePaddingObject(paddingObject) {
|
|
2288
|
+
return Object.assign({}, getFreshSideObject(), paddingObject);
|
|
2289
|
+
}
|
|
2290
|
+
|
|
2291
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/expandToHashMap.js
|
|
2292
|
+
function expandToHashMap(value, keys) {
|
|
2293
|
+
return keys.reduce(function(hashMap, key) {
|
|
2294
|
+
hashMap[key] = value;
|
|
2295
|
+
return hashMap;
|
|
2296
|
+
}, {});
|
|
2297
|
+
}
|
|
2298
|
+
|
|
2299
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/arrow.js
|
|
2300
|
+
var toPaddingObject = function toPaddingObject2(padding, state) {
|
|
2301
|
+
padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, {
|
|
2302
|
+
placement: state.placement
|
|
2303
|
+
})) : padding;
|
|
2304
|
+
return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
|
|
2305
|
+
};
|
|
2306
|
+
function arrow(_ref) {
|
|
2307
|
+
var _state$modifiersData$;
|
|
2308
|
+
var state = _ref.state, name6 = _ref.name, options = _ref.options;
|
|
2309
|
+
var arrowElement = state.elements.arrow;
|
|
2310
|
+
var popperOffsets2 = state.modifiersData.popperOffsets;
|
|
2311
|
+
var basePlacement = getBasePlacement(state.placement);
|
|
2312
|
+
var axis = getMainAxisFromPlacement(basePlacement);
|
|
2313
|
+
var isVertical = [left, right].indexOf(basePlacement) >= 0;
|
|
2314
|
+
var len = isVertical ? "height" : "width";
|
|
2315
|
+
if (!arrowElement || !popperOffsets2) {
|
|
2316
|
+
return;
|
|
2317
|
+
}
|
|
2318
|
+
var paddingObject = toPaddingObject(options.padding, state);
|
|
2319
|
+
var arrowRect = getLayoutRect(arrowElement);
|
|
2320
|
+
var minProp = axis === "y" ? top : left;
|
|
2321
|
+
var maxProp = axis === "y" ? bottom : right;
|
|
2322
|
+
var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];
|
|
2323
|
+
var startDiff = popperOffsets2[axis] - state.rects.reference[axis];
|
|
2324
|
+
var arrowOffsetParent = getOffsetParent(arrowElement);
|
|
2325
|
+
var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
|
|
2326
|
+
var centerToReference = endDiff / 2 - startDiff / 2;
|
|
2327
|
+
var min2 = paddingObject[minProp];
|
|
2328
|
+
var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];
|
|
2329
|
+
var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
|
|
2330
|
+
var offset2 = within(min2, center, max2);
|
|
2331
|
+
var axisProp = axis;
|
|
2332
|
+
state.modifiersData[name6] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);
|
|
2333
|
+
}
|
|
2334
|
+
function effect2(_ref2) {
|
|
2335
|
+
var state = _ref2.state, options = _ref2.options;
|
|
2336
|
+
var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
|
|
2337
|
+
if (arrowElement == null) {
|
|
2338
|
+
return;
|
|
2339
|
+
}
|
|
2340
|
+
if (typeof arrowElement === "string") {
|
|
2341
|
+
arrowElement = state.elements.popper.querySelector(arrowElement);
|
|
2342
|
+
if (!arrowElement) {
|
|
2343
|
+
return;
|
|
2344
|
+
}
|
|
2345
|
+
}
|
|
2346
|
+
if (true) {
|
|
2347
|
+
if (!isHTMLElement(arrowElement)) {
|
|
2348
|
+
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(" "));
|
|
2349
|
+
}
|
|
2350
|
+
}
|
|
2351
|
+
if (!contains(state.elements.popper, arrowElement)) {
|
|
2352
|
+
if (true) {
|
|
2353
|
+
console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" "));
|
|
2354
|
+
}
|
|
2355
|
+
return;
|
|
2356
|
+
}
|
|
2357
|
+
state.elements.arrow = arrowElement;
|
|
2358
|
+
}
|
|
2359
|
+
var arrow_default = {
|
|
2360
|
+
name: "arrow",
|
|
2361
|
+
enabled: true,
|
|
2362
|
+
phase: "main",
|
|
2363
|
+
fn: arrow,
|
|
2364
|
+
effect: effect2,
|
|
2365
|
+
requires: ["popperOffsets"],
|
|
2366
|
+
requiresIfExists: ["preventOverflow"]
|
|
2367
|
+
};
|
|
2368
|
+
|
|
2369
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/getVariation.js
|
|
2370
|
+
function getVariation(placement) {
|
|
2371
|
+
return placement.split("-")[1];
|
|
2372
|
+
}
|
|
2373
|
+
|
|
2374
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/computeStyles.js
|
|
2375
|
+
var unsetSides = {
|
|
2376
|
+
top: "auto",
|
|
2377
|
+
right: "auto",
|
|
2378
|
+
bottom: "auto",
|
|
2379
|
+
left: "auto"
|
|
2380
|
+
};
|
|
2381
|
+
function roundOffsetsByDPR(_ref) {
|
|
2382
|
+
var x = _ref.x, y = _ref.y;
|
|
2383
|
+
var win = window;
|
|
2384
|
+
var dpr = win.devicePixelRatio || 1;
|
|
2385
|
+
return {
|
|
2386
|
+
x: round(x * dpr) / dpr || 0,
|
|
2387
|
+
y: round(y * dpr) / dpr || 0
|
|
2388
|
+
};
|
|
2389
|
+
}
|
|
2390
|
+
function mapToStyles(_ref2) {
|
|
2391
|
+
var _Object$assign2;
|
|
2392
|
+
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;
|
|
2393
|
+
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;
|
|
2394
|
+
var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
|
|
2395
|
+
x,
|
|
2396
|
+
y
|
|
2397
|
+
}) : {
|
|
2398
|
+
x,
|
|
2399
|
+
y
|
|
2400
|
+
};
|
|
2401
|
+
x = _ref3.x;
|
|
2402
|
+
y = _ref3.y;
|
|
2403
|
+
var hasX = offsets.hasOwnProperty("x");
|
|
2404
|
+
var hasY = offsets.hasOwnProperty("y");
|
|
2405
|
+
var sideX = left;
|
|
2406
|
+
var sideY = top;
|
|
2407
|
+
var win = window;
|
|
2408
|
+
if (adaptive) {
|
|
2409
|
+
var offsetParent = getOffsetParent(popper2);
|
|
2410
|
+
var heightProp = "clientHeight";
|
|
2411
|
+
var widthProp = "clientWidth";
|
|
2412
|
+
if (offsetParent === getWindow(popper2)) {
|
|
2413
|
+
offsetParent = getDocumentElement(popper2);
|
|
2414
|
+
if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") {
|
|
2415
|
+
heightProp = "scrollHeight";
|
|
2416
|
+
widthProp = "scrollWidth";
|
|
2417
|
+
}
|
|
2418
|
+
}
|
|
2419
|
+
offsetParent = offsetParent;
|
|
2420
|
+
if (placement === top || (placement === left || placement === right) && variation === end) {
|
|
2421
|
+
sideY = bottom;
|
|
2422
|
+
var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : offsetParent[heightProp];
|
|
2423
|
+
y -= offsetY - popperRect.height;
|
|
2424
|
+
y *= gpuAcceleration ? 1 : -1;
|
|
2425
|
+
}
|
|
2426
|
+
if (placement === left || (placement === top || placement === bottom) && variation === end) {
|
|
2427
|
+
sideX = right;
|
|
2428
|
+
var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : offsetParent[widthProp];
|
|
2429
|
+
x -= offsetX - popperRect.width;
|
|
2430
|
+
x *= gpuAcceleration ? 1 : -1;
|
|
2431
|
+
}
|
|
2432
|
+
}
|
|
2433
|
+
var commonStyles = Object.assign({
|
|
2434
|
+
position
|
|
2435
|
+
}, adaptive && unsetSides);
|
|
2436
|
+
var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
|
|
2437
|
+
x,
|
|
2438
|
+
y
|
|
2439
|
+
}) : {
|
|
2440
|
+
x,
|
|
2441
|
+
y
|
|
2442
|
+
};
|
|
2443
|
+
x = _ref4.x;
|
|
2444
|
+
y = _ref4.y;
|
|
2445
|
+
if (gpuAcceleration) {
|
|
2446
|
+
var _Object$assign;
|
|
2447
|
+
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));
|
|
2448
|
+
}
|
|
2449
|
+
return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
|
|
2450
|
+
}
|
|
2451
|
+
function computeStyles(_ref5) {
|
|
2452
|
+
var state = _ref5.state, options = _ref5.options;
|
|
2453
|
+
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;
|
|
2454
|
+
if (true) {
|
|
2455
|
+
var transitionProperty = getComputedStyle2(state.elements.popper).transitionProperty || "";
|
|
2456
|
+
if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) {
|
|
2457
|
+
return transitionProperty.indexOf(property) >= 0;
|
|
2458
|
+
})) {
|
|
2459
|
+
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(" "));
|
|
2460
|
+
}
|
|
2461
|
+
}
|
|
2462
|
+
var commonStyles = {
|
|
2463
|
+
placement: getBasePlacement(state.placement),
|
|
2464
|
+
variation: getVariation(state.placement),
|
|
2465
|
+
popper: state.elements.popper,
|
|
2466
|
+
popperRect: state.rects.popper,
|
|
2467
|
+
gpuAcceleration,
|
|
2468
|
+
isFixed: state.options.strategy === "fixed"
|
|
2469
|
+
};
|
|
2470
|
+
if (state.modifiersData.popperOffsets != null) {
|
|
2471
|
+
state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
|
|
2472
|
+
offsets: state.modifiersData.popperOffsets,
|
|
2473
|
+
position: state.options.strategy,
|
|
2474
|
+
adaptive,
|
|
2475
|
+
roundOffsets
|
|
2476
|
+
})));
|
|
2477
|
+
}
|
|
2478
|
+
if (state.modifiersData.arrow != null) {
|
|
2479
|
+
state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
|
|
2480
|
+
offsets: state.modifiersData.arrow,
|
|
2481
|
+
position: "absolute",
|
|
2482
|
+
adaptive: false,
|
|
2483
|
+
roundOffsets
|
|
2484
|
+
})));
|
|
2485
|
+
}
|
|
2486
|
+
state.attributes.popper = Object.assign({}, state.attributes.popper, {
|
|
2487
|
+
"data-popper-placement": state.placement
|
|
2488
|
+
});
|
|
2489
|
+
}
|
|
2490
|
+
var computeStyles_default = {
|
|
2491
|
+
name: "computeStyles",
|
|
2492
|
+
enabled: true,
|
|
2493
|
+
phase: "beforeWrite",
|
|
2494
|
+
fn: computeStyles,
|
|
2495
|
+
data: {}
|
|
2496
|
+
};
|
|
2497
|
+
|
|
2498
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/eventListeners.js
|
|
2499
|
+
var passive = {
|
|
2500
|
+
passive: true
|
|
2501
|
+
};
|
|
2502
|
+
function effect3(_ref) {
|
|
2503
|
+
var state = _ref.state, instance = _ref.instance, options = _ref.options;
|
|
2504
|
+
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;
|
|
2505
|
+
var window2 = getWindow(state.elements.popper);
|
|
2506
|
+
var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
|
|
2507
|
+
if (scroll) {
|
|
2508
|
+
scrollParents.forEach(function(scrollParent) {
|
|
2509
|
+
scrollParent.addEventListener("scroll", instance.update, passive);
|
|
2510
|
+
});
|
|
2511
|
+
}
|
|
2512
|
+
if (resize) {
|
|
2513
|
+
window2.addEventListener("resize", instance.update, passive);
|
|
2514
|
+
}
|
|
2515
|
+
return function() {
|
|
2516
|
+
if (scroll) {
|
|
2517
|
+
scrollParents.forEach(function(scrollParent) {
|
|
2518
|
+
scrollParent.removeEventListener("scroll", instance.update, passive);
|
|
2519
|
+
});
|
|
2520
|
+
}
|
|
2521
|
+
if (resize) {
|
|
2522
|
+
window2.removeEventListener("resize", instance.update, passive);
|
|
2523
|
+
}
|
|
2524
|
+
};
|
|
2525
|
+
}
|
|
2526
|
+
var eventListeners_default = {
|
|
2527
|
+
name: "eventListeners",
|
|
2528
|
+
enabled: true,
|
|
2529
|
+
phase: "write",
|
|
2530
|
+
fn: function fn() {
|
|
2531
|
+
},
|
|
2532
|
+
effect: effect3,
|
|
2533
|
+
data: {}
|
|
2534
|
+
};
|
|
2535
|
+
|
|
2536
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js
|
|
2537
|
+
var hash = {
|
|
2538
|
+
left: "right",
|
|
2539
|
+
right: "left",
|
|
2540
|
+
bottom: "top",
|
|
2541
|
+
top: "bottom"
|
|
2542
|
+
};
|
|
2543
|
+
function getOppositePlacement(placement) {
|
|
2544
|
+
return placement.replace(/left|right|bottom|top/g, function(matched) {
|
|
2545
|
+
return hash[matched];
|
|
2546
|
+
});
|
|
2547
|
+
}
|
|
2548
|
+
|
|
2549
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js
|
|
2550
|
+
var hash2 = {
|
|
2551
|
+
start: "end",
|
|
2552
|
+
end: "start"
|
|
2553
|
+
};
|
|
2554
|
+
function getOppositeVariationPlacement(placement) {
|
|
2555
|
+
return placement.replace(/start|end/g, function(matched) {
|
|
2556
|
+
return hash2[matched];
|
|
2557
|
+
});
|
|
2558
|
+
}
|
|
2559
|
+
|
|
2560
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js
|
|
2561
|
+
function getWindowScroll(node) {
|
|
2562
|
+
var win = getWindow(node);
|
|
2563
|
+
var scrollLeft = win.pageXOffset;
|
|
2564
|
+
var scrollTop = win.pageYOffset;
|
|
2565
|
+
return {
|
|
2566
|
+
scrollLeft,
|
|
2567
|
+
scrollTop
|
|
2568
|
+
};
|
|
2569
|
+
}
|
|
2570
|
+
|
|
2571
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js
|
|
2572
|
+
function getWindowScrollBarX(element) {
|
|
2573
|
+
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
|
|
2574
|
+
}
|
|
2575
|
+
|
|
2576
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
|
|
2577
|
+
function getViewportRect(element) {
|
|
2578
|
+
var win = getWindow(element);
|
|
2579
|
+
var html = getDocumentElement(element);
|
|
2580
|
+
var visualViewport = win.visualViewport;
|
|
2581
|
+
var width = html.clientWidth;
|
|
2582
|
+
var height = html.clientHeight;
|
|
2583
|
+
var x = 0;
|
|
2584
|
+
var y = 0;
|
|
2585
|
+
if (visualViewport) {
|
|
2586
|
+
width = visualViewport.width;
|
|
2587
|
+
height = visualViewport.height;
|
|
2588
|
+
if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
|
|
2589
|
+
x = visualViewport.offsetLeft;
|
|
2590
|
+
y = visualViewport.offsetTop;
|
|
2591
|
+
}
|
|
2592
|
+
}
|
|
2593
|
+
return {
|
|
2594
|
+
width,
|
|
2595
|
+
height,
|
|
2596
|
+
x: x + getWindowScrollBarX(element),
|
|
2597
|
+
y
|
|
2598
|
+
};
|
|
2599
|
+
}
|
|
2600
|
+
|
|
2601
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
|
|
2602
|
+
function getDocumentRect(element) {
|
|
2603
|
+
var _element$ownerDocumen;
|
|
2604
|
+
var html = getDocumentElement(element);
|
|
2605
|
+
var winScroll = getWindowScroll(element);
|
|
2606
|
+
var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
|
|
2607
|
+
var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
|
|
2608
|
+
var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
|
|
2609
|
+
var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
|
|
2610
|
+
var y = -winScroll.scrollTop;
|
|
2611
|
+
if (getComputedStyle2(body || html).direction === "rtl") {
|
|
2612
|
+
x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
|
|
2613
|
+
}
|
|
2614
|
+
return {
|
|
2615
|
+
width,
|
|
2616
|
+
height,
|
|
2617
|
+
x,
|
|
2618
|
+
y
|
|
2619
|
+
};
|
|
2620
|
+
}
|
|
2621
|
+
|
|
2622
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js
|
|
2623
|
+
function isScrollParent(element) {
|
|
2624
|
+
var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
|
|
2625
|
+
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
|
|
2626
|
+
}
|
|
2627
|
+
|
|
2628
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js
|
|
2629
|
+
function getScrollParent(node) {
|
|
2630
|
+
if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) {
|
|
2631
|
+
return node.ownerDocument.body;
|
|
2632
|
+
}
|
|
2633
|
+
if (isHTMLElement(node) && isScrollParent(node)) {
|
|
2634
|
+
return node;
|
|
2635
|
+
}
|
|
2636
|
+
return getScrollParent(getParentNode(node));
|
|
2637
|
+
}
|
|
2638
|
+
|
|
2639
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
|
|
2640
|
+
function listScrollParents(element, list) {
|
|
2641
|
+
var _element$ownerDocumen;
|
|
2642
|
+
if (list === void 0) {
|
|
2643
|
+
list = [];
|
|
2644
|
+
}
|
|
2645
|
+
var scrollParent = getScrollParent(element);
|
|
2646
|
+
var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
|
|
2647
|
+
var win = getWindow(scrollParent);
|
|
2648
|
+
var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
|
|
2649
|
+
var updatedList = list.concat(target);
|
|
2650
|
+
return isBody ? updatedList : updatedList.concat(listScrollParents(getParentNode(target)));
|
|
2651
|
+
}
|
|
2652
|
+
|
|
2653
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/rectToClientRect.js
|
|
2654
|
+
function rectToClientRect(rect) {
|
|
2655
|
+
return Object.assign({}, rect, {
|
|
2656
|
+
left: rect.x,
|
|
2657
|
+
top: rect.y,
|
|
2658
|
+
right: rect.x + rect.width,
|
|
2659
|
+
bottom: rect.y + rect.height
|
|
2660
|
+
});
|
|
2661
|
+
}
|
|
2662
|
+
|
|
2663
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js
|
|
2664
|
+
function getInnerBoundingClientRect(element) {
|
|
2665
|
+
var rect = getBoundingClientRect(element);
|
|
2666
|
+
rect.top = rect.top + element.clientTop;
|
|
2667
|
+
rect.left = rect.left + element.clientLeft;
|
|
2668
|
+
rect.bottom = rect.top + element.clientHeight;
|
|
2669
|
+
rect.right = rect.left + element.clientWidth;
|
|
2670
|
+
rect.width = element.clientWidth;
|
|
2671
|
+
rect.height = element.clientHeight;
|
|
2672
|
+
rect.x = rect.left;
|
|
2673
|
+
rect.y = rect.top;
|
|
2674
|
+
return rect;
|
|
2675
|
+
}
|
|
2676
|
+
function getClientRectFromMixedType(element, clippingParent) {
|
|
2677
|
+
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
|
2678
|
+
}
|
|
2679
|
+
function getClippingParents(element) {
|
|
2680
|
+
var clippingParents2 = listScrollParents(getParentNode(element));
|
|
2681
|
+
var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0;
|
|
2682
|
+
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
|
2683
|
+
if (!isElement(clipperElement)) {
|
|
2684
|
+
return [];
|
|
2685
|
+
}
|
|
2686
|
+
return clippingParents2.filter(function(clippingParent) {
|
|
2687
|
+
return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
|
|
2688
|
+
});
|
|
2689
|
+
}
|
|
2690
|
+
function getClippingRect(element, boundary, rootBoundary) {
|
|
2691
|
+
var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
|
|
2692
|
+
var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);
|
|
2693
|
+
var firstClippingParent = clippingParents2[0];
|
|
2694
|
+
var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {
|
|
2695
|
+
var rect = getClientRectFromMixedType(element, clippingParent);
|
|
2696
|
+
accRect.top = max(rect.top, accRect.top);
|
|
2697
|
+
accRect.right = min(rect.right, accRect.right);
|
|
2698
|
+
accRect.bottom = min(rect.bottom, accRect.bottom);
|
|
2699
|
+
accRect.left = max(rect.left, accRect.left);
|
|
2700
|
+
return accRect;
|
|
2701
|
+
}, getClientRectFromMixedType(element, firstClippingParent));
|
|
2702
|
+
clippingRect.width = clippingRect.right - clippingRect.left;
|
|
2703
|
+
clippingRect.height = clippingRect.bottom - clippingRect.top;
|
|
2704
|
+
clippingRect.x = clippingRect.left;
|
|
2705
|
+
clippingRect.y = clippingRect.top;
|
|
2706
|
+
return clippingRect;
|
|
2707
|
+
}
|
|
2708
|
+
|
|
2709
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/computeOffsets.js
|
|
2710
|
+
function computeOffsets(_ref) {
|
|
2711
|
+
var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;
|
|
2712
|
+
var basePlacement = placement ? getBasePlacement(placement) : null;
|
|
2713
|
+
var variation = placement ? getVariation(placement) : null;
|
|
2714
|
+
var commonX = reference2.x + reference2.width / 2 - element.width / 2;
|
|
2715
|
+
var commonY = reference2.y + reference2.height / 2 - element.height / 2;
|
|
2716
|
+
var offsets;
|
|
2717
|
+
switch (basePlacement) {
|
|
2718
|
+
case top:
|
|
2719
|
+
offsets = {
|
|
2720
|
+
x: commonX,
|
|
2721
|
+
y: reference2.y - element.height
|
|
2722
|
+
};
|
|
2723
|
+
break;
|
|
2724
|
+
case bottom:
|
|
2725
|
+
offsets = {
|
|
2726
|
+
x: commonX,
|
|
2727
|
+
y: reference2.y + reference2.height
|
|
2728
|
+
};
|
|
2729
|
+
break;
|
|
2730
|
+
case right:
|
|
2731
|
+
offsets = {
|
|
2732
|
+
x: reference2.x + reference2.width,
|
|
2733
|
+
y: commonY
|
|
2734
|
+
};
|
|
2735
|
+
break;
|
|
2736
|
+
case left:
|
|
2737
|
+
offsets = {
|
|
2738
|
+
x: reference2.x - element.width,
|
|
2739
|
+
y: commonY
|
|
2740
|
+
};
|
|
2741
|
+
break;
|
|
2742
|
+
default:
|
|
2743
|
+
offsets = {
|
|
2744
|
+
x: reference2.x,
|
|
2745
|
+
y: reference2.y
|
|
2746
|
+
};
|
|
2747
|
+
}
|
|
2748
|
+
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
|
|
2749
|
+
if (mainAxis != null) {
|
|
2750
|
+
var len = mainAxis === "y" ? "height" : "width";
|
|
2751
|
+
switch (variation) {
|
|
2752
|
+
case start:
|
|
2753
|
+
offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);
|
|
2754
|
+
break;
|
|
2755
|
+
case end:
|
|
2756
|
+
offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);
|
|
2757
|
+
break;
|
|
2758
|
+
default:
|
|
2759
|
+
}
|
|
2760
|
+
}
|
|
2761
|
+
return offsets;
|
|
2762
|
+
}
|
|
2763
|
+
|
|
2764
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/detectOverflow.js
|
|
2765
|
+
function detectOverflow(state, options) {
|
|
2766
|
+
if (options === void 0) {
|
|
2767
|
+
options = {};
|
|
2768
|
+
}
|
|
2769
|
+
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;
|
|
2770
|
+
var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
|
|
2771
|
+
var altContext = elementContext === popper ? reference : popper;
|
|
2772
|
+
var popperRect = state.rects.popper;
|
|
2773
|
+
var element = state.elements[altBoundary ? altContext : elementContext];
|
|
2774
|
+
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
|
|
2775
|
+
var referenceClientRect = getBoundingClientRect(state.elements.reference);
|
|
2776
|
+
var popperOffsets2 = computeOffsets({
|
|
2777
|
+
reference: referenceClientRect,
|
|
2778
|
+
element: popperRect,
|
|
2779
|
+
strategy: "absolute",
|
|
2780
|
+
placement
|
|
2781
|
+
});
|
|
2782
|
+
var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));
|
|
2783
|
+
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
|
|
2784
|
+
var overflowOffsets = {
|
|
2785
|
+
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
|
|
2786
|
+
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
|
|
2787
|
+
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
|
|
2788
|
+
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
|
|
2789
|
+
};
|
|
2790
|
+
var offsetData = state.modifiersData.offset;
|
|
2791
|
+
if (elementContext === popper && offsetData) {
|
|
2792
|
+
var offset2 = offsetData[placement];
|
|
2793
|
+
Object.keys(overflowOffsets).forEach(function(key) {
|
|
2794
|
+
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
|
|
2795
|
+
var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x";
|
|
2796
|
+
overflowOffsets[key] += offset2[axis] * multiply;
|
|
2797
|
+
});
|
|
2798
|
+
}
|
|
2799
|
+
return overflowOffsets;
|
|
2800
|
+
}
|
|
2801
|
+
|
|
2802
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js
|
|
2803
|
+
function computeAutoPlacement(state, options) {
|
|
2804
|
+
if (options === void 0) {
|
|
2805
|
+
options = {};
|
|
2806
|
+
}
|
|
2807
|
+
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;
|
|
2808
|
+
var variation = getVariation(placement);
|
|
2809
|
+
var placements2 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
|
|
2810
|
+
return getVariation(placement2) === variation;
|
|
2811
|
+
}) : basePlacements;
|
|
2812
|
+
var allowedPlacements = placements2.filter(function(placement2) {
|
|
2813
|
+
return allowedAutoPlacements.indexOf(placement2) >= 0;
|
|
2814
|
+
});
|
|
2815
|
+
if (allowedPlacements.length === 0) {
|
|
2816
|
+
allowedPlacements = placements2;
|
|
2817
|
+
if (true) {
|
|
2818
|
+
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(" "));
|
|
2819
|
+
}
|
|
2820
|
+
}
|
|
2821
|
+
var overflows = allowedPlacements.reduce(function(acc, placement2) {
|
|
2822
|
+
acc[placement2] = detectOverflow(state, {
|
|
2823
|
+
placement: placement2,
|
|
2824
|
+
boundary,
|
|
2825
|
+
rootBoundary,
|
|
2826
|
+
padding
|
|
2827
|
+
})[getBasePlacement(placement2)];
|
|
2828
|
+
return acc;
|
|
2829
|
+
}, {});
|
|
2830
|
+
return Object.keys(overflows).sort(function(a, b) {
|
|
2831
|
+
return overflows[a] - overflows[b];
|
|
2832
|
+
});
|
|
2833
|
+
}
|
|
2834
|
+
|
|
2835
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/flip.js
|
|
2836
|
+
function getExpandedFallbackPlacements(placement) {
|
|
2837
|
+
if (getBasePlacement(placement) === auto) {
|
|
2838
|
+
return [];
|
|
2839
|
+
}
|
|
2840
|
+
var oppositePlacement = getOppositePlacement(placement);
|
|
2841
|
+
return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
|
|
2842
|
+
}
|
|
2843
|
+
function flip(_ref) {
|
|
2844
|
+
var state = _ref.state, options = _ref.options, name6 = _ref.name;
|
|
2845
|
+
if (state.modifiersData[name6]._skip) {
|
|
2846
|
+
return;
|
|
2847
|
+
}
|
|
2848
|
+
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;
|
|
2849
|
+
var preferredPlacement = state.options.placement;
|
|
2850
|
+
var basePlacement = getBasePlacement(preferredPlacement);
|
|
2851
|
+
var isBasePlacement = basePlacement === preferredPlacement;
|
|
2852
|
+
var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
|
|
2853
|
+
var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {
|
|
2854
|
+
return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {
|
|
2855
|
+
placement: placement2,
|
|
2856
|
+
boundary,
|
|
2857
|
+
rootBoundary,
|
|
2858
|
+
padding,
|
|
2859
|
+
flipVariations,
|
|
2860
|
+
allowedAutoPlacements
|
|
2861
|
+
}) : placement2);
|
|
2862
|
+
}, []);
|
|
2863
|
+
var referenceRect = state.rects.reference;
|
|
2864
|
+
var popperRect = state.rects.popper;
|
|
2865
|
+
var checksMap = /* @__PURE__ */ new Map();
|
|
2866
|
+
var makeFallbackChecks = true;
|
|
2867
|
+
var firstFittingPlacement = placements2[0];
|
|
2868
|
+
for (var i = 0; i < placements2.length; i++) {
|
|
2869
|
+
var placement = placements2[i];
|
|
2870
|
+
var _basePlacement = getBasePlacement(placement);
|
|
2871
|
+
var isStartVariation = getVariation(placement) === start;
|
|
2872
|
+
var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
|
|
2873
|
+
var len = isVertical ? "width" : "height";
|
|
2874
|
+
var overflow = detectOverflow(state, {
|
|
2875
|
+
placement,
|
|
2876
|
+
boundary,
|
|
2877
|
+
rootBoundary,
|
|
2878
|
+
altBoundary,
|
|
2879
|
+
padding
|
|
2880
|
+
});
|
|
2881
|
+
var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
|
|
2882
|
+
if (referenceRect[len] > popperRect[len]) {
|
|
2883
|
+
mainVariationSide = getOppositePlacement(mainVariationSide);
|
|
2884
|
+
}
|
|
2885
|
+
var altVariationSide = getOppositePlacement(mainVariationSide);
|
|
2886
|
+
var checks = [];
|
|
2887
|
+
if (checkMainAxis) {
|
|
2888
|
+
checks.push(overflow[_basePlacement] <= 0);
|
|
2889
|
+
}
|
|
2890
|
+
if (checkAltAxis) {
|
|
2891
|
+
checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
|
|
2892
|
+
}
|
|
2893
|
+
if (checks.every(function(check) {
|
|
2894
|
+
return check;
|
|
2895
|
+
})) {
|
|
2896
|
+
firstFittingPlacement = placement;
|
|
2897
|
+
makeFallbackChecks = false;
|
|
2898
|
+
break;
|
|
2899
|
+
}
|
|
2900
|
+
checksMap.set(placement, checks);
|
|
2901
|
+
}
|
|
2902
|
+
if (makeFallbackChecks) {
|
|
2903
|
+
var numberOfChecks = flipVariations ? 3 : 1;
|
|
2904
|
+
var _loop = function _loop2(_i2) {
|
|
2905
|
+
var fittingPlacement = placements2.find(function(placement2) {
|
|
2906
|
+
var checks2 = checksMap.get(placement2);
|
|
2907
|
+
if (checks2) {
|
|
2908
|
+
return checks2.slice(0, _i2).every(function(check) {
|
|
2909
|
+
return check;
|
|
2910
|
+
});
|
|
2911
|
+
}
|
|
2912
|
+
});
|
|
2913
|
+
if (fittingPlacement) {
|
|
2914
|
+
firstFittingPlacement = fittingPlacement;
|
|
2915
|
+
return "break";
|
|
2916
|
+
}
|
|
2917
|
+
};
|
|
2918
|
+
for (var _i = numberOfChecks; _i > 0; _i--) {
|
|
2919
|
+
var _ret = _loop(_i);
|
|
2920
|
+
if (_ret === "break")
|
|
2921
|
+
break;
|
|
2922
|
+
}
|
|
2923
|
+
}
|
|
2924
|
+
if (state.placement !== firstFittingPlacement) {
|
|
2925
|
+
state.modifiersData[name6]._skip = true;
|
|
2926
|
+
state.placement = firstFittingPlacement;
|
|
2927
|
+
state.reset = true;
|
|
2928
|
+
}
|
|
2929
|
+
}
|
|
2930
|
+
var flip_default = {
|
|
2931
|
+
name: "flip",
|
|
2932
|
+
enabled: true,
|
|
2933
|
+
phase: "main",
|
|
2934
|
+
fn: flip,
|
|
2935
|
+
requiresIfExists: ["offset"],
|
|
2936
|
+
data: {
|
|
2937
|
+
_skip: false
|
|
2938
|
+
}
|
|
2939
|
+
};
|
|
2940
|
+
|
|
2941
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/hide.js
|
|
2942
|
+
function getSideOffsets(overflow, rect, preventedOffsets) {
|
|
2943
|
+
if (preventedOffsets === void 0) {
|
|
2944
|
+
preventedOffsets = {
|
|
2945
|
+
x: 0,
|
|
2946
|
+
y: 0
|
|
2947
|
+
};
|
|
2948
|
+
}
|
|
2949
|
+
return {
|
|
2950
|
+
top: overflow.top - rect.height - preventedOffsets.y,
|
|
2951
|
+
right: overflow.right - rect.width + preventedOffsets.x,
|
|
2952
|
+
bottom: overflow.bottom - rect.height + preventedOffsets.y,
|
|
2953
|
+
left: overflow.left - rect.width - preventedOffsets.x
|
|
2954
|
+
};
|
|
2955
|
+
}
|
|
2956
|
+
function isAnySideFullyClipped(overflow) {
|
|
2957
|
+
return [top, right, bottom, left].some(function(side) {
|
|
2958
|
+
return overflow[side] >= 0;
|
|
2959
|
+
});
|
|
2960
|
+
}
|
|
2961
|
+
function hide(_ref) {
|
|
2962
|
+
var state = _ref.state, name6 = _ref.name;
|
|
2963
|
+
var referenceRect = state.rects.reference;
|
|
2964
|
+
var popperRect = state.rects.popper;
|
|
2965
|
+
var preventedOffsets = state.modifiersData.preventOverflow;
|
|
2966
|
+
var referenceOverflow = detectOverflow(state, {
|
|
2967
|
+
elementContext: "reference"
|
|
2968
|
+
});
|
|
2969
|
+
var popperAltOverflow = detectOverflow(state, {
|
|
2970
|
+
altBoundary: true
|
|
2971
|
+
});
|
|
2972
|
+
var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
|
|
2973
|
+
var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
|
|
2974
|
+
var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
|
|
2975
|
+
var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
|
|
2976
|
+
state.modifiersData[name6] = {
|
|
2977
|
+
referenceClippingOffsets,
|
|
2978
|
+
popperEscapeOffsets,
|
|
2979
|
+
isReferenceHidden,
|
|
2980
|
+
hasPopperEscaped
|
|
2981
|
+
};
|
|
2982
|
+
state.attributes.popper = Object.assign({}, state.attributes.popper, {
|
|
2983
|
+
"data-popper-reference-hidden": isReferenceHidden,
|
|
2984
|
+
"data-popper-escaped": hasPopperEscaped
|
|
2985
|
+
});
|
|
2986
|
+
}
|
|
2987
|
+
var hide_default = {
|
|
2988
|
+
name: "hide",
|
|
2989
|
+
enabled: true,
|
|
2990
|
+
phase: "main",
|
|
2991
|
+
requiresIfExists: ["preventOverflow"],
|
|
2992
|
+
fn: hide
|
|
2993
|
+
};
|
|
2994
|
+
|
|
2995
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/offset.js
|
|
2996
|
+
function distanceAndSkiddingToXY(placement, rects, offset2) {
|
|
2997
|
+
var basePlacement = getBasePlacement(placement);
|
|
2998
|
+
var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
|
|
2999
|
+
var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, {
|
|
3000
|
+
placement
|
|
3001
|
+
})) : offset2, skidding = _ref[0], distance = _ref[1];
|
|
3002
|
+
skidding = skidding || 0;
|
|
3003
|
+
distance = (distance || 0) * invertDistance;
|
|
3004
|
+
return [left, right].indexOf(basePlacement) >= 0 ? {
|
|
3005
|
+
x: distance,
|
|
3006
|
+
y: skidding
|
|
3007
|
+
} : {
|
|
3008
|
+
x: skidding,
|
|
3009
|
+
y: distance
|
|
3010
|
+
};
|
|
3011
|
+
}
|
|
3012
|
+
function offset(_ref2) {
|
|
3013
|
+
var state = _ref2.state, options = _ref2.options, name6 = _ref2.name;
|
|
3014
|
+
var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
|
|
3015
|
+
var data = placements.reduce(function(acc, placement) {
|
|
3016
|
+
acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);
|
|
3017
|
+
return acc;
|
|
3018
|
+
}, {});
|
|
3019
|
+
var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;
|
|
3020
|
+
if (state.modifiersData.popperOffsets != null) {
|
|
3021
|
+
state.modifiersData.popperOffsets.x += x;
|
|
3022
|
+
state.modifiersData.popperOffsets.y += y;
|
|
3023
|
+
}
|
|
3024
|
+
state.modifiersData[name6] = data;
|
|
3025
|
+
}
|
|
3026
|
+
var offset_default = {
|
|
3027
|
+
name: "offset",
|
|
3028
|
+
enabled: true,
|
|
3029
|
+
phase: "main",
|
|
3030
|
+
requires: ["popperOffsets"],
|
|
3031
|
+
fn: offset
|
|
3032
|
+
};
|
|
3033
|
+
|
|
3034
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js
|
|
3035
|
+
function popperOffsets(_ref) {
|
|
3036
|
+
var state = _ref.state, name6 = _ref.name;
|
|
3037
|
+
state.modifiersData[name6] = computeOffsets({
|
|
3038
|
+
reference: state.rects.reference,
|
|
3039
|
+
element: state.rects.popper,
|
|
3040
|
+
strategy: "absolute",
|
|
3041
|
+
placement: state.placement
|
|
3042
|
+
});
|
|
3043
|
+
}
|
|
3044
|
+
var popperOffsets_default = {
|
|
3045
|
+
name: "popperOffsets",
|
|
3046
|
+
enabled: true,
|
|
3047
|
+
phase: "read",
|
|
3048
|
+
fn: popperOffsets,
|
|
3049
|
+
data: {}
|
|
3050
|
+
};
|
|
3051
|
+
|
|
3052
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/getAltAxis.js
|
|
3053
|
+
function getAltAxis(axis) {
|
|
3054
|
+
return axis === "x" ? "y" : "x";
|
|
3055
|
+
}
|
|
3056
|
+
|
|
3057
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
|
|
3058
|
+
function preventOverflow(_ref) {
|
|
3059
|
+
var state = _ref.state, options = _ref.options, name6 = _ref.name;
|
|
3060
|
+
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;
|
|
3061
|
+
var overflow = detectOverflow(state, {
|
|
3062
|
+
boundary,
|
|
3063
|
+
rootBoundary,
|
|
3064
|
+
padding,
|
|
3065
|
+
altBoundary
|
|
3066
|
+
});
|
|
3067
|
+
var basePlacement = getBasePlacement(state.placement);
|
|
3068
|
+
var variation = getVariation(state.placement);
|
|
3069
|
+
var isBasePlacement = !variation;
|
|
3070
|
+
var mainAxis = getMainAxisFromPlacement(basePlacement);
|
|
3071
|
+
var altAxis = getAltAxis(mainAxis);
|
|
3072
|
+
var popperOffsets2 = state.modifiersData.popperOffsets;
|
|
3073
|
+
var referenceRect = state.rects.reference;
|
|
3074
|
+
var popperRect = state.rects.popper;
|
|
3075
|
+
var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, {
|
|
3076
|
+
placement: state.placement
|
|
3077
|
+
})) : tetherOffset;
|
|
3078
|
+
var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
|
|
3079
|
+
mainAxis: tetherOffsetValue,
|
|
3080
|
+
altAxis: tetherOffsetValue
|
|
3081
|
+
} : Object.assign({
|
|
3082
|
+
mainAxis: 0,
|
|
3083
|
+
altAxis: 0
|
|
3084
|
+
}, tetherOffsetValue);
|
|
3085
|
+
var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
|
|
3086
|
+
var data = {
|
|
3087
|
+
x: 0,
|
|
3088
|
+
y: 0
|
|
3089
|
+
};
|
|
3090
|
+
if (!popperOffsets2) {
|
|
3091
|
+
return;
|
|
3092
|
+
}
|
|
3093
|
+
if (checkMainAxis) {
|
|
3094
|
+
var _offsetModifierState$;
|
|
3095
|
+
var mainSide = mainAxis === "y" ? top : left;
|
|
3096
|
+
var altSide = mainAxis === "y" ? bottom : right;
|
|
3097
|
+
var len = mainAxis === "y" ? "height" : "width";
|
|
3098
|
+
var offset2 = popperOffsets2[mainAxis];
|
|
3099
|
+
var min2 = offset2 + overflow[mainSide];
|
|
3100
|
+
var max2 = offset2 - overflow[altSide];
|
|
3101
|
+
var additive = tether ? -popperRect[len] / 2 : 0;
|
|
3102
|
+
var minLen = variation === start ? referenceRect[len] : popperRect[len];
|
|
3103
|
+
var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
|
|
3104
|
+
var arrowElement = state.elements.arrow;
|
|
3105
|
+
var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
|
|
3106
|
+
width: 0,
|
|
3107
|
+
height: 0
|
|
3108
|
+
};
|
|
3109
|
+
var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
|
|
3110
|
+
var arrowPaddingMin = arrowPaddingObject[mainSide];
|
|
3111
|
+
var arrowPaddingMax = arrowPaddingObject[altSide];
|
|
3112
|
+
var arrowLen = within(0, referenceRect[len], arrowRect[len]);
|
|
3113
|
+
var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
|
|
3114
|
+
var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
|
|
3115
|
+
var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
|
|
3116
|
+
var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
|
|
3117
|
+
var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
|
|
3118
|
+
var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;
|
|
3119
|
+
var tetherMax = offset2 + maxOffset - offsetModifierValue;
|
|
3120
|
+
var preventedOffset = within(tether ? min(min2, tetherMin) : min2, offset2, tether ? max(max2, tetherMax) : max2);
|
|
3121
|
+
popperOffsets2[mainAxis] = preventedOffset;
|
|
3122
|
+
data[mainAxis] = preventedOffset - offset2;
|
|
3123
|
+
}
|
|
3124
|
+
if (checkAltAxis) {
|
|
3125
|
+
var _offsetModifierState$2;
|
|
3126
|
+
var _mainSide = mainAxis === "x" ? top : left;
|
|
3127
|
+
var _altSide = mainAxis === "x" ? bottom : right;
|
|
3128
|
+
var _offset = popperOffsets2[altAxis];
|
|
3129
|
+
var _len = altAxis === "y" ? "height" : "width";
|
|
3130
|
+
var _min = _offset + overflow[_mainSide];
|
|
3131
|
+
var _max = _offset - overflow[_altSide];
|
|
3132
|
+
var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
|
|
3133
|
+
var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
|
|
3134
|
+
var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
|
|
3135
|
+
var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
|
|
3136
|
+
var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
|
|
3137
|
+
popperOffsets2[altAxis] = _preventedOffset;
|
|
3138
|
+
data[altAxis] = _preventedOffset - _offset;
|
|
3139
|
+
}
|
|
3140
|
+
state.modifiersData[name6] = data;
|
|
3141
|
+
}
|
|
3142
|
+
var preventOverflow_default = {
|
|
3143
|
+
name: "preventOverflow",
|
|
3144
|
+
enabled: true,
|
|
3145
|
+
phase: "main",
|
|
3146
|
+
fn: preventOverflow,
|
|
3147
|
+
requiresIfExists: ["offset"]
|
|
3148
|
+
};
|
|
3149
|
+
|
|
3150
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js
|
|
3151
|
+
function getHTMLElementScroll(element) {
|
|
3152
|
+
return {
|
|
3153
|
+
scrollLeft: element.scrollLeft,
|
|
3154
|
+
scrollTop: element.scrollTop
|
|
3155
|
+
};
|
|
3156
|
+
}
|
|
3157
|
+
|
|
3158
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js
|
|
3159
|
+
function getNodeScroll(node) {
|
|
3160
|
+
if (node === getWindow(node) || !isHTMLElement(node)) {
|
|
3161
|
+
return getWindowScroll(node);
|
|
3162
|
+
} else {
|
|
3163
|
+
return getHTMLElementScroll(node);
|
|
3164
|
+
}
|
|
3165
|
+
}
|
|
3166
|
+
|
|
3167
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js
|
|
3168
|
+
function isElementScaled(element) {
|
|
3169
|
+
var rect = element.getBoundingClientRect();
|
|
3170
|
+
var scaleX = round(rect.width) / element.offsetWidth || 1;
|
|
3171
|
+
var scaleY = round(rect.height) / element.offsetHeight || 1;
|
|
3172
|
+
return scaleX !== 1 || scaleY !== 1;
|
|
3173
|
+
}
|
|
3174
|
+
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
|
3175
|
+
if (isFixed === void 0) {
|
|
3176
|
+
isFixed = false;
|
|
3177
|
+
}
|
|
3178
|
+
var isOffsetParentAnElement = isHTMLElement(offsetParent);
|
|
3179
|
+
var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
|
|
3180
|
+
var documentElement = getDocumentElement(offsetParent);
|
|
3181
|
+
var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);
|
|
3182
|
+
var scroll = {
|
|
3183
|
+
scrollLeft: 0,
|
|
3184
|
+
scrollTop: 0
|
|
3185
|
+
};
|
|
3186
|
+
var offsets = {
|
|
3187
|
+
x: 0,
|
|
3188
|
+
y: 0
|
|
3189
|
+
};
|
|
3190
|
+
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
|
|
3191
|
+
if (getNodeName(offsetParent) !== "body" || isScrollParent(documentElement)) {
|
|
3192
|
+
scroll = getNodeScroll(offsetParent);
|
|
3193
|
+
}
|
|
3194
|
+
if (isHTMLElement(offsetParent)) {
|
|
3195
|
+
offsets = getBoundingClientRect(offsetParent, true);
|
|
3196
|
+
offsets.x += offsetParent.clientLeft;
|
|
3197
|
+
offsets.y += offsetParent.clientTop;
|
|
3198
|
+
} else if (documentElement) {
|
|
3199
|
+
offsets.x = getWindowScrollBarX(documentElement);
|
|
3200
|
+
}
|
|
3201
|
+
}
|
|
3202
|
+
return {
|
|
3203
|
+
x: rect.left + scroll.scrollLeft - offsets.x,
|
|
3204
|
+
y: rect.top + scroll.scrollTop - offsets.y,
|
|
3205
|
+
width: rect.width,
|
|
3206
|
+
height: rect.height
|
|
3207
|
+
};
|
|
3208
|
+
}
|
|
3209
|
+
|
|
3210
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/orderModifiers.js
|
|
3211
|
+
function order(modifiers) {
|
|
3212
|
+
var map = /* @__PURE__ */ new Map();
|
|
3213
|
+
var visited = /* @__PURE__ */ new Set();
|
|
3214
|
+
var result = [];
|
|
3215
|
+
modifiers.forEach(function(modifier) {
|
|
3216
|
+
map.set(modifier.name, modifier);
|
|
3217
|
+
});
|
|
3218
|
+
function sort(modifier) {
|
|
3219
|
+
visited.add(modifier.name);
|
|
3220
|
+
var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
|
|
3221
|
+
requires.forEach(function(dep) {
|
|
3222
|
+
if (!visited.has(dep)) {
|
|
3223
|
+
var depModifier = map.get(dep);
|
|
3224
|
+
if (depModifier) {
|
|
3225
|
+
sort(depModifier);
|
|
3226
|
+
}
|
|
3227
|
+
}
|
|
3228
|
+
});
|
|
3229
|
+
result.push(modifier);
|
|
3230
|
+
}
|
|
3231
|
+
modifiers.forEach(function(modifier) {
|
|
3232
|
+
if (!visited.has(modifier.name)) {
|
|
3233
|
+
sort(modifier);
|
|
3234
|
+
}
|
|
3235
|
+
});
|
|
3236
|
+
return result;
|
|
3237
|
+
}
|
|
3238
|
+
function orderModifiers(modifiers) {
|
|
3239
|
+
var orderedModifiers = order(modifiers);
|
|
3240
|
+
return modifierPhases.reduce(function(acc, phase) {
|
|
3241
|
+
return acc.concat(orderedModifiers.filter(function(modifier) {
|
|
3242
|
+
return modifier.phase === phase;
|
|
3243
|
+
}));
|
|
3244
|
+
}, []);
|
|
3245
|
+
}
|
|
3246
|
+
|
|
3247
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/debounce.js
|
|
3248
|
+
function debounce(fn2) {
|
|
3249
|
+
var pending;
|
|
3250
|
+
return function() {
|
|
3251
|
+
if (!pending) {
|
|
3252
|
+
pending = new Promise(function(resolve) {
|
|
3253
|
+
Promise.resolve().then(function() {
|
|
3254
|
+
pending = void 0;
|
|
3255
|
+
resolve(fn2());
|
|
3256
|
+
});
|
|
3257
|
+
});
|
|
3258
|
+
}
|
|
3259
|
+
return pending;
|
|
3260
|
+
};
|
|
3261
|
+
}
|
|
3262
|
+
|
|
3263
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/format.js
|
|
3264
|
+
function format(str) {
|
|
3265
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
3266
|
+
args[_key - 1] = arguments[_key];
|
|
3267
|
+
}
|
|
3268
|
+
return [].concat(args).reduce(function(p, c) {
|
|
3269
|
+
return p.replace(/%s/, c);
|
|
3270
|
+
}, str);
|
|
3271
|
+
}
|
|
3272
|
+
|
|
3273
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/validateModifiers.js
|
|
3274
|
+
var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s';
|
|
3275
|
+
var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available';
|
|
3276
|
+
var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"];
|
|
3277
|
+
function validateModifiers(modifiers) {
|
|
3278
|
+
modifiers.forEach(function(modifier) {
|
|
3279
|
+
[].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index, self) {
|
|
3280
|
+
return self.indexOf(value) === index;
|
|
3281
|
+
}).forEach(function(key) {
|
|
3282
|
+
switch (key) {
|
|
3283
|
+
case "name":
|
|
3284
|
+
if (typeof modifier.name !== "string") {
|
|
3285
|
+
console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"'));
|
|
3286
|
+
}
|
|
3287
|
+
break;
|
|
3288
|
+
case "enabled":
|
|
3289
|
+
if (typeof modifier.enabled !== "boolean") {
|
|
3290
|
+
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"'));
|
|
3291
|
+
}
|
|
3292
|
+
break;
|
|
3293
|
+
case "phase":
|
|
3294
|
+
if (modifierPhases.indexOf(modifier.phase) < 0) {
|
|
3295
|
+
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"'));
|
|
3296
|
+
}
|
|
3297
|
+
break;
|
|
3298
|
+
case "fn":
|
|
3299
|
+
if (typeof modifier.fn !== "function") {
|
|
3300
|
+
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"'));
|
|
3301
|
+
}
|
|
3302
|
+
break;
|
|
3303
|
+
case "effect":
|
|
3304
|
+
if (modifier.effect != null && typeof modifier.effect !== "function") {
|
|
3305
|
+
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"'));
|
|
3306
|
+
}
|
|
3307
|
+
break;
|
|
3308
|
+
case "requires":
|
|
3309
|
+
if (modifier.requires != null && !Array.isArray(modifier.requires)) {
|
|
3310
|
+
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"'));
|
|
3311
|
+
}
|
|
3312
|
+
break;
|
|
3313
|
+
case "requiresIfExists":
|
|
3314
|
+
if (!Array.isArray(modifier.requiresIfExists)) {
|
|
3315
|
+
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"'));
|
|
3316
|
+
}
|
|
3317
|
+
break;
|
|
3318
|
+
case "options":
|
|
3319
|
+
case "data":
|
|
3320
|
+
break;
|
|
3321
|
+
default:
|
|
3322
|
+
console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) {
|
|
3323
|
+
return '"' + s + '"';
|
|
3324
|
+
}).join(", ") + '; but "' + key + '" was provided.');
|
|
3325
|
+
}
|
|
3326
|
+
modifier.requires && modifier.requires.forEach(function(requirement) {
|
|
3327
|
+
if (modifiers.find(function(mod) {
|
|
3328
|
+
return mod.name === requirement;
|
|
3329
|
+
}) == null) {
|
|
3330
|
+
console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));
|
|
3331
|
+
}
|
|
3332
|
+
});
|
|
3333
|
+
});
|
|
3334
|
+
});
|
|
3335
|
+
}
|
|
3336
|
+
|
|
3337
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/uniqueBy.js
|
|
3338
|
+
function uniqueBy(arr, fn2) {
|
|
3339
|
+
var identifiers = /* @__PURE__ */ new Set();
|
|
3340
|
+
return arr.filter(function(item) {
|
|
3341
|
+
var identifier = fn2(item);
|
|
3342
|
+
if (!identifiers.has(identifier)) {
|
|
3343
|
+
identifiers.add(identifier);
|
|
3344
|
+
return true;
|
|
3345
|
+
}
|
|
3346
|
+
});
|
|
3347
|
+
}
|
|
3348
|
+
|
|
3349
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/utils/mergeByName.js
|
|
3350
|
+
function mergeByName(modifiers) {
|
|
3351
|
+
var merged = modifiers.reduce(function(merged2, current) {
|
|
3352
|
+
var existing = merged2[current.name];
|
|
3353
|
+
merged2[current.name] = existing ? Object.assign({}, existing, current, {
|
|
3354
|
+
options: Object.assign({}, existing.options, current.options),
|
|
3355
|
+
data: Object.assign({}, existing.data, current.data)
|
|
3356
|
+
}) : current;
|
|
3357
|
+
return merged2;
|
|
3358
|
+
}, {});
|
|
3359
|
+
return Object.keys(merged).map(function(key) {
|
|
3360
|
+
return merged[key];
|
|
3361
|
+
});
|
|
3362
|
+
}
|
|
3363
|
+
|
|
3364
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/createPopper.js
|
|
3365
|
+
var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.";
|
|
3366
|
+
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.";
|
|
3367
|
+
var DEFAULT_OPTIONS = {
|
|
3368
|
+
placement: "bottom",
|
|
3369
|
+
modifiers: [],
|
|
3370
|
+
strategy: "absolute"
|
|
3371
|
+
};
|
|
3372
|
+
function areValidElements() {
|
|
3373
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
3374
|
+
args[_key] = arguments[_key];
|
|
3375
|
+
}
|
|
3376
|
+
return !args.some(function(element) {
|
|
3377
|
+
return !(element && typeof element.getBoundingClientRect === "function");
|
|
3378
|
+
});
|
|
3379
|
+
}
|
|
3380
|
+
function popperGenerator(generatorOptions) {
|
|
3381
|
+
if (generatorOptions === void 0) {
|
|
3382
|
+
generatorOptions = {};
|
|
3383
|
+
}
|
|
3384
|
+
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;
|
|
3385
|
+
return function createPopper2(reference2, popper2, options) {
|
|
3386
|
+
if (options === void 0) {
|
|
3387
|
+
options = defaultOptions;
|
|
3388
|
+
}
|
|
3389
|
+
var state = {
|
|
3390
|
+
placement: "bottom",
|
|
3391
|
+
orderedModifiers: [],
|
|
3392
|
+
options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
|
|
3393
|
+
modifiersData: {},
|
|
3394
|
+
elements: {
|
|
3395
|
+
reference: reference2,
|
|
3396
|
+
popper: popper2
|
|
3397
|
+
},
|
|
3398
|
+
attributes: {},
|
|
3399
|
+
styles: {}
|
|
3400
|
+
};
|
|
3401
|
+
var effectCleanupFns = [];
|
|
3402
|
+
var isDestroyed = false;
|
|
3403
|
+
var instance = {
|
|
3404
|
+
state,
|
|
3405
|
+
setOptions: function setOptions(setOptionsAction) {
|
|
3406
|
+
var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
|
|
3407
|
+
cleanupModifierEffects();
|
|
3408
|
+
state.options = Object.assign({}, defaultOptions, state.options, options2);
|
|
3409
|
+
state.scrollParents = {
|
|
3410
|
+
reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],
|
|
3411
|
+
popper: listScrollParents(popper2)
|
|
3412
|
+
};
|
|
3413
|
+
var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers)));
|
|
3414
|
+
state.orderedModifiers = orderedModifiers.filter(function(m) {
|
|
3415
|
+
return m.enabled;
|
|
3416
|
+
});
|
|
3417
|
+
if (true) {
|
|
3418
|
+
var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) {
|
|
3419
|
+
var name6 = _ref.name;
|
|
3420
|
+
return name6;
|
|
3421
|
+
});
|
|
3422
|
+
validateModifiers(modifiers);
|
|
3423
|
+
if (getBasePlacement(state.options.placement) === auto) {
|
|
3424
|
+
var flipModifier = state.orderedModifiers.find(function(_ref2) {
|
|
3425
|
+
var name6 = _ref2.name;
|
|
3426
|
+
return name6 === "flip";
|
|
3427
|
+
});
|
|
3428
|
+
if (!flipModifier) {
|
|
3429
|
+
console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" "));
|
|
3430
|
+
}
|
|
3431
|
+
}
|
|
3432
|
+
var _getComputedStyle = getComputedStyle2(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft;
|
|
3433
|
+
if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) {
|
|
3434
|
+
return parseFloat(margin);
|
|
3435
|
+
})) {
|
|
3436
|
+
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(" "));
|
|
3437
|
+
}
|
|
3438
|
+
}
|
|
3439
|
+
runModifierEffects();
|
|
3440
|
+
return instance.update();
|
|
3441
|
+
},
|
|
3442
|
+
forceUpdate: function forceUpdate() {
|
|
3443
|
+
if (isDestroyed) {
|
|
3444
|
+
return;
|
|
3445
|
+
}
|
|
3446
|
+
var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;
|
|
3447
|
+
if (!areValidElements(reference3, popper3)) {
|
|
3448
|
+
if (true) {
|
|
3449
|
+
console.error(INVALID_ELEMENT_ERROR);
|
|
3450
|
+
}
|
|
3451
|
+
return;
|
|
3452
|
+
}
|
|
3453
|
+
state.rects = {
|
|
3454
|
+
reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"),
|
|
3455
|
+
popper: getLayoutRect(popper3)
|
|
3456
|
+
};
|
|
3457
|
+
state.reset = false;
|
|
3458
|
+
state.placement = state.options.placement;
|
|
3459
|
+
state.orderedModifiers.forEach(function(modifier) {
|
|
3460
|
+
return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
|
|
3461
|
+
});
|
|
3462
|
+
var __debug_loops__ = 0;
|
|
3463
|
+
for (var index = 0; index < state.orderedModifiers.length; index++) {
|
|
3464
|
+
if (true) {
|
|
3465
|
+
__debug_loops__ += 1;
|
|
3466
|
+
if (__debug_loops__ > 100) {
|
|
3467
|
+
console.error(INFINITE_LOOP_ERROR);
|
|
3468
|
+
break;
|
|
3469
|
+
}
|
|
3470
|
+
}
|
|
3471
|
+
if (state.reset === true) {
|
|
3472
|
+
state.reset = false;
|
|
3473
|
+
index = -1;
|
|
3474
|
+
continue;
|
|
3475
|
+
}
|
|
3476
|
+
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;
|
|
3477
|
+
if (typeof fn2 === "function") {
|
|
3478
|
+
state = fn2({
|
|
3479
|
+
state,
|
|
3480
|
+
options: _options,
|
|
3481
|
+
name: name6,
|
|
3482
|
+
instance
|
|
3483
|
+
}) || state;
|
|
3484
|
+
}
|
|
3485
|
+
}
|
|
3486
|
+
},
|
|
3487
|
+
update: debounce(function() {
|
|
3488
|
+
return new Promise(function(resolve) {
|
|
3489
|
+
instance.forceUpdate();
|
|
3490
|
+
resolve(state);
|
|
3491
|
+
});
|
|
3492
|
+
}),
|
|
3493
|
+
destroy: function destroy() {
|
|
3494
|
+
cleanupModifierEffects();
|
|
3495
|
+
isDestroyed = true;
|
|
3496
|
+
}
|
|
3497
|
+
};
|
|
3498
|
+
if (!areValidElements(reference2, popper2)) {
|
|
3499
|
+
if (true) {
|
|
3500
|
+
console.error(INVALID_ELEMENT_ERROR);
|
|
3501
|
+
}
|
|
3502
|
+
return instance;
|
|
3503
|
+
}
|
|
3504
|
+
instance.setOptions(options).then(function(state2) {
|
|
3505
|
+
if (!isDestroyed && options.onFirstUpdate) {
|
|
3506
|
+
options.onFirstUpdate(state2);
|
|
3507
|
+
}
|
|
3508
|
+
});
|
|
3509
|
+
function runModifierEffects() {
|
|
3510
|
+
state.orderedModifiers.forEach(function(_ref3) {
|
|
3511
|
+
var name6 = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect5 = _ref3.effect;
|
|
3512
|
+
if (typeof effect5 === "function") {
|
|
3513
|
+
var cleanupFn = effect5({
|
|
3514
|
+
state,
|
|
3515
|
+
name: name6,
|
|
3516
|
+
instance,
|
|
3517
|
+
options: options2
|
|
3518
|
+
});
|
|
3519
|
+
var noopFn = function noopFn2() {
|
|
3520
|
+
};
|
|
3521
|
+
effectCleanupFns.push(cleanupFn || noopFn);
|
|
3522
|
+
}
|
|
3523
|
+
});
|
|
3524
|
+
}
|
|
3525
|
+
function cleanupModifierEffects() {
|
|
3526
|
+
effectCleanupFns.forEach(function(fn2) {
|
|
3527
|
+
return fn2();
|
|
3528
|
+
});
|
|
3529
|
+
effectCleanupFns = [];
|
|
3530
|
+
}
|
|
3531
|
+
return instance;
|
|
3532
|
+
};
|
|
3533
|
+
}
|
|
3534
|
+
|
|
3535
|
+
// ../../node_modules/.pnpm/@popperjs+core@2.11.2/node_modules/@popperjs/core/lib/popper.js
|
|
3536
|
+
var defaultModifiers = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default, offset_default, flip_default, preventOverflow_default, arrow_default, hide_default];
|
|
3537
|
+
var createPopper = /* @__PURE__ */ popperGenerator({
|
|
3538
|
+
defaultModifiers
|
|
3539
|
+
});
|
|
3540
|
+
|
|
3541
|
+
// ../../node_modules/.pnpm/tippy.js@6.3.7/node_modules/tippy.js/dist/tippy.esm.js
|
|
3542
|
+
var BOX_CLASS = "tippy-box";
|
|
3543
|
+
var CONTENT_CLASS = "tippy-content";
|
|
3544
|
+
var BACKDROP_CLASS = "tippy-backdrop";
|
|
3545
|
+
var ARROW_CLASS = "tippy-arrow";
|
|
3546
|
+
var SVG_ARROW_CLASS = "tippy-svg-arrow";
|
|
3547
|
+
var TOUCH_OPTIONS = {
|
|
3548
|
+
passive: true,
|
|
3549
|
+
capture: true
|
|
3550
|
+
};
|
|
3551
|
+
var TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO2() {
|
|
3552
|
+
return document.body;
|
|
3553
|
+
};
|
|
3554
|
+
function hasOwnProperty(obj, key) {
|
|
3555
|
+
return {}.hasOwnProperty.call(obj, key);
|
|
3556
|
+
}
|
|
3557
|
+
function getValueAtIndexOrReturn(value, index, defaultValue) {
|
|
3558
|
+
if (Array.isArray(value)) {
|
|
3559
|
+
var v = value[index];
|
|
3560
|
+
return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;
|
|
3561
|
+
}
|
|
3562
|
+
return value;
|
|
3563
|
+
}
|
|
3564
|
+
function isType(value, type) {
|
|
3565
|
+
var str = {}.toString.call(value);
|
|
3566
|
+
return str.indexOf("[object") === 0 && str.indexOf(type + "]") > -1;
|
|
3567
|
+
}
|
|
3568
|
+
function invokeWithArgsOrReturn(value, args) {
|
|
3569
|
+
return typeof value === "function" ? value.apply(void 0, args) : value;
|
|
3570
|
+
}
|
|
3571
|
+
function debounce2(fn2, ms) {
|
|
3572
|
+
if (ms === 0) {
|
|
3573
|
+
return fn2;
|
|
3574
|
+
}
|
|
3575
|
+
var timeout;
|
|
3576
|
+
return function(arg) {
|
|
3577
|
+
clearTimeout(timeout);
|
|
3578
|
+
timeout = setTimeout(function() {
|
|
3579
|
+
fn2(arg);
|
|
3580
|
+
}, ms);
|
|
3581
|
+
};
|
|
3582
|
+
}
|
|
3583
|
+
function removeProperties(obj, keys) {
|
|
3584
|
+
var clone = Object.assign({}, obj);
|
|
3585
|
+
keys.forEach(function(key) {
|
|
3586
|
+
delete clone[key];
|
|
3587
|
+
});
|
|
3588
|
+
return clone;
|
|
3589
|
+
}
|
|
3590
|
+
function splitBySpaces(value) {
|
|
3591
|
+
return value.split(/\s+/).filter(Boolean);
|
|
3592
|
+
}
|
|
3593
|
+
function normalizeToArray(value) {
|
|
3594
|
+
return [].concat(value);
|
|
3595
|
+
}
|
|
3596
|
+
function pushIfUnique(arr, value) {
|
|
3597
|
+
if (arr.indexOf(value) === -1) {
|
|
3598
|
+
arr.push(value);
|
|
3599
|
+
}
|
|
3600
|
+
}
|
|
3601
|
+
function unique(arr) {
|
|
3602
|
+
return arr.filter(function(item, index) {
|
|
3603
|
+
return arr.indexOf(item) === index;
|
|
3604
|
+
});
|
|
3605
|
+
}
|
|
3606
|
+
function getBasePlacement2(placement) {
|
|
3607
|
+
return placement.split("-")[0];
|
|
3608
|
+
}
|
|
3609
|
+
function arrayFrom(value) {
|
|
3610
|
+
return [].slice.call(value);
|
|
3611
|
+
}
|
|
3612
|
+
function removeUndefinedProps(obj) {
|
|
3613
|
+
return Object.keys(obj).reduce(function(acc, key) {
|
|
3614
|
+
if (obj[key] !== void 0) {
|
|
3615
|
+
acc[key] = obj[key];
|
|
3616
|
+
}
|
|
3617
|
+
return acc;
|
|
3618
|
+
}, {});
|
|
3619
|
+
}
|
|
3620
|
+
function div() {
|
|
3621
|
+
return document.createElement("div");
|
|
3622
|
+
}
|
|
3623
|
+
function isElement2(value) {
|
|
3624
|
+
return ["Element", "Fragment"].some(function(type) {
|
|
3625
|
+
return isType(value, type);
|
|
3626
|
+
});
|
|
3627
|
+
}
|
|
3628
|
+
function isNodeList(value) {
|
|
3629
|
+
return isType(value, "NodeList");
|
|
3630
|
+
}
|
|
3631
|
+
function isMouseEvent(value) {
|
|
3632
|
+
return isType(value, "MouseEvent");
|
|
3633
|
+
}
|
|
3634
|
+
function isReferenceElement(value) {
|
|
3635
|
+
return !!(value && value._tippy && value._tippy.reference === value);
|
|
3636
|
+
}
|
|
3637
|
+
function getArrayOfElements(value) {
|
|
3638
|
+
if (isElement2(value)) {
|
|
3639
|
+
return [value];
|
|
3640
|
+
}
|
|
3641
|
+
if (isNodeList(value)) {
|
|
3642
|
+
return arrayFrom(value);
|
|
3643
|
+
}
|
|
3644
|
+
if (Array.isArray(value)) {
|
|
3645
|
+
return value;
|
|
3646
|
+
}
|
|
3647
|
+
return arrayFrom(document.querySelectorAll(value));
|
|
3648
|
+
}
|
|
3649
|
+
function setTransitionDuration(els, value) {
|
|
3650
|
+
els.forEach(function(el) {
|
|
3651
|
+
if (el) {
|
|
3652
|
+
el.style.transitionDuration = value + "ms";
|
|
3653
|
+
}
|
|
3654
|
+
});
|
|
3655
|
+
}
|
|
3656
|
+
function setVisibilityState(els, state) {
|
|
3657
|
+
els.forEach(function(el) {
|
|
3658
|
+
if (el) {
|
|
3659
|
+
el.setAttribute("data-state", state);
|
|
3660
|
+
}
|
|
3661
|
+
});
|
|
3662
|
+
}
|
|
3663
|
+
function getOwnerDocument(elementOrElements) {
|
|
3664
|
+
var _element$ownerDocumen;
|
|
3665
|
+
var _normalizeToArray = normalizeToArray(elementOrElements), element = _normalizeToArray[0];
|
|
3666
|
+
return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;
|
|
3667
|
+
}
|
|
3668
|
+
function isCursorOutsideInteractiveBorder(popperTreeData, event) {
|
|
3669
|
+
var clientX = event.clientX, clientY = event.clientY;
|
|
3670
|
+
return popperTreeData.every(function(_ref) {
|
|
3671
|
+
var popperRect = _ref.popperRect, popperState = _ref.popperState, props = _ref.props;
|
|
3672
|
+
var interactiveBorder = props.interactiveBorder;
|
|
3673
|
+
var basePlacement = getBasePlacement2(popperState.placement);
|
|
3674
|
+
var offsetData = popperState.modifiersData.offset;
|
|
3675
|
+
if (!offsetData) {
|
|
3676
|
+
return true;
|
|
3677
|
+
}
|
|
3678
|
+
var topDistance = basePlacement === "bottom" ? offsetData.top.y : 0;
|
|
3679
|
+
var bottomDistance = basePlacement === "top" ? offsetData.bottom.y : 0;
|
|
3680
|
+
var leftDistance = basePlacement === "right" ? offsetData.left.x : 0;
|
|
3681
|
+
var rightDistance = basePlacement === "left" ? offsetData.right.x : 0;
|
|
3682
|
+
var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;
|
|
3683
|
+
var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;
|
|
3684
|
+
var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;
|
|
3685
|
+
var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;
|
|
3686
|
+
return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;
|
|
3687
|
+
});
|
|
3688
|
+
}
|
|
3689
|
+
function updateTransitionEndListener(box, action, listener) {
|
|
3690
|
+
var method = action + "EventListener";
|
|
3691
|
+
["transitionend", "webkitTransitionEnd"].forEach(function(event) {
|
|
3692
|
+
box[method](event, listener);
|
|
3693
|
+
});
|
|
3694
|
+
}
|
|
3695
|
+
function actualContains(parent, child) {
|
|
3696
|
+
var target = child;
|
|
3697
|
+
while (target) {
|
|
3698
|
+
var _target$getRootNode;
|
|
3699
|
+
if (parent.contains(target)) {
|
|
3700
|
+
return true;
|
|
3701
|
+
}
|
|
3702
|
+
target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;
|
|
3703
|
+
}
|
|
3704
|
+
return false;
|
|
3705
|
+
}
|
|
3706
|
+
var currentInput = {
|
|
3707
|
+
isTouch: false
|
|
3708
|
+
};
|
|
3709
|
+
var lastMouseMoveTime = 0;
|
|
3710
|
+
function onDocumentTouchStart() {
|
|
3711
|
+
if (currentInput.isTouch) {
|
|
3712
|
+
return;
|
|
3713
|
+
}
|
|
3714
|
+
currentInput.isTouch = true;
|
|
3715
|
+
if (window.performance) {
|
|
3716
|
+
document.addEventListener("mousemove", onDocumentMouseMove);
|
|
3717
|
+
}
|
|
3718
|
+
}
|
|
3719
|
+
function onDocumentMouseMove() {
|
|
3720
|
+
var now = performance.now();
|
|
3721
|
+
if (now - lastMouseMoveTime < 20) {
|
|
3722
|
+
currentInput.isTouch = false;
|
|
3723
|
+
document.removeEventListener("mousemove", onDocumentMouseMove);
|
|
3724
|
+
}
|
|
3725
|
+
lastMouseMoveTime = now;
|
|
3726
|
+
}
|
|
3727
|
+
function onWindowBlur() {
|
|
3728
|
+
var activeElement = document.activeElement;
|
|
3729
|
+
if (isReferenceElement(activeElement)) {
|
|
3730
|
+
var instance = activeElement._tippy;
|
|
3731
|
+
if (activeElement.blur && !instance.state.isVisible) {
|
|
3732
|
+
activeElement.blur();
|
|
3733
|
+
}
|
|
3734
|
+
}
|
|
3735
|
+
}
|
|
3736
|
+
function bindGlobalEventListeners() {
|
|
3737
|
+
document.addEventListener("touchstart", onDocumentTouchStart, TOUCH_OPTIONS);
|
|
3738
|
+
window.addEventListener("blur", onWindowBlur);
|
|
3739
|
+
}
|
|
3740
|
+
var isBrowser = typeof window !== "undefined" && typeof document !== "undefined";
|
|
3741
|
+
var isIE11 = isBrowser ? !!window.msCrypto : false;
|
|
3742
|
+
function createMemoryLeakWarning(method) {
|
|
3743
|
+
var txt = method === "destroy" ? "n already-" : " ";
|
|
3744
|
+
return [method + "() was called on a" + txt + "destroyed instance. This is a no-op but", "indicates a potential memory leak."].join(" ");
|
|
3745
|
+
}
|
|
3746
|
+
function clean(value) {
|
|
3747
|
+
var spacesAndTabs = /[ \t]{2,}/g;
|
|
3748
|
+
var lineStartWithSpaces = /^[ \t]*/gm;
|
|
3749
|
+
return value.replace(spacesAndTabs, " ").replace(lineStartWithSpaces, "").trim();
|
|
3750
|
+
}
|
|
3751
|
+
function getDevMessage(message) {
|
|
3752
|
+
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 ");
|
|
3753
|
+
}
|
|
3754
|
+
function getFormattedMessage(message) {
|
|
3755
|
+
return [
|
|
3756
|
+
getDevMessage(message),
|
|
3757
|
+
"color: #00C584; font-size: 1.3em; font-weight: bold;",
|
|
3758
|
+
"line-height: 1.5",
|
|
3759
|
+
"color: #a6a095;"
|
|
3760
|
+
];
|
|
3761
|
+
}
|
|
3762
|
+
var visitedMessages;
|
|
3763
|
+
if (true) {
|
|
3764
|
+
resetVisitedMessages();
|
|
3765
|
+
}
|
|
3766
|
+
function resetVisitedMessages() {
|
|
3767
|
+
visitedMessages = /* @__PURE__ */ new Set();
|
|
3768
|
+
}
|
|
3769
|
+
function warnWhen(condition, message) {
|
|
3770
|
+
if (condition && !visitedMessages.has(message)) {
|
|
3771
|
+
var _console;
|
|
3772
|
+
visitedMessages.add(message);
|
|
3773
|
+
(_console = console).warn.apply(_console, getFormattedMessage(message));
|
|
3774
|
+
}
|
|
3775
|
+
}
|
|
3776
|
+
function errorWhen(condition, message) {
|
|
3777
|
+
if (condition && !visitedMessages.has(message)) {
|
|
3778
|
+
var _console2;
|
|
3779
|
+
visitedMessages.add(message);
|
|
3780
|
+
(_console2 = console).error.apply(_console2, getFormattedMessage(message));
|
|
3781
|
+
}
|
|
3782
|
+
}
|
|
3783
|
+
function validateTargets(targets) {
|
|
3784
|
+
var didPassFalsyValue = !targets;
|
|
3785
|
+
var didPassPlainObject = Object.prototype.toString.call(targets) === "[object Object]" && !targets.addEventListener;
|
|
3786
|
+
errorWhen(didPassFalsyValue, ["tippy() was passed", "`" + String(targets) + "`", "as its targets (first) argument. Valid types are: String, Element,", "Element[], or NodeList."].join(" "));
|
|
3787
|
+
errorWhen(didPassPlainObject, ["tippy() was passed a plain object which is not supported as an argument", "for virtual positioning. Use props.getReferenceClientRect instead."].join(" "));
|
|
3788
|
+
}
|
|
3789
|
+
var pluginProps = {
|
|
3790
|
+
animateFill: false,
|
|
3791
|
+
followCursor: false,
|
|
3792
|
+
inlinePositioning: false,
|
|
3793
|
+
sticky: false
|
|
3794
|
+
};
|
|
3795
|
+
var renderProps = {
|
|
3796
|
+
allowHTML: false,
|
|
3797
|
+
animation: "fade",
|
|
3798
|
+
arrow: true,
|
|
3799
|
+
content: "",
|
|
3800
|
+
inertia: false,
|
|
3801
|
+
maxWidth: 350,
|
|
3802
|
+
role: "tooltip",
|
|
3803
|
+
theme: "",
|
|
3804
|
+
zIndex: 9999
|
|
3805
|
+
};
|
|
3806
|
+
var defaultProps = Object.assign({
|
|
3807
|
+
appendTo: TIPPY_DEFAULT_APPEND_TO,
|
|
3808
|
+
aria: {
|
|
3809
|
+
content: "auto",
|
|
3810
|
+
expanded: "auto"
|
|
3811
|
+
},
|
|
3812
|
+
delay: 0,
|
|
3813
|
+
duration: [300, 250],
|
|
3814
|
+
getReferenceClientRect: null,
|
|
3815
|
+
hideOnClick: true,
|
|
3816
|
+
ignoreAttributes: false,
|
|
3817
|
+
interactive: false,
|
|
3818
|
+
interactiveBorder: 2,
|
|
3819
|
+
interactiveDebounce: 0,
|
|
3820
|
+
moveTransition: "",
|
|
3821
|
+
offset: [0, 10],
|
|
3822
|
+
onAfterUpdate: function onAfterUpdate() {
|
|
3823
|
+
},
|
|
3824
|
+
onBeforeUpdate: function onBeforeUpdate() {
|
|
3825
|
+
},
|
|
3826
|
+
onCreate: function onCreate() {
|
|
3827
|
+
},
|
|
3828
|
+
onDestroy: function onDestroy() {
|
|
3829
|
+
},
|
|
3830
|
+
onHidden: function onHidden() {
|
|
3831
|
+
},
|
|
3832
|
+
onHide: function onHide() {
|
|
3833
|
+
},
|
|
3834
|
+
onMount: function onMount() {
|
|
3835
|
+
},
|
|
3836
|
+
onShow: function onShow() {
|
|
3837
|
+
},
|
|
3838
|
+
onShown: function onShown() {
|
|
3839
|
+
},
|
|
3840
|
+
onTrigger: function onTrigger() {
|
|
3841
|
+
},
|
|
3842
|
+
onUntrigger: function onUntrigger() {
|
|
3843
|
+
},
|
|
3844
|
+
onClickOutside: function onClickOutside() {
|
|
3845
|
+
},
|
|
3846
|
+
placement: "top",
|
|
3847
|
+
plugins: [],
|
|
3848
|
+
popperOptions: {},
|
|
3849
|
+
render: null,
|
|
3850
|
+
showOnCreate: false,
|
|
3851
|
+
touch: true,
|
|
3852
|
+
trigger: "mouseenter focus",
|
|
3853
|
+
triggerTarget: null
|
|
3854
|
+
}, pluginProps, renderProps);
|
|
3855
|
+
var defaultKeys = Object.keys(defaultProps);
|
|
3856
|
+
var setDefaultProps = function setDefaultProps2(partialProps) {
|
|
3857
|
+
if (true) {
|
|
3858
|
+
validateProps(partialProps, []);
|
|
3859
|
+
}
|
|
3860
|
+
var keys = Object.keys(partialProps);
|
|
3861
|
+
keys.forEach(function(key) {
|
|
3862
|
+
defaultProps[key] = partialProps[key];
|
|
3863
|
+
});
|
|
3864
|
+
};
|
|
3865
|
+
function getExtendedPassedProps(passedProps) {
|
|
3866
|
+
var plugins = passedProps.plugins || [];
|
|
3867
|
+
var pluginProps2 = plugins.reduce(function(acc, plugin) {
|
|
3868
|
+
var name6 = plugin.name, defaultValue = plugin.defaultValue;
|
|
3869
|
+
if (name6) {
|
|
3870
|
+
var _name;
|
|
3871
|
+
acc[name6] = passedProps[name6] !== void 0 ? passedProps[name6] : (_name = defaultProps[name6]) != null ? _name : defaultValue;
|
|
3872
|
+
}
|
|
3873
|
+
return acc;
|
|
3874
|
+
}, {});
|
|
3875
|
+
return Object.assign({}, passedProps, pluginProps2);
|
|
3876
|
+
}
|
|
3877
|
+
function getDataAttributeProps(reference2, plugins) {
|
|
3878
|
+
var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {
|
|
3879
|
+
plugins
|
|
3880
|
+
}))) : defaultKeys;
|
|
3881
|
+
var props = propKeys.reduce(function(acc, key) {
|
|
3882
|
+
var valueAsString = (reference2.getAttribute("data-tippy-" + key) || "").trim();
|
|
3883
|
+
if (!valueAsString) {
|
|
3884
|
+
return acc;
|
|
3885
|
+
}
|
|
3886
|
+
if (key === "content") {
|
|
3887
|
+
acc[key] = valueAsString;
|
|
3888
|
+
} else {
|
|
3889
|
+
try {
|
|
3890
|
+
acc[key] = JSON.parse(valueAsString);
|
|
3891
|
+
} catch (e) {
|
|
3892
|
+
acc[key] = valueAsString;
|
|
3893
|
+
}
|
|
3894
|
+
}
|
|
3895
|
+
return acc;
|
|
3896
|
+
}, {});
|
|
3897
|
+
return props;
|
|
3898
|
+
}
|
|
3899
|
+
function evaluateProps(reference2, props) {
|
|
3900
|
+
var out = Object.assign({}, props, {
|
|
3901
|
+
content: invokeWithArgsOrReturn(props.content, [reference2])
|
|
3902
|
+
}, props.ignoreAttributes ? {} : getDataAttributeProps(reference2, props.plugins));
|
|
3903
|
+
out.aria = Object.assign({}, defaultProps.aria, out.aria);
|
|
3904
|
+
out.aria = {
|
|
3905
|
+
expanded: out.aria.expanded === "auto" ? props.interactive : out.aria.expanded,
|
|
3906
|
+
content: out.aria.content === "auto" ? props.interactive ? null : "describedby" : out.aria.content
|
|
3907
|
+
};
|
|
3908
|
+
return out;
|
|
3909
|
+
}
|
|
3910
|
+
function validateProps(partialProps, plugins) {
|
|
3911
|
+
if (partialProps === void 0) {
|
|
3912
|
+
partialProps = {};
|
|
3913
|
+
}
|
|
3914
|
+
if (plugins === void 0) {
|
|
3915
|
+
plugins = [];
|
|
3916
|
+
}
|
|
3917
|
+
var keys = Object.keys(partialProps);
|
|
3918
|
+
keys.forEach(function(prop) {
|
|
3919
|
+
var nonPluginProps = removeProperties(defaultProps, Object.keys(pluginProps));
|
|
3920
|
+
var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop);
|
|
3921
|
+
if (didPassUnknownProp) {
|
|
3922
|
+
didPassUnknownProp = plugins.filter(function(plugin) {
|
|
3923
|
+
return plugin.name === prop;
|
|
3924
|
+
}).length === 0;
|
|
3925
|
+
}
|
|
3926
|
+
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(" "));
|
|
3927
|
+
});
|
|
3928
|
+
}
|
|
3929
|
+
var innerHTML = function innerHTML2() {
|
|
3930
|
+
return "innerHTML";
|
|
3931
|
+
};
|
|
3932
|
+
function dangerouslySetInnerHTML(element, html) {
|
|
3933
|
+
element[innerHTML()] = html;
|
|
3934
|
+
}
|
|
3935
|
+
function createArrowElement(value) {
|
|
3936
|
+
var arrow2 = div();
|
|
3937
|
+
if (value === true) {
|
|
3938
|
+
arrow2.className = ARROW_CLASS;
|
|
3939
|
+
} else {
|
|
3940
|
+
arrow2.className = SVG_ARROW_CLASS;
|
|
3941
|
+
if (isElement2(value)) {
|
|
3942
|
+
arrow2.appendChild(value);
|
|
3943
|
+
} else {
|
|
3944
|
+
dangerouslySetInnerHTML(arrow2, value);
|
|
3945
|
+
}
|
|
3946
|
+
}
|
|
3947
|
+
return arrow2;
|
|
3948
|
+
}
|
|
3949
|
+
function setContent(content, props) {
|
|
3950
|
+
if (isElement2(props.content)) {
|
|
3951
|
+
dangerouslySetInnerHTML(content, "");
|
|
3952
|
+
content.appendChild(props.content);
|
|
3953
|
+
} else if (typeof props.content !== "function") {
|
|
3954
|
+
if (props.allowHTML) {
|
|
3955
|
+
dangerouslySetInnerHTML(content, props.content);
|
|
3956
|
+
} else {
|
|
3957
|
+
content.textContent = props.content;
|
|
3958
|
+
}
|
|
3959
|
+
}
|
|
3960
|
+
}
|
|
3961
|
+
function getChildren(popper2) {
|
|
3962
|
+
var box = popper2.firstElementChild;
|
|
3963
|
+
var boxChildren = arrayFrom(box.children);
|
|
3964
|
+
return {
|
|
3965
|
+
box,
|
|
3966
|
+
content: boxChildren.find(function(node) {
|
|
3967
|
+
return node.classList.contains(CONTENT_CLASS);
|
|
3968
|
+
}),
|
|
3969
|
+
arrow: boxChildren.find(function(node) {
|
|
3970
|
+
return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);
|
|
3971
|
+
}),
|
|
3972
|
+
backdrop: boxChildren.find(function(node) {
|
|
3973
|
+
return node.classList.contains(BACKDROP_CLASS);
|
|
3974
|
+
})
|
|
3975
|
+
};
|
|
3976
|
+
}
|
|
3977
|
+
function render(instance) {
|
|
3978
|
+
var popper2 = div();
|
|
3979
|
+
var box = div();
|
|
3980
|
+
box.className = BOX_CLASS;
|
|
3981
|
+
box.setAttribute("data-state", "hidden");
|
|
3982
|
+
box.setAttribute("tabindex", "-1");
|
|
3983
|
+
var content = div();
|
|
3984
|
+
content.className = CONTENT_CLASS;
|
|
3985
|
+
content.setAttribute("data-state", "hidden");
|
|
3986
|
+
setContent(content, instance.props);
|
|
3987
|
+
popper2.appendChild(box);
|
|
3988
|
+
box.appendChild(content);
|
|
3989
|
+
onUpdate(instance.props, instance.props);
|
|
3990
|
+
function onUpdate(prevProps, nextProps) {
|
|
3991
|
+
var _getChildren = getChildren(popper2), box2 = _getChildren.box, content2 = _getChildren.content, arrow2 = _getChildren.arrow;
|
|
3992
|
+
if (nextProps.theme) {
|
|
3993
|
+
box2.setAttribute("data-theme", nextProps.theme);
|
|
3994
|
+
} else {
|
|
3995
|
+
box2.removeAttribute("data-theme");
|
|
3996
|
+
}
|
|
3997
|
+
if (typeof nextProps.animation === "string") {
|
|
3998
|
+
box2.setAttribute("data-animation", nextProps.animation);
|
|
3999
|
+
} else {
|
|
4000
|
+
box2.removeAttribute("data-animation");
|
|
4001
|
+
}
|
|
4002
|
+
if (nextProps.inertia) {
|
|
4003
|
+
box2.setAttribute("data-inertia", "");
|
|
4004
|
+
} else {
|
|
4005
|
+
box2.removeAttribute("data-inertia");
|
|
4006
|
+
}
|
|
4007
|
+
box2.style.maxWidth = typeof nextProps.maxWidth === "number" ? nextProps.maxWidth + "px" : nextProps.maxWidth;
|
|
4008
|
+
if (nextProps.role) {
|
|
4009
|
+
box2.setAttribute("role", nextProps.role);
|
|
4010
|
+
} else {
|
|
4011
|
+
box2.removeAttribute("role");
|
|
4012
|
+
}
|
|
4013
|
+
if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) {
|
|
4014
|
+
setContent(content2, instance.props);
|
|
4015
|
+
}
|
|
4016
|
+
if (nextProps.arrow) {
|
|
4017
|
+
if (!arrow2) {
|
|
4018
|
+
box2.appendChild(createArrowElement(nextProps.arrow));
|
|
4019
|
+
} else if (prevProps.arrow !== nextProps.arrow) {
|
|
4020
|
+
box2.removeChild(arrow2);
|
|
4021
|
+
box2.appendChild(createArrowElement(nextProps.arrow));
|
|
4022
|
+
}
|
|
4023
|
+
} else if (arrow2) {
|
|
4024
|
+
box2.removeChild(arrow2);
|
|
4025
|
+
}
|
|
4026
|
+
}
|
|
4027
|
+
return {
|
|
4028
|
+
popper: popper2,
|
|
4029
|
+
onUpdate
|
|
4030
|
+
};
|
|
4031
|
+
}
|
|
4032
|
+
render.$$tippy = true;
|
|
4033
|
+
var idCounter = 1;
|
|
4034
|
+
var mouseMoveListeners = [];
|
|
4035
|
+
var mountedInstances = [];
|
|
4036
|
+
function createTippy(reference2, passedProps) {
|
|
4037
|
+
var props = evaluateProps(reference2, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps))));
|
|
4038
|
+
var showTimeout;
|
|
4039
|
+
var hideTimeout;
|
|
4040
|
+
var scheduleHideAnimationFrame;
|
|
4041
|
+
var isVisibleFromClick = false;
|
|
4042
|
+
var didHideDueToDocumentMouseDown = false;
|
|
4043
|
+
var didTouchMove = false;
|
|
4044
|
+
var ignoreOnFirstUpdate = false;
|
|
4045
|
+
var lastTriggerEvent;
|
|
4046
|
+
var currentTransitionEndListener;
|
|
4047
|
+
var onFirstUpdate;
|
|
4048
|
+
var listeners = [];
|
|
4049
|
+
var debouncedOnMouseMove = debounce2(onMouseMove, props.interactiveDebounce);
|
|
4050
|
+
var currentTarget;
|
|
4051
|
+
var id = idCounter++;
|
|
4052
|
+
var popperInstance = null;
|
|
4053
|
+
var plugins = unique(props.plugins);
|
|
4054
|
+
var state = {
|
|
4055
|
+
isEnabled: true,
|
|
4056
|
+
isVisible: false,
|
|
4057
|
+
isDestroyed: false,
|
|
4058
|
+
isMounted: false,
|
|
4059
|
+
isShown: false
|
|
4060
|
+
};
|
|
4061
|
+
var instance = {
|
|
4062
|
+
id,
|
|
4063
|
+
reference: reference2,
|
|
4064
|
+
popper: div(),
|
|
4065
|
+
popperInstance,
|
|
4066
|
+
props,
|
|
4067
|
+
state,
|
|
4068
|
+
plugins,
|
|
4069
|
+
clearDelayTimeouts,
|
|
4070
|
+
setProps,
|
|
4071
|
+
setContent: setContent2,
|
|
4072
|
+
show,
|
|
4073
|
+
hide: hide2,
|
|
4074
|
+
hideWithInteractivity,
|
|
4075
|
+
enable,
|
|
4076
|
+
disable,
|
|
4077
|
+
unmount,
|
|
4078
|
+
destroy
|
|
4079
|
+
};
|
|
4080
|
+
if (!props.render) {
|
|
4081
|
+
if (true) {
|
|
4082
|
+
errorWhen(true, "render() function has not been supplied.");
|
|
4083
|
+
}
|
|
4084
|
+
return instance;
|
|
4085
|
+
}
|
|
4086
|
+
var _props$render = props.render(instance), popper2 = _props$render.popper, onUpdate = _props$render.onUpdate;
|
|
4087
|
+
popper2.setAttribute("data-tippy-root", "");
|
|
4088
|
+
popper2.id = "tippy-" + instance.id;
|
|
4089
|
+
instance.popper = popper2;
|
|
4090
|
+
reference2._tippy = instance;
|
|
4091
|
+
popper2._tippy = instance;
|
|
4092
|
+
var pluginsHooks = plugins.map(function(plugin) {
|
|
4093
|
+
return plugin.fn(instance);
|
|
4094
|
+
});
|
|
4095
|
+
var hasAriaExpanded = reference2.hasAttribute("aria-expanded");
|
|
4096
|
+
addListeners();
|
|
4097
|
+
handleAriaExpandedAttribute();
|
|
4098
|
+
handleStyles();
|
|
4099
|
+
invokeHook("onCreate", [instance]);
|
|
4100
|
+
if (props.showOnCreate) {
|
|
4101
|
+
scheduleShow();
|
|
4102
|
+
}
|
|
4103
|
+
popper2.addEventListener("mouseenter", function() {
|
|
4104
|
+
if (instance.props.interactive && instance.state.isVisible) {
|
|
4105
|
+
instance.clearDelayTimeouts();
|
|
4106
|
+
}
|
|
4107
|
+
});
|
|
4108
|
+
popper2.addEventListener("mouseleave", function() {
|
|
4109
|
+
if (instance.props.interactive && instance.props.trigger.indexOf("mouseenter") >= 0) {
|
|
4110
|
+
getDocument().addEventListener("mousemove", debouncedOnMouseMove);
|
|
4111
|
+
}
|
|
4112
|
+
});
|
|
4113
|
+
return instance;
|
|
4114
|
+
function getNormalizedTouchSettings() {
|
|
4115
|
+
var touch = instance.props.touch;
|
|
4116
|
+
return Array.isArray(touch) ? touch : [touch, 0];
|
|
4117
|
+
}
|
|
4118
|
+
function getIsCustomTouchBehavior() {
|
|
4119
|
+
return getNormalizedTouchSettings()[0] === "hold";
|
|
4120
|
+
}
|
|
4121
|
+
function getIsDefaultRenderFn() {
|
|
4122
|
+
var _instance$props$rende;
|
|
4123
|
+
return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);
|
|
4124
|
+
}
|
|
4125
|
+
function getCurrentTarget() {
|
|
4126
|
+
return currentTarget || reference2;
|
|
4127
|
+
}
|
|
4128
|
+
function getDocument() {
|
|
4129
|
+
var parent = getCurrentTarget().parentNode;
|
|
4130
|
+
return parent ? getOwnerDocument(parent) : document;
|
|
4131
|
+
}
|
|
4132
|
+
function getDefaultTemplateChildren() {
|
|
4133
|
+
return getChildren(popper2);
|
|
4134
|
+
}
|
|
4135
|
+
function getDelay(isShow) {
|
|
4136
|
+
if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === "focus") {
|
|
4137
|
+
return 0;
|
|
4138
|
+
}
|
|
4139
|
+
return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);
|
|
4140
|
+
}
|
|
4141
|
+
function handleStyles(fromHide) {
|
|
4142
|
+
if (fromHide === void 0) {
|
|
4143
|
+
fromHide = false;
|
|
4144
|
+
}
|
|
4145
|
+
popper2.style.pointerEvents = instance.props.interactive && !fromHide ? "" : "none";
|
|
4146
|
+
popper2.style.zIndex = "" + instance.props.zIndex;
|
|
4147
|
+
}
|
|
4148
|
+
function invokeHook(hook, args, shouldInvokePropsHook) {
|
|
4149
|
+
if (shouldInvokePropsHook === void 0) {
|
|
4150
|
+
shouldInvokePropsHook = true;
|
|
4151
|
+
}
|
|
4152
|
+
pluginsHooks.forEach(function(pluginHooks) {
|
|
4153
|
+
if (pluginHooks[hook]) {
|
|
4154
|
+
pluginHooks[hook].apply(pluginHooks, args);
|
|
4155
|
+
}
|
|
4156
|
+
});
|
|
4157
|
+
if (shouldInvokePropsHook) {
|
|
4158
|
+
var _instance$props;
|
|
4159
|
+
(_instance$props = instance.props)[hook].apply(_instance$props, args);
|
|
4160
|
+
}
|
|
4161
|
+
}
|
|
4162
|
+
function handleAriaContentAttribute() {
|
|
4163
|
+
var aria = instance.props.aria;
|
|
4164
|
+
if (!aria.content) {
|
|
4165
|
+
return;
|
|
4166
|
+
}
|
|
4167
|
+
var attr = "aria-" + aria.content;
|
|
4168
|
+
var id2 = popper2.id;
|
|
4169
|
+
var nodes = normalizeToArray(instance.props.triggerTarget || reference2);
|
|
4170
|
+
nodes.forEach(function(node) {
|
|
4171
|
+
var currentValue = node.getAttribute(attr);
|
|
4172
|
+
if (instance.state.isVisible) {
|
|
4173
|
+
node.setAttribute(attr, currentValue ? currentValue + " " + id2 : id2);
|
|
4174
|
+
} else {
|
|
4175
|
+
var nextValue = currentValue && currentValue.replace(id2, "").trim();
|
|
4176
|
+
if (nextValue) {
|
|
4177
|
+
node.setAttribute(attr, nextValue);
|
|
4178
|
+
} else {
|
|
4179
|
+
node.removeAttribute(attr);
|
|
4180
|
+
}
|
|
4181
|
+
}
|
|
4182
|
+
});
|
|
4183
|
+
}
|
|
4184
|
+
function handleAriaExpandedAttribute() {
|
|
4185
|
+
if (hasAriaExpanded || !instance.props.aria.expanded) {
|
|
4186
|
+
return;
|
|
4187
|
+
}
|
|
4188
|
+
var nodes = normalizeToArray(instance.props.triggerTarget || reference2);
|
|
4189
|
+
nodes.forEach(function(node) {
|
|
4190
|
+
if (instance.props.interactive) {
|
|
4191
|
+
node.setAttribute("aria-expanded", instance.state.isVisible && node === getCurrentTarget() ? "true" : "false");
|
|
4192
|
+
} else {
|
|
4193
|
+
node.removeAttribute("aria-expanded");
|
|
4194
|
+
}
|
|
4195
|
+
});
|
|
4196
|
+
}
|
|
4197
|
+
function cleanupInteractiveMouseListeners() {
|
|
4198
|
+
getDocument().removeEventListener("mousemove", debouncedOnMouseMove);
|
|
4199
|
+
mouseMoveListeners = mouseMoveListeners.filter(function(listener) {
|
|
4200
|
+
return listener !== debouncedOnMouseMove;
|
|
4201
|
+
});
|
|
4202
|
+
}
|
|
4203
|
+
function onDocumentPress(event) {
|
|
4204
|
+
if (currentInput.isTouch) {
|
|
4205
|
+
if (didTouchMove || event.type === "mousedown") {
|
|
4206
|
+
return;
|
|
4207
|
+
}
|
|
4208
|
+
}
|
|
4209
|
+
var actualTarget = event.composedPath && event.composedPath()[0] || event.target;
|
|
4210
|
+
if (instance.props.interactive && actualContains(popper2, actualTarget)) {
|
|
4211
|
+
return;
|
|
4212
|
+
}
|
|
4213
|
+
if (normalizeToArray(instance.props.triggerTarget || reference2).some(function(el) {
|
|
4214
|
+
return actualContains(el, actualTarget);
|
|
4215
|
+
})) {
|
|
4216
|
+
if (currentInput.isTouch) {
|
|
4217
|
+
return;
|
|
4218
|
+
}
|
|
4219
|
+
if (instance.state.isVisible && instance.props.trigger.indexOf("click") >= 0) {
|
|
4220
|
+
return;
|
|
4221
|
+
}
|
|
4222
|
+
} else {
|
|
4223
|
+
invokeHook("onClickOutside", [instance, event]);
|
|
4224
|
+
}
|
|
4225
|
+
if (instance.props.hideOnClick === true) {
|
|
4226
|
+
instance.clearDelayTimeouts();
|
|
4227
|
+
instance.hide();
|
|
4228
|
+
didHideDueToDocumentMouseDown = true;
|
|
4229
|
+
setTimeout(function() {
|
|
4230
|
+
didHideDueToDocumentMouseDown = false;
|
|
4231
|
+
});
|
|
4232
|
+
if (!instance.state.isMounted) {
|
|
4233
|
+
removeDocumentPress();
|
|
4234
|
+
}
|
|
4235
|
+
}
|
|
4236
|
+
}
|
|
4237
|
+
function onTouchMove() {
|
|
4238
|
+
didTouchMove = true;
|
|
4239
|
+
}
|
|
4240
|
+
function onTouchStart() {
|
|
4241
|
+
didTouchMove = false;
|
|
4242
|
+
}
|
|
4243
|
+
function addDocumentPress() {
|
|
4244
|
+
var doc = getDocument();
|
|
4245
|
+
doc.addEventListener("mousedown", onDocumentPress, true);
|
|
4246
|
+
doc.addEventListener("touchend", onDocumentPress, TOUCH_OPTIONS);
|
|
4247
|
+
doc.addEventListener("touchstart", onTouchStart, TOUCH_OPTIONS);
|
|
4248
|
+
doc.addEventListener("touchmove", onTouchMove, TOUCH_OPTIONS);
|
|
4249
|
+
}
|
|
4250
|
+
function removeDocumentPress() {
|
|
4251
|
+
var doc = getDocument();
|
|
4252
|
+
doc.removeEventListener("mousedown", onDocumentPress, true);
|
|
4253
|
+
doc.removeEventListener("touchend", onDocumentPress, TOUCH_OPTIONS);
|
|
4254
|
+
doc.removeEventListener("touchstart", onTouchStart, TOUCH_OPTIONS);
|
|
4255
|
+
doc.removeEventListener("touchmove", onTouchMove, TOUCH_OPTIONS);
|
|
4256
|
+
}
|
|
4257
|
+
function onTransitionedOut(duration, callback) {
|
|
4258
|
+
onTransitionEnd(duration, function() {
|
|
4259
|
+
if (!instance.state.isVisible && popper2.parentNode && popper2.parentNode.contains(popper2)) {
|
|
4260
|
+
callback();
|
|
4261
|
+
}
|
|
4262
|
+
});
|
|
4263
|
+
}
|
|
4264
|
+
function onTransitionedIn(duration, callback) {
|
|
4265
|
+
onTransitionEnd(duration, callback);
|
|
4266
|
+
}
|
|
4267
|
+
function onTransitionEnd(duration, callback) {
|
|
4268
|
+
var box = getDefaultTemplateChildren().box;
|
|
4269
|
+
function listener(event) {
|
|
4270
|
+
if (event.target === box) {
|
|
4271
|
+
updateTransitionEndListener(box, "remove", listener);
|
|
4272
|
+
callback();
|
|
4273
|
+
}
|
|
4274
|
+
}
|
|
4275
|
+
if (duration === 0) {
|
|
4276
|
+
return callback();
|
|
4277
|
+
}
|
|
4278
|
+
updateTransitionEndListener(box, "remove", currentTransitionEndListener);
|
|
4279
|
+
updateTransitionEndListener(box, "add", listener);
|
|
4280
|
+
currentTransitionEndListener = listener;
|
|
4281
|
+
}
|
|
4282
|
+
function on(eventType, handler, options) {
|
|
4283
|
+
if (options === void 0) {
|
|
4284
|
+
options = false;
|
|
4285
|
+
}
|
|
4286
|
+
var nodes = normalizeToArray(instance.props.triggerTarget || reference2);
|
|
4287
|
+
nodes.forEach(function(node) {
|
|
4288
|
+
node.addEventListener(eventType, handler, options);
|
|
4289
|
+
listeners.push({
|
|
4290
|
+
node,
|
|
4291
|
+
eventType,
|
|
4292
|
+
handler,
|
|
4293
|
+
options
|
|
4294
|
+
});
|
|
4295
|
+
});
|
|
4296
|
+
}
|
|
4297
|
+
function addListeners() {
|
|
4298
|
+
if (getIsCustomTouchBehavior()) {
|
|
4299
|
+
on("touchstart", onTrigger2, {
|
|
4300
|
+
passive: true
|
|
4301
|
+
});
|
|
4302
|
+
on("touchend", onMouseLeave, {
|
|
4303
|
+
passive: true
|
|
4304
|
+
});
|
|
4305
|
+
}
|
|
4306
|
+
splitBySpaces(instance.props.trigger).forEach(function(eventType) {
|
|
4307
|
+
if (eventType === "manual") {
|
|
4308
|
+
return;
|
|
4309
|
+
}
|
|
4310
|
+
on(eventType, onTrigger2);
|
|
4311
|
+
switch (eventType) {
|
|
4312
|
+
case "mouseenter":
|
|
4313
|
+
on("mouseleave", onMouseLeave);
|
|
4314
|
+
break;
|
|
4315
|
+
case "focus":
|
|
4316
|
+
on(isIE11 ? "focusout" : "blur", onBlurOrFocusOut);
|
|
4317
|
+
break;
|
|
4318
|
+
case "focusin":
|
|
4319
|
+
on("focusout", onBlurOrFocusOut);
|
|
4320
|
+
break;
|
|
4321
|
+
}
|
|
4322
|
+
});
|
|
4323
|
+
}
|
|
4324
|
+
function removeListeners() {
|
|
4325
|
+
listeners.forEach(function(_ref) {
|
|
4326
|
+
var node = _ref.node, eventType = _ref.eventType, handler = _ref.handler, options = _ref.options;
|
|
4327
|
+
node.removeEventListener(eventType, handler, options);
|
|
4328
|
+
});
|
|
4329
|
+
listeners = [];
|
|
4330
|
+
}
|
|
4331
|
+
function onTrigger2(event) {
|
|
4332
|
+
var _lastTriggerEvent;
|
|
4333
|
+
var shouldScheduleClickHide = false;
|
|
4334
|
+
if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {
|
|
4335
|
+
return;
|
|
4336
|
+
}
|
|
4337
|
+
var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === "focus";
|
|
4338
|
+
lastTriggerEvent = event;
|
|
4339
|
+
currentTarget = event.currentTarget;
|
|
4340
|
+
handleAriaExpandedAttribute();
|
|
4341
|
+
if (!instance.state.isVisible && isMouseEvent(event)) {
|
|
4342
|
+
mouseMoveListeners.forEach(function(listener) {
|
|
4343
|
+
return listener(event);
|
|
4344
|
+
});
|
|
4345
|
+
}
|
|
4346
|
+
if (event.type === "click" && (instance.props.trigger.indexOf("mouseenter") < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {
|
|
4347
|
+
shouldScheduleClickHide = true;
|
|
4348
|
+
} else {
|
|
4349
|
+
scheduleShow(event);
|
|
4350
|
+
}
|
|
4351
|
+
if (event.type === "click") {
|
|
4352
|
+
isVisibleFromClick = !shouldScheduleClickHide;
|
|
4353
|
+
}
|
|
4354
|
+
if (shouldScheduleClickHide && !wasFocused) {
|
|
4355
|
+
scheduleHide(event);
|
|
4356
|
+
}
|
|
4357
|
+
}
|
|
4358
|
+
function onMouseMove(event) {
|
|
4359
|
+
var target = event.target;
|
|
4360
|
+
var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper2.contains(target);
|
|
4361
|
+
if (event.type === "mousemove" && isCursorOverReferenceOrPopper) {
|
|
4362
|
+
return;
|
|
4363
|
+
}
|
|
4364
|
+
var popperTreeData = getNestedPopperTree().concat(popper2).map(function(popper3) {
|
|
4365
|
+
var _instance$popperInsta;
|
|
4366
|
+
var instance2 = popper3._tippy;
|
|
4367
|
+
var state2 = (_instance$popperInsta = instance2.popperInstance) == null ? void 0 : _instance$popperInsta.state;
|
|
4368
|
+
if (state2) {
|
|
4369
|
+
return {
|
|
4370
|
+
popperRect: popper3.getBoundingClientRect(),
|
|
4371
|
+
popperState: state2,
|
|
4372
|
+
props
|
|
4373
|
+
};
|
|
4374
|
+
}
|
|
4375
|
+
return null;
|
|
4376
|
+
}).filter(Boolean);
|
|
4377
|
+
if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {
|
|
4378
|
+
cleanupInteractiveMouseListeners();
|
|
4379
|
+
scheduleHide(event);
|
|
4380
|
+
}
|
|
4381
|
+
}
|
|
4382
|
+
function onMouseLeave(event) {
|
|
4383
|
+
var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf("click") >= 0 && isVisibleFromClick;
|
|
4384
|
+
if (shouldBail) {
|
|
4385
|
+
return;
|
|
4386
|
+
}
|
|
4387
|
+
if (instance.props.interactive) {
|
|
4388
|
+
instance.hideWithInteractivity(event);
|
|
4389
|
+
return;
|
|
4390
|
+
}
|
|
4391
|
+
scheduleHide(event);
|
|
4392
|
+
}
|
|
4393
|
+
function onBlurOrFocusOut(event) {
|
|
4394
|
+
if (instance.props.trigger.indexOf("focusin") < 0 && event.target !== getCurrentTarget()) {
|
|
4395
|
+
return;
|
|
4396
|
+
}
|
|
4397
|
+
if (instance.props.interactive && event.relatedTarget && popper2.contains(event.relatedTarget)) {
|
|
4398
|
+
return;
|
|
4399
|
+
}
|
|
4400
|
+
scheduleHide(event);
|
|
4401
|
+
}
|
|
4402
|
+
function isEventListenerStopped(event) {
|
|
4403
|
+
return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf("touch") >= 0 : false;
|
|
4404
|
+
}
|
|
4405
|
+
function createPopperInstance() {
|
|
4406
|
+
destroyPopperInstance();
|
|
4407
|
+
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;
|
|
4408
|
+
var arrow2 = getIsDefaultRenderFn() ? getChildren(popper2).arrow : null;
|
|
4409
|
+
var computedReference = getReferenceClientRect ? {
|
|
4410
|
+
getBoundingClientRect: getReferenceClientRect,
|
|
4411
|
+
contextElement: getReferenceClientRect.contextElement || getCurrentTarget()
|
|
4412
|
+
} : reference2;
|
|
4413
|
+
var tippyModifier = {
|
|
4414
|
+
name: "$$tippy",
|
|
4415
|
+
enabled: true,
|
|
4416
|
+
phase: "beforeWrite",
|
|
4417
|
+
requires: ["computeStyles"],
|
|
4418
|
+
fn: function fn2(_ref2) {
|
|
4419
|
+
var state2 = _ref2.state;
|
|
4420
|
+
if (getIsDefaultRenderFn()) {
|
|
4421
|
+
var _getDefaultTemplateCh = getDefaultTemplateChildren(), box = _getDefaultTemplateCh.box;
|
|
4422
|
+
["placement", "reference-hidden", "escaped"].forEach(function(attr) {
|
|
4423
|
+
if (attr === "placement") {
|
|
4424
|
+
box.setAttribute("data-placement", state2.placement);
|
|
4425
|
+
} else {
|
|
4426
|
+
if (state2.attributes.popper["data-popper-" + attr]) {
|
|
4427
|
+
box.setAttribute("data-" + attr, "");
|
|
4428
|
+
} else {
|
|
4429
|
+
box.removeAttribute("data-" + attr);
|
|
4430
|
+
}
|
|
4431
|
+
}
|
|
4432
|
+
});
|
|
4433
|
+
state2.attributes.popper = {};
|
|
4434
|
+
}
|
|
4435
|
+
}
|
|
4436
|
+
};
|
|
4437
|
+
var modifiers = [{
|
|
4438
|
+
name: "offset",
|
|
4439
|
+
options: {
|
|
4440
|
+
offset: offset2
|
|
4441
|
+
}
|
|
4442
|
+
}, {
|
|
4443
|
+
name: "preventOverflow",
|
|
4444
|
+
options: {
|
|
4445
|
+
padding: {
|
|
4446
|
+
top: 2,
|
|
4447
|
+
bottom: 2,
|
|
4448
|
+
left: 5,
|
|
4449
|
+
right: 5
|
|
4450
|
+
}
|
|
4451
|
+
}
|
|
4452
|
+
}, {
|
|
4453
|
+
name: "flip",
|
|
4454
|
+
options: {
|
|
4455
|
+
padding: 5
|
|
4456
|
+
}
|
|
4457
|
+
}, {
|
|
4458
|
+
name: "computeStyles",
|
|
4459
|
+
options: {
|
|
4460
|
+
adaptive: !moveTransition
|
|
4461
|
+
}
|
|
4462
|
+
}, tippyModifier];
|
|
4463
|
+
if (getIsDefaultRenderFn() && arrow2) {
|
|
4464
|
+
modifiers.push({
|
|
4465
|
+
name: "arrow",
|
|
4466
|
+
options: {
|
|
4467
|
+
element: arrow2,
|
|
4468
|
+
padding: 3
|
|
4469
|
+
}
|
|
4470
|
+
});
|
|
4471
|
+
}
|
|
4472
|
+
modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);
|
|
4473
|
+
instance.popperInstance = createPopper(computedReference, popper2, Object.assign({}, popperOptions, {
|
|
4474
|
+
placement,
|
|
4475
|
+
onFirstUpdate,
|
|
4476
|
+
modifiers
|
|
4477
|
+
}));
|
|
4478
|
+
}
|
|
4479
|
+
function destroyPopperInstance() {
|
|
4480
|
+
if (instance.popperInstance) {
|
|
4481
|
+
instance.popperInstance.destroy();
|
|
4482
|
+
instance.popperInstance = null;
|
|
4483
|
+
}
|
|
4484
|
+
}
|
|
4485
|
+
function mount2() {
|
|
4486
|
+
var appendTo = instance.props.appendTo;
|
|
4487
|
+
var parentNode;
|
|
4488
|
+
var node = getCurrentTarget();
|
|
4489
|
+
if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === "parent") {
|
|
4490
|
+
parentNode = node.parentNode;
|
|
4491
|
+
} else {
|
|
4492
|
+
parentNode = invokeWithArgsOrReturn(appendTo, [node]);
|
|
4493
|
+
}
|
|
4494
|
+
if (!parentNode.contains(popper2)) {
|
|
4495
|
+
parentNode.appendChild(popper2);
|
|
4496
|
+
}
|
|
4497
|
+
instance.state.isMounted = true;
|
|
4498
|
+
createPopperInstance();
|
|
4499
|
+
if (true) {
|
|
4500
|
+
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(" "));
|
|
4501
|
+
}
|
|
4502
|
+
}
|
|
4503
|
+
function getNestedPopperTree() {
|
|
4504
|
+
return arrayFrom(popper2.querySelectorAll("[data-tippy-root]"));
|
|
4505
|
+
}
|
|
4506
|
+
function scheduleShow(event) {
|
|
4507
|
+
instance.clearDelayTimeouts();
|
|
4508
|
+
if (event) {
|
|
4509
|
+
invokeHook("onTrigger", [instance, event]);
|
|
4510
|
+
}
|
|
4511
|
+
addDocumentPress();
|
|
4512
|
+
var delay = getDelay(true);
|
|
4513
|
+
var _getNormalizedTouchSe = getNormalizedTouchSettings(), touchValue = _getNormalizedTouchSe[0], touchDelay = _getNormalizedTouchSe[1];
|
|
4514
|
+
if (currentInput.isTouch && touchValue === "hold" && touchDelay) {
|
|
4515
|
+
delay = touchDelay;
|
|
4516
|
+
}
|
|
4517
|
+
if (delay) {
|
|
4518
|
+
showTimeout = setTimeout(function() {
|
|
4519
|
+
instance.show();
|
|
4520
|
+
}, delay);
|
|
4521
|
+
} else {
|
|
4522
|
+
instance.show();
|
|
4523
|
+
}
|
|
4524
|
+
}
|
|
4525
|
+
function scheduleHide(event) {
|
|
4526
|
+
instance.clearDelayTimeouts();
|
|
4527
|
+
invokeHook("onUntrigger", [instance, event]);
|
|
4528
|
+
if (!instance.state.isVisible) {
|
|
4529
|
+
removeDocumentPress();
|
|
4530
|
+
return;
|
|
4531
|
+
}
|
|
4532
|
+
if (instance.props.trigger.indexOf("mouseenter") >= 0 && instance.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(event.type) >= 0 && isVisibleFromClick) {
|
|
4533
|
+
return;
|
|
4534
|
+
}
|
|
4535
|
+
var delay = getDelay(false);
|
|
4536
|
+
if (delay) {
|
|
4537
|
+
hideTimeout = setTimeout(function() {
|
|
4538
|
+
if (instance.state.isVisible) {
|
|
4539
|
+
instance.hide();
|
|
4540
|
+
}
|
|
4541
|
+
}, delay);
|
|
4542
|
+
} else {
|
|
4543
|
+
scheduleHideAnimationFrame = requestAnimationFrame(function() {
|
|
4544
|
+
instance.hide();
|
|
4545
|
+
});
|
|
4546
|
+
}
|
|
4547
|
+
}
|
|
4548
|
+
function enable() {
|
|
4549
|
+
instance.state.isEnabled = true;
|
|
4550
|
+
}
|
|
4551
|
+
function disable() {
|
|
4552
|
+
instance.hide();
|
|
4553
|
+
instance.state.isEnabled = false;
|
|
4554
|
+
}
|
|
4555
|
+
function clearDelayTimeouts() {
|
|
4556
|
+
clearTimeout(showTimeout);
|
|
4557
|
+
clearTimeout(hideTimeout);
|
|
4558
|
+
cancelAnimationFrame(scheduleHideAnimationFrame);
|
|
4559
|
+
}
|
|
4560
|
+
function setProps(partialProps) {
|
|
4561
|
+
if (true) {
|
|
4562
|
+
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("setProps"));
|
|
4563
|
+
}
|
|
4564
|
+
if (instance.state.isDestroyed) {
|
|
4565
|
+
return;
|
|
4566
|
+
}
|
|
4567
|
+
invokeHook("onBeforeUpdate", [instance, partialProps]);
|
|
4568
|
+
removeListeners();
|
|
4569
|
+
var prevProps = instance.props;
|
|
4570
|
+
var nextProps = evaluateProps(reference2, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {
|
|
4571
|
+
ignoreAttributes: true
|
|
4572
|
+
}));
|
|
4573
|
+
instance.props = nextProps;
|
|
4574
|
+
addListeners();
|
|
4575
|
+
if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {
|
|
4576
|
+
cleanupInteractiveMouseListeners();
|
|
4577
|
+
debouncedOnMouseMove = debounce2(onMouseMove, nextProps.interactiveDebounce);
|
|
4578
|
+
}
|
|
4579
|
+
if (prevProps.triggerTarget && !nextProps.triggerTarget) {
|
|
4580
|
+
normalizeToArray(prevProps.triggerTarget).forEach(function(node) {
|
|
4581
|
+
node.removeAttribute("aria-expanded");
|
|
4582
|
+
});
|
|
4583
|
+
} else if (nextProps.triggerTarget) {
|
|
4584
|
+
reference2.removeAttribute("aria-expanded");
|
|
4585
|
+
}
|
|
4586
|
+
handleAriaExpandedAttribute();
|
|
4587
|
+
handleStyles();
|
|
4588
|
+
if (onUpdate) {
|
|
4589
|
+
onUpdate(prevProps, nextProps);
|
|
4590
|
+
}
|
|
4591
|
+
if (instance.popperInstance) {
|
|
4592
|
+
createPopperInstance();
|
|
4593
|
+
getNestedPopperTree().forEach(function(nestedPopper) {
|
|
4594
|
+
requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);
|
|
4595
|
+
});
|
|
4596
|
+
}
|
|
4597
|
+
invokeHook("onAfterUpdate", [instance, partialProps]);
|
|
4598
|
+
}
|
|
4599
|
+
function setContent2(content) {
|
|
4600
|
+
instance.setProps({
|
|
4601
|
+
content
|
|
4602
|
+
});
|
|
4603
|
+
}
|
|
4604
|
+
function show() {
|
|
4605
|
+
if (true) {
|
|
4606
|
+
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("show"));
|
|
4607
|
+
}
|
|
4608
|
+
var isAlreadyVisible = instance.state.isVisible;
|
|
4609
|
+
var isDestroyed = instance.state.isDestroyed;
|
|
4610
|
+
var isDisabled = !instance.state.isEnabled;
|
|
4611
|
+
var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;
|
|
4612
|
+
var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);
|
|
4613
|
+
if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {
|
|
4614
|
+
return;
|
|
4615
|
+
}
|
|
4616
|
+
if (getCurrentTarget().hasAttribute("disabled")) {
|
|
4617
|
+
return;
|
|
4618
|
+
}
|
|
4619
|
+
invokeHook("onShow", [instance], false);
|
|
4620
|
+
if (instance.props.onShow(instance) === false) {
|
|
4621
|
+
return;
|
|
4622
|
+
}
|
|
4623
|
+
instance.state.isVisible = true;
|
|
4624
|
+
if (getIsDefaultRenderFn()) {
|
|
4625
|
+
popper2.style.visibility = "visible";
|
|
4626
|
+
}
|
|
4627
|
+
handleStyles();
|
|
4628
|
+
addDocumentPress();
|
|
4629
|
+
if (!instance.state.isMounted) {
|
|
4630
|
+
popper2.style.transition = "none";
|
|
4631
|
+
}
|
|
4632
|
+
if (getIsDefaultRenderFn()) {
|
|
4633
|
+
var _getDefaultTemplateCh2 = getDefaultTemplateChildren(), box = _getDefaultTemplateCh2.box, content = _getDefaultTemplateCh2.content;
|
|
4634
|
+
setTransitionDuration([box, content], 0);
|
|
4635
|
+
}
|
|
4636
|
+
onFirstUpdate = function onFirstUpdate2() {
|
|
4637
|
+
var _instance$popperInsta2;
|
|
4638
|
+
if (!instance.state.isVisible || ignoreOnFirstUpdate) {
|
|
4639
|
+
return;
|
|
4640
|
+
}
|
|
4641
|
+
ignoreOnFirstUpdate = true;
|
|
4642
|
+
void popper2.offsetHeight;
|
|
4643
|
+
popper2.style.transition = instance.props.moveTransition;
|
|
4644
|
+
if (getIsDefaultRenderFn() && instance.props.animation) {
|
|
4645
|
+
var _getDefaultTemplateCh3 = getDefaultTemplateChildren(), _box = _getDefaultTemplateCh3.box, _content = _getDefaultTemplateCh3.content;
|
|
4646
|
+
setTransitionDuration([_box, _content], duration);
|
|
4647
|
+
setVisibilityState([_box, _content], "visible");
|
|
4648
|
+
}
|
|
4649
|
+
handleAriaContentAttribute();
|
|
4650
|
+
handleAriaExpandedAttribute();
|
|
4651
|
+
pushIfUnique(mountedInstances, instance);
|
|
4652
|
+
(_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();
|
|
4653
|
+
invokeHook("onMount", [instance]);
|
|
4654
|
+
if (instance.props.animation && getIsDefaultRenderFn()) {
|
|
4655
|
+
onTransitionedIn(duration, function() {
|
|
4656
|
+
instance.state.isShown = true;
|
|
4657
|
+
invokeHook("onShown", [instance]);
|
|
4658
|
+
});
|
|
4659
|
+
}
|
|
4660
|
+
};
|
|
4661
|
+
mount2();
|
|
4662
|
+
}
|
|
4663
|
+
function hide2() {
|
|
4664
|
+
if (true) {
|
|
4665
|
+
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("hide"));
|
|
4666
|
+
}
|
|
4667
|
+
var isAlreadyHidden = !instance.state.isVisible;
|
|
4668
|
+
var isDestroyed = instance.state.isDestroyed;
|
|
4669
|
+
var isDisabled = !instance.state.isEnabled;
|
|
4670
|
+
var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);
|
|
4671
|
+
if (isAlreadyHidden || isDestroyed || isDisabled) {
|
|
4672
|
+
return;
|
|
4673
|
+
}
|
|
4674
|
+
invokeHook("onHide", [instance], false);
|
|
4675
|
+
if (instance.props.onHide(instance) === false) {
|
|
4676
|
+
return;
|
|
4677
|
+
}
|
|
4678
|
+
instance.state.isVisible = false;
|
|
4679
|
+
instance.state.isShown = false;
|
|
4680
|
+
ignoreOnFirstUpdate = false;
|
|
4681
|
+
isVisibleFromClick = false;
|
|
4682
|
+
if (getIsDefaultRenderFn()) {
|
|
4683
|
+
popper2.style.visibility = "hidden";
|
|
4684
|
+
}
|
|
4685
|
+
cleanupInteractiveMouseListeners();
|
|
4686
|
+
removeDocumentPress();
|
|
4687
|
+
handleStyles(true);
|
|
4688
|
+
if (getIsDefaultRenderFn()) {
|
|
4689
|
+
var _getDefaultTemplateCh4 = getDefaultTemplateChildren(), box = _getDefaultTemplateCh4.box, content = _getDefaultTemplateCh4.content;
|
|
4690
|
+
if (instance.props.animation) {
|
|
4691
|
+
setTransitionDuration([box, content], duration);
|
|
4692
|
+
setVisibilityState([box, content], "hidden");
|
|
4693
|
+
}
|
|
4694
|
+
}
|
|
4695
|
+
handleAriaContentAttribute();
|
|
4696
|
+
handleAriaExpandedAttribute();
|
|
4697
|
+
if (instance.props.animation) {
|
|
4698
|
+
if (getIsDefaultRenderFn()) {
|
|
4699
|
+
onTransitionedOut(duration, instance.unmount);
|
|
4700
|
+
}
|
|
4701
|
+
} else {
|
|
4702
|
+
instance.unmount();
|
|
4703
|
+
}
|
|
4704
|
+
}
|
|
4705
|
+
function hideWithInteractivity(event) {
|
|
4706
|
+
if (true) {
|
|
4707
|
+
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("hideWithInteractivity"));
|
|
4708
|
+
}
|
|
4709
|
+
getDocument().addEventListener("mousemove", debouncedOnMouseMove);
|
|
4710
|
+
pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);
|
|
4711
|
+
debouncedOnMouseMove(event);
|
|
4712
|
+
}
|
|
4713
|
+
function unmount() {
|
|
4714
|
+
if (true) {
|
|
4715
|
+
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("unmount"));
|
|
4716
|
+
}
|
|
4717
|
+
if (instance.state.isVisible) {
|
|
4718
|
+
instance.hide();
|
|
4719
|
+
}
|
|
4720
|
+
if (!instance.state.isMounted) {
|
|
4721
|
+
return;
|
|
4722
|
+
}
|
|
4723
|
+
destroyPopperInstance();
|
|
4724
|
+
getNestedPopperTree().forEach(function(nestedPopper) {
|
|
4725
|
+
nestedPopper._tippy.unmount();
|
|
4726
|
+
});
|
|
4727
|
+
if (popper2.parentNode) {
|
|
4728
|
+
popper2.parentNode.removeChild(popper2);
|
|
4729
|
+
}
|
|
4730
|
+
mountedInstances = mountedInstances.filter(function(i) {
|
|
4731
|
+
return i !== instance;
|
|
4732
|
+
});
|
|
4733
|
+
instance.state.isMounted = false;
|
|
4734
|
+
invokeHook("onHidden", [instance]);
|
|
4735
|
+
}
|
|
4736
|
+
function destroy() {
|
|
4737
|
+
if (true) {
|
|
4738
|
+
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("destroy"));
|
|
4739
|
+
}
|
|
4740
|
+
if (instance.state.isDestroyed) {
|
|
4741
|
+
return;
|
|
4742
|
+
}
|
|
4743
|
+
instance.clearDelayTimeouts();
|
|
4744
|
+
instance.unmount();
|
|
4745
|
+
removeListeners();
|
|
4746
|
+
delete reference2._tippy;
|
|
4747
|
+
instance.state.isDestroyed = true;
|
|
4748
|
+
invokeHook("onDestroy", [instance]);
|
|
4749
|
+
}
|
|
4750
|
+
}
|
|
4751
|
+
function tippy(targets, optionalProps) {
|
|
4752
|
+
if (optionalProps === void 0) {
|
|
4753
|
+
optionalProps = {};
|
|
4754
|
+
}
|
|
4755
|
+
var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);
|
|
4756
|
+
if (true) {
|
|
4757
|
+
validateTargets(targets);
|
|
4758
|
+
validateProps(optionalProps, plugins);
|
|
4759
|
+
}
|
|
4760
|
+
bindGlobalEventListeners();
|
|
4761
|
+
var passedProps = Object.assign({}, optionalProps, {
|
|
4762
|
+
plugins
|
|
4763
|
+
});
|
|
4764
|
+
var elements = getArrayOfElements(targets);
|
|
4765
|
+
if (true) {
|
|
4766
|
+
var isSingleContentElement = isElement2(passedProps.content);
|
|
4767
|
+
var isMoreThanOneReferenceElement = elements.length > 1;
|
|
4768
|
+
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(" "));
|
|
4769
|
+
}
|
|
4770
|
+
var instances2 = elements.reduce(function(acc, reference2) {
|
|
4771
|
+
var instance = reference2 && createTippy(reference2, passedProps);
|
|
4772
|
+
if (instance) {
|
|
4773
|
+
acc.push(instance);
|
|
4774
|
+
}
|
|
4775
|
+
return acc;
|
|
4776
|
+
}, []);
|
|
4777
|
+
return isElement2(targets) ? instances2[0] : instances2;
|
|
4778
|
+
}
|
|
4779
|
+
tippy.defaultProps = defaultProps;
|
|
4780
|
+
tippy.setDefaultProps = setDefaultProps;
|
|
4781
|
+
tippy.currentInput = currentInput;
|
|
4782
|
+
var applyStylesModifier = Object.assign({}, applyStyles_default, {
|
|
4783
|
+
effect: function effect4(_ref) {
|
|
4784
|
+
var state = _ref.state;
|
|
4785
|
+
var initialStyles = {
|
|
4786
|
+
popper: {
|
|
4787
|
+
position: state.options.strategy,
|
|
4788
|
+
left: "0",
|
|
4789
|
+
top: "0",
|
|
4790
|
+
margin: "0"
|
|
4791
|
+
},
|
|
4792
|
+
arrow: {
|
|
4793
|
+
position: "absolute"
|
|
4794
|
+
},
|
|
4795
|
+
reference: {}
|
|
4796
|
+
};
|
|
4797
|
+
Object.assign(state.elements.popper.style, initialStyles.popper);
|
|
4798
|
+
state.styles = initialStyles;
|
|
4799
|
+
if (state.elements.arrow) {
|
|
4800
|
+
Object.assign(state.elements.arrow.style, initialStyles.arrow);
|
|
4801
|
+
}
|
|
4802
|
+
}
|
|
4803
|
+
});
|
|
4804
|
+
tippy.setDefaultProps({
|
|
4805
|
+
render
|
|
4806
|
+
});
|
|
4807
|
+
var tippy_esm_default = tippy;
|
|
4808
|
+
|
|
4809
|
+
// src/components/tippy-util.ts
|
|
4810
|
+
var instances = /* @__PURE__ */ new Set();
|
|
4811
|
+
function onCreate2(instance) {
|
|
4812
|
+
instances.add(instance);
|
|
4813
|
+
}
|
|
4814
|
+
function onDestroy2(instance) {
|
|
4815
|
+
instances.delete(instance);
|
|
4816
|
+
}
|
|
4817
|
+
tippy_esm_default.setDefaultProps({ onCreate: onCreate2, onDestroy: onDestroy2 });
|
|
4818
|
+
function hideAll() {
|
|
4819
|
+
instances.forEach((instance) => instance.hide());
|
|
4820
|
+
}
|
|
4821
|
+
|
|
4822
|
+
// src/components/Fastboard.tsx
|
|
4823
|
+
var Fastboard = /* @__PURE__ */ forwardRef3(function Fastboard2(_a, ref) {
|
|
4824
|
+
var _b = _a, { app, theme, layout, language } = _b, restProps = __objRest(_b, ["app", "theme", "layout", "language"]);
|
|
4825
|
+
if (!app) {
|
|
4826
|
+
return /* @__PURE__ */ React50.createElement("div", __spreadValues({
|
|
4827
|
+
className: "fastboard-root",
|
|
4828
|
+
ref
|
|
4829
|
+
}, restProps));
|
|
4830
|
+
}
|
|
4831
|
+
return /* @__PURE__ */ React50.createElement(FastboardAppContext.Provider, {
|
|
4832
|
+
value: app
|
|
4833
|
+
}, /* @__PURE__ */ React50.createElement(FastboardInternal, __spreadValues(__spreadValues({
|
|
4834
|
+
forwardedRef: ref
|
|
4835
|
+
}, { theme, layout, language }), restProps)));
|
|
4836
|
+
});
|
|
4837
|
+
function FastboardInternal(_a) {
|
|
4838
|
+
var _b = _a, {
|
|
4839
|
+
forwardedRef,
|
|
4840
|
+
language,
|
|
4841
|
+
layout = {},
|
|
4842
|
+
theme = "light",
|
|
4843
|
+
children
|
|
4844
|
+
} = _b, restProps = __objRest(_b, [
|
|
4845
|
+
"forwardedRef",
|
|
4846
|
+
"language",
|
|
4847
|
+
"layout",
|
|
4848
|
+
"theme",
|
|
4849
|
+
"children"
|
|
4850
|
+
]);
|
|
4851
|
+
const app = useFastboardApp();
|
|
4852
|
+
const forceUpdate = useForceUpdate();
|
|
4853
|
+
const i18n = useAsyncValue(() => createI18n({ language }));
|
|
4854
|
+
useEffect6(() => {
|
|
4855
|
+
if (i18n)
|
|
4856
|
+
i18n.changeLanguage(language);
|
|
4857
|
+
forceUpdate();
|
|
4858
|
+
}, [forceUpdate, i18n, language]);
|
|
4859
|
+
useEffect6(() => {
|
|
4860
|
+
app.manager.setPrefersColorScheme(theme);
|
|
4861
|
+
}, [app, theme]);
|
|
4862
|
+
const useWhiteboard = useCallback13((container) => {
|
|
4863
|
+
if (container && app)
|
|
4864
|
+
app.bindContainer(container);
|
|
4865
|
+
}, [app]);
|
|
4866
|
+
const hideControls = useHideControls();
|
|
4867
|
+
const showControls = !hideControls;
|
|
4868
|
+
const {
|
|
4869
|
+
Toolbar: toolbar = showControls || hideControls === "toolbar-only",
|
|
4870
|
+
RedoUndo: redo_undo = showControls,
|
|
4871
|
+
ZoomControl: zoom_control = showControls,
|
|
4872
|
+
PageControl: page_control = showControls
|
|
4873
|
+
} = layout;
|
|
4874
|
+
return /* @__PURE__ */ React50.createElement(ThemeContext.Provider, {
|
|
4875
|
+
value: theme
|
|
4876
|
+
}, /* @__PURE__ */ React50.createElement(I18nContext.Provider, {
|
|
4877
|
+
value: i18n
|
|
4878
|
+
}, /* @__PURE__ */ React50.createElement("div", __spreadProps(__spreadValues({}, restProps), {
|
|
4879
|
+
className: "fastboard-root",
|
|
4880
|
+
ref: forwardedRef
|
|
4881
|
+
}), /* @__PURE__ */ React50.createElement("div", {
|
|
4882
|
+
className: "fastboard-view",
|
|
4883
|
+
ref: useWhiteboard,
|
|
4884
|
+
onTouchStartCapture: hideAll
|
|
4885
|
+
}), children ? children : /* @__PURE__ */ React50.createElement(React50.Fragment, null, toolbar && /* @__PURE__ */ React50.createElement("div", {
|
|
4886
|
+
className: "fastboard-left"
|
|
4887
|
+
}, /* @__PURE__ */ React50.createElement(Toolbar, null)), (redo_undo || zoom_control) && /* @__PURE__ */ React50.createElement("div", {
|
|
4888
|
+
className: "fastboard-bottom-left"
|
|
4889
|
+
}, redo_undo && /* @__PURE__ */ React50.createElement(RedoUndo, null), zoom_control && /* @__PURE__ */ React50.createElement(ZoomControl, null)), page_control && /* @__PURE__ */ React50.createElement("div", {
|
|
4890
|
+
className: "fastboard-bottom-right"
|
|
4891
|
+
}, /* @__PURE__ */ React50.createElement(PageControl, null))))));
|
|
4892
|
+
}
|
|
4893
|
+
|
|
4894
|
+
// src/components/ReplayFastboard.tsx
|
|
4895
|
+
import React51, { forwardRef as forwardRef4, useCallback as useCallback14 } from "react";
|
|
4896
|
+
var ReplayFastboard = /* @__PURE__ */ forwardRef4(function ReplayFastboard2(_a, ref) {
|
|
4897
|
+
var _b = _a, { player, theme = "light", autoHideControl = false } = _b, restProps = __objRest(_b, ["player", "theme", "autoHideControl"]);
|
|
4898
|
+
const useWhiteboard = useCallback14((container) => {
|
|
4899
|
+
if (container && player)
|
|
4900
|
+
player.bindContainer(container);
|
|
4901
|
+
}, [player]);
|
|
4902
|
+
if (!player) {
|
|
4903
|
+
return /* @__PURE__ */ React51.createElement("div", __spreadValues({
|
|
4904
|
+
className: "fastboard-root",
|
|
4905
|
+
ref
|
|
4906
|
+
}, restProps));
|
|
4907
|
+
}
|
|
4908
|
+
return /* @__PURE__ */ React51.createElement("div", __spreadValues({
|
|
4909
|
+
className: "fastboard-root",
|
|
4910
|
+
ref
|
|
4911
|
+
}, restProps), /* @__PURE__ */ React51.createElement("div", {
|
|
4912
|
+
className: "fastboard-view",
|
|
4913
|
+
ref: useWhiteboard
|
|
4914
|
+
}), /* @__PURE__ */ React51.createElement("div", {
|
|
4915
|
+
className: "fastboard-bottom"
|
|
4916
|
+
}, /* @__PURE__ */ React51.createElement(PlayerControl, {
|
|
4917
|
+
player,
|
|
4918
|
+
theme,
|
|
4919
|
+
autoHide: autoHideControl
|
|
4920
|
+
})));
|
|
4921
|
+
});
|
|
4922
|
+
|
|
4923
|
+
// src/vanilla/index.tsx
|
|
4924
|
+
import React52 from "react";
|
|
4925
|
+
import ReactDOM from "react-dom";
|
|
4926
|
+
function mount(app, dom, props) {
|
|
4927
|
+
ReactDOM.render(/* @__PURE__ */ React52.createElement(Fastboard, __spreadValues({
|
|
4928
|
+
app
|
|
4929
|
+
}, props)), dom);
|
|
4930
|
+
return {
|
|
4931
|
+
update(props2) {
|
|
4932
|
+
ReactDOM.render(/* @__PURE__ */ React52.createElement(Fastboard, __spreadValues({
|
|
4933
|
+
app
|
|
4934
|
+
}, props2)), dom);
|
|
4935
|
+
},
|
|
4936
|
+
destroy() {
|
|
4937
|
+
ReactDOM.unmountComponentAtNode(dom);
|
|
4938
|
+
}
|
|
4939
|
+
};
|
|
2003
4940
|
}
|
|
2004
4941
|
export {
|
|
2005
4942
|
EmptyToolbarHook,
|
|
@@ -2008,11 +4945,13 @@ export {
|
|
|
2008
4945
|
PageControl,
|
|
2009
4946
|
PlayerControl,
|
|
2010
4947
|
RedoUndo,
|
|
4948
|
+
ReplayFastboard,
|
|
2011
4949
|
ScalePoints,
|
|
2012
4950
|
ThemeContext,
|
|
2013
4951
|
Toolbar,
|
|
2014
4952
|
ZoomControl,
|
|
2015
4953
|
mount,
|
|
4954
|
+
useAppsStatus,
|
|
2016
4955
|
useBoxState,
|
|
2017
4956
|
useFastboardApp,
|
|
2018
4957
|
useFastboardValue,
|