@netless/fastboard-react 0.2.0 → 0.2.1
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 +310 -356
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +250 -296
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -6
- package/src/components/Toolbar/Content.tsx +19 -4
- package/src/components/Toolbar/Toolbar.scss +10 -0
- package/src/components/Toolbar/Toolbar.tsx +15 -47
- package/src/components/Toolbar/components/Mask.tsx +0 -44
package/dist/index.mjs
CHANGED
|
@@ -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-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:1em;height:1em}.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-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:40px}.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-btn{width:17px;height:62px;cursor:pointer}.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 = '.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-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:1em;height:1em}.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-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:40px}.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%)}.fastboard-toolbar-mask.dark{left:100%}.fastboard-toolbar-mask-btn{width:17px;height:62px;cursor:pointer}.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';
|
|
85
85
|
|
|
86
86
|
// src/behaviors/style.ts
|
|
87
87
|
applyStyles(style_default);
|
|
@@ -776,94 +776,56 @@ var EmptyToolbarHook = {
|
|
|
776
776
|
// src/components/Toolbar/Toolbar.tsx
|
|
777
777
|
import clsx9 from "clsx";
|
|
778
778
|
import { AnimatePresence, motion } from "framer-motion";
|
|
779
|
-
import
|
|
780
|
-
|
|
781
|
-
// src/components/Toolbar/components/assets/collapsed.png
|
|
782
|
-
var collapsed_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAB8CAYAAAAMw2JFAAAAAXNSR0IArs4c6QAAA49JREFUeF7tnLFv00AUh5/TFVYkxIDEnKFjJ/gb2CIqpUPagYXNEV2LRGk7tAiRSA0bWcC0QzowwQKuVDnCLE2KTZCMSNLkHCLalCpBkdFVMTKh8TXO+c4S16XDSb0vv/vyfE3fqwQR+ZIA4AoAdADgJ08mSVXVV9ls9nE+nzcBAAFAnweQ1Gg06gihrmEYubm5OeX4+LgBAD9Yw0iO49S63S7U6/VYq9UyCoXC2tLS0kcAwEA9VkBnIO5m7XYbJwTVanVLluWcruvfAOA7ADhhA/0Fgjfr9/tweHgYs20baZq2sbCw8HaQTqgy/wPivvKTkxN8XFPNZvMdC5lHgmAgx3EAISQhhHqGYWyGKbMviJsOC5kvBOIjcxUAWjRkHgtkSGZb07R1WjKPDeIj82cAaAatzIFBhmU2TTOXTCZfBq3ME4HQlJkKCA2ZqYJMIjN1kKAyhwYyrsyhgpwns6IoyysrK/rgQfrnqc4ExCtzrVb7tbe39yCVSr0GAFyZz2CYguANT09PwbIsaWdn5146nX4zuO+wB8EwnU5HqlQqdiKRuHNwcFDC1Zh5Iu4xWZYVU1V1eXZ29jlOhRvI0dGRVC6XP8zMzNwFgK/cQHq9HpTLZXt6evo2AFS4geDbX6lUisXj8VsA8IkbCHZlf39/Kh6P3xQg7jtHJDL826JIRCRC+gRBOCIcEY6QEhCOkBISdUQ4IhwhJSAcISUk6kjojjxaXbt0Py3jP1DCtes3ruLvVetLnenRYIgnT7OX3Y25gLgQ3gSYg3ghuIEMQ3ABOQ+COcgoCKYgfhD/Jwh+1ZE4GrdKRkJWPxhulTUSBe28ZLglMgzDHcR9N3G/BpDuHH7r4qoY+lUx6PGIoxFHQ3JHOCIcEY6QEhCOkBISdUQ4IhwhJSAcISUk6ohwxM+RyLR/RaYhLjItgpFomoxEG2kkGmvxRBPXVmPPWIypKMpD5s3X3kEh0zSfJZPJF6NmK0JrI3VHpxBCaiaTWc/n877TJtRBPMNkdrFY3Jifn8ed3njUzneYjCqIZ7xue3FxMadpGh6vu9BEEhUQr4yFQmE1yMDhRCDjyEi6JAUGGVdG6iBBZaQK4pVRluVNXdfZjsfRkHGiRGjKGBjEI+P7TCazQaqMpI1I635jtmNVRtJGpPVRg8fbtGW8EAiL6VUiyGA4vUd6TJN+0KTr0u7u7hYLGUmg0fkHBiRSVuu/AWpfZNft9vFDAAAAAElFTkSuQmCC";
|
|
779
|
+
import React43, { createContext as createContext3, useState as useState4 } from "react";
|
|
783
780
|
|
|
784
781
|
// src/components/Toolbar/components/assets/expanded.png
|
|
785
782
|
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==";
|
|
786
783
|
|
|
787
|
-
// src/components/Toolbar/components/Mask.tsx
|
|
788
|
-
import React13, { useState as useState3, useEffect as useEffect3 } from "react";
|
|
789
|
-
import ReactDOM from "react-dom";
|
|
790
|
-
var Mask = React13.memo(({ toolbar, children }) => {
|
|
791
|
-
const [rootElement] = useState3(() => {
|
|
792
|
-
const element = document.createElement("div");
|
|
793
|
-
element.style.position = "absolute";
|
|
794
|
-
return element;
|
|
795
|
-
});
|
|
796
|
-
useEffect3(() => {
|
|
797
|
-
if (toolbar && rootElement) {
|
|
798
|
-
toolbar.appendChild(rootElement);
|
|
799
|
-
}
|
|
800
|
-
}, [rootElement, toolbar]);
|
|
801
|
-
useEffect3(() => {
|
|
802
|
-
if (rootElement && toolbar) {
|
|
803
|
-
toolbar.appendChild(rootElement);
|
|
804
|
-
const toolbarRect = toolbar.getBoundingClientRect();
|
|
805
|
-
const halfHeight = toolbarRect.height / 2 - 31;
|
|
806
|
-
rootElement.style.top = halfHeight + "px";
|
|
807
|
-
rootElement.style.left = "41px";
|
|
808
|
-
rootElement.style.width = "17px";
|
|
809
|
-
rootElement.style.height = "62px";
|
|
810
|
-
return () => {
|
|
811
|
-
toolbar.removeChild(rootElement);
|
|
812
|
-
};
|
|
813
|
-
}
|
|
814
|
-
}, [rootElement, toolbar]);
|
|
815
|
-
if (rootElement) {
|
|
816
|
-
return ReactDOM.createPortal(children, rootElement);
|
|
817
|
-
} else {
|
|
818
|
-
return null;
|
|
819
|
-
}
|
|
820
|
-
});
|
|
821
|
-
|
|
822
784
|
// src/components/Toolbar/Content.tsx
|
|
823
785
|
import clsx8 from "clsx";
|
|
824
|
-
import
|
|
786
|
+
import React42, { useCallback as useCallback10, useContext as useContext13, useEffect as useEffect3, useRef as useRef2, useState as useState3 } from "react";
|
|
825
787
|
|
|
826
788
|
// src/components/Toolbar/components/ApplianceButtons.tsx
|
|
827
|
-
import
|
|
789
|
+
import React33, { useCallback as useCallback6, useContext as useContext4 } from "react";
|
|
828
790
|
import { ApplianceNames } from "white-web-sdk";
|
|
829
791
|
|
|
830
792
|
// src/components/Toolbar/icons/index.ts
|
|
831
793
|
import { memo } from "react";
|
|
832
794
|
|
|
833
795
|
// src/components/Toolbar/icons/Apps.tsx
|
|
834
|
-
import
|
|
796
|
+
import React13 from "react";
|
|
835
797
|
var Apps = (props) => {
|
|
836
798
|
const stroke = getStroke(props);
|
|
837
|
-
return /* @__PURE__ */
|
|
799
|
+
return /* @__PURE__ */ React13.createElement("svg", {
|
|
838
800
|
viewBox: "0 0 24 24"
|
|
839
|
-
}, /* @__PURE__ */
|
|
801
|
+
}, /* @__PURE__ */ React13.createElement("g", {
|
|
840
802
|
fill: stroke
|
|
841
|
-
}, /* @__PURE__ */
|
|
803
|
+
}, /* @__PURE__ */ React13.createElement("path", {
|
|
842
804
|
d: "M17.667 4.5h-3.334c-1.012 0-1.833.82-1.833 1.833V11.5h5.167c1.012 0 1.833-.82 1.833-1.833V6.333c0-1.012-.82-1.833-1.833-1.833Zm-3.334 1h3.334c.46 0 .833.373.833.833v3.334l-.006.104a.833.833 0 0 1-.827.729H13.5V6.333c0-.46.373-.833.833-.833Z"
|
|
843
|
-
}), /* @__PURE__ */
|
|
805
|
+
}), /* @__PURE__ */ React13.createElement("path", {
|
|
844
806
|
d: "M6.333 19.5A1.833 1.833 0 0 1 4.5 17.667v-3.334c0-.525.221-1 .576-1.334a1.822 1.822 0 0 1-.576-1.332V8.333c0-1.012.82-1.833 1.833-1.833H10A1.5 1.5 0 0 1 11.5 8v4.5h4.167c.962 0 1.75.74 1.827 1.683l.006.15v3.334c0 1.012-.82 1.833-1.833 1.833Zm4.167-6H6.333a.833.833 0 0 0-.827.729l-.006.104v3.334c0 .46.373.833.833.833H10.5v-5Zm5.167 0H11.5v5h4.167c.46 0 .833-.373.833-.833v-3.334a.833.833 0 0 0-.833-.833ZM10 7.5H6.333a.833.833 0 0 0-.833.833v3.334c0 .46.373.833.833.833H10.5V8a.5.5 0 0 0-.41-.492L10 7.5Z"
|
|
845
807
|
})));
|
|
846
808
|
};
|
|
847
809
|
|
|
848
810
|
// src/components/Toolbar/icons/Arrow.tsx
|
|
849
|
-
import
|
|
811
|
+
import React14 from "react";
|
|
850
812
|
var Arrow = (props) => {
|
|
851
813
|
const stroke = getStroke(props);
|
|
852
|
-
return /* @__PURE__ */
|
|
814
|
+
return /* @__PURE__ */ React14.createElement("svg", {
|
|
853
815
|
viewBox: "0 0 24 24"
|
|
854
|
-
}, /* @__PURE__ */
|
|
816
|
+
}, /* @__PURE__ */ React14.createElement("path", {
|
|
855
817
|
fill: stroke,
|
|
856
818
|
d: "M19 5v6l-2.647-2.646L5.99 18.718l-.708-.708L15.645 7.646 13 5h6Z"
|
|
857
819
|
}));
|
|
858
820
|
};
|
|
859
821
|
|
|
860
822
|
// src/components/Toolbar/icons/Circle.tsx
|
|
861
|
-
import
|
|
823
|
+
import React15 from "react";
|
|
862
824
|
var Circle = (props) => {
|
|
863
825
|
const stroke = getStroke(props);
|
|
864
|
-
return /* @__PURE__ */
|
|
826
|
+
return /* @__PURE__ */ React15.createElement("svg", {
|
|
865
827
|
viewBox: "0 0 24 24"
|
|
866
|
-
}, /* @__PURE__ */
|
|
828
|
+
}, /* @__PURE__ */ React15.createElement("rect", {
|
|
867
829
|
width: "15",
|
|
868
830
|
height: "15",
|
|
869
831
|
x: "4.5",
|
|
@@ -875,40 +837,40 @@ var Circle = (props) => {
|
|
|
875
837
|
};
|
|
876
838
|
|
|
877
839
|
// src/components/Toolbar/icons/Clean.tsx
|
|
878
|
-
import
|
|
840
|
+
import React16 from "react";
|
|
879
841
|
var Clean = (props) => {
|
|
880
842
|
const stroke = getStroke(props);
|
|
881
|
-
return /* @__PURE__ */
|
|
843
|
+
return /* @__PURE__ */ React16.createElement("svg", {
|
|
882
844
|
viewBox: "0 0 24 24"
|
|
883
|
-
}, /* @__PURE__ */
|
|
845
|
+
}, /* @__PURE__ */ React16.createElement("path", {
|
|
884
846
|
fill: stroke,
|
|
885
847
|
d: "M9.754 11.99c0 1.856-.711 3.62-1.96 4.951l-.151.155h1.403l.855-.853h.707l.853.853h2.635l.094-.064a6.237 6.237 0 0 0 2.559-4.781l.005-.26h1a7.237 7.237 0 0 1-2.994 5.862l-.229.16-.277.083h-3l-.353-.146-.647-.647-.646.647-.354.146h-3l-.286-.91.214-.148a6.237 6.237 0 0 0 2.567-4.787l.005-.26h1Zm4.772-6.502v2l.35.039a2.98 2.98 0 0 1 2.644 2.78l.006.181h-8a2.98 2.98 0 0 1 2.65-2.961l.35-.039v-2h2Z"
|
|
886
848
|
}));
|
|
887
849
|
};
|
|
888
850
|
|
|
889
851
|
// src/components/Toolbar/icons/Clicker.tsx
|
|
890
|
-
import
|
|
852
|
+
import React17 from "react";
|
|
891
853
|
var Clicker = (props) => {
|
|
892
854
|
const stroke = getStroke(props);
|
|
893
|
-
return /* @__PURE__ */
|
|
855
|
+
return /* @__PURE__ */ React17.createElement("svg", {
|
|
894
856
|
viewBox: "0 0 24 24"
|
|
895
|
-
}, /* @__PURE__ */
|
|
857
|
+
}, /* @__PURE__ */ React17.createElement("g", {
|
|
896
858
|
fill: "none"
|
|
897
|
-
}, /* @__PURE__ */
|
|
859
|
+
}, /* @__PURE__ */ React17.createElement("path", {
|
|
898
860
|
d: "M0 0h24v24H0z"
|
|
899
|
-
}), /* @__PURE__ */
|
|
861
|
+
}), /* @__PURE__ */ React17.createElement("path", {
|
|
900
862
|
fill: stroke,
|
|
901
863
|
d: "m7 5.072 10.33 7.892-4.879.549 3.232 5.598-.866.5-3.233-5.597-2.914 3.95L7 5.072Z"
|
|
902
864
|
})));
|
|
903
865
|
};
|
|
904
866
|
|
|
905
867
|
// src/components/Toolbar/icons/Collapse.tsx
|
|
906
|
-
import
|
|
868
|
+
import React18 from "react";
|
|
907
869
|
var Collapse = (props) => {
|
|
908
870
|
const stroke = getStroke(props);
|
|
909
|
-
return /* @__PURE__ */
|
|
871
|
+
return /* @__PURE__ */ React18.createElement("svg", {
|
|
910
872
|
viewBox: "0 0 24 24"
|
|
911
|
-
}, /* @__PURE__ */
|
|
873
|
+
}, /* @__PURE__ */ React18.createElement("path", {
|
|
912
874
|
fill: "none",
|
|
913
875
|
stroke,
|
|
914
876
|
d: "m8 10-2 2 2 2m10-8H6m12 12H6m12-4h-8m8-4h-8"
|
|
@@ -916,12 +878,12 @@ var Collapse = (props) => {
|
|
|
916
878
|
};
|
|
917
879
|
|
|
918
880
|
// src/components/Toolbar/icons/Diamond.tsx
|
|
919
|
-
import
|
|
881
|
+
import React19 from "react";
|
|
920
882
|
var Diamond = (props) => {
|
|
921
883
|
const stroke = getStroke(props);
|
|
922
|
-
return /* @__PURE__ */
|
|
884
|
+
return /* @__PURE__ */ React19.createElement("svg", {
|
|
923
885
|
viewBox: "0 0 24 24"
|
|
924
|
-
}, /* @__PURE__ */
|
|
886
|
+
}, /* @__PURE__ */ React19.createElement("path", {
|
|
925
887
|
fill: "none",
|
|
926
888
|
stroke,
|
|
927
889
|
d: "M4.222 12 12 4.222 19.778 12 12 19.778z"
|
|
@@ -929,12 +891,12 @@ var Diamond = (props) => {
|
|
|
929
891
|
};
|
|
930
892
|
|
|
931
893
|
// src/components/Toolbar/icons/Down.tsx
|
|
932
|
-
import
|
|
894
|
+
import React20 from "react";
|
|
933
895
|
var Down = (props) => {
|
|
934
896
|
const stroke = getStroke(props);
|
|
935
|
-
return /* @__PURE__ */
|
|
897
|
+
return /* @__PURE__ */ React20.createElement("svg", {
|
|
936
898
|
viewBox: "0 0 24 24"
|
|
937
|
-
}, /* @__PURE__ */
|
|
899
|
+
}, /* @__PURE__ */ React20.createElement("path", {
|
|
938
900
|
fill: "none",
|
|
939
901
|
stroke,
|
|
940
902
|
d: "m16 13-2 2-2 2-2-2-2-2m8-6-2 2-2 2-2-2-2-2"
|
|
@@ -942,24 +904,24 @@ var Down = (props) => {
|
|
|
942
904
|
};
|
|
943
905
|
|
|
944
906
|
// src/components/Toolbar/icons/Eraser.tsx
|
|
945
|
-
import
|
|
907
|
+
import React21 from "react";
|
|
946
908
|
var Eraser = (props) => {
|
|
947
909
|
const stroke = getStroke(props);
|
|
948
|
-
return /* @__PURE__ */
|
|
910
|
+
return /* @__PURE__ */ React21.createElement("svg", {
|
|
949
911
|
viewBox: "0 0 24 24"
|
|
950
|
-
}, /* @__PURE__ */
|
|
912
|
+
}, /* @__PURE__ */ React21.createElement("path", {
|
|
951
913
|
fill: stroke,
|
|
952
914
|
d: "m14.333 5.183.165.007c.494.037.978.245 1.356.623l2.333 2.333a2.15 2.15 0 0 1 0 3.04l-5.833 5.834a3.8 3.8 0 0 1-5.374 0l-1.167-1.166a2.15 2.15 0 0 1 0-3.04l7-7c.42-.42.97-.63 1.52-.63ZM11.52 8.52l-4.999 5a1.15 1.15 0 0 0 0 1.626l1.167 1.167a2.8 2.8 0 0 0 3.96 0l3.832-3.833-3.96-3.96Z"
|
|
953
915
|
}));
|
|
954
916
|
};
|
|
955
917
|
|
|
956
918
|
// src/components/Toolbar/icons/Expand.tsx
|
|
957
|
-
import
|
|
919
|
+
import React22 from "react";
|
|
958
920
|
var Expand = (props) => {
|
|
959
921
|
const stroke = getStroke(props);
|
|
960
|
-
return /* @__PURE__ */
|
|
922
|
+
return /* @__PURE__ */ React22.createElement("svg", {
|
|
961
923
|
viewBox: "0 0 24 24"
|
|
962
|
-
}, /* @__PURE__ */
|
|
924
|
+
}, /* @__PURE__ */ React22.createElement("path", {
|
|
963
925
|
fill: "none",
|
|
964
926
|
stroke,
|
|
965
927
|
d: "m16 10 2 2-2 2M6 6h12M6 18h12M6 14h8m-8-4h8"
|
|
@@ -967,36 +929,36 @@ var Expand = (props) => {
|
|
|
967
929
|
};
|
|
968
930
|
|
|
969
931
|
// src/components/Toolbar/icons/Line.tsx
|
|
970
|
-
import
|
|
932
|
+
import React23 from "react";
|
|
971
933
|
var Line = (props) => {
|
|
972
934
|
const stroke = getStroke(props);
|
|
973
|
-
return /* @__PURE__ */
|
|
935
|
+
return /* @__PURE__ */ React23.createElement("svg", {
|
|
974
936
|
viewBox: "0 0 24 24"
|
|
975
|
-
}, /* @__PURE__ */
|
|
937
|
+
}, /* @__PURE__ */ React23.createElement("path", {
|
|
976
938
|
fill: stroke,
|
|
977
939
|
d: "m18.01 5.282.708.708L5.99 18.718l-.708-.708z"
|
|
978
940
|
}));
|
|
979
941
|
};
|
|
980
942
|
|
|
981
943
|
// src/components/Toolbar/icons/Pencil.tsx
|
|
982
|
-
import
|
|
944
|
+
import React24 from "react";
|
|
983
945
|
var Pencil = (props) => {
|
|
984
946
|
const stroke = getStroke(props);
|
|
985
|
-
return /* @__PURE__ */
|
|
947
|
+
return /* @__PURE__ */ React24.createElement("svg", {
|
|
986
948
|
viewBox: "0 0 24 24"
|
|
987
|
-
}, /* @__PURE__ */
|
|
949
|
+
}, /* @__PURE__ */ React24.createElement("path", {
|
|
988
950
|
fill: stroke,
|
|
989
951
|
d: "m17.497 4.84.116.105 1.442 1.442a1.52 1.52 0 0 1 .104 2.034l-.104.116L8.733 18.858l-4.347.756.756-4.347L15.463 4.945a1.52 1.52 0 0 1 2.034-.104ZM5.967 16.349l-.353 2.037 2.037-.354-1.683-1.683Zm8.407-8.901-7.946 7.946 2.178 2.178 7.946-7.946-2.178-2.178Zm-.728 2.2.708.707-5 5-.708-.708 5-5Zm2.596-4.055-.072.06-1.09 1.088 2.179 2.178 1.089-1.088a.52.52 0 0 0 .105-.584l-.045-.08-.06-.072-1.442-1.442a.52.52 0 0 0-.664-.06Z"
|
|
990
952
|
}));
|
|
991
953
|
};
|
|
992
954
|
|
|
993
955
|
// src/components/Toolbar/icons/Rectangle.tsx
|
|
994
|
-
import
|
|
956
|
+
import React25 from "react";
|
|
995
957
|
var Rectangle = (props) => {
|
|
996
958
|
const stroke = getStroke(props);
|
|
997
|
-
return /* @__PURE__ */
|
|
959
|
+
return /* @__PURE__ */ React25.createElement("svg", {
|
|
998
960
|
viewBox: "0 0 24 24"
|
|
999
|
-
}, /* @__PURE__ */
|
|
961
|
+
}, /* @__PURE__ */ React25.createElement("path", {
|
|
1000
962
|
fill: "none",
|
|
1001
963
|
stroke,
|
|
1002
964
|
d: "M5.5 5.5h13v13h-13z"
|
|
@@ -1004,24 +966,24 @@ var Rectangle = (props) => {
|
|
|
1004
966
|
};
|
|
1005
967
|
|
|
1006
968
|
// src/components/Toolbar/icons/Selector.tsx
|
|
1007
|
-
import
|
|
969
|
+
import React26 from "react";
|
|
1008
970
|
var Selector = (props) => {
|
|
1009
971
|
const stroke = getStroke(props);
|
|
1010
|
-
return /* @__PURE__ */
|
|
972
|
+
return /* @__PURE__ */ React26.createElement("svg", {
|
|
1011
973
|
viewBox: "0 0 24 24"
|
|
1012
|
-
}, /* @__PURE__ */
|
|
974
|
+
}, /* @__PURE__ */ React26.createElement("path", {
|
|
1013
975
|
fill: stroke,
|
|
1014
976
|
d: "m12 12 8 2.667-3.556 1.777L14.667 20 12 12Zm3-8v7.5h-1V5H5v9h6.5v1H4V4h11Z"
|
|
1015
977
|
}));
|
|
1016
978
|
};
|
|
1017
979
|
|
|
1018
980
|
// src/components/Toolbar/icons/SpeechBalloon.tsx
|
|
1019
|
-
import
|
|
981
|
+
import React27 from "react";
|
|
1020
982
|
var SpeechBalloon = (props) => {
|
|
1021
983
|
const stroke = getStroke(props);
|
|
1022
|
-
return /* @__PURE__ */
|
|
984
|
+
return /* @__PURE__ */ React27.createElement("svg", {
|
|
1023
985
|
viewBox: "0 0 24 24"
|
|
1024
|
-
}, /* @__PURE__ */
|
|
986
|
+
}, /* @__PURE__ */ React27.createElement("path", {
|
|
1025
987
|
fill: "none",
|
|
1026
988
|
stroke,
|
|
1027
989
|
d: "M17 4.5c.414 0 .79.168 1.06.44.272.27.44.646.44 1.06v9c0 .414-.168.79-.44 1.06a1.49 1.49 0 0 1-1.06.44h-4.207l-2.715 2.715-1.81-2.715H7a1.49 1.49 0 0 1-1.06-.44A1.495 1.495 0 0 1 5.5 15V6c0-.414.168-.79.44-1.06A1.49 1.49 0 0 1 7 4.5Z"
|
|
@@ -1029,12 +991,12 @@ var SpeechBalloon = (props) => {
|
|
|
1029
991
|
};
|
|
1030
992
|
|
|
1031
993
|
// src/components/Toolbar/icons/Star.tsx
|
|
1032
|
-
import
|
|
994
|
+
import React28 from "react";
|
|
1033
995
|
var Star = (props) => {
|
|
1034
996
|
const stroke = getStroke(props);
|
|
1035
|
-
return /* @__PURE__ */
|
|
997
|
+
return /* @__PURE__ */ React28.createElement("svg", {
|
|
1036
998
|
viewBox: "0 0 24 24"
|
|
1037
|
-
}, /* @__PURE__ */
|
|
999
|
+
}, /* @__PURE__ */ React28.createElement("path", {
|
|
1038
1000
|
fill: "none",
|
|
1039
1001
|
stroke,
|
|
1040
1002
|
d: "m12 3.523 1.993 5.734 6.07.123-4.838 3.668 1.758 5.81L12 15.391l-4.983 3.467 1.758-5.81L3.938 9.38l6.069-.123L12 3.523Z"
|
|
@@ -1042,24 +1004,24 @@ var Star = (props) => {
|
|
|
1042
1004
|
};
|
|
1043
1005
|
|
|
1044
1006
|
// src/components/Toolbar/icons/Text.tsx
|
|
1045
|
-
import
|
|
1007
|
+
import React29 from "react";
|
|
1046
1008
|
var Text = (props) => {
|
|
1047
1009
|
const stroke = getStroke(props);
|
|
1048
|
-
return /* @__PURE__ */
|
|
1010
|
+
return /* @__PURE__ */ React29.createElement("svg", {
|
|
1049
1011
|
viewBox: "0 0 24 24"
|
|
1050
|
-
}, /* @__PURE__ */
|
|
1012
|
+
}, /* @__PURE__ */ React29.createElement("path", {
|
|
1051
1013
|
fill: stroke,
|
|
1052
1014
|
d: "M18.5 5.5V8h-1V6.5H13v11h2v1H9v-1h2v-11H6.5V8h-1V5.5h13Z"
|
|
1053
1015
|
}));
|
|
1054
1016
|
};
|
|
1055
1017
|
|
|
1056
1018
|
// src/components/Toolbar/icons/Triangle.tsx
|
|
1057
|
-
import
|
|
1019
|
+
import React30 from "react";
|
|
1058
1020
|
var Triangle = (props) => {
|
|
1059
1021
|
const stroke = getStroke(props);
|
|
1060
|
-
return /* @__PURE__ */
|
|
1022
|
+
return /* @__PURE__ */ React30.createElement("svg", {
|
|
1061
1023
|
viewBox: "0 0 24 24"
|
|
1062
|
-
}, /* @__PURE__ */
|
|
1024
|
+
}, /* @__PURE__ */ React30.createElement("path", {
|
|
1063
1025
|
fill: "none",
|
|
1064
1026
|
stroke,
|
|
1065
1027
|
d: "M12 6.008 19.138 18.5H4.862L12 6.008Z"
|
|
@@ -1067,12 +1029,12 @@ var Triangle = (props) => {
|
|
|
1067
1029
|
};
|
|
1068
1030
|
|
|
1069
1031
|
// src/components/Toolbar/icons/Up.tsx
|
|
1070
|
-
import
|
|
1032
|
+
import React31 from "react";
|
|
1071
1033
|
var Up = (props) => {
|
|
1072
1034
|
const stroke = getStroke(props);
|
|
1073
|
-
return /* @__PURE__ */
|
|
1035
|
+
return /* @__PURE__ */ React31.createElement("svg", {
|
|
1074
1036
|
viewBox: "0 0 24 24"
|
|
1075
|
-
}, /* @__PURE__ */
|
|
1037
|
+
}, /* @__PURE__ */ React31.createElement("path", {
|
|
1076
1038
|
fill: "none",
|
|
1077
1039
|
stroke,
|
|
1078
1040
|
d: "m16 11-2-2-2-2-2 2-2 2m8 6-2-2-2-2-2 2-2 2"
|
|
@@ -1104,12 +1066,12 @@ var Icons = {
|
|
|
1104
1066
|
|
|
1105
1067
|
// src/components/Toolbar/components/Button.tsx
|
|
1106
1068
|
import clsx4 from "clsx";
|
|
1107
|
-
import
|
|
1069
|
+
import React32, { forwardRef, useContext as useContext3 } from "react";
|
|
1108
1070
|
import Tippy4 from "@tippyjs/react";
|
|
1109
1071
|
var Button = forwardRef((props, ref) => {
|
|
1110
1072
|
const { content, disabled, active, onClick, interactive, placement = "right", children } = props;
|
|
1111
1073
|
const { writable, theme } = useContext3(ToolbarContext);
|
|
1112
|
-
return /* @__PURE__ */
|
|
1074
|
+
return /* @__PURE__ */ React32.createElement(Tippy4, {
|
|
1113
1075
|
className: "fastboard-tip",
|
|
1114
1076
|
content,
|
|
1115
1077
|
interactive,
|
|
@@ -1119,7 +1081,7 @@ var Button = forwardRef((props, ref) => {
|
|
|
1119
1081
|
offset: placement.includes("right") ? RightOffset : void 0,
|
|
1120
1082
|
delay: [1e3, 400],
|
|
1121
1083
|
duration: 300
|
|
1122
|
-
}, /* @__PURE__ */
|
|
1084
|
+
}, /* @__PURE__ */ React32.createElement("button", {
|
|
1123
1085
|
ref,
|
|
1124
1086
|
className: clsx4("fastboard-toolbar-btn", theme, { active }),
|
|
1125
1087
|
onClick,
|
|
@@ -1131,9 +1093,9 @@ var Button = forwardRef((props, ref) => {
|
|
|
1131
1093
|
function renderToolTip(text, hotkey) {
|
|
1132
1094
|
if (!(typeof hotkey === "string"))
|
|
1133
1095
|
return text;
|
|
1134
|
-
return /* @__PURE__ */
|
|
1096
|
+
return /* @__PURE__ */ React33.createElement("span", {
|
|
1135
1097
|
className: "fastboard-toolbar-tooltip"
|
|
1136
|
-
}, /* @__PURE__ */
|
|
1098
|
+
}, /* @__PURE__ */ React33.createElement("span", null, text), /* @__PURE__ */ React33.createElement("span", {
|
|
1137
1099
|
className: "fastboard-toolbar-hotkey"
|
|
1138
1100
|
}, hotkey.toUpperCase()));
|
|
1139
1101
|
}
|
|
@@ -1147,12 +1109,12 @@ function ClickerButton() {
|
|
|
1147
1109
|
const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1148
1110
|
const active = appliance === ApplianceNames.clicker;
|
|
1149
1111
|
const disabled = !writable;
|
|
1150
|
-
return /* @__PURE__ */
|
|
1112
|
+
return /* @__PURE__ */ React33.createElement(Button, {
|
|
1151
1113
|
content: renderToolTip(t("clicker"), shortcut),
|
|
1152
1114
|
onClick: changeAppliance,
|
|
1153
1115
|
active
|
|
1154
|
-
}, /* @__PURE__ */
|
|
1155
|
-
fallback: /* @__PURE__ */
|
|
1116
|
+
}, /* @__PURE__ */ React33.createElement(Icon, {
|
|
1117
|
+
fallback: /* @__PURE__ */ React33.createElement(Icons.Clicker, {
|
|
1156
1118
|
theme,
|
|
1157
1119
|
active
|
|
1158
1120
|
}),
|
|
@@ -1169,12 +1131,12 @@ function SelectorButton() {
|
|
|
1169
1131
|
const active = appliance === ApplianceNames.selector;
|
|
1170
1132
|
const disabled = !writable;
|
|
1171
1133
|
const shortcut = (app.hotKeys || defaultHotKeys).changeToSelector;
|
|
1172
|
-
return /* @__PURE__ */
|
|
1134
|
+
return /* @__PURE__ */ React33.createElement(Button, {
|
|
1173
1135
|
content: renderToolTip(t("selector"), shortcut),
|
|
1174
1136
|
onClick: changeAppliance,
|
|
1175
1137
|
active
|
|
1176
|
-
}, /* @__PURE__ */
|
|
1177
|
-
fallback: /* @__PURE__ */
|
|
1138
|
+
}, /* @__PURE__ */ React33.createElement(Icon, {
|
|
1139
|
+
fallback: /* @__PURE__ */ React33.createElement(Icons.Selector, {
|
|
1178
1140
|
theme,
|
|
1179
1141
|
active
|
|
1180
1142
|
}),
|
|
@@ -1191,12 +1153,12 @@ function EraserButton() {
|
|
|
1191
1153
|
const active = appliance === ApplianceNames.eraser;
|
|
1192
1154
|
const disabled = !writable;
|
|
1193
1155
|
const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToEraser;
|
|
1194
|
-
return /* @__PURE__ */
|
|
1156
|
+
return /* @__PURE__ */ React33.createElement(Button, {
|
|
1195
1157
|
content: renderToolTip(t("eraser"), shortcut),
|
|
1196
1158
|
onClick: changeAppliance,
|
|
1197
1159
|
active
|
|
1198
|
-
}, /* @__PURE__ */
|
|
1199
|
-
fallback: /* @__PURE__ */
|
|
1160
|
+
}, /* @__PURE__ */ React33.createElement(Icon, {
|
|
1161
|
+
fallback: /* @__PURE__ */ React33.createElement(Icons.Eraser, {
|
|
1200
1162
|
theme,
|
|
1201
1163
|
active
|
|
1202
1164
|
}),
|
|
@@ -1208,11 +1170,11 @@ function CleanButton() {
|
|
|
1208
1170
|
const { t } = useTranslation();
|
|
1209
1171
|
const { theme, icons, writable, cleanCurrentScene } = useContext4(ToolbarContext);
|
|
1210
1172
|
const disabled = !writable;
|
|
1211
|
-
return /* @__PURE__ */
|
|
1173
|
+
return /* @__PURE__ */ React33.createElement(Button, {
|
|
1212
1174
|
content: t("clean"),
|
|
1213
1175
|
onClick: cleanCurrentScene
|
|
1214
|
-
}, /* @__PURE__ */
|
|
1215
|
-
fallback: /* @__PURE__ */
|
|
1176
|
+
}, /* @__PURE__ */ React33.createElement(Icon, {
|
|
1177
|
+
fallback: /* @__PURE__ */ React33.createElement(Icons.Clean, {
|
|
1216
1178
|
theme
|
|
1217
1179
|
}),
|
|
1218
1180
|
src: disabled ? icons == null ? void 0 : icons.cleanIconDisable : icons == null ? void 0 : icons.cleanIcon,
|
|
@@ -1222,7 +1184,7 @@ function CleanButton() {
|
|
|
1222
1184
|
|
|
1223
1185
|
// src/components/Toolbar/components/AppsButton.tsx
|
|
1224
1186
|
import Tippy5 from "@tippyjs/react";
|
|
1225
|
-
import
|
|
1187
|
+
import React34, { useContext as useContext5 } from "react";
|
|
1226
1188
|
|
|
1227
1189
|
// src/components/Toolbar/components/assets/vscode.png
|
|
1228
1190
|
var vscode_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAAAXNSR0IArs4c6QAABnxJREFUWMPtWWlsVFUUPve+ZTY6HUoLpS1tEUrLVooKLgWVTQGVfRWhiUpAECGGEgOJShRj9I9EjSEQIMhSBIKBQoBgQCMEKEuo1LKV7rRl2pm201nf3Hv8MdNKO/NmBqWFGE7Oj8nkzb3f+8653zn3DEFEePyMwmNpT2D9D2CJnb1BpcWx/WKdTYoZ01f/SpKoE0kkvyKdehKL7jat++WapalZlOS4wS+aNGRiMp2QLHWTySODde5Ow/r8YpvDCZxRgj2HjCKEAqHdZJiYIk5KEYwa2tWwjhXVfn3iptujACIwhQLEZWYT0oqDUINExvcRJqeKsTraRbDyCiq/P3Wbcw4AiByYVwCMzRz1Dyz/5kQn0rHJ4tsDRG37nHvIKY+Im34v3XGuDDm2fuODhoiAAU/bPSz/Dnq8fFmmprMEQmH8q+M3t54t9TLOEH3OETkCB1ALCnJ+slzpLIFwetj6I8Uni+ugfVYQBB9TIZLFw7FTYDU7ldwDf14st0Dg5oiICIAMgaiGPmI5vWF2SQJ5KkYTFpPZ5vpwb+H12iYIRkgrWxDiZGEkKs8Rfzhv3n7FQgnJyeq+ZESsJKimYIXFsXzXlSqrXe0B3prqXJ2tgBgGpLzC8IvTdVsKGrwK83i8mwsaVuRXm+1K0OWKa5rf2XGp3NLSluCBzgGMBu26qcM1oogIQR3Cwvr8dO3P1xoZIgPCgDDEP8ptc/ZWnKvsyMf50obFOy/fa3KELCJkcKJp9+LscYMTfaypeRhYR240ImfY3u7ZXEsPVW0qqGetdB+7VvNB3lVri4txVHMEMm9E8racEUkxegTg4BOLoB4O1ursXoTQQJ49infjWfPy/Kp6u5J3vnTNvit2hxPVLUqn+WrG0LWTMrSS0Hbc1KjiEE4g5g+LkQW6/lStx8sChe90ie2Nantz1U2ueECQgApAKZAOqUzS46O+nZPVN9bQQQVUpSsSgZg5xGTS0dzjdXaXO3ABq5NDj77YWAPORqAiUBGoQNqQETrr2T5rJ6YbNB1X5qAKC8MG0Wfj+hk3T02MNmgYQjAnPDoBoxM483KmcKYwzhiCTitvmD5kw9TBgZh8sEJ4pE3zM4n6n2b0iTeqyinqTBjXD4Gi4kHG+sXq894dOevpJNUwqahD0OCGKtXpcdq8OSmpMVpVTRJkHteP64zTshL2L83O6G0MsZoK8X5/wJrIFDCXoNIdZJ2aNIEpiZu6Iw3TjISoPwgPwtb12uaZP565VduE5hLusnGE4M7xwDXrtF13iu85Q2F6KEEsKLPM23zhbpOLUYkTEevLuN3qa1CCGOe3zM4Ze8rzCi2qHUzkGq8G63hR7YJtF+/ZnAwIJwKnIicSWiq5zRxicZvLs/pYde7xGruHBUQaWAiPhK28CxVLdl5usbv8QUJAQjkVUJCwqcbotSKQEAHdfbVhys7SEos7IIjqFsBYR1jbzpSu3l/oVrztmSBABE7lcZmpv60Y+eWrCYIg+LvhYMiK6hyTd5QeLGqMMIbh28DP8os8jAVSKIli7oQBK8b2FyjJGa4zaYWVR+863YpaajY63O8frrxQ7fhkTLxOom0C8S9nENOzkgBIu9dHiI/W57333KrxaQL1F5mpA007ZiZH6WTVaCIwxrdcrJ+ys6TM6ob/eBK/mZW58PkU9PW6AEjIy+k9T6waPTottsOTL6V2Ozg/tZdRGwIZ53i5qmXClr+OFJlDXuMiuL5yxA1Hizf+elugZOXY/rmvpYdomu9Y3DP3lJZZXSEuXOB1U2SJaUMJISrSgYULoyO6VRdWN8qCkBEfFTYPamzKnL1lhTWO4BKEjCgewpWEAcMIJWqX3qJF0RHJaWaiKRJMANA7Sjq0oG92ahQCCZo3vr4UH1apjty668R9c1PeHGhiAB3KOSJy7t9YFVbnjd0MsrBterJJK2y9VH//67d95AhqNzKJduaQUhbId68nrhnVixDappX+e75/OhJU4smMNE3nDikpIevH9Y7RCx+fuMsY950pisB9oDrKANVLdPYA6aMsuStmpytf6BmrF5cdrnZ7FETgiAQA4b4oEmqUydw0MWeQHG8Qum6ku2BYTA+d+Na+ima7AzgIiIgEAIBSk4YszJAWDZRjtF0+pPSPTytapu0qMVuaJYEkpA/rqSc5GeL8DNmkoY9y0gwAN+tdn542W6HbvEGG2WmSQXoMBuBP/lx5Auuxs78BCY9M0wbXBY0AAAAASUVORK5CYII=";
|
|
@@ -1237,19 +1199,19 @@ var countdown_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyC
|
|
|
1237
1199
|
function AppsButton({ content, onClick }) {
|
|
1238
1200
|
const { theme, icons, writable } = useContext5(ToolbarContext);
|
|
1239
1201
|
const disabled = !writable;
|
|
1240
|
-
const button = /* @__PURE__ */
|
|
1202
|
+
const button = /* @__PURE__ */ React34.createElement(Button, {
|
|
1241
1203
|
content: "Apps",
|
|
1242
1204
|
onClick
|
|
1243
|
-
}, /* @__PURE__ */
|
|
1244
|
-
fallback: /* @__PURE__ */
|
|
1205
|
+
}, /* @__PURE__ */ React34.createElement(Icon, {
|
|
1206
|
+
fallback: /* @__PURE__ */ React34.createElement(Icons.Apps, {
|
|
1245
1207
|
theme
|
|
1246
1208
|
}),
|
|
1247
1209
|
src: disabled ? icons == null ? void 0 : icons.appsIconDisable : icons == null ? void 0 : icons.appsIcon,
|
|
1248
1210
|
alt: "[apps]"
|
|
1249
1211
|
}));
|
|
1250
|
-
return content === false ? button : /* @__PURE__ */
|
|
1212
|
+
return content === false ? button : /* @__PURE__ */ React34.createElement("span", {
|
|
1251
1213
|
className: "fastboard-toolbar-btn-interactive"
|
|
1252
|
-
}, /* @__PURE__ */
|
|
1214
|
+
}, /* @__PURE__ */ React34.createElement(Tippy5, {
|
|
1253
1215
|
className: "fastboard-tip",
|
|
1254
1216
|
content: renderAppsButtonContent(content),
|
|
1255
1217
|
theme,
|
|
@@ -1261,25 +1223,25 @@ function AppsButton({ content, onClick }) {
|
|
|
1261
1223
|
}, button));
|
|
1262
1224
|
}
|
|
1263
1225
|
function renderAppsButtonContent(content) {
|
|
1264
|
-
return /* @__PURE__ */
|
|
1226
|
+
return /* @__PURE__ */ React34.createElement("div", {
|
|
1265
1227
|
className: "fastboard-toolbar-panel apps"
|
|
1266
|
-
}, /* @__PURE__ */
|
|
1228
|
+
}, /* @__PURE__ */ React34.createElement("div", {
|
|
1267
1229
|
className: "fastboard-toolbar-apps"
|
|
1268
|
-
}, content || /* @__PURE__ */
|
|
1230
|
+
}, content || /* @__PURE__ */ React34.createElement(DefaultApps, null)));
|
|
1269
1231
|
}
|
|
1270
1232
|
function DefaultApps() {
|
|
1271
1233
|
const app = useFastboardApp();
|
|
1272
|
-
return /* @__PURE__ */
|
|
1234
|
+
return /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement(AppIcon, {
|
|
1273
1235
|
title: "Code Editor",
|
|
1274
1236
|
src: vscode_default,
|
|
1275
1237
|
alt: "[code editor]",
|
|
1276
1238
|
onClick: app == null ? void 0 : app.insertCodeEditor.bind(app)
|
|
1277
|
-
}), /* @__PURE__ */
|
|
1239
|
+
}), /* @__PURE__ */ React34.createElement(AppIcon, {
|
|
1278
1240
|
title: "GeoGebra",
|
|
1279
1241
|
src: geogebra_default,
|
|
1280
1242
|
alt: "[geogebra]",
|
|
1281
1243
|
onClick: app == null ? void 0 : app.insertGeoGebra.bind(app)
|
|
1282
|
-
}), /* @__PURE__ */
|
|
1244
|
+
}), /* @__PURE__ */ React34.createElement(AppIcon, {
|
|
1283
1245
|
title: "Countdown",
|
|
1284
1246
|
src: countdown_default,
|
|
1285
1247
|
alt: "[countdown]",
|
|
@@ -1287,29 +1249,29 @@ function DefaultApps() {
|
|
|
1287
1249
|
}));
|
|
1288
1250
|
}
|
|
1289
1251
|
function AppIcon({ title, src, alt, onClick }) {
|
|
1290
|
-
return /* @__PURE__ */
|
|
1252
|
+
return /* @__PURE__ */ React34.createElement("span", {
|
|
1291
1253
|
className: "fastboard-toolbar-app-icon"
|
|
1292
|
-
}, /* @__PURE__ */
|
|
1254
|
+
}, /* @__PURE__ */ React34.createElement(Button, {
|
|
1293
1255
|
placement: "top",
|
|
1294
1256
|
content: title,
|
|
1295
1257
|
onClick
|
|
1296
|
-
}, /* @__PURE__ */
|
|
1258
|
+
}, /* @__PURE__ */ React34.createElement("img", {
|
|
1297
1259
|
src,
|
|
1298
1260
|
alt,
|
|
1299
1261
|
title
|
|
1300
|
-
})), /* @__PURE__ */
|
|
1262
|
+
})), /* @__PURE__ */ React34.createElement("span", {
|
|
1301
1263
|
className: "fastboard-toolbar-app-icon-text"
|
|
1302
1264
|
}, title));
|
|
1303
1265
|
}
|
|
1304
1266
|
|
|
1305
1267
|
// src/components/Toolbar/components/PencilButton.tsx
|
|
1306
1268
|
import Tippy6 from "@tippyjs/react";
|
|
1307
|
-
import
|
|
1269
|
+
import React38, { useCallback as useCallback7, useContext as useContext9 } from "react";
|
|
1308
1270
|
import { ApplianceNames as ApplianceNames2 } from "white-web-sdk";
|
|
1309
1271
|
|
|
1310
1272
|
// src/components/Toolbar/components/ColorBox.tsx
|
|
1311
1273
|
import clsx5 from "clsx";
|
|
1312
|
-
import
|
|
1274
|
+
import React35, { useContext as useContext6 } from "react";
|
|
1313
1275
|
var colors = {
|
|
1314
1276
|
"#E02020": [224, 32, 32],
|
|
1315
1277
|
"#F7B500": [247, 181, 0],
|
|
@@ -1325,17 +1287,17 @@ function ColorBox() {
|
|
|
1325
1287
|
const { theme, memberState, setStrokeColor, writable } = useContext6(ToolbarContext);
|
|
1326
1288
|
const strokeColor = memberState == null ? void 0 : memberState.strokeColor;
|
|
1327
1289
|
const disabled = !writable;
|
|
1328
|
-
return /* @__PURE__ */
|
|
1290
|
+
return /* @__PURE__ */ React35.createElement("div", {
|
|
1329
1291
|
className: clsx5("fastboard-toolbar-color-box", theme)
|
|
1330
|
-
}, colorKeys.map((key) => /* @__PURE__ */
|
|
1292
|
+
}, colorKeys.map((key) => /* @__PURE__ */ React35.createElement("div", {
|
|
1331
1293
|
key,
|
|
1332
1294
|
className: clsx5("fastboard-toolbar-color-item", theme),
|
|
1333
1295
|
onClick: () => setStrokeColor(colors[key])
|
|
1334
|
-
}, /* @__PURE__ */
|
|
1296
|
+
}, /* @__PURE__ */ React35.createElement("div", {
|
|
1335
1297
|
className: clsx5("fastboard-toolbar-color-border", theme, {
|
|
1336
1298
|
active: strokeColor && isEqualArray(strokeColor, colors[key])
|
|
1337
1299
|
})
|
|
1338
|
-
}, /* @__PURE__ */
|
|
1300
|
+
}, /* @__PURE__ */ React35.createElement("button", {
|
|
1339
1301
|
className: clsx5("fastboard-toolbar-color-btn"),
|
|
1340
1302
|
style: { background: key },
|
|
1341
1303
|
disabled,
|
|
@@ -1348,10 +1310,10 @@ function ColorBox() {
|
|
|
1348
1310
|
|
|
1349
1311
|
// src/components/Toolbar/components/CutLine.tsx
|
|
1350
1312
|
import clsx6 from "clsx";
|
|
1351
|
-
import
|
|
1313
|
+
import React36, { useContext as useContext7 } from "react";
|
|
1352
1314
|
function CutLine() {
|
|
1353
1315
|
const { theme } = useContext7(ToolbarContext);
|
|
1354
|
-
return /* @__PURE__ */
|
|
1316
|
+
return /* @__PURE__ */ React36.createElement("span", {
|
|
1355
1317
|
className: clsx6(`${name4}-cut-line`, theme)
|
|
1356
1318
|
});
|
|
1357
1319
|
}
|
|
@@ -1359,12 +1321,12 @@ function CutLine() {
|
|
|
1359
1321
|
// src/components/Toolbar/components/Slider.tsx
|
|
1360
1322
|
import clsx7 from "clsx";
|
|
1361
1323
|
import RcSlider from "rc-slider";
|
|
1362
|
-
import
|
|
1324
|
+
import React37, { useContext as useContext8 } from "react";
|
|
1363
1325
|
function Slider() {
|
|
1364
1326
|
const { theme, writable, memberState, setStrokeWidth } = useContext8(ToolbarContext);
|
|
1365
1327
|
const { activeColor } = themes[theme];
|
|
1366
1328
|
const strokeWidth = (memberState == null ? void 0 : memberState.strokeWidth) || 0;
|
|
1367
|
-
return /* @__PURE__ */
|
|
1329
|
+
return /* @__PURE__ */ React37.createElement(RcSlider, {
|
|
1368
1330
|
disabled: !writable,
|
|
1369
1331
|
className: clsx7("fastboard-toolbar-slider", theme),
|
|
1370
1332
|
trackStyle: { background: activeColor },
|
|
@@ -1388,9 +1350,9 @@ function PencilButton() {
|
|
|
1388
1350
|
const active = appliance === ApplianceNames2.pencil;
|
|
1389
1351
|
const disabled = !writable;
|
|
1390
1352
|
const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToPencil;
|
|
1391
|
-
return /* @__PURE__ */
|
|
1353
|
+
return /* @__PURE__ */ React38.createElement("span", {
|
|
1392
1354
|
className: "fastboard-toolbar-btn-interactive"
|
|
1393
|
-
}, /* @__PURE__ */
|
|
1355
|
+
}, /* @__PURE__ */ React38.createElement(Tippy6, {
|
|
1394
1356
|
className: "fastboard-tip",
|
|
1395
1357
|
content: renderPencilButtonContent(),
|
|
1396
1358
|
theme,
|
|
@@ -1399,30 +1361,30 @@ function PencilButton() {
|
|
|
1399
1361
|
offset: RightOffset,
|
|
1400
1362
|
arrow: false,
|
|
1401
1363
|
interactive: true
|
|
1402
|
-
}, /* @__PURE__ */
|
|
1364
|
+
}, /* @__PURE__ */ React38.createElement(Button, {
|
|
1403
1365
|
content: renderToolTip(t("pencil"), shortcut),
|
|
1404
1366
|
active,
|
|
1405
1367
|
onClick: changeAppliance
|
|
1406
|
-
}, /* @__PURE__ */
|
|
1407
|
-
fallback: /* @__PURE__ */
|
|
1368
|
+
}, /* @__PURE__ */ React38.createElement(Icon, {
|
|
1369
|
+
fallback: /* @__PURE__ */ React38.createElement(Icons.Pencil, {
|
|
1408
1370
|
theme,
|
|
1409
1371
|
active
|
|
1410
1372
|
}),
|
|
1411
1373
|
src: disabled ? icons == null ? void 0 : icons.pencilIconDisable : icons == null ? void 0 : icons.pencilIcon,
|
|
1412
1374
|
alt: "[pencil]"
|
|
1413
|
-
}), /* @__PURE__ */
|
|
1375
|
+
}), /* @__PURE__ */ React38.createElement("span", {
|
|
1414
1376
|
className: "fastboard-toolbar-triangle"
|
|
1415
1377
|
}))));
|
|
1416
1378
|
}
|
|
1417
1379
|
function renderPencilButtonContent() {
|
|
1418
|
-
return /* @__PURE__ */
|
|
1380
|
+
return /* @__PURE__ */ React38.createElement("div", {
|
|
1419
1381
|
className: "fastboard-toolbar-panel pencil"
|
|
1420
|
-
}, /* @__PURE__ */
|
|
1382
|
+
}, /* @__PURE__ */ React38.createElement(Slider, null), /* @__PURE__ */ React38.createElement(CutLine, null), /* @__PURE__ */ React38.createElement(ColorBox, null));
|
|
1421
1383
|
}
|
|
1422
1384
|
|
|
1423
1385
|
// src/components/Toolbar/components/ShapesButton.tsx
|
|
1424
1386
|
import Tippy7 from "@tippyjs/react";
|
|
1425
|
-
import
|
|
1387
|
+
import React39, { useContext as useContext10 } from "react";
|
|
1426
1388
|
import { ApplianceNames as ApplianceNames4 } from "white-web-sdk";
|
|
1427
1389
|
|
|
1428
1390
|
// src/components/Toolbar/const.ts
|
|
@@ -1464,9 +1426,9 @@ function ShapesButton() {
|
|
|
1464
1426
|
const key = appliance === ApplianceNames4.shape ? shape : appliance;
|
|
1465
1427
|
const active = ShapeTypes.has(key);
|
|
1466
1428
|
const CurrentIcon = ShapesMap[key] || Icons.Rectangle;
|
|
1467
|
-
return /* @__PURE__ */
|
|
1429
|
+
return /* @__PURE__ */ React39.createElement("span", {
|
|
1468
1430
|
className: "fastboard-toolbar-btn-interactive"
|
|
1469
|
-
}, /* @__PURE__ */
|
|
1431
|
+
}, /* @__PURE__ */ React39.createElement(Tippy7, {
|
|
1470
1432
|
className: "fastboard-tip",
|
|
1471
1433
|
content: renderShapesButtonContent(),
|
|
1472
1434
|
theme,
|
|
@@ -1475,31 +1437,31 @@ function ShapesButton() {
|
|
|
1475
1437
|
offset: RightOffset,
|
|
1476
1438
|
arrow: false,
|
|
1477
1439
|
interactive: true
|
|
1478
|
-
}, /* @__PURE__ */
|
|
1440
|
+
}, /* @__PURE__ */ React39.createElement(Button, {
|
|
1479
1441
|
content: t("shape"),
|
|
1480
1442
|
active
|
|
1481
|
-
}, /* @__PURE__ */
|
|
1443
|
+
}, /* @__PURE__ */ React39.createElement(CurrentIcon, {
|
|
1482
1444
|
theme,
|
|
1483
1445
|
active
|
|
1484
|
-
}), /* @__PURE__ */
|
|
1446
|
+
}), /* @__PURE__ */ React39.createElement("span", {
|
|
1485
1447
|
className: "fastboard-toolbar-triangle"
|
|
1486
1448
|
}))));
|
|
1487
1449
|
}
|
|
1488
1450
|
function renderShapesButtonContent() {
|
|
1489
|
-
return /* @__PURE__ */
|
|
1451
|
+
return /* @__PURE__ */ React39.createElement("div", {
|
|
1490
1452
|
className: "fastboard-toolbar-panel shapes"
|
|
1491
|
-
}, /* @__PURE__ */
|
|
1453
|
+
}, /* @__PURE__ */ React39.createElement(ShapesBox, null), /* @__PURE__ */ React39.createElement(CutLine, null), /* @__PURE__ */ React39.createElement(Slider, null), /* @__PURE__ */ React39.createElement(CutLine, null), /* @__PURE__ */ React39.createElement(ColorBox, null));
|
|
1492
1454
|
}
|
|
1493
1455
|
function ShapesBox() {
|
|
1494
1456
|
const { t } = useTranslation();
|
|
1495
|
-
return /* @__PURE__ */
|
|
1457
|
+
return /* @__PURE__ */ React39.createElement("div", {
|
|
1496
1458
|
className: "fastboard-toolbar-shapes"
|
|
1497
|
-
}, ApplianceShapes.map((Appliance) => /* @__PURE__ */
|
|
1459
|
+
}, ApplianceShapes.map((Appliance) => /* @__PURE__ */ React39.createElement(ApplianceShapeButton, {
|
|
1498
1460
|
key: Appliance,
|
|
1499
1461
|
content: t(Appliance),
|
|
1500
1462
|
Appliance,
|
|
1501
1463
|
Icon: ShapesMap[Appliance]
|
|
1502
|
-
})), Shapes.map((shape) => /* @__PURE__ */
|
|
1464
|
+
})), Shapes.map((shape) => /* @__PURE__ */ React39.createElement(ShapeShapeButton, {
|
|
1503
1465
|
key: shape,
|
|
1504
1466
|
content: t(shape),
|
|
1505
1467
|
shape,
|
|
@@ -1510,12 +1472,12 @@ function ApplianceShapeButton({ content, Appliance, Icon: Icon2 }) {
|
|
|
1510
1472
|
const { theme, writable, setAppliance, memberState } = useContext10(ToolbarContext);
|
|
1511
1473
|
const current = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1512
1474
|
const disabled = !writable;
|
|
1513
|
-
return /* @__PURE__ */
|
|
1475
|
+
return /* @__PURE__ */ React39.createElement(Button, {
|
|
1514
1476
|
content,
|
|
1515
1477
|
disabled,
|
|
1516
1478
|
placement: "top",
|
|
1517
1479
|
onClick: () => setAppliance(Appliance)
|
|
1518
|
-
}, /* @__PURE__ */
|
|
1480
|
+
}, /* @__PURE__ */ React39.createElement(Icon2, {
|
|
1519
1481
|
theme,
|
|
1520
1482
|
active: current === Appliance
|
|
1521
1483
|
}));
|
|
@@ -1525,12 +1487,12 @@ function ShapeShapeButton({ content, shape, Icon: Icon2 }) {
|
|
|
1525
1487
|
const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1526
1488
|
const current = appliance === ApplianceNames4.shape && (memberState == null ? void 0 : memberState.shapeType);
|
|
1527
1489
|
const disabled = !writable;
|
|
1528
|
-
return /* @__PURE__ */
|
|
1490
|
+
return /* @__PURE__ */ React39.createElement(Button, {
|
|
1529
1491
|
content,
|
|
1530
1492
|
disabled,
|
|
1531
1493
|
placement: "top",
|
|
1532
1494
|
onClick: () => setAppliance(ApplianceNames4.shape, shape)
|
|
1533
|
-
}, /* @__PURE__ */
|
|
1495
|
+
}, /* @__PURE__ */ React39.createElement(Icon2, {
|
|
1534
1496
|
theme,
|
|
1535
1497
|
active: current === shape
|
|
1536
1498
|
}));
|
|
@@ -1538,7 +1500,7 @@ function ShapeShapeButton({ content, shape, Icon: Icon2 }) {
|
|
|
1538
1500
|
|
|
1539
1501
|
// src/components/Toolbar/components/TextButton.tsx
|
|
1540
1502
|
import Tippy8 from "@tippyjs/react";
|
|
1541
|
-
import
|
|
1503
|
+
import React40, { useCallback as useCallback8, useContext as useContext11 } from "react";
|
|
1542
1504
|
import { ApplianceNames as ApplianceNames5 } from "white-web-sdk";
|
|
1543
1505
|
function TextButton() {
|
|
1544
1506
|
const app = useFastboardApp();
|
|
@@ -1551,9 +1513,9 @@ function TextButton() {
|
|
|
1551
1513
|
const active = appliance === ApplianceNames5.text;
|
|
1552
1514
|
const disabled = !writable;
|
|
1553
1515
|
const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToText;
|
|
1554
|
-
return /* @__PURE__ */
|
|
1516
|
+
return /* @__PURE__ */ React40.createElement("span", {
|
|
1555
1517
|
className: "fastboard-toolbar-btn-interactive"
|
|
1556
|
-
}, /* @__PURE__ */
|
|
1518
|
+
}, /* @__PURE__ */ React40.createElement(Tippy8, {
|
|
1557
1519
|
className: "fastboard-tip",
|
|
1558
1520
|
content: renderTextButtonContent(),
|
|
1559
1521
|
theme,
|
|
@@ -1562,53 +1524,53 @@ function TextButton() {
|
|
|
1562
1524
|
offset: RightOffset,
|
|
1563
1525
|
arrow: false,
|
|
1564
1526
|
interactive: true
|
|
1565
|
-
}, /* @__PURE__ */
|
|
1527
|
+
}, /* @__PURE__ */ React40.createElement(Button, {
|
|
1566
1528
|
content: renderToolTip(t("text"), shortcut),
|
|
1567
1529
|
active,
|
|
1568
1530
|
onClick: changeAppliance
|
|
1569
|
-
}, /* @__PURE__ */
|
|
1570
|
-
fallback: /* @__PURE__ */
|
|
1531
|
+
}, /* @__PURE__ */ React40.createElement(Icon, {
|
|
1532
|
+
fallback: /* @__PURE__ */ React40.createElement(Icons.Text, {
|
|
1571
1533
|
theme,
|
|
1572
1534
|
active
|
|
1573
1535
|
}),
|
|
1574
1536
|
src: disabled ? icons == null ? void 0 : icons.textIconDisable : icons == null ? void 0 : icons.textIcon,
|
|
1575
1537
|
alt: "[text]"
|
|
1576
|
-
}), /* @__PURE__ */
|
|
1538
|
+
}), /* @__PURE__ */ React40.createElement("span", {
|
|
1577
1539
|
className: "fastboard-toolbar-triangle"
|
|
1578
1540
|
}))));
|
|
1579
1541
|
}
|
|
1580
1542
|
function renderTextButtonContent() {
|
|
1581
|
-
return /* @__PURE__ */
|
|
1543
|
+
return /* @__PURE__ */ React40.createElement("div", {
|
|
1582
1544
|
className: "fastboard-toolbar-panel text"
|
|
1583
|
-
}, /* @__PURE__ */
|
|
1545
|
+
}, /* @__PURE__ */ React40.createElement(ColorBox, null));
|
|
1584
1546
|
}
|
|
1585
1547
|
|
|
1586
1548
|
// src/components/Toolbar/components/UpDownButtons.tsx
|
|
1587
|
-
import
|
|
1549
|
+
import React41, { useCallback as useCallback9, useContext as useContext12 } from "react";
|
|
1588
1550
|
function UpButton({ disabled, scrollTo }) {
|
|
1589
1551
|
const { theme, icons } = useContext12(ToolbarContext);
|
|
1590
1552
|
const scrollUp = useCallback9(() => scrollTo(-ItemHeight), [scrollTo]);
|
|
1591
|
-
return /* @__PURE__ */
|
|
1553
|
+
return /* @__PURE__ */ React41.createElement(React41.Fragment, null, /* @__PURE__ */ React41.createElement(Button, {
|
|
1592
1554
|
content: "Up",
|
|
1593
1555
|
disabled,
|
|
1594
1556
|
onClick: scrollUp
|
|
1595
|
-
}, /* @__PURE__ */
|
|
1596
|
-
fallback: /* @__PURE__ */
|
|
1557
|
+
}, /* @__PURE__ */ React41.createElement(Icon, {
|
|
1558
|
+
fallback: /* @__PURE__ */ React41.createElement(Icons.Up, {
|
|
1597
1559
|
theme
|
|
1598
1560
|
}),
|
|
1599
1561
|
src: disabled ? icons == null ? void 0 : icons.upIconDisable : icons == null ? void 0 : icons.upIcon,
|
|
1600
1562
|
alt: "[up]"
|
|
1601
|
-
})), /* @__PURE__ */
|
|
1563
|
+
})), /* @__PURE__ */ React41.createElement(CutLine, null));
|
|
1602
1564
|
}
|
|
1603
1565
|
function DownButton({ disabled, scrollTo }) {
|
|
1604
1566
|
const { theme, icons } = useContext12(ToolbarContext);
|
|
1605
1567
|
const scrollDown = useCallback9(() => scrollTo(ItemHeight), [scrollTo]);
|
|
1606
|
-
return /* @__PURE__ */
|
|
1568
|
+
return /* @__PURE__ */ React41.createElement(React41.Fragment, null, /* @__PURE__ */ React41.createElement(CutLine, null), /* @__PURE__ */ React41.createElement(Button, {
|
|
1607
1569
|
content: "Down",
|
|
1608
1570
|
disabled,
|
|
1609
1571
|
onClick: scrollDown
|
|
1610
|
-
}, /* @__PURE__ */
|
|
1611
|
-
fallback: /* @__PURE__ */
|
|
1572
|
+
}, /* @__PURE__ */ React41.createElement(Icon, {
|
|
1573
|
+
fallback: /* @__PURE__ */ React41.createElement(Icons.Down, {
|
|
1612
1574
|
theme
|
|
1613
1575
|
}),
|
|
1614
1576
|
src: disabled ? icons == null ? void 0 : icons.downIconDisable : icons == null ? void 0 : icons.downIcon,
|
|
@@ -1616,11 +1578,16 @@ function DownButton({ disabled, scrollTo }) {
|
|
|
1616
1578
|
})));
|
|
1617
1579
|
}
|
|
1618
1580
|
|
|
1581
|
+
// src/components/Toolbar/components/assets/collapsed.png
|
|
1582
|
+
var collapsed_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAB8CAYAAAAMw2JFAAAAAXNSR0IArs4c6QAAA49JREFUeF7tnLFv00AUh5/TFVYkxIDEnKFjJ/gb2CIqpUPagYXNEV2LRGk7tAiRSA0bWcC0QzowwQKuVDnCLE2KTZCMSNLkHCLalCpBkdFVMTKh8TXO+c4S16XDSb0vv/vyfE3fqwQR+ZIA4AoAdADgJ08mSVXVV9ls9nE+nzcBAAFAnweQ1Gg06gihrmEYubm5OeX4+LgBAD9Yw0iO49S63S7U6/VYq9UyCoXC2tLS0kcAwEA9VkBnIO5m7XYbJwTVanVLluWcruvfAOA7ADhhA/0Fgjfr9/tweHgYs20baZq2sbCw8HaQTqgy/wPivvKTkxN8XFPNZvMdC5lHgmAgx3EAISQhhHqGYWyGKbMviJsOC5kvBOIjcxUAWjRkHgtkSGZb07R1WjKPDeIj82cAaAatzIFBhmU2TTOXTCZfBq3ME4HQlJkKCA2ZqYJMIjN1kKAyhwYyrsyhgpwns6IoyysrK/rgQfrnqc4ExCtzrVb7tbe39yCVSr0GAFyZz2CYguANT09PwbIsaWdn5146nX4zuO+wB8EwnU5HqlQqdiKRuHNwcFDC1Zh5Iu4xWZYVU1V1eXZ29jlOhRvI0dGRVC6XP8zMzNwFgK/cQHq9HpTLZXt6evo2AFS4geDbX6lUisXj8VsA8IkbCHZlf39/Kh6P3xQg7jtHJDL826JIRCRC+gRBOCIcEY6QEhCOkBISdUQ4IhwhJSAcISUk6kjojjxaXbt0Py3jP1DCtes3ruLvVetLnenRYIgnT7OX3Y25gLgQ3gSYg3ghuIEMQ3ABOQ+COcgoCKYgfhD/Jwh+1ZE4GrdKRkJWPxhulTUSBe28ZLglMgzDHcR9N3G/BpDuHH7r4qoY+lUx6PGIoxFHQ3JHOCIcEY6QEhCOkBISdUQ4IhwhJSAcISUk6ohwxM+RyLR/RaYhLjItgpFomoxEG2kkGmvxRBPXVmPPWIypKMpD5s3X3kEh0zSfJZPJF6NmK0JrI3VHpxBCaiaTWc/n877TJtRBPMNkdrFY3Jifn8ed3njUzneYjCqIZ7xue3FxMadpGh6vu9BEEhUQr4yFQmE1yMDhRCDjyEi6JAUGGVdG6iBBZaQK4pVRluVNXdfZjsfRkHGiRGjKGBjEI+P7TCazQaqMpI1I635jtmNVRtJGpPVRg8fbtGW8EAiL6VUiyGA4vUd6TJN+0KTr0u7u7hYLGUmg0fkHBiRSVuu/AWpfZNft9vFDAAAAAElFTkSuQmCC";
|
|
1583
|
+
|
|
1619
1584
|
// src/components/Toolbar/Content.tsx
|
|
1620
|
-
|
|
1585
|
+
function Content({ onCollapse }) {
|
|
1586
|
+
const { theme, icons, writable } = useContext13(ToolbarContext);
|
|
1621
1587
|
const ref = useRef2(null);
|
|
1622
|
-
const [scrollTop, setScrollTop] =
|
|
1623
|
-
const [parentHeight, setParentHeight] =
|
|
1588
|
+
const [scrollTop, setScrollTop] = useState3(0);
|
|
1589
|
+
const [parentHeight, setParentHeight] = useState3(0);
|
|
1590
|
+
const disabled = !writable;
|
|
1624
1591
|
const needScroll = parentHeight < ItemHeight * ItemsCount + 48;
|
|
1625
1592
|
const sectionHeight = clamp(parentHeight - 48 * (needScroll ? 3 : 1), MinHeight, MaxHeight);
|
|
1626
1593
|
const scrollBuffer = Math.max(parentHeight - sectionHeight - 1, 0);
|
|
@@ -1629,12 +1596,12 @@ var Content = React43.memo(() => {
|
|
|
1629
1596
|
const scrollTo = useCallback10((height) => {
|
|
1630
1597
|
setScrollTop(clamp(scrollTop + height, 0, scrollBuffer));
|
|
1631
1598
|
}, [scrollBuffer, scrollTop]);
|
|
1632
|
-
|
|
1599
|
+
useEffect3(() => {
|
|
1633
1600
|
if (ref.current) {
|
|
1634
1601
|
ref.current.scrollTop = scrollTop;
|
|
1635
1602
|
}
|
|
1636
1603
|
}, [scrollTop]);
|
|
1637
|
-
|
|
1604
|
+
useEffect3(() => {
|
|
1638
1605
|
var _a, _b;
|
|
1639
1606
|
const container = (_b = (_a = ref.current) == null ? void 0 : _a.parentElement) == null ? void 0 : _b.parentElement;
|
|
1640
1607
|
if (container) {
|
|
@@ -1647,95 +1614,82 @@ var Content = React43.memo(() => {
|
|
|
1647
1614
|
return () => resizeObserver.disconnect();
|
|
1648
1615
|
}
|
|
1649
1616
|
}, []);
|
|
1650
|
-
return /* @__PURE__ */
|
|
1617
|
+
return /* @__PURE__ */ React42.createElement(React42.Fragment, null, needScroll && /* @__PURE__ */ React42.createElement(UpButton, {
|
|
1651
1618
|
scrollTo,
|
|
1652
1619
|
disabled: disableScrollUp
|
|
1653
|
-
}), /* @__PURE__ */
|
|
1620
|
+
}), /* @__PURE__ */ React42.createElement("div", {
|
|
1654
1621
|
ref,
|
|
1655
1622
|
className: clsx8(`${name4}-section`),
|
|
1656
1623
|
style: {
|
|
1657
1624
|
height: `${sectionHeight}px`,
|
|
1658
1625
|
overflow: needScroll ? "hidden" : "visible"
|
|
1659
1626
|
}
|
|
1660
|
-
}, /* @__PURE__ */
|
|
1627
|
+
}, /* @__PURE__ */ React42.createElement(ClickerButton, null), /* @__PURE__ */ React42.createElement(SelectorButton, null), /* @__PURE__ */ React42.createElement(PencilButton, null), /* @__PURE__ */ React42.createElement(TextButton, null), /* @__PURE__ */ React42.createElement(ShapesButton, null), /* @__PURE__ */ React42.createElement(EraserButton, null), /* @__PURE__ */ React42.createElement(CleanButton, null), /* @__PURE__ */ React42.createElement(AppsButton, null)), needScroll && /* @__PURE__ */ React42.createElement(DownButton, {
|
|
1661
1628
|
scrollTo,
|
|
1662
1629
|
disabled: disableScrollDown
|
|
1663
|
-
})
|
|
1664
|
-
|
|
1630
|
+
}), /* @__PURE__ */ React42.createElement("div", {
|
|
1631
|
+
className: clsx8("fastboard-toolbar-mask", theme),
|
|
1632
|
+
onClick: onCollapse
|
|
1633
|
+
}, /* @__PURE__ */ React42.createElement(Icon, {
|
|
1634
|
+
fallback: /* @__PURE__ */ React42.createElement("img", {
|
|
1635
|
+
draggable: false,
|
|
1636
|
+
className: clsx8(`${name4}-mask-btn`, theme),
|
|
1637
|
+
src: collapsed_default
|
|
1638
|
+
}),
|
|
1639
|
+
src: disabled ? icons == null ? void 0 : icons.expandIconDisable : icons == null ? void 0 : icons.expandIcon
|
|
1640
|
+
})));
|
|
1641
|
+
}
|
|
1665
1642
|
|
|
1666
1643
|
// src/components/Toolbar/Toolbar.tsx
|
|
1667
1644
|
var ToolbarContext = createContext3(__spreadValues({
|
|
1668
1645
|
theme: "light"
|
|
1669
1646
|
}, EmptyToolbarHook));
|
|
1670
1647
|
var name4 = "fastboard-toolbar";
|
|
1671
|
-
|
|
1648
|
+
function Toolbar({ theme, icons }) {
|
|
1672
1649
|
theme = useTheme(theme);
|
|
1673
1650
|
const hook = useToolbar();
|
|
1674
|
-
const [expanded, setExpanded] =
|
|
1675
|
-
const [
|
|
1676
|
-
const [onHover, setOnHover] = useState5(false);
|
|
1677
|
-
const [delayedOnHover, setDelayedOnHover] = useState5(false);
|
|
1678
|
-
const [pointEvents, setPointEvents] = useState5(true);
|
|
1651
|
+
const [expanded, setExpanded] = useState4(true);
|
|
1652
|
+
const [pointerEvents, setPointerEvents] = useState4("auto");
|
|
1679
1653
|
const disabled = !hook.writable;
|
|
1680
|
-
|
|
1681
|
-
setExpanded((e) => !e);
|
|
1682
|
-
}, []);
|
|
1683
|
-
useEffect5(() => {
|
|
1684
|
-
const timer = setTimeout(() => {
|
|
1685
|
-
setDelayedOnHover(onHover);
|
|
1686
|
-
}, 400);
|
|
1687
|
-
return () => clearTimeout(timer);
|
|
1688
|
-
}, [onHover]);
|
|
1689
|
-
return /* @__PURE__ */ React44.createElement(ToolbarContext.Provider, {
|
|
1654
|
+
return /* @__PURE__ */ React43.createElement(ToolbarContext.Provider, {
|
|
1690
1655
|
value: __spreadValues({ theme, icons }, hook)
|
|
1691
|
-
}, /* @__PURE__ */
|
|
1692
|
-
initial: { x: -100 },
|
|
1693
|
-
animate: { x: 0, transition: { duration: 0.5 } },
|
|
1656
|
+
}, /* @__PURE__ */ React43.createElement(AnimatePresence, null, expanded ? /* @__PURE__ */ React43.createElement(motion.div, {
|
|
1694
1657
|
key: "toolbar",
|
|
1695
|
-
ref: toolbarRef,
|
|
1696
1658
|
className: clsx9(name4, theme),
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
},
|
|
1700
|
-
onMouseLeave: () => setOnHover(false),
|
|
1659
|
+
initial: { x: -100 },
|
|
1660
|
+
animate: { x: 0, transition: { duration: 0.5 } },
|
|
1701
1661
|
exit: { x: -100, transition: { duration: 0.5 } },
|
|
1702
|
-
onAnimationStart: () =>
|
|
1703
|
-
onAnimationComplete: () =>
|
|
1704
|
-
style: { pointerEvents
|
|
1705
|
-
}, /* @__PURE__ */
|
|
1706
|
-
|
|
1707
|
-
}
|
|
1708
|
-
onClick: toggle
|
|
1709
|
-
}, /* @__PURE__ */ React44.createElement("img", {
|
|
1710
|
-
draggable: false,
|
|
1711
|
-
className: clsx9(`${name4}-mask-btn`, theme),
|
|
1712
|
-
src: collapsed_default
|
|
1713
|
-
})))) : /* @__PURE__ */ React44.createElement(motion.div, {
|
|
1662
|
+
onAnimationStart: () => setPointerEvents("none"),
|
|
1663
|
+
onAnimationComplete: () => setPointerEvents("auto"),
|
|
1664
|
+
style: { pointerEvents }
|
|
1665
|
+
}, /* @__PURE__ */ React43.createElement(Content, {
|
|
1666
|
+
onCollapse: () => setExpanded(false)
|
|
1667
|
+
})) : /* @__PURE__ */ React43.createElement(motion.div, {
|
|
1714
1668
|
className: clsx9(`${name4}-expand-btn`, theme),
|
|
1715
1669
|
key: "expand",
|
|
1716
|
-
onClick:
|
|
1670
|
+
onClick: () => setExpanded(true),
|
|
1717
1671
|
initial: { x: -100 },
|
|
1718
1672
|
animate: { x: 0, transition: { duration: 0.5 } }
|
|
1719
|
-
},
|
|
1720
|
-
fallback: /* @__PURE__ */
|
|
1673
|
+
}, /* @__PURE__ */ React43.createElement(Icon, {
|
|
1674
|
+
fallback: /* @__PURE__ */ React43.createElement("img", {
|
|
1721
1675
|
draggable: false,
|
|
1722
1676
|
src: expanded_default,
|
|
1723
1677
|
className: clsx9(`${name4}-mask-btn`, theme)
|
|
1724
1678
|
}),
|
|
1725
1679
|
src: disabled ? icons == null ? void 0 : icons.expandIconDisable : icons == null ? void 0 : icons.expandIcon
|
|
1726
1680
|
}))));
|
|
1727
|
-
}
|
|
1681
|
+
}
|
|
1728
1682
|
|
|
1729
1683
|
// src/components/PlayerControl/hooks.ts
|
|
1730
|
-
import { useCallback as
|
|
1684
|
+
import { useCallback as useCallback11, useEffect as useEffect4, useState as useState5 } from "react";
|
|
1731
1685
|
import { PlayerPhase } from "white-web-sdk";
|
|
1732
1686
|
var EMPTY_ARRAY = [];
|
|
1733
1687
|
function useForceUpdate2() {
|
|
1734
|
-
const [, forceUpdate_] =
|
|
1735
|
-
return
|
|
1688
|
+
const [, forceUpdate_] = useState5({});
|
|
1689
|
+
return useCallback11(() => forceUpdate_({}), EMPTY_ARRAY);
|
|
1736
1690
|
}
|
|
1737
1691
|
function usePlayerControl(player) {
|
|
1738
|
-
const togglePlay =
|
|
1692
|
+
const togglePlay = useCallback11(() => {
|
|
1739
1693
|
if (player) {
|
|
1740
1694
|
switch (player.phase) {
|
|
1741
1695
|
case PlayerPhase.WaitingFirstFrame:
|
|
@@ -1751,25 +1705,25 @@ function usePlayerControl(player) {
|
|
|
1751
1705
|
}
|
|
1752
1706
|
}
|
|
1753
1707
|
}, [player]);
|
|
1754
|
-
const seekToProgressTime =
|
|
1708
|
+
const seekToProgressTime = useCallback11((time) => {
|
|
1755
1709
|
if (player) {
|
|
1756
1710
|
player.seekToProgressTime(time);
|
|
1757
1711
|
}
|
|
1758
1712
|
}, [player]);
|
|
1759
1713
|
const lastPlayer = useLastValue(player);
|
|
1760
1714
|
const forceUpdate = useForceUpdate2();
|
|
1761
|
-
const setSpeed =
|
|
1715
|
+
const setSpeed = useCallback11((speed2) => {
|
|
1762
1716
|
if (player) {
|
|
1763
1717
|
player.playbackSpeed = speed2;
|
|
1764
1718
|
forceUpdate();
|
|
1765
1719
|
}
|
|
1766
1720
|
}, [forceUpdate, player]);
|
|
1767
|
-
|
|
1721
|
+
useEffect4(() => {
|
|
1768
1722
|
if (!lastPlayer && player) {
|
|
1769
1723
|
forceUpdate();
|
|
1770
1724
|
}
|
|
1771
1725
|
}, [forceUpdate, lastPlayer, player]);
|
|
1772
|
-
|
|
1726
|
+
useEffect4(() => {
|
|
1773
1727
|
if (player) {
|
|
1774
1728
|
player.callbacks.on("onPhaseChanged", forceUpdate);
|
|
1775
1729
|
player.callbacks.on("onProgressTimeChanged", forceUpdate);
|
|
@@ -1798,16 +1752,16 @@ function usePlayerControl(player) {
|
|
|
1798
1752
|
import Tippy10 from "@tippyjs/react";
|
|
1799
1753
|
import clsx11 from "clsx";
|
|
1800
1754
|
import RcSlider2 from "rc-slider";
|
|
1801
|
-
import
|
|
1755
|
+
import React48, { useEffect as useEffect5, useState as useState6 } from "react";
|
|
1802
1756
|
import { PlayerPhase as PlayerPhase2 } from "white-web-sdk";
|
|
1803
1757
|
|
|
1804
1758
|
// src/components/PlayerControl/components/Button.tsx
|
|
1805
1759
|
import clsx10 from "clsx";
|
|
1806
|
-
import
|
|
1760
|
+
import React44, { forwardRef as forwardRef2 } from "react";
|
|
1807
1761
|
import Tippy9 from "@tippyjs/react";
|
|
1808
1762
|
var Button2 = forwardRef2((props, ref) => {
|
|
1809
1763
|
const { theme, content, disabled, active, onClick, interactive, placement = "top", children } = props;
|
|
1810
|
-
return /* @__PURE__ */
|
|
1764
|
+
return /* @__PURE__ */ React44.createElement(Tippy9, {
|
|
1811
1765
|
className: "fastboard-tip",
|
|
1812
1766
|
content,
|
|
1813
1767
|
interactive,
|
|
@@ -1817,7 +1771,7 @@ var Button2 = forwardRef2((props, ref) => {
|
|
|
1817
1771
|
offset: TopOffset,
|
|
1818
1772
|
delay: [1e3, 400],
|
|
1819
1773
|
duration: 300
|
|
1820
|
-
}, /* @__PURE__ */
|
|
1774
|
+
}, /* @__PURE__ */ React44.createElement("button", {
|
|
1821
1775
|
ref,
|
|
1822
1776
|
className: clsx10("fastboard-player-control-btn", theme, { active }),
|
|
1823
1777
|
onClick,
|
|
@@ -1829,36 +1783,36 @@ var Button2 = forwardRef2((props, ref) => {
|
|
|
1829
1783
|
import { memo as memo2 } from "react";
|
|
1830
1784
|
|
|
1831
1785
|
// src/components/PlayerControl/icons/Loading.tsx
|
|
1832
|
-
import
|
|
1786
|
+
import React45 from "react";
|
|
1833
1787
|
var Loading = (props) => {
|
|
1834
1788
|
const stroke = getStroke(props);
|
|
1835
|
-
return /* @__PURE__ */
|
|
1789
|
+
return /* @__PURE__ */ React45.createElement("svg", {
|
|
1836
1790
|
viewBox: "0 0 24 24"
|
|
1837
|
-
}, /* @__PURE__ */
|
|
1791
|
+
}, /* @__PURE__ */ React45.createElement("path", {
|
|
1838
1792
|
d: "M12 4V2A10 10 0 0 0 2 12h2a8 8 0 0 1 8-8z",
|
|
1839
1793
|
fill: stroke
|
|
1840
1794
|
}));
|
|
1841
1795
|
};
|
|
1842
1796
|
|
|
1843
1797
|
// src/components/PlayerControl/icons/Pause.tsx
|
|
1844
|
-
import
|
|
1798
|
+
import React46 from "react";
|
|
1845
1799
|
var Pause = (props) => {
|
|
1846
1800
|
const stroke = getStroke(props);
|
|
1847
|
-
return /* @__PURE__ */
|
|
1801
|
+
return /* @__PURE__ */ React46.createElement("svg", {
|
|
1848
1802
|
viewBox: "0 0 24 24"
|
|
1849
|
-
}, /* @__PURE__ */
|
|
1803
|
+
}, /* @__PURE__ */ React46.createElement("path", {
|
|
1850
1804
|
d: "M14 19h4V5h-4M6 19h4V5H6v14z",
|
|
1851
1805
|
fill: stroke
|
|
1852
1806
|
}));
|
|
1853
1807
|
};
|
|
1854
1808
|
|
|
1855
1809
|
// src/components/PlayerControl/icons/Play.tsx
|
|
1856
|
-
import
|
|
1810
|
+
import React47 from "react";
|
|
1857
1811
|
var Play = (props) => {
|
|
1858
1812
|
const stroke = getStroke(props);
|
|
1859
|
-
return /* @__PURE__ */
|
|
1813
|
+
return /* @__PURE__ */ React47.createElement("svg", {
|
|
1860
1814
|
viewBox: "0 0 24 24"
|
|
1861
|
-
}, /* @__PURE__ */
|
|
1815
|
+
}, /* @__PURE__ */ React47.createElement("path", {
|
|
1862
1816
|
d: "M8 5.14v14l11-7l-11-7z",
|
|
1863
1817
|
fill: stroke
|
|
1864
1818
|
}));
|
|
@@ -1877,12 +1831,12 @@ function PlayerControl(_a) {
|
|
|
1877
1831
|
var _b = _a, { theme, autoHide = false, player: player_ } = _b, icons = __objRest(_b, ["theme", "autoHide", "player"]);
|
|
1878
1832
|
theme = useTheme(theme);
|
|
1879
1833
|
const { t } = useTranslation();
|
|
1880
|
-
const [currentTime, setCurrentTime] =
|
|
1834
|
+
const [currentTime, setCurrentTime] = useState6(0);
|
|
1881
1835
|
const player = usePlayerControl(player_);
|
|
1882
|
-
|
|
1836
|
+
useEffect5(() => {
|
|
1883
1837
|
setCurrentTime(player.currentTime);
|
|
1884
1838
|
}, [player.currentTime]);
|
|
1885
|
-
|
|
1839
|
+
useEffect5(() => {
|
|
1886
1840
|
if (player.currentTime !== currentTime) {
|
|
1887
1841
|
player.seekToProgressTime(currentTime);
|
|
1888
1842
|
}
|
|
@@ -1890,25 +1844,25 @@ function PlayerControl(_a) {
|
|
|
1890
1844
|
const isLoading = player.phase === PlayerPhase2.WaitingFirstFrame || player.phase === PlayerPhase2.Buffering;
|
|
1891
1845
|
const isPlaying = player.phase === PlayerPhase2.Playing;
|
|
1892
1846
|
const { activeColor } = themes[theme];
|
|
1893
|
-
return /* @__PURE__ */
|
|
1847
|
+
return /* @__PURE__ */ React48.createElement("div", {
|
|
1894
1848
|
className: clsx11(name5, theme, { "auto-hide": autoHide })
|
|
1895
|
-
}, /* @__PURE__ */
|
|
1849
|
+
}, /* @__PURE__ */ React48.createElement("button", {
|
|
1896
1850
|
className: clsx11(`${name5}-btn`, isLoading ? "loading" : isPlaying ? "pause" : "play", theme),
|
|
1897
1851
|
disabled: isLoading,
|
|
1898
1852
|
onClick: player.togglePlay
|
|
1899
|
-
}, /* @__PURE__ */
|
|
1900
|
-
fallback: isLoading ? /* @__PURE__ */
|
|
1853
|
+
}, /* @__PURE__ */ React48.createElement(Icon, {
|
|
1854
|
+
fallback: isLoading ? /* @__PURE__ */ React48.createElement(Icons2.Loading, {
|
|
1901
1855
|
theme
|
|
1902
|
-
}) : isPlaying ? /* @__PURE__ */
|
|
1856
|
+
}) : isPlaying ? /* @__PURE__ */ React48.createElement(Icons2.Pause, {
|
|
1903
1857
|
theme
|
|
1904
|
-
}) : /* @__PURE__ */
|
|
1858
|
+
}) : /* @__PURE__ */ React48.createElement(Icons2.Play, {
|
|
1905
1859
|
theme
|
|
1906
1860
|
}),
|
|
1907
1861
|
src: isLoading ? icons.loadingIcon : isPlaying ? icons.pauseIcon : icons.playIcon,
|
|
1908
1862
|
alt: isLoading ? "[loading]" : isPlaying ? "[pause]" : "[play]"
|
|
1909
|
-
})), /* @__PURE__ */
|
|
1863
|
+
})), /* @__PURE__ */ React48.createElement("span", {
|
|
1910
1864
|
className: clsx11(`${name5}-slider`, { loading: isLoading }, theme)
|
|
1911
|
-
}, /* @__PURE__ */
|
|
1865
|
+
}, /* @__PURE__ */ React48.createElement(RcSlider2, {
|
|
1912
1866
|
disabled: isLoading,
|
|
1913
1867
|
trackStyle: { background: activeColor },
|
|
1914
1868
|
handleStyle: { border: `1px solid ${activeColor}` },
|
|
@@ -1917,15 +1871,15 @@ function PlayerControl(_a) {
|
|
|
1917
1871
|
min: 0,
|
|
1918
1872
|
max: player.totalTime,
|
|
1919
1873
|
step: 100
|
|
1920
|
-
})), /* @__PURE__ */
|
|
1874
|
+
})), /* @__PURE__ */ React48.createElement("span", {
|
|
1921
1875
|
className: clsx11(`${name5}-current`, theme)
|
|
1922
|
-
}, renderTime(player.currentTime)), /* @__PURE__ */
|
|
1876
|
+
}, renderTime(player.currentTime)), /* @__PURE__ */ React48.createElement("span", {
|
|
1923
1877
|
className: clsx11(`${name5}-slash`, theme)
|
|
1924
|
-
}, "/"), /* @__PURE__ */
|
|
1878
|
+
}, "/"), /* @__PURE__ */ React48.createElement("span", {
|
|
1925
1879
|
className: clsx11(`${name5}-total`, theme)
|
|
1926
|
-
}, renderTime(player.totalTime)), /* @__PURE__ */
|
|
1880
|
+
}, renderTime(player.totalTime)), /* @__PURE__ */ React48.createElement("span", {
|
|
1927
1881
|
className: `${name5}-btn-interactive`
|
|
1928
|
-
}, /* @__PURE__ */
|
|
1882
|
+
}, /* @__PURE__ */ React48.createElement(Tippy10, {
|
|
1929
1883
|
className: "fastboard-tip",
|
|
1930
1884
|
content: renderSpeeds(player),
|
|
1931
1885
|
theme,
|
|
@@ -1934,11 +1888,11 @@ function PlayerControl(_a) {
|
|
|
1934
1888
|
offset: TopOffset,
|
|
1935
1889
|
arrow: false,
|
|
1936
1890
|
interactive: true
|
|
1937
|
-
}, /* @__PURE__ */
|
|
1891
|
+
}, /* @__PURE__ */ React48.createElement(Button2, {
|
|
1938
1892
|
content: t("speed"),
|
|
1939
1893
|
theme,
|
|
1940
1894
|
disabled: isLoading
|
|
1941
|
-
}, /* @__PURE__ */
|
|
1895
|
+
}, /* @__PURE__ */ React48.createElement("span", {
|
|
1942
1896
|
className: clsx11(`${name5}-speed-text`, theme)
|
|
1943
1897
|
}, player.speed, "x")))));
|
|
1944
1898
|
}
|
|
@@ -1950,9 +1904,9 @@ function renderTime(ms) {
|
|
|
1950
1904
|
}
|
|
1951
1905
|
var Speeds = [2, 1.5, 1.25, 1, 0.75, 0.5];
|
|
1952
1906
|
function renderSpeeds({ speed: current, setSpeed }) {
|
|
1953
|
-
return /* @__PURE__ */
|
|
1907
|
+
return /* @__PURE__ */ React48.createElement("div", {
|
|
1954
1908
|
className: clsx11(`${name5}-panel`, "speed")
|
|
1955
|
-
}, Speeds.map((speed) => /* @__PURE__ */
|
|
1909
|
+
}, Speeds.map((speed) => /* @__PURE__ */ React48.createElement("button", {
|
|
1956
1910
|
className: clsx11(`${name5}-btn`, "speed", {
|
|
1957
1911
|
active: speed === current
|
|
1958
1912
|
}),
|
|
@@ -1962,18 +1916,18 @@ function renderSpeeds({ speed: current, setSpeed }) {
|
|
|
1962
1916
|
}
|
|
1963
1917
|
|
|
1964
1918
|
// src/components/Fastboard.tsx
|
|
1965
|
-
import
|
|
1919
|
+
import React49, { forwardRef as forwardRef3, useCallback as useCallback12, useEffect as useEffect6 } from "react";
|
|
1966
1920
|
var Fastboard = /* @__PURE__ */ forwardRef3(function Fastboard2(_a, ref) {
|
|
1967
1921
|
var _b = _a, { app, theme, layout, language } = _b, restProps = __objRest(_b, ["app", "theme", "layout", "language"]);
|
|
1968
1922
|
if (!app) {
|
|
1969
|
-
return /* @__PURE__ */
|
|
1923
|
+
return /* @__PURE__ */ React49.createElement("div", __spreadValues({
|
|
1970
1924
|
className: "fastboard-root",
|
|
1971
1925
|
ref
|
|
1972
1926
|
}, restProps));
|
|
1973
1927
|
}
|
|
1974
|
-
return /* @__PURE__ */
|
|
1928
|
+
return /* @__PURE__ */ React49.createElement(FastboardAppContext.Provider, {
|
|
1975
1929
|
value: app
|
|
1976
|
-
}, /* @__PURE__ */
|
|
1930
|
+
}, /* @__PURE__ */ React49.createElement(FastboardInternal, __spreadValues(__spreadValues({
|
|
1977
1931
|
forwardedRef: ref
|
|
1978
1932
|
}, { theme, layout, language }), restProps)));
|
|
1979
1933
|
});
|
|
@@ -1994,15 +1948,15 @@ function FastboardInternal(_a) {
|
|
|
1994
1948
|
const app = useFastboardApp();
|
|
1995
1949
|
const forceUpdate = useForceUpdate();
|
|
1996
1950
|
const i18n = useAsyncValue(() => createI18n({ language }));
|
|
1997
|
-
|
|
1951
|
+
useEffect6(() => {
|
|
1998
1952
|
if (i18n)
|
|
1999
1953
|
i18n.changeLanguage(language);
|
|
2000
1954
|
forceUpdate();
|
|
2001
1955
|
}, [forceUpdate, i18n, language]);
|
|
2002
|
-
|
|
1956
|
+
useEffect6(() => {
|
|
2003
1957
|
app.manager.setPrefersColorScheme(theme);
|
|
2004
1958
|
}, [app, theme]);
|
|
2005
|
-
const useWhiteboard =
|
|
1959
|
+
const useWhiteboard = useCallback12((container) => {
|
|
2006
1960
|
if (container && app)
|
|
2007
1961
|
app.manager.bindContainer(container);
|
|
2008
1962
|
}, [app]);
|
|
@@ -2014,33 +1968,33 @@ function FastboardInternal(_a) {
|
|
|
2014
1968
|
ZoomControl: zoom_control = showControls,
|
|
2015
1969
|
PageControl: page_control = showControls
|
|
2016
1970
|
} = layout;
|
|
2017
|
-
return /* @__PURE__ */
|
|
1971
|
+
return /* @__PURE__ */ React49.createElement(ThemeContext.Provider, {
|
|
2018
1972
|
value: theme
|
|
2019
|
-
}, /* @__PURE__ */
|
|
1973
|
+
}, /* @__PURE__ */ React49.createElement(I18nContext.Provider, {
|
|
2020
1974
|
value: i18n
|
|
2021
|
-
}, /* @__PURE__ */
|
|
1975
|
+
}, /* @__PURE__ */ React49.createElement("div", __spreadProps(__spreadValues({}, restProps), {
|
|
2022
1976
|
className: "fastboard-root",
|
|
2023
1977
|
ref: forwardedRef
|
|
2024
|
-
}), /* @__PURE__ */
|
|
1978
|
+
}), /* @__PURE__ */ React49.createElement("div", {
|
|
2025
1979
|
className: "fastboard-view",
|
|
2026
1980
|
ref: useWhiteboard
|
|
2027
|
-
}), children ? children : /* @__PURE__ */
|
|
1981
|
+
}), children ? children : /* @__PURE__ */ React49.createElement(React49.Fragment, null, toolbar && /* @__PURE__ */ React49.createElement("div", {
|
|
2028
1982
|
className: "fastboard-left"
|
|
2029
|
-
}, /* @__PURE__ */
|
|
1983
|
+
}, /* @__PURE__ */ React49.createElement(Toolbar, null)), (redo_undo || zoom_control) && /* @__PURE__ */ React49.createElement("div", {
|
|
2030
1984
|
className: "fastboard-bottom-left"
|
|
2031
|
-
}, redo_undo && /* @__PURE__ */
|
|
1985
|
+
}, redo_undo && /* @__PURE__ */ React49.createElement(RedoUndo, null), zoom_control && /* @__PURE__ */ React49.createElement(ZoomControl, null)), page_control && /* @__PURE__ */ React49.createElement("div", {
|
|
2032
1986
|
className: "fastboard-bottom-right"
|
|
2033
|
-
}, /* @__PURE__ */
|
|
1987
|
+
}, /* @__PURE__ */ React49.createElement(PageControl, null))))));
|
|
2034
1988
|
}
|
|
2035
1989
|
|
|
2036
1990
|
// src/vanilla/index.tsx
|
|
2037
|
-
import
|
|
2038
|
-
import
|
|
1991
|
+
import React50 from "react";
|
|
1992
|
+
import ReactDOM from "react-dom";
|
|
2039
1993
|
function mount(app, dom, props) {
|
|
2040
|
-
|
|
1994
|
+
ReactDOM.render(/* @__PURE__ */ React50.createElement(Fastboard, __spreadValues({
|
|
2041
1995
|
app
|
|
2042
1996
|
}, props)), dom);
|
|
2043
|
-
return () =>
|
|
1997
|
+
return () => ReactDOM.unmountComponentAtNode(dom);
|
|
2044
1998
|
}
|
|
2045
1999
|
export {
|
|
2046
2000
|
EmptyToolbarHook,
|