@netless/fastboard-react 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +243 -236
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +243 -232
- package/dist/index.mjs.map +1 -1
- package/package.json +18 -13
- package/src/components/Fastboard.tsx +13 -14
- package/src/components/hooks.ts +1 -1
- package/src/index.ts +1 -0
- package/src/vanilla/index.tsx +18 -0
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 = '.page-renderer-pages-container{position:relative;overflow:hidden}.page-renderer-page{position:absolute;top:0;left:0;will-change:transform;background-position:center;background-size:cover;background-repeat:no-repeat}.page-renderer-page-img{display:block;width:100%;height:auto;user-select:none}.netless-app-docs-viewer-static-scrollbar{position:absolute;top:0;right:0;z-index:2147483647;width:8px;min-height:30px;margin:0;padding:0;border:none;outline:none;border-radius:4px;background:rgba(68,78,96,.4);box-shadow:1px 1px 8px #ffffffb3;opacity:0;transition:background .4s,opacity .4s 3s,transform .2s;will-change:transform,height;user-select:none}.netless-app-docs-viewer-static-scrollbar.netless-app-docs-viewer-static-scrollbar-dragging{background:rgba(68,78,96,.6);opacity:1;transition:background .4s,opacity .4s 3s!important}.netless-app-docs-viewer-static-scrollbar:hover,.netless-app-docs-viewer-static-scrollbar:focus{background:rgba(68,78,96,.5)}.netless-app-docs-viewer-static-scrollbar:active{background:rgba(68,78,96,.6)}.netless-app-docs-viewer-content:hover .netless-app-docs-viewer-static-scrollbar{opacity:1;transition:background .4s,opacity .4s,transform .2s}.netless-app-docs-viewer-readonly .netless-app-docs-viewer-static-scrollbar{display:none}.netless-app-docs-viewer-static-pages:hover .netless-app-docs-viewer-static-scrollbar{opacity:1;transition:background .4s,opacity .4s,transform .2s}.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 .05s;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;will-change:transform;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{will-change:transform;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-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);
|
|
@@ -89,8 +89,8 @@ applyStyles(style_default);
|
|
|
89
89
|
// src/components/hooks.ts
|
|
90
90
|
import { BuiltinApps } from "@netless/window-manager";
|
|
91
91
|
import { createContext, useContext, useEffect as useEffect2, useState as useState2 } from "react";
|
|
92
|
-
var FastboardAppContext = createContext(null);
|
|
93
|
-
var ThemeContext = createContext("light");
|
|
92
|
+
var FastboardAppContext = /* @__PURE__ */ createContext(null);
|
|
93
|
+
var ThemeContext = /* @__PURE__ */ createContext("light");
|
|
94
94
|
function useTheme(userTheme) {
|
|
95
95
|
const themeFromContext = useContext(ThemeContext);
|
|
96
96
|
return userTheme || themeFromContext;
|
|
@@ -235,7 +235,7 @@ var createI18n = async ({
|
|
|
235
235
|
});
|
|
236
236
|
return i18next;
|
|
237
237
|
};
|
|
238
|
-
var I18nContext = createContext2(null);
|
|
238
|
+
var I18nContext = /* @__PURE__ */ createContext2(null);
|
|
239
239
|
function useTranslation() {
|
|
240
240
|
const i18n = useContext2(I18nContext);
|
|
241
241
|
const t = useMemo(() => i18n ? i18n.getFixedT(null, ["translation"]) : (id) => id, [i18n]);
|
|
@@ -245,7 +245,7 @@ function useTranslation() {
|
|
|
245
245
|
// src/icons/index.tsx
|
|
246
246
|
import React from "react";
|
|
247
247
|
function Icon({ fallback, src, alt = "[icon]" }) {
|
|
248
|
-
return src ? React.createElement("img", {
|
|
248
|
+
return src ? /* @__PURE__ */ React.createElement("img", {
|
|
249
249
|
src,
|
|
250
250
|
alt,
|
|
251
251
|
title: alt
|
|
@@ -283,17 +283,17 @@ var RightOffset = [0, 11];
|
|
|
283
283
|
function Redo({ theme = "light", active }) {
|
|
284
284
|
const config = themes[theme];
|
|
285
285
|
const stroke = active ? config.activeColor : config.color;
|
|
286
|
-
return React2.createElement("svg", {
|
|
286
|
+
return /* @__PURE__ */ React2.createElement("svg", {
|
|
287
287
|
viewBox: "0 0 24 24"
|
|
288
|
-
}, React2.createElement("g", {
|
|
288
|
+
}, /* @__PURE__ */ React2.createElement("g", {
|
|
289
289
|
fill: "none",
|
|
290
290
|
fillRule: "evenodd",
|
|
291
291
|
stroke,
|
|
292
292
|
strokeLinecap: "round",
|
|
293
293
|
strokeLinejoin: "round"
|
|
294
|
-
}, React2.createElement("path", {
|
|
294
|
+
}, /* @__PURE__ */ React2.createElement("path", {
|
|
295
295
|
d: "M14 14h4v-4"
|
|
296
|
-
}), React2.createElement("path", {
|
|
296
|
+
}), /* @__PURE__ */ React2.createElement("path", {
|
|
297
297
|
d: "m18 14-.788-.9A7.005 7.005 0 0 0 6 14h0"
|
|
298
298
|
})));
|
|
299
299
|
}
|
|
@@ -303,17 +303,17 @@ import React3 from "react";
|
|
|
303
303
|
function Undo({ theme = "light", active }) {
|
|
304
304
|
const config = themes[theme];
|
|
305
305
|
const stroke = active ? config.activeColor : config.color;
|
|
306
|
-
return React3.createElement("svg", {
|
|
306
|
+
return /* @__PURE__ */ React3.createElement("svg", {
|
|
307
307
|
viewBox: "0 0 24 24"
|
|
308
|
-
}, React3.createElement("g", {
|
|
308
|
+
}, /* @__PURE__ */ React3.createElement("g", {
|
|
309
309
|
fill: "none",
|
|
310
310
|
fillRule: "evenodd",
|
|
311
311
|
stroke,
|
|
312
312
|
strokeLinecap: "round",
|
|
313
313
|
strokeLinejoin: "round"
|
|
314
|
-
}, React3.createElement("path", {
|
|
314
|
+
}, /* @__PURE__ */ React3.createElement("path", {
|
|
315
315
|
d: "M10 14H6v-4"
|
|
316
|
-
}), React3.createElement("path", {
|
|
316
|
+
}), /* @__PURE__ */ React3.createElement("path", {
|
|
317
317
|
d: "m6 14 .788-.9A7.005 7.005 0 0 1 18 14h0"
|
|
318
318
|
})));
|
|
319
319
|
}
|
|
@@ -326,9 +326,9 @@ function RedoUndo({ theme, undoIcon, undoIconDisable, redoIcon, redoIconDisable
|
|
|
326
326
|
const writable = useWritable();
|
|
327
327
|
const { redoSteps, undoSteps, redo, undo } = useRedoUndo();
|
|
328
328
|
const disabled = !writable;
|
|
329
|
-
return React4.createElement("div", {
|
|
329
|
+
return /* @__PURE__ */ React4.createElement("div", {
|
|
330
330
|
className: clsx(name, theme)
|
|
331
|
-
}, React4.createElement(Tippy, {
|
|
331
|
+
}, /* @__PURE__ */ React4.createElement(Tippy, {
|
|
332
332
|
className: "fastboard-tip",
|
|
333
333
|
content: t("undo"),
|
|
334
334
|
theme,
|
|
@@ -337,17 +337,17 @@ function RedoUndo({ theme, undoIcon, undoIconDisable, redoIcon, redoIconDisable
|
|
|
337
337
|
delay: [1e3, 400],
|
|
338
338
|
duration: 300,
|
|
339
339
|
offset: TopOffset
|
|
340
|
-
}, React4.createElement("button", {
|
|
340
|
+
}, /* @__PURE__ */ React4.createElement("button", {
|
|
341
341
|
className: clsx(`${name}-btn`, "undo", theme),
|
|
342
342
|
disabled: disabled || undoSteps === 0,
|
|
343
343
|
onClick: undo
|
|
344
|
-
}, React4.createElement(Icon, {
|
|
345
|
-
fallback: React4.createElement(Undo, {
|
|
344
|
+
}, /* @__PURE__ */ React4.createElement(Icon, {
|
|
345
|
+
fallback: /* @__PURE__ */ React4.createElement(Undo, {
|
|
346
346
|
theme
|
|
347
347
|
}),
|
|
348
348
|
src: undoSteps === 0 ? undoIconDisable : undoIcon,
|
|
349
349
|
alt: "[undo]"
|
|
350
|
-
}))), React4.createElement(Tippy, {
|
|
350
|
+
}))), /* @__PURE__ */ React4.createElement(Tippy, {
|
|
351
351
|
className: "fastboard-tip",
|
|
352
352
|
content: t("redo"),
|
|
353
353
|
theme,
|
|
@@ -356,12 +356,12 @@ function RedoUndo({ theme, undoIcon, undoIconDisable, redoIcon, redoIconDisable
|
|
|
356
356
|
delay: [1e3, 400],
|
|
357
357
|
duration: 300,
|
|
358
358
|
offset: TopOffset
|
|
359
|
-
}, React4.createElement("button", {
|
|
359
|
+
}, /* @__PURE__ */ React4.createElement("button", {
|
|
360
360
|
className: clsx(`${name}-btn`, "redo", theme),
|
|
361
361
|
disabled: disabled || redoSteps === 0,
|
|
362
362
|
onClick: redo
|
|
363
|
-
}, React4.createElement(Icon, {
|
|
364
|
-
fallback: React4.createElement(Redo, {
|
|
363
|
+
}, /* @__PURE__ */ React4.createElement(Icon, {
|
|
364
|
+
fallback: /* @__PURE__ */ React4.createElement(Redo, {
|
|
365
365
|
theme
|
|
366
366
|
}),
|
|
367
367
|
src: redoSteps === 0 ? redoIconDisable : redoIcon,
|
|
@@ -443,9 +443,9 @@ import React5 from "react";
|
|
|
443
443
|
function Minus({ theme = "light", active }) {
|
|
444
444
|
const config = themes[theme];
|
|
445
445
|
const stroke = active ? config.activeColor : config.color;
|
|
446
|
-
return React5.createElement("svg", {
|
|
446
|
+
return /* @__PURE__ */ React5.createElement("svg", {
|
|
447
447
|
viewBox: "0 0 24 24"
|
|
448
|
-
}, React5.createElement("path", {
|
|
448
|
+
}, /* @__PURE__ */ React5.createElement("path", {
|
|
449
449
|
fill: "none",
|
|
450
450
|
stroke,
|
|
451
451
|
strokeLinecap: "round",
|
|
@@ -459,9 +459,9 @@ import React6 from "react";
|
|
|
459
459
|
function Plus({ theme = "light", active }) {
|
|
460
460
|
const config = themes[theme];
|
|
461
461
|
const stroke = active ? config.activeColor : config.color;
|
|
462
|
-
return React6.createElement("svg", {
|
|
462
|
+
return /* @__PURE__ */ React6.createElement("svg", {
|
|
463
463
|
viewBox: "0 0 24 24"
|
|
464
|
-
}, React6.createElement("path", {
|
|
464
|
+
}, /* @__PURE__ */ React6.createElement("path", {
|
|
465
465
|
fill: "none",
|
|
466
466
|
stroke,
|
|
467
467
|
strokeLinecap: "round",
|
|
@@ -475,22 +475,22 @@ import React7 from "react";
|
|
|
475
475
|
function Reset({ theme = "light", active }) {
|
|
476
476
|
const config = themes[theme];
|
|
477
477
|
const stroke = active ? config.activeColor : config.color;
|
|
478
|
-
return React7.createElement("svg", {
|
|
478
|
+
return /* @__PURE__ */ React7.createElement("svg", {
|
|
479
479
|
viewBox: "0 0 24 24"
|
|
480
|
-
}, React7.createElement("g", {
|
|
480
|
+
}, /* @__PURE__ */ React7.createElement("g", {
|
|
481
481
|
fill: "none",
|
|
482
482
|
fillRule: "evenodd",
|
|
483
483
|
transform: "translate(-176 -684)"
|
|
484
|
-
}, React7.createElement("path", {
|
|
484
|
+
}, /* @__PURE__ */ React7.createElement("path", {
|
|
485
485
|
stroke,
|
|
486
486
|
strokeLinejoin: "round",
|
|
487
487
|
d: "M188 688v4m0 8v4m8-8h-4m-8 0h-4"
|
|
488
|
-
}), React7.createElement("circle", {
|
|
488
|
+
}), /* @__PURE__ */ React7.createElement("circle", {
|
|
489
489
|
cx: "188",
|
|
490
490
|
cy: "696",
|
|
491
491
|
r: "6",
|
|
492
492
|
stroke
|
|
493
|
-
}), React7.createElement("circle", {
|
|
493
|
+
}), /* @__PURE__ */ React7.createElement("circle", {
|
|
494
494
|
cx: "188",
|
|
495
495
|
cy: "696",
|
|
496
496
|
r: "1",
|
|
@@ -514,9 +514,9 @@ function ZoomControl({
|
|
|
514
514
|
const writable = useWritable();
|
|
515
515
|
const { scale, resetCamera, zoomIn, zoomOut } = useZoomControl();
|
|
516
516
|
const disabled = !writable;
|
|
517
|
-
return React8.createElement("div", {
|
|
517
|
+
return /* @__PURE__ */ React8.createElement("div", {
|
|
518
518
|
className: clsx2(name2, theme)
|
|
519
|
-
}, React8.createElement(Tippy2, {
|
|
519
|
+
}, /* @__PURE__ */ React8.createElement(Tippy2, {
|
|
520
520
|
className: "fastboard-tip",
|
|
521
521
|
content: t("zoomOut"),
|
|
522
522
|
theme,
|
|
@@ -525,21 +525,21 @@ function ZoomControl({
|
|
|
525
525
|
delay: [1e3, 400],
|
|
526
526
|
duration: 300,
|
|
527
527
|
offset: TopOffset
|
|
528
|
-
}, React8.createElement("button", {
|
|
528
|
+
}, /* @__PURE__ */ React8.createElement("button", {
|
|
529
529
|
className: clsx2(`${name2}-btn`, "minus", theme),
|
|
530
530
|
disabled,
|
|
531
531
|
onClick: zoomOut
|
|
532
|
-
}, React8.createElement(Icon, {
|
|
533
|
-
fallback: React8.createElement(Minus, {
|
|
532
|
+
}, /* @__PURE__ */ React8.createElement(Icon, {
|
|
533
|
+
fallback: /* @__PURE__ */ React8.createElement(Minus, {
|
|
534
534
|
theme
|
|
535
535
|
}),
|
|
536
536
|
src: disabled ? minusIconDisable : minusIcon,
|
|
537
537
|
alt: "[minus]"
|
|
538
|
-
}))), React8.createElement("span", {
|
|
538
|
+
}))), /* @__PURE__ */ React8.createElement("span", {
|
|
539
539
|
className: clsx2(`${name2}-scale`, theme)
|
|
540
|
-
}, Math.ceil(scale * 100)), React8.createElement("span", {
|
|
540
|
+
}, Math.ceil(scale * 100)), /* @__PURE__ */ React8.createElement("span", {
|
|
541
541
|
className: clsx2(`${name2}-percent`, theme)
|
|
542
|
-
}, "%"), React8.createElement(Tippy2, {
|
|
542
|
+
}, "%"), /* @__PURE__ */ React8.createElement(Tippy2, {
|
|
543
543
|
className: "fastboard-tip",
|
|
544
544
|
content: t("zoomIn"),
|
|
545
545
|
theme,
|
|
@@ -548,17 +548,17 @@ function ZoomControl({
|
|
|
548
548
|
delay: [1e3, 400],
|
|
549
549
|
duration: 300,
|
|
550
550
|
offset: TopOffset
|
|
551
|
-
}, React8.createElement("button", {
|
|
551
|
+
}, /* @__PURE__ */ React8.createElement("button", {
|
|
552
552
|
className: clsx2(`${name2}-btn`, "plus", theme),
|
|
553
553
|
disabled,
|
|
554
554
|
onClick: zoomIn
|
|
555
|
-
}, React8.createElement(Icon, {
|
|
556
|
-
fallback: React8.createElement(Plus, {
|
|
555
|
+
}, /* @__PURE__ */ React8.createElement(Icon, {
|
|
556
|
+
fallback: /* @__PURE__ */ React8.createElement(Plus, {
|
|
557
557
|
theme
|
|
558
558
|
}),
|
|
559
559
|
src: disabled ? plusIconDisable : plusIcon,
|
|
560
560
|
alt: "[plus]"
|
|
561
|
-
}))), React8.createElement(Tippy2, {
|
|
561
|
+
}))), /* @__PURE__ */ React8.createElement(Tippy2, {
|
|
562
562
|
className: "fastboard-tip",
|
|
563
563
|
content: t("reset"),
|
|
564
564
|
theme,
|
|
@@ -567,12 +567,12 @@ function ZoomControl({
|
|
|
567
567
|
delay: [1e3, 400],
|
|
568
568
|
duration: 300,
|
|
569
569
|
offset: TopOffset
|
|
570
|
-
}, React8.createElement("button", {
|
|
570
|
+
}, /* @__PURE__ */ React8.createElement("button", {
|
|
571
571
|
className: clsx2(`${name2}-btn`, "reset", theme),
|
|
572
572
|
disabled,
|
|
573
573
|
onClick: resetCamera
|
|
574
|
-
}, React8.createElement(Icon, {
|
|
575
|
-
fallback: React8.createElement(Reset, {
|
|
574
|
+
}, /* @__PURE__ */ React8.createElement(Icon, {
|
|
575
|
+
fallback: /* @__PURE__ */ React8.createElement(Reset, {
|
|
576
576
|
theme
|
|
577
577
|
}),
|
|
578
578
|
src: disabled ? resetIconDisable : resetIcon,
|
|
@@ -610,9 +610,9 @@ import React9 from "react";
|
|
|
610
610
|
function ChevronLeft({ theme = "light", active }) {
|
|
611
611
|
const config = themes[theme];
|
|
612
612
|
const stroke = active ? config.activeColor : config.color;
|
|
613
|
-
return React9.createElement("svg", {
|
|
613
|
+
return /* @__PURE__ */ React9.createElement("svg", {
|
|
614
614
|
viewBox: "0 0 24 24"
|
|
615
|
-
}, React9.createElement("path", {
|
|
615
|
+
}, /* @__PURE__ */ React9.createElement("path", {
|
|
616
616
|
fill: "none",
|
|
617
617
|
stroke,
|
|
618
618
|
strokeLinecap: "round",
|
|
@@ -626,9 +626,9 @@ import React10 from "react";
|
|
|
626
626
|
function ChevronRight({ theme = "light", active }) {
|
|
627
627
|
const config = themes[theme];
|
|
628
628
|
const stroke = active ? config.activeColor : config.color;
|
|
629
|
-
return React10.createElement("svg", {
|
|
629
|
+
return /* @__PURE__ */ React10.createElement("svg", {
|
|
630
630
|
viewBox: "0 0 24 24"
|
|
631
|
-
}, React10.createElement("path", {
|
|
631
|
+
}, /* @__PURE__ */ React10.createElement("path", {
|
|
632
632
|
fill: "none",
|
|
633
633
|
stroke,
|
|
634
634
|
strokeLinecap: "round",
|
|
@@ -642,9 +642,9 @@ import React11 from "react";
|
|
|
642
642
|
function FilePlus({ theme = "light", active }) {
|
|
643
643
|
const config = themes[theme];
|
|
644
644
|
const stroke = active ? config.activeColor : config.color;
|
|
645
|
-
return React11.createElement("svg", {
|
|
645
|
+
return /* @__PURE__ */ React11.createElement("svg", {
|
|
646
646
|
viewBox: "0 0 24 24"
|
|
647
|
-
}, React11.createElement("path", {
|
|
647
|
+
}, /* @__PURE__ */ React11.createElement("path", {
|
|
648
648
|
fill: stroke,
|
|
649
649
|
d: "M12 7.5a.5.5 0 0 1 .09.992L12 8.5H8a1.5 1.5 0 0 0-1.493 1.356L6.5 10v6a1.5 1.5 0 0 0 1.356 1.493L8 17.5h6a1.5 1.5 0 0 0 1.493-1.356L15.5 16v-4a.5.5 0 0 1 .992-.09l.008.09v4a2.5 2.5 0 0 1-2.336 2.495L14 18.5H8a2.5 2.5 0 0 1-2.495-2.336L5.5 16v-6a2.5 2.5 0 0 1 2.336-2.495L8 7.5h4Zm4-2a.5.5 0 0 1 .492.41L16.5 6v1.5H18a.5.5 0 0 1 .09.992L18 8.5h-1.5V10a.5.5 0 0 1-.992.09L15.5 10V8.5H14a.5.5 0 0 1-.09-.992L14 7.5h1.5V6a.5.5 0 0 1 .5-.5Z"
|
|
650
650
|
}));
|
|
@@ -666,9 +666,9 @@ function PageControl({
|
|
|
666
666
|
const writable = useWritable();
|
|
667
667
|
const _a = usePageControl(), { pageIndex, pageCount } = _a, actions = __objRest(_a, ["pageIndex", "pageCount"]);
|
|
668
668
|
const disabled = !writable;
|
|
669
|
-
return React12.createElement("div", {
|
|
669
|
+
return /* @__PURE__ */ React12.createElement("div", {
|
|
670
670
|
className: clsx3(name3, theme)
|
|
671
|
-
}, React12.createElement(Tippy3, {
|
|
671
|
+
}, /* @__PURE__ */ React12.createElement(Tippy3, {
|
|
672
672
|
className: "fastboard-tip",
|
|
673
673
|
content: t("prevPage"),
|
|
674
674
|
theme,
|
|
@@ -677,23 +677,23 @@ function PageControl({
|
|
|
677
677
|
delay: [1e3, 400],
|
|
678
678
|
duration: 300,
|
|
679
679
|
offset: TopOffset
|
|
680
|
-
}, React12.createElement("button", {
|
|
680
|
+
}, /* @__PURE__ */ React12.createElement("button", {
|
|
681
681
|
className: clsx3(`${name3}-btn`, "prev", theme),
|
|
682
682
|
disabled: disabled || pageIndex === 0,
|
|
683
683
|
onClick: actions.prevPage
|
|
684
|
-
}, React12.createElement(Icon, {
|
|
685
|
-
fallback: React12.createElement(ChevronLeft, {
|
|
684
|
+
}, /* @__PURE__ */ React12.createElement(Icon, {
|
|
685
|
+
fallback: /* @__PURE__ */ React12.createElement(ChevronLeft, {
|
|
686
686
|
theme
|
|
687
687
|
}),
|
|
688
688
|
src: disabled ? prevIconDisable : prevIcon,
|
|
689
689
|
alt: "[prev]"
|
|
690
|
-
}))), React12.createElement("span", {
|
|
690
|
+
}))), /* @__PURE__ */ React12.createElement("span", {
|
|
691
691
|
className: clsx3(`${name3}-page`, theme)
|
|
692
|
-
}, pageCount === 0 ? "\u2026" : pageIndex + 1), React12.createElement("span", {
|
|
692
|
+
}, pageCount === 0 ? "\u2026" : pageIndex + 1), /* @__PURE__ */ React12.createElement("span", {
|
|
693
693
|
className: clsx3(`${name3}-slash`, theme)
|
|
694
|
-
}, "/"), React12.createElement("span", {
|
|
694
|
+
}, "/"), /* @__PURE__ */ React12.createElement("span", {
|
|
695
695
|
className: clsx3(`${name3}-page-count`, theme)
|
|
696
|
-
}, pageCount), React12.createElement(Tippy3, {
|
|
696
|
+
}, pageCount), /* @__PURE__ */ React12.createElement(Tippy3, {
|
|
697
697
|
className: "fastboard-tip",
|
|
698
698
|
content: t("nextPage"),
|
|
699
699
|
theme,
|
|
@@ -702,17 +702,17 @@ function PageControl({
|
|
|
702
702
|
delay: [1e3, 400],
|
|
703
703
|
duration: 300,
|
|
704
704
|
offset: TopOffset
|
|
705
|
-
}, React12.createElement("button", {
|
|
705
|
+
}, /* @__PURE__ */ React12.createElement("button", {
|
|
706
706
|
className: clsx3(`${name3}-btn`, "next", theme),
|
|
707
707
|
disabled: disabled || pageIndex === pageCount - 1,
|
|
708
708
|
onClick: actions.nextPage
|
|
709
|
-
}, React12.createElement(Icon, {
|
|
710
|
-
fallback: React12.createElement(ChevronRight, {
|
|
709
|
+
}, /* @__PURE__ */ React12.createElement(Icon, {
|
|
710
|
+
fallback: /* @__PURE__ */ React12.createElement(ChevronRight, {
|
|
711
711
|
theme
|
|
712
712
|
}),
|
|
713
713
|
src: disabled ? nextIconDisable : nextIcon,
|
|
714
714
|
alt: "[next]"
|
|
715
|
-
}))), React12.createElement(Tippy3, {
|
|
715
|
+
}))), /* @__PURE__ */ React12.createElement(Tippy3, {
|
|
716
716
|
className: "fastboard-tip",
|
|
717
717
|
content: t("addPage"),
|
|
718
718
|
theme,
|
|
@@ -721,12 +721,12 @@ function PageControl({
|
|
|
721
721
|
delay: [1e3, 400],
|
|
722
722
|
duration: 300,
|
|
723
723
|
offset: TopOffset
|
|
724
|
-
}, React12.createElement("button", {
|
|
724
|
+
}, /* @__PURE__ */ React12.createElement("button", {
|
|
725
725
|
className: clsx3(`${name3}-btn`, "add", theme),
|
|
726
726
|
disabled,
|
|
727
727
|
onClick: actions.addPage
|
|
728
|
-
}, React12.createElement(Icon, {
|
|
729
|
-
fallback: React12.createElement(FilePlus, {
|
|
728
|
+
}, /* @__PURE__ */ React12.createElement(Icon, {
|
|
729
|
+
fallback: /* @__PURE__ */ React12.createElement(FilePlus, {
|
|
730
730
|
theme
|
|
731
731
|
}),
|
|
732
732
|
src: disabled ? addIconDisable : addIcon,
|
|
@@ -834,13 +834,13 @@ import { memo } from "react";
|
|
|
834
834
|
import React14 from "react";
|
|
835
835
|
var Apps = (props) => {
|
|
836
836
|
const stroke = getStroke(props);
|
|
837
|
-
return React14.createElement("svg", {
|
|
837
|
+
return /* @__PURE__ */ React14.createElement("svg", {
|
|
838
838
|
viewBox: "0 0 24 24"
|
|
839
|
-
}, React14.createElement("g", {
|
|
839
|
+
}, /* @__PURE__ */ React14.createElement("g", {
|
|
840
840
|
fill: stroke
|
|
841
|
-
}, React14.createElement("path", {
|
|
841
|
+
}, /* @__PURE__ */ React14.createElement("path", {
|
|
842
842
|
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
|
-
}), React14.createElement("path", {
|
|
843
|
+
}), /* @__PURE__ */ React14.createElement("path", {
|
|
844
844
|
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
845
|
})));
|
|
846
846
|
};
|
|
@@ -849,9 +849,9 @@ var Apps = (props) => {
|
|
|
849
849
|
import React15 from "react";
|
|
850
850
|
var Arrow = (props) => {
|
|
851
851
|
const stroke = getStroke(props);
|
|
852
|
-
return React15.createElement("svg", {
|
|
852
|
+
return /* @__PURE__ */ React15.createElement("svg", {
|
|
853
853
|
viewBox: "0 0 24 24"
|
|
854
|
-
}, React15.createElement("path", {
|
|
854
|
+
}, /* @__PURE__ */ React15.createElement("path", {
|
|
855
855
|
fill: stroke,
|
|
856
856
|
d: "M19 5v6l-2.647-2.646L5.99 18.718l-.708-.708L15.645 7.646 13 5h6Z"
|
|
857
857
|
}));
|
|
@@ -861,9 +861,9 @@ var Arrow = (props) => {
|
|
|
861
861
|
import React16 from "react";
|
|
862
862
|
var Circle = (props) => {
|
|
863
863
|
const stroke = getStroke(props);
|
|
864
|
-
return React16.createElement("svg", {
|
|
864
|
+
return /* @__PURE__ */ React16.createElement("svg", {
|
|
865
865
|
viewBox: "0 0 24 24"
|
|
866
|
-
}, React16.createElement("rect", {
|
|
866
|
+
}, /* @__PURE__ */ React16.createElement("rect", {
|
|
867
867
|
width: "15",
|
|
868
868
|
height: "15",
|
|
869
869
|
x: "4.5",
|
|
@@ -878,9 +878,9 @@ var Circle = (props) => {
|
|
|
878
878
|
import React17 from "react";
|
|
879
879
|
var Clean = (props) => {
|
|
880
880
|
const stroke = getStroke(props);
|
|
881
|
-
return React17.createElement("svg", {
|
|
881
|
+
return /* @__PURE__ */ React17.createElement("svg", {
|
|
882
882
|
viewBox: "0 0 24 24"
|
|
883
|
-
}, React17.createElement("path", {
|
|
883
|
+
}, /* @__PURE__ */ React17.createElement("path", {
|
|
884
884
|
fill: stroke,
|
|
885
885
|
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
886
|
}));
|
|
@@ -890,13 +890,13 @@ var Clean = (props) => {
|
|
|
890
890
|
import React18 from "react";
|
|
891
891
|
var Clicker = (props) => {
|
|
892
892
|
const stroke = getStroke(props);
|
|
893
|
-
return React18.createElement("svg", {
|
|
893
|
+
return /* @__PURE__ */ React18.createElement("svg", {
|
|
894
894
|
viewBox: "0 0 24 24"
|
|
895
|
-
}, React18.createElement("g", {
|
|
895
|
+
}, /* @__PURE__ */ React18.createElement("g", {
|
|
896
896
|
fill: "none"
|
|
897
|
-
}, React18.createElement("path", {
|
|
897
|
+
}, /* @__PURE__ */ React18.createElement("path", {
|
|
898
898
|
d: "M0 0h24v24H0z"
|
|
899
|
-
}), React18.createElement("path", {
|
|
899
|
+
}), /* @__PURE__ */ React18.createElement("path", {
|
|
900
900
|
fill: stroke,
|
|
901
901
|
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
902
|
})));
|
|
@@ -906,9 +906,9 @@ var Clicker = (props) => {
|
|
|
906
906
|
import React19 from "react";
|
|
907
907
|
var Collapse = (props) => {
|
|
908
908
|
const stroke = getStroke(props);
|
|
909
|
-
return React19.createElement("svg", {
|
|
909
|
+
return /* @__PURE__ */ React19.createElement("svg", {
|
|
910
910
|
viewBox: "0 0 24 24"
|
|
911
|
-
}, React19.createElement("path", {
|
|
911
|
+
}, /* @__PURE__ */ React19.createElement("path", {
|
|
912
912
|
fill: "none",
|
|
913
913
|
stroke,
|
|
914
914
|
d: "m8 10-2 2 2 2m10-8H6m12 12H6m12-4h-8m8-4h-8"
|
|
@@ -919,9 +919,9 @@ var Collapse = (props) => {
|
|
|
919
919
|
import React20 from "react";
|
|
920
920
|
var Diamond = (props) => {
|
|
921
921
|
const stroke = getStroke(props);
|
|
922
|
-
return React20.createElement("svg", {
|
|
922
|
+
return /* @__PURE__ */ React20.createElement("svg", {
|
|
923
923
|
viewBox: "0 0 24 24"
|
|
924
|
-
}, React20.createElement("path", {
|
|
924
|
+
}, /* @__PURE__ */ React20.createElement("path", {
|
|
925
925
|
fill: "none",
|
|
926
926
|
stroke,
|
|
927
927
|
d: "M4.222 12 12 4.222 19.778 12 12 19.778z"
|
|
@@ -932,9 +932,9 @@ var Diamond = (props) => {
|
|
|
932
932
|
import React21 from "react";
|
|
933
933
|
var Down = (props) => {
|
|
934
934
|
const stroke = getStroke(props);
|
|
935
|
-
return React21.createElement("svg", {
|
|
935
|
+
return /* @__PURE__ */ React21.createElement("svg", {
|
|
936
936
|
viewBox: "0 0 24 24"
|
|
937
|
-
}, React21.createElement("path", {
|
|
937
|
+
}, /* @__PURE__ */ React21.createElement("path", {
|
|
938
938
|
fill: "none",
|
|
939
939
|
stroke,
|
|
940
940
|
d: "m16 13-2 2-2 2-2-2-2-2m8-6-2 2-2 2-2-2-2-2"
|
|
@@ -945,9 +945,9 @@ var Down = (props) => {
|
|
|
945
945
|
import React22 from "react";
|
|
946
946
|
var Eraser = (props) => {
|
|
947
947
|
const stroke = getStroke(props);
|
|
948
|
-
return React22.createElement("svg", {
|
|
948
|
+
return /* @__PURE__ */ React22.createElement("svg", {
|
|
949
949
|
viewBox: "0 0 24 24"
|
|
950
|
-
}, React22.createElement("path", {
|
|
950
|
+
}, /* @__PURE__ */ React22.createElement("path", {
|
|
951
951
|
fill: stroke,
|
|
952
952
|
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
953
|
}));
|
|
@@ -957,9 +957,9 @@ var Eraser = (props) => {
|
|
|
957
957
|
import React23 from "react";
|
|
958
958
|
var Expand = (props) => {
|
|
959
959
|
const stroke = getStroke(props);
|
|
960
|
-
return React23.createElement("svg", {
|
|
960
|
+
return /* @__PURE__ */ React23.createElement("svg", {
|
|
961
961
|
viewBox: "0 0 24 24"
|
|
962
|
-
}, React23.createElement("path", {
|
|
962
|
+
}, /* @__PURE__ */ React23.createElement("path", {
|
|
963
963
|
fill: "none",
|
|
964
964
|
stroke,
|
|
965
965
|
d: "m16 10 2 2-2 2M6 6h12M6 18h12M6 14h8m-8-4h8"
|
|
@@ -970,9 +970,9 @@ var Expand = (props) => {
|
|
|
970
970
|
import React24 from "react";
|
|
971
971
|
var Line = (props) => {
|
|
972
972
|
const stroke = getStroke(props);
|
|
973
|
-
return React24.createElement("svg", {
|
|
973
|
+
return /* @__PURE__ */ React24.createElement("svg", {
|
|
974
974
|
viewBox: "0 0 24 24"
|
|
975
|
-
}, React24.createElement("path", {
|
|
975
|
+
}, /* @__PURE__ */ React24.createElement("path", {
|
|
976
976
|
fill: stroke,
|
|
977
977
|
d: "m18.01 5.282.708.708L5.99 18.718l-.708-.708z"
|
|
978
978
|
}));
|
|
@@ -982,9 +982,9 @@ var Line = (props) => {
|
|
|
982
982
|
import React25 from "react";
|
|
983
983
|
var Pencil = (props) => {
|
|
984
984
|
const stroke = getStroke(props);
|
|
985
|
-
return React25.createElement("svg", {
|
|
985
|
+
return /* @__PURE__ */ React25.createElement("svg", {
|
|
986
986
|
viewBox: "0 0 24 24"
|
|
987
|
-
}, React25.createElement("path", {
|
|
987
|
+
}, /* @__PURE__ */ React25.createElement("path", {
|
|
988
988
|
fill: stroke,
|
|
989
989
|
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
990
|
}));
|
|
@@ -994,9 +994,9 @@ var Pencil = (props) => {
|
|
|
994
994
|
import React26 from "react";
|
|
995
995
|
var Rectangle = (props) => {
|
|
996
996
|
const stroke = getStroke(props);
|
|
997
|
-
return React26.createElement("svg", {
|
|
997
|
+
return /* @__PURE__ */ React26.createElement("svg", {
|
|
998
998
|
viewBox: "0 0 24 24"
|
|
999
|
-
}, React26.createElement("path", {
|
|
999
|
+
}, /* @__PURE__ */ React26.createElement("path", {
|
|
1000
1000
|
fill: "none",
|
|
1001
1001
|
stroke,
|
|
1002
1002
|
d: "M5.5 5.5h13v13h-13z"
|
|
@@ -1007,9 +1007,9 @@ var Rectangle = (props) => {
|
|
|
1007
1007
|
import React27 from "react";
|
|
1008
1008
|
var Selector = (props) => {
|
|
1009
1009
|
const stroke = getStroke(props);
|
|
1010
|
-
return React27.createElement("svg", {
|
|
1010
|
+
return /* @__PURE__ */ React27.createElement("svg", {
|
|
1011
1011
|
viewBox: "0 0 24 24"
|
|
1012
|
-
}, React27.createElement("path", {
|
|
1012
|
+
}, /* @__PURE__ */ React27.createElement("path", {
|
|
1013
1013
|
fill: stroke,
|
|
1014
1014
|
d: "m12 12 8 2.667-3.556 1.777L14.667 20 12 12Zm3-8v7.5h-1V5H5v9h6.5v1H4V4h11Z"
|
|
1015
1015
|
}));
|
|
@@ -1019,9 +1019,9 @@ var Selector = (props) => {
|
|
|
1019
1019
|
import React28 from "react";
|
|
1020
1020
|
var SpeechBalloon = (props) => {
|
|
1021
1021
|
const stroke = getStroke(props);
|
|
1022
|
-
return React28.createElement("svg", {
|
|
1022
|
+
return /* @__PURE__ */ React28.createElement("svg", {
|
|
1023
1023
|
viewBox: "0 0 24 24"
|
|
1024
|
-
}, React28.createElement("path", {
|
|
1024
|
+
}, /* @__PURE__ */ React28.createElement("path", {
|
|
1025
1025
|
fill: "none",
|
|
1026
1026
|
stroke,
|
|
1027
1027
|
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"
|
|
@@ -1032,9 +1032,9 @@ var SpeechBalloon = (props) => {
|
|
|
1032
1032
|
import React29 from "react";
|
|
1033
1033
|
var Star = (props) => {
|
|
1034
1034
|
const stroke = getStroke(props);
|
|
1035
|
-
return React29.createElement("svg", {
|
|
1035
|
+
return /* @__PURE__ */ React29.createElement("svg", {
|
|
1036
1036
|
viewBox: "0 0 24 24"
|
|
1037
|
-
}, React29.createElement("path", {
|
|
1037
|
+
}, /* @__PURE__ */ React29.createElement("path", {
|
|
1038
1038
|
fill: "none",
|
|
1039
1039
|
stroke,
|
|
1040
1040
|
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"
|
|
@@ -1045,9 +1045,9 @@ var Star = (props) => {
|
|
|
1045
1045
|
import React30 from "react";
|
|
1046
1046
|
var Text = (props) => {
|
|
1047
1047
|
const stroke = getStroke(props);
|
|
1048
|
-
return React30.createElement("svg", {
|
|
1048
|
+
return /* @__PURE__ */ React30.createElement("svg", {
|
|
1049
1049
|
viewBox: "0 0 24 24"
|
|
1050
|
-
}, React30.createElement("path", {
|
|
1050
|
+
}, /* @__PURE__ */ React30.createElement("path", {
|
|
1051
1051
|
fill: stroke,
|
|
1052
1052
|
d: "M18.5 5.5V8h-1V6.5H13v11h2v1H9v-1h2v-11H6.5V8h-1V5.5h13Z"
|
|
1053
1053
|
}));
|
|
@@ -1057,9 +1057,9 @@ var Text = (props) => {
|
|
|
1057
1057
|
import React31 from "react";
|
|
1058
1058
|
var Triangle = (props) => {
|
|
1059
1059
|
const stroke = getStroke(props);
|
|
1060
|
-
return React31.createElement("svg", {
|
|
1060
|
+
return /* @__PURE__ */ React31.createElement("svg", {
|
|
1061
1061
|
viewBox: "0 0 24 24"
|
|
1062
|
-
}, React31.createElement("path", {
|
|
1062
|
+
}, /* @__PURE__ */ React31.createElement("path", {
|
|
1063
1063
|
fill: "none",
|
|
1064
1064
|
stroke,
|
|
1065
1065
|
d: "M12 6.008 19.138 18.5H4.862L12 6.008Z"
|
|
@@ -1070,9 +1070,9 @@ var Triangle = (props) => {
|
|
|
1070
1070
|
import React32 from "react";
|
|
1071
1071
|
var Up = (props) => {
|
|
1072
1072
|
const stroke = getStroke(props);
|
|
1073
|
-
return React32.createElement("svg", {
|
|
1073
|
+
return /* @__PURE__ */ React32.createElement("svg", {
|
|
1074
1074
|
viewBox: "0 0 24 24"
|
|
1075
|
-
}, React32.createElement("path", {
|
|
1075
|
+
}, /* @__PURE__ */ React32.createElement("path", {
|
|
1076
1076
|
fill: "none",
|
|
1077
1077
|
stroke,
|
|
1078
1078
|
d: "m16 11-2-2-2-2-2 2-2 2m8 6-2-2-2-2-2 2-2 2"
|
|
@@ -1109,7 +1109,7 @@ import Tippy4 from "@tippyjs/react";
|
|
|
1109
1109
|
var Button = forwardRef((props, ref) => {
|
|
1110
1110
|
const { content, disabled, active, onClick, interactive, placement = "right", children } = props;
|
|
1111
1111
|
const { writable, theme } = useContext3(ToolbarContext);
|
|
1112
|
-
return React33.createElement(Tippy4, {
|
|
1112
|
+
return /* @__PURE__ */ React33.createElement(Tippy4, {
|
|
1113
1113
|
className: "fastboard-tip",
|
|
1114
1114
|
content,
|
|
1115
1115
|
interactive,
|
|
@@ -1119,7 +1119,7 @@ var Button = forwardRef((props, ref) => {
|
|
|
1119
1119
|
offset: placement.includes("right") ? RightOffset : void 0,
|
|
1120
1120
|
delay: [1e3, 400],
|
|
1121
1121
|
duration: 300
|
|
1122
|
-
}, React33.createElement("button", {
|
|
1122
|
+
}, /* @__PURE__ */ React33.createElement("button", {
|
|
1123
1123
|
ref,
|
|
1124
1124
|
className: clsx4("fastboard-toolbar-btn", theme, { active }),
|
|
1125
1125
|
onClick,
|
|
@@ -1131,9 +1131,9 @@ var Button = forwardRef((props, ref) => {
|
|
|
1131
1131
|
function renderToolTip(text, hotkey) {
|
|
1132
1132
|
if (!(typeof hotkey === "string"))
|
|
1133
1133
|
return text;
|
|
1134
|
-
return React34.createElement("span", {
|
|
1134
|
+
return /* @__PURE__ */ React34.createElement("span", {
|
|
1135
1135
|
className: "fastboard-toolbar-tooltip"
|
|
1136
|
-
}, React34.createElement("span", null, text), React34.createElement("span", {
|
|
1136
|
+
}, /* @__PURE__ */ React34.createElement("span", null, text), /* @__PURE__ */ React34.createElement("span", {
|
|
1137
1137
|
className: "fastboard-toolbar-hotkey"
|
|
1138
1138
|
}, hotkey.toUpperCase()));
|
|
1139
1139
|
}
|
|
@@ -1147,12 +1147,12 @@ function ClickerButton() {
|
|
|
1147
1147
|
const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1148
1148
|
const active = appliance === ApplianceNames.clicker;
|
|
1149
1149
|
const disabled = !writable;
|
|
1150
|
-
return React34.createElement(Button, {
|
|
1150
|
+
return /* @__PURE__ */ React34.createElement(Button, {
|
|
1151
1151
|
content: renderToolTip(t("clicker"), shortcut),
|
|
1152
1152
|
onClick: changeAppliance,
|
|
1153
1153
|
active
|
|
1154
|
-
}, React34.createElement(Icon, {
|
|
1155
|
-
fallback: React34.createElement(Icons.Clicker, {
|
|
1154
|
+
}, /* @__PURE__ */ React34.createElement(Icon, {
|
|
1155
|
+
fallback: /* @__PURE__ */ React34.createElement(Icons.Clicker, {
|
|
1156
1156
|
theme,
|
|
1157
1157
|
active
|
|
1158
1158
|
}),
|
|
@@ -1169,12 +1169,12 @@ function SelectorButton() {
|
|
|
1169
1169
|
const active = appliance === ApplianceNames.selector;
|
|
1170
1170
|
const disabled = !writable;
|
|
1171
1171
|
const shortcut = (app.hotKeys || defaultHotKeys).changeToSelector;
|
|
1172
|
-
return React34.createElement(Button, {
|
|
1172
|
+
return /* @__PURE__ */ React34.createElement(Button, {
|
|
1173
1173
|
content: renderToolTip(t("selector"), shortcut),
|
|
1174
1174
|
onClick: changeAppliance,
|
|
1175
1175
|
active
|
|
1176
|
-
}, React34.createElement(Icon, {
|
|
1177
|
-
fallback: React34.createElement(Icons.Selector, {
|
|
1176
|
+
}, /* @__PURE__ */ React34.createElement(Icon, {
|
|
1177
|
+
fallback: /* @__PURE__ */ React34.createElement(Icons.Selector, {
|
|
1178
1178
|
theme,
|
|
1179
1179
|
active
|
|
1180
1180
|
}),
|
|
@@ -1191,12 +1191,12 @@ function EraserButton() {
|
|
|
1191
1191
|
const active = appliance === ApplianceNames.eraser;
|
|
1192
1192
|
const disabled = !writable;
|
|
1193
1193
|
const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToEraser;
|
|
1194
|
-
return React34.createElement(Button, {
|
|
1194
|
+
return /* @__PURE__ */ React34.createElement(Button, {
|
|
1195
1195
|
content: renderToolTip(t("eraser"), shortcut),
|
|
1196
1196
|
onClick: changeAppliance,
|
|
1197
1197
|
active
|
|
1198
|
-
}, React34.createElement(Icon, {
|
|
1199
|
-
fallback: React34.createElement(Icons.Eraser, {
|
|
1198
|
+
}, /* @__PURE__ */ React34.createElement(Icon, {
|
|
1199
|
+
fallback: /* @__PURE__ */ React34.createElement(Icons.Eraser, {
|
|
1200
1200
|
theme,
|
|
1201
1201
|
active
|
|
1202
1202
|
}),
|
|
@@ -1208,11 +1208,11 @@ function CleanButton() {
|
|
|
1208
1208
|
const { t } = useTranslation();
|
|
1209
1209
|
const { theme, icons, writable, cleanCurrentScene } = useContext4(ToolbarContext);
|
|
1210
1210
|
const disabled = !writable;
|
|
1211
|
-
return React34.createElement(Button, {
|
|
1211
|
+
return /* @__PURE__ */ React34.createElement(Button, {
|
|
1212
1212
|
content: t("clean"),
|
|
1213
1213
|
onClick: cleanCurrentScene
|
|
1214
|
-
}, React34.createElement(Icon, {
|
|
1215
|
-
fallback: React34.createElement(Icons.Clean, {
|
|
1214
|
+
}, /* @__PURE__ */ React34.createElement(Icon, {
|
|
1215
|
+
fallback: /* @__PURE__ */ React34.createElement(Icons.Clean, {
|
|
1216
1216
|
theme
|
|
1217
1217
|
}),
|
|
1218
1218
|
src: disabled ? icons == null ? void 0 : icons.cleanIconDisable : icons == null ? void 0 : icons.cleanIcon,
|
|
@@ -1237,19 +1237,19 @@ var countdown_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyC
|
|
|
1237
1237
|
function AppsButton({ content, onClick }) {
|
|
1238
1238
|
const { theme, icons, writable } = useContext5(ToolbarContext);
|
|
1239
1239
|
const disabled = !writable;
|
|
1240
|
-
const button = React35.createElement(Button, {
|
|
1240
|
+
const button = /* @__PURE__ */ React35.createElement(Button, {
|
|
1241
1241
|
content: "Apps",
|
|
1242
1242
|
onClick
|
|
1243
|
-
}, React35.createElement(Icon, {
|
|
1244
|
-
fallback: React35.createElement(Icons.Apps, {
|
|
1243
|
+
}, /* @__PURE__ */ React35.createElement(Icon, {
|
|
1244
|
+
fallback: /* @__PURE__ */ React35.createElement(Icons.Apps, {
|
|
1245
1245
|
theme
|
|
1246
1246
|
}),
|
|
1247
1247
|
src: disabled ? icons == null ? void 0 : icons.appsIconDisable : icons == null ? void 0 : icons.appsIcon,
|
|
1248
1248
|
alt: "[apps]"
|
|
1249
1249
|
}));
|
|
1250
|
-
return content === false ? button : React35.createElement("span", {
|
|
1250
|
+
return content === false ? button : /* @__PURE__ */ React35.createElement("span", {
|
|
1251
1251
|
className: "fastboard-toolbar-btn-interactive"
|
|
1252
|
-
}, React35.createElement(Tippy5, {
|
|
1252
|
+
}, /* @__PURE__ */ React35.createElement(Tippy5, {
|
|
1253
1253
|
className: "fastboard-tip",
|
|
1254
1254
|
content: renderAppsButtonContent(content),
|
|
1255
1255
|
theme,
|
|
@@ -1261,25 +1261,25 @@ function AppsButton({ content, onClick }) {
|
|
|
1261
1261
|
}, button));
|
|
1262
1262
|
}
|
|
1263
1263
|
function renderAppsButtonContent(content) {
|
|
1264
|
-
return React35.createElement("div", {
|
|
1264
|
+
return /* @__PURE__ */ React35.createElement("div", {
|
|
1265
1265
|
className: "fastboard-toolbar-panel apps"
|
|
1266
|
-
}, React35.createElement("div", {
|
|
1266
|
+
}, /* @__PURE__ */ React35.createElement("div", {
|
|
1267
1267
|
className: "fastboard-toolbar-apps"
|
|
1268
|
-
}, content || React35.createElement(DefaultApps, null)));
|
|
1268
|
+
}, content || /* @__PURE__ */ React35.createElement(DefaultApps, null)));
|
|
1269
1269
|
}
|
|
1270
1270
|
function DefaultApps() {
|
|
1271
1271
|
const app = useFastboardApp();
|
|
1272
|
-
return React35.createElement(React35.Fragment, null, React35.createElement(AppIcon, {
|
|
1272
|
+
return /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement(AppIcon, {
|
|
1273
1273
|
title: "Code Editor",
|
|
1274
1274
|
src: vscode_default,
|
|
1275
1275
|
alt: "[code editor]",
|
|
1276
1276
|
onClick: app == null ? void 0 : app.insertCodeEditor.bind(app)
|
|
1277
|
-
}), React35.createElement(AppIcon, {
|
|
1277
|
+
}), /* @__PURE__ */ React35.createElement(AppIcon, {
|
|
1278
1278
|
title: "GeoGebra",
|
|
1279
1279
|
src: geogebra_default,
|
|
1280
1280
|
alt: "[geogebra]",
|
|
1281
1281
|
onClick: app == null ? void 0 : app.insertGeoGebra.bind(app)
|
|
1282
|
-
}), React35.createElement(AppIcon, {
|
|
1282
|
+
}), /* @__PURE__ */ React35.createElement(AppIcon, {
|
|
1283
1283
|
title: "Countdown",
|
|
1284
1284
|
src: countdown_default,
|
|
1285
1285
|
alt: "[countdown]",
|
|
@@ -1287,17 +1287,17 @@ function DefaultApps() {
|
|
|
1287
1287
|
}));
|
|
1288
1288
|
}
|
|
1289
1289
|
function AppIcon({ title, src, alt, onClick }) {
|
|
1290
|
-
return React35.createElement("span", {
|
|
1290
|
+
return /* @__PURE__ */ React35.createElement("span", {
|
|
1291
1291
|
className: "fastboard-toolbar-app-icon"
|
|
1292
|
-
}, React35.createElement(Button, {
|
|
1292
|
+
}, /* @__PURE__ */ React35.createElement(Button, {
|
|
1293
1293
|
placement: "top",
|
|
1294
1294
|
content: title,
|
|
1295
1295
|
onClick
|
|
1296
|
-
}, React35.createElement("img", {
|
|
1296
|
+
}, /* @__PURE__ */ React35.createElement("img", {
|
|
1297
1297
|
src,
|
|
1298
1298
|
alt,
|
|
1299
1299
|
title
|
|
1300
|
-
})), React35.createElement("span", {
|
|
1300
|
+
})), /* @__PURE__ */ React35.createElement("span", {
|
|
1301
1301
|
className: "fastboard-toolbar-app-icon-text"
|
|
1302
1302
|
}, title));
|
|
1303
1303
|
}
|
|
@@ -1325,17 +1325,17 @@ function ColorBox() {
|
|
|
1325
1325
|
const { theme, memberState, setStrokeColor, writable } = useContext6(ToolbarContext);
|
|
1326
1326
|
const strokeColor = memberState == null ? void 0 : memberState.strokeColor;
|
|
1327
1327
|
const disabled = !writable;
|
|
1328
|
-
return React36.createElement("div", {
|
|
1328
|
+
return /* @__PURE__ */ React36.createElement("div", {
|
|
1329
1329
|
className: clsx5("fastboard-toolbar-color-box", theme)
|
|
1330
|
-
}, colorKeys.map((key) => React36.createElement("div", {
|
|
1330
|
+
}, colorKeys.map((key) => /* @__PURE__ */ React36.createElement("div", {
|
|
1331
1331
|
key,
|
|
1332
1332
|
className: clsx5("fastboard-toolbar-color-item", theme),
|
|
1333
1333
|
onClick: () => setStrokeColor(colors[key])
|
|
1334
|
-
}, React36.createElement("div", {
|
|
1334
|
+
}, /* @__PURE__ */ React36.createElement("div", {
|
|
1335
1335
|
className: clsx5("fastboard-toolbar-color-border", theme, {
|
|
1336
1336
|
active: strokeColor && isEqualArray(strokeColor, colors[key])
|
|
1337
1337
|
})
|
|
1338
|
-
}, React36.createElement("button", {
|
|
1338
|
+
}, /* @__PURE__ */ React36.createElement("button", {
|
|
1339
1339
|
className: clsx5("fastboard-toolbar-color-btn"),
|
|
1340
1340
|
style: { background: key },
|
|
1341
1341
|
disabled,
|
|
@@ -1351,7 +1351,7 @@ import clsx6 from "clsx";
|
|
|
1351
1351
|
import React37, { useContext as useContext7 } from "react";
|
|
1352
1352
|
function CutLine() {
|
|
1353
1353
|
const { theme } = useContext7(ToolbarContext);
|
|
1354
|
-
return React37.createElement("span", {
|
|
1354
|
+
return /* @__PURE__ */ React37.createElement("span", {
|
|
1355
1355
|
className: clsx6(`${name4}-cut-line`, theme)
|
|
1356
1356
|
});
|
|
1357
1357
|
}
|
|
@@ -1364,7 +1364,7 @@ function Slider() {
|
|
|
1364
1364
|
const { theme, writable, memberState, setStrokeWidth } = useContext8(ToolbarContext);
|
|
1365
1365
|
const { activeColor } = themes[theme];
|
|
1366
1366
|
const strokeWidth = (memberState == null ? void 0 : memberState.strokeWidth) || 0;
|
|
1367
|
-
return React38.createElement(RcSlider, {
|
|
1367
|
+
return /* @__PURE__ */ React38.createElement(RcSlider, {
|
|
1368
1368
|
disabled: !writable,
|
|
1369
1369
|
className: clsx7("fastboard-toolbar-slider", theme),
|
|
1370
1370
|
trackStyle: { background: activeColor },
|
|
@@ -1388,9 +1388,9 @@ function PencilButton() {
|
|
|
1388
1388
|
const active = appliance === ApplianceNames2.pencil;
|
|
1389
1389
|
const disabled = !writable;
|
|
1390
1390
|
const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToPencil;
|
|
1391
|
-
return React39.createElement("span", {
|
|
1391
|
+
return /* @__PURE__ */ React39.createElement("span", {
|
|
1392
1392
|
className: "fastboard-toolbar-btn-interactive"
|
|
1393
|
-
}, React39.createElement(Tippy6, {
|
|
1393
|
+
}, /* @__PURE__ */ React39.createElement(Tippy6, {
|
|
1394
1394
|
className: "fastboard-tip",
|
|
1395
1395
|
content: renderPencilButtonContent(),
|
|
1396
1396
|
theme,
|
|
@@ -1399,25 +1399,25 @@ function PencilButton() {
|
|
|
1399
1399
|
offset: RightOffset,
|
|
1400
1400
|
arrow: false,
|
|
1401
1401
|
interactive: true
|
|
1402
|
-
}, React39.createElement(Button, {
|
|
1402
|
+
}, /* @__PURE__ */ React39.createElement(Button, {
|
|
1403
1403
|
content: renderToolTip(t("pencil"), shortcut),
|
|
1404
1404
|
active,
|
|
1405
1405
|
onClick: changeAppliance
|
|
1406
|
-
}, React39.createElement(Icon, {
|
|
1407
|
-
fallback: React39.createElement(Icons.Pencil, {
|
|
1406
|
+
}, /* @__PURE__ */ React39.createElement(Icon, {
|
|
1407
|
+
fallback: /* @__PURE__ */ React39.createElement(Icons.Pencil, {
|
|
1408
1408
|
theme,
|
|
1409
1409
|
active
|
|
1410
1410
|
}),
|
|
1411
1411
|
src: disabled ? icons == null ? void 0 : icons.pencilIconDisable : icons == null ? void 0 : icons.pencilIcon,
|
|
1412
1412
|
alt: "[pencil]"
|
|
1413
|
-
}), React39.createElement("span", {
|
|
1413
|
+
}), /* @__PURE__ */ React39.createElement("span", {
|
|
1414
1414
|
className: "fastboard-toolbar-triangle"
|
|
1415
1415
|
}))));
|
|
1416
1416
|
}
|
|
1417
1417
|
function renderPencilButtonContent() {
|
|
1418
|
-
return React39.createElement("div", {
|
|
1418
|
+
return /* @__PURE__ */ React39.createElement("div", {
|
|
1419
1419
|
className: "fastboard-toolbar-panel pencil"
|
|
1420
|
-
}, React39.createElement(Slider, null), React39.createElement(CutLine, null), React39.createElement(ColorBox, null));
|
|
1420
|
+
}, /* @__PURE__ */ React39.createElement(Slider, null), /* @__PURE__ */ React39.createElement(CutLine, null), /* @__PURE__ */ React39.createElement(ColorBox, null));
|
|
1421
1421
|
}
|
|
1422
1422
|
|
|
1423
1423
|
// src/components/Toolbar/components/ShapesButton.tsx
|
|
@@ -1464,9 +1464,9 @@ function ShapesButton() {
|
|
|
1464
1464
|
const key = appliance === ApplianceNames4.shape ? shape : appliance;
|
|
1465
1465
|
const active = ShapeTypes.has(key);
|
|
1466
1466
|
const CurrentIcon = ShapesMap[key] || Icons.Rectangle;
|
|
1467
|
-
return React40.createElement("span", {
|
|
1467
|
+
return /* @__PURE__ */ React40.createElement("span", {
|
|
1468
1468
|
className: "fastboard-toolbar-btn-interactive"
|
|
1469
|
-
}, React40.createElement(Tippy7, {
|
|
1469
|
+
}, /* @__PURE__ */ React40.createElement(Tippy7, {
|
|
1470
1470
|
className: "fastboard-tip",
|
|
1471
1471
|
content: renderShapesButtonContent(),
|
|
1472
1472
|
theme,
|
|
@@ -1475,31 +1475,31 @@ function ShapesButton() {
|
|
|
1475
1475
|
offset: RightOffset,
|
|
1476
1476
|
arrow: false,
|
|
1477
1477
|
interactive: true
|
|
1478
|
-
}, React40.createElement(Button, {
|
|
1478
|
+
}, /* @__PURE__ */ React40.createElement(Button, {
|
|
1479
1479
|
content: t("shape"),
|
|
1480
1480
|
active
|
|
1481
|
-
}, React40.createElement(CurrentIcon, {
|
|
1481
|
+
}, /* @__PURE__ */ React40.createElement(CurrentIcon, {
|
|
1482
1482
|
theme,
|
|
1483
1483
|
active
|
|
1484
|
-
}), React40.createElement("span", {
|
|
1484
|
+
}), /* @__PURE__ */ React40.createElement("span", {
|
|
1485
1485
|
className: "fastboard-toolbar-triangle"
|
|
1486
1486
|
}))));
|
|
1487
1487
|
}
|
|
1488
1488
|
function renderShapesButtonContent() {
|
|
1489
|
-
return React40.createElement("div", {
|
|
1489
|
+
return /* @__PURE__ */ React40.createElement("div", {
|
|
1490
1490
|
className: "fastboard-toolbar-panel shapes"
|
|
1491
|
-
}, React40.createElement(ShapesBox, null), React40.createElement(CutLine, null), React40.createElement(Slider, null), React40.createElement(CutLine, null), React40.createElement(ColorBox, null));
|
|
1491
|
+
}, /* @__PURE__ */ React40.createElement(ShapesBox, null), /* @__PURE__ */ React40.createElement(CutLine, null), /* @__PURE__ */ React40.createElement(Slider, null), /* @__PURE__ */ React40.createElement(CutLine, null), /* @__PURE__ */ React40.createElement(ColorBox, null));
|
|
1492
1492
|
}
|
|
1493
1493
|
function ShapesBox() {
|
|
1494
1494
|
const { t } = useTranslation();
|
|
1495
|
-
return React40.createElement("div", {
|
|
1495
|
+
return /* @__PURE__ */ React40.createElement("div", {
|
|
1496
1496
|
className: "fastboard-toolbar-shapes"
|
|
1497
|
-
}, ApplianceShapes.map((Appliance) => React40.createElement(ApplianceShapeButton, {
|
|
1497
|
+
}, ApplianceShapes.map((Appliance) => /* @__PURE__ */ React40.createElement(ApplianceShapeButton, {
|
|
1498
1498
|
key: Appliance,
|
|
1499
1499
|
content: t(Appliance),
|
|
1500
1500
|
Appliance,
|
|
1501
1501
|
Icon: ShapesMap[Appliance]
|
|
1502
|
-
})), Shapes.map((shape) => React40.createElement(ShapeShapeButton, {
|
|
1502
|
+
})), Shapes.map((shape) => /* @__PURE__ */ React40.createElement(ShapeShapeButton, {
|
|
1503
1503
|
key: shape,
|
|
1504
1504
|
content: t(shape),
|
|
1505
1505
|
shape,
|
|
@@ -1510,12 +1510,12 @@ function ApplianceShapeButton({ content, Appliance, Icon: Icon2 }) {
|
|
|
1510
1510
|
const { theme, writable, setAppliance, memberState } = useContext10(ToolbarContext);
|
|
1511
1511
|
const current = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1512
1512
|
const disabled = !writable;
|
|
1513
|
-
return React40.createElement(Button, {
|
|
1513
|
+
return /* @__PURE__ */ React40.createElement(Button, {
|
|
1514
1514
|
content,
|
|
1515
1515
|
disabled,
|
|
1516
1516
|
placement: "top",
|
|
1517
1517
|
onClick: () => setAppliance(Appliance)
|
|
1518
|
-
}, React40.createElement(Icon2, {
|
|
1518
|
+
}, /* @__PURE__ */ React40.createElement(Icon2, {
|
|
1519
1519
|
theme,
|
|
1520
1520
|
active: current === Appliance
|
|
1521
1521
|
}));
|
|
@@ -1525,12 +1525,12 @@ function ShapeShapeButton({ content, shape, Icon: Icon2 }) {
|
|
|
1525
1525
|
const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1526
1526
|
const current = appliance === ApplianceNames4.shape && (memberState == null ? void 0 : memberState.shapeType);
|
|
1527
1527
|
const disabled = !writable;
|
|
1528
|
-
return React40.createElement(Button, {
|
|
1528
|
+
return /* @__PURE__ */ React40.createElement(Button, {
|
|
1529
1529
|
content,
|
|
1530
1530
|
disabled,
|
|
1531
1531
|
placement: "top",
|
|
1532
1532
|
onClick: () => setAppliance(ApplianceNames4.shape, shape)
|
|
1533
|
-
}, React40.createElement(Icon2, {
|
|
1533
|
+
}, /* @__PURE__ */ React40.createElement(Icon2, {
|
|
1534
1534
|
theme,
|
|
1535
1535
|
active: current === shape
|
|
1536
1536
|
}));
|
|
@@ -1551,9 +1551,9 @@ function TextButton() {
|
|
|
1551
1551
|
const active = appliance === ApplianceNames5.text;
|
|
1552
1552
|
const disabled = !writable;
|
|
1553
1553
|
const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToText;
|
|
1554
|
-
return React41.createElement("span", {
|
|
1554
|
+
return /* @__PURE__ */ React41.createElement("span", {
|
|
1555
1555
|
className: "fastboard-toolbar-btn-interactive"
|
|
1556
|
-
}, React41.createElement(Tippy8, {
|
|
1556
|
+
}, /* @__PURE__ */ React41.createElement(Tippy8, {
|
|
1557
1557
|
className: "fastboard-tip",
|
|
1558
1558
|
content: renderTextButtonContent(),
|
|
1559
1559
|
theme,
|
|
@@ -1562,25 +1562,25 @@ function TextButton() {
|
|
|
1562
1562
|
offset: RightOffset,
|
|
1563
1563
|
arrow: false,
|
|
1564
1564
|
interactive: true
|
|
1565
|
-
}, React41.createElement(Button, {
|
|
1565
|
+
}, /* @__PURE__ */ React41.createElement(Button, {
|
|
1566
1566
|
content: renderToolTip(t("text"), shortcut),
|
|
1567
1567
|
active,
|
|
1568
1568
|
onClick: changeAppliance
|
|
1569
|
-
}, React41.createElement(Icon, {
|
|
1570
|
-
fallback: React41.createElement(Icons.Text, {
|
|
1569
|
+
}, /* @__PURE__ */ React41.createElement(Icon, {
|
|
1570
|
+
fallback: /* @__PURE__ */ React41.createElement(Icons.Text, {
|
|
1571
1571
|
theme,
|
|
1572
1572
|
active
|
|
1573
1573
|
}),
|
|
1574
1574
|
src: disabled ? icons == null ? void 0 : icons.textIconDisable : icons == null ? void 0 : icons.textIcon,
|
|
1575
1575
|
alt: "[text]"
|
|
1576
|
-
}), React41.createElement("span", {
|
|
1576
|
+
}), /* @__PURE__ */ React41.createElement("span", {
|
|
1577
1577
|
className: "fastboard-toolbar-triangle"
|
|
1578
1578
|
}))));
|
|
1579
1579
|
}
|
|
1580
1580
|
function renderTextButtonContent() {
|
|
1581
|
-
return React41.createElement("div", {
|
|
1581
|
+
return /* @__PURE__ */ React41.createElement("div", {
|
|
1582
1582
|
className: "fastboard-toolbar-panel text"
|
|
1583
|
-
}, React41.createElement(ColorBox, null));
|
|
1583
|
+
}, /* @__PURE__ */ React41.createElement(ColorBox, null));
|
|
1584
1584
|
}
|
|
1585
1585
|
|
|
1586
1586
|
// src/components/Toolbar/components/UpDownButtons.tsx
|
|
@@ -1588,27 +1588,27 @@ import React42, { useCallback as useCallback9, useContext as useContext12 } from
|
|
|
1588
1588
|
function UpButton({ disabled, scrollTo }) {
|
|
1589
1589
|
const { theme, icons } = useContext12(ToolbarContext);
|
|
1590
1590
|
const scrollUp = useCallback9(() => scrollTo(-ItemHeight), [scrollTo]);
|
|
1591
|
-
return React42.createElement(React42.Fragment, null, React42.createElement(Button, {
|
|
1591
|
+
return /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(Button, {
|
|
1592
1592
|
content: "Up",
|
|
1593
1593
|
disabled,
|
|
1594
1594
|
onClick: scrollUp
|
|
1595
|
-
}, React42.createElement(Icon, {
|
|
1596
|
-
fallback: React42.createElement(Icons.Up, {
|
|
1595
|
+
}, /* @__PURE__ */ React42.createElement(Icon, {
|
|
1596
|
+
fallback: /* @__PURE__ */ React42.createElement(Icons.Up, {
|
|
1597
1597
|
theme
|
|
1598
1598
|
}),
|
|
1599
1599
|
src: disabled ? icons == null ? void 0 : icons.upIconDisable : icons == null ? void 0 : icons.upIcon,
|
|
1600
1600
|
alt: "[up]"
|
|
1601
|
-
})), React42.createElement(CutLine, null));
|
|
1601
|
+
})), /* @__PURE__ */ React42.createElement(CutLine, null));
|
|
1602
1602
|
}
|
|
1603
1603
|
function DownButton({ disabled, scrollTo }) {
|
|
1604
1604
|
const { theme, icons } = useContext12(ToolbarContext);
|
|
1605
1605
|
const scrollDown = useCallback9(() => scrollTo(ItemHeight), [scrollTo]);
|
|
1606
|
-
return React42.createElement(React42.Fragment, null, React42.createElement(CutLine, null), React42.createElement(Button, {
|
|
1606
|
+
return /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(CutLine, null), /* @__PURE__ */ React42.createElement(Button, {
|
|
1607
1607
|
content: "Down",
|
|
1608
1608
|
disabled,
|
|
1609
1609
|
onClick: scrollDown
|
|
1610
|
-
}, React42.createElement(Icon, {
|
|
1611
|
-
fallback: React42.createElement(Icons.Down, {
|
|
1610
|
+
}, /* @__PURE__ */ React42.createElement(Icon, {
|
|
1611
|
+
fallback: /* @__PURE__ */ React42.createElement(Icons.Down, {
|
|
1612
1612
|
theme
|
|
1613
1613
|
}),
|
|
1614
1614
|
src: disabled ? icons == null ? void 0 : icons.downIconDisable : icons == null ? void 0 : icons.downIcon,
|
|
@@ -1647,17 +1647,17 @@ var Content = React43.memo(() => {
|
|
|
1647
1647
|
return () => resizeObserver.disconnect();
|
|
1648
1648
|
}
|
|
1649
1649
|
}, []);
|
|
1650
|
-
return React43.createElement(React43.Fragment, null, needScroll && React43.createElement(UpButton, {
|
|
1650
|
+
return /* @__PURE__ */ React43.createElement(React43.Fragment, null, needScroll && /* @__PURE__ */ React43.createElement(UpButton, {
|
|
1651
1651
|
scrollTo,
|
|
1652
1652
|
disabled: disableScrollUp
|
|
1653
|
-
}), React43.createElement("div", {
|
|
1653
|
+
}), /* @__PURE__ */ React43.createElement("div", {
|
|
1654
1654
|
ref,
|
|
1655
1655
|
className: clsx8(`${name4}-section`),
|
|
1656
1656
|
style: {
|
|
1657
1657
|
height: `${sectionHeight}px`,
|
|
1658
1658
|
overflow: needScroll ? "hidden" : "visible"
|
|
1659
1659
|
}
|
|
1660
|
-
}, React43.createElement(ClickerButton, null), React43.createElement(SelectorButton, null), React43.createElement(PencilButton, null), React43.createElement(TextButton, null), React43.createElement(ShapesButton, null), React43.createElement(EraserButton, null), React43.createElement(CleanButton, null), React43.createElement(AppsButton, null)), needScroll && React43.createElement(DownButton, {
|
|
1660
|
+
}, /* @__PURE__ */ React43.createElement(ClickerButton, null), /* @__PURE__ */ React43.createElement(SelectorButton, null), /* @__PURE__ */ React43.createElement(PencilButton, null), /* @__PURE__ */ React43.createElement(TextButton, null), /* @__PURE__ */ React43.createElement(ShapesButton, null), /* @__PURE__ */ React43.createElement(EraserButton, null), /* @__PURE__ */ React43.createElement(CleanButton, null), /* @__PURE__ */ React43.createElement(AppsButton, null)), needScroll && /* @__PURE__ */ React43.createElement(DownButton, {
|
|
1661
1661
|
scrollTo,
|
|
1662
1662
|
disabled: disableScrollDown
|
|
1663
1663
|
}));
|
|
@@ -1686,9 +1686,9 @@ var Toolbar = ({ theme, icons }) => {
|
|
|
1686
1686
|
}, 400);
|
|
1687
1687
|
return () => clearTimeout(timer);
|
|
1688
1688
|
}, [onHover]);
|
|
1689
|
-
return React44.createElement(ToolbarContext.Provider, {
|
|
1689
|
+
return /* @__PURE__ */ React44.createElement(ToolbarContext.Provider, {
|
|
1690
1690
|
value: __spreadValues({ theme, icons }, hook)
|
|
1691
|
-
}, React44.createElement(AnimatePresence, null, expanded ? React44.createElement(motion.div, {
|
|
1691
|
+
}, /* @__PURE__ */ React44.createElement(AnimatePresence, null, expanded ? /* @__PURE__ */ React44.createElement(motion.div, {
|
|
1692
1692
|
initial: { x: -100 },
|
|
1693
1693
|
animate: { x: 0, transition: { duration: 0.5 } },
|
|
1694
1694
|
key: "toolbar",
|
|
@@ -1702,22 +1702,22 @@ var Toolbar = ({ theme, icons }) => {
|
|
|
1702
1702
|
onAnimationStart: () => setPointEvents(false),
|
|
1703
1703
|
onAnimationComplete: () => setPointEvents(true),
|
|
1704
1704
|
style: { pointerEvents: pointEvents ? "auto" : "none" }
|
|
1705
|
-
}, React44.createElement(Content, null), expanded && (onHover || delayedOnHover) && React44.createElement(Mask, {
|
|
1705
|
+
}, /* @__PURE__ */ React44.createElement(Content, null), expanded && (onHover || delayedOnHover) && /* @__PURE__ */ React44.createElement(Mask, {
|
|
1706
1706
|
toolbar
|
|
1707
|
-
}, React44.createElement("div", {
|
|
1707
|
+
}, /* @__PURE__ */ React44.createElement("div", {
|
|
1708
1708
|
onClick: toggle
|
|
1709
|
-
}, React44.createElement("img", {
|
|
1709
|
+
}, /* @__PURE__ */ React44.createElement("img", {
|
|
1710
1710
|
draggable: false,
|
|
1711
1711
|
className: clsx9(`${name4}-mask-btn`, theme),
|
|
1712
1712
|
src: collapsed_default
|
|
1713
|
-
})))) : React44.createElement(motion.div, {
|
|
1713
|
+
})))) : /* @__PURE__ */ React44.createElement(motion.div, {
|
|
1714
1714
|
className: clsx9(`${name4}-expand-btn`, theme),
|
|
1715
1715
|
key: "expand",
|
|
1716
1716
|
onClick: toggle,
|
|
1717
1717
|
initial: { x: -100 },
|
|
1718
1718
|
animate: { x: 0, transition: { duration: 0.5 } }
|
|
1719
|
-
}, !expanded && React44.createElement(Icon, {
|
|
1720
|
-
fallback: React44.createElement("img", {
|
|
1719
|
+
}, !expanded && /* @__PURE__ */ React44.createElement(Icon, {
|
|
1720
|
+
fallback: /* @__PURE__ */ React44.createElement("img", {
|
|
1721
1721
|
draggable: false,
|
|
1722
1722
|
src: expanded_default,
|
|
1723
1723
|
className: clsx9(`${name4}-mask-btn`, theme)
|
|
@@ -1807,7 +1807,7 @@ import React45, { forwardRef as forwardRef2 } from "react";
|
|
|
1807
1807
|
import Tippy9 from "@tippyjs/react";
|
|
1808
1808
|
var Button2 = forwardRef2((props, ref) => {
|
|
1809
1809
|
const { theme, content, disabled, active, onClick, interactive, placement = "top", children } = props;
|
|
1810
|
-
return React45.createElement(Tippy9, {
|
|
1810
|
+
return /* @__PURE__ */ React45.createElement(Tippy9, {
|
|
1811
1811
|
className: "fastboard-tip",
|
|
1812
1812
|
content,
|
|
1813
1813
|
interactive,
|
|
@@ -1817,7 +1817,7 @@ var Button2 = forwardRef2((props, ref) => {
|
|
|
1817
1817
|
offset: TopOffset,
|
|
1818
1818
|
delay: [1e3, 400],
|
|
1819
1819
|
duration: 300
|
|
1820
|
-
}, React45.createElement("button", {
|
|
1820
|
+
}, /* @__PURE__ */ React45.createElement("button", {
|
|
1821
1821
|
ref,
|
|
1822
1822
|
className: clsx10("fastboard-player-control-btn", theme, { active }),
|
|
1823
1823
|
onClick,
|
|
@@ -1832,9 +1832,9 @@ import { memo as memo2 } from "react";
|
|
|
1832
1832
|
import React46 from "react";
|
|
1833
1833
|
var Loading = (props) => {
|
|
1834
1834
|
const stroke = getStroke(props);
|
|
1835
|
-
return React46.createElement("svg", {
|
|
1835
|
+
return /* @__PURE__ */ React46.createElement("svg", {
|
|
1836
1836
|
viewBox: "0 0 24 24"
|
|
1837
|
-
}, React46.createElement("path", {
|
|
1837
|
+
}, /* @__PURE__ */ React46.createElement("path", {
|
|
1838
1838
|
d: "M12 4V2A10 10 0 0 0 2 12h2a8 8 0 0 1 8-8z",
|
|
1839
1839
|
fill: stroke
|
|
1840
1840
|
}));
|
|
@@ -1844,9 +1844,9 @@ var Loading = (props) => {
|
|
|
1844
1844
|
import React47 from "react";
|
|
1845
1845
|
var Pause = (props) => {
|
|
1846
1846
|
const stroke = getStroke(props);
|
|
1847
|
-
return React47.createElement("svg", {
|
|
1847
|
+
return /* @__PURE__ */ React47.createElement("svg", {
|
|
1848
1848
|
viewBox: "0 0 24 24"
|
|
1849
|
-
}, React47.createElement("path", {
|
|
1849
|
+
}, /* @__PURE__ */ React47.createElement("path", {
|
|
1850
1850
|
d: "M14 19h4V5h-4M6 19h4V5H6v14z",
|
|
1851
1851
|
fill: stroke
|
|
1852
1852
|
}));
|
|
@@ -1856,9 +1856,9 @@ var Pause = (props) => {
|
|
|
1856
1856
|
import React48 from "react";
|
|
1857
1857
|
var Play = (props) => {
|
|
1858
1858
|
const stroke = getStroke(props);
|
|
1859
|
-
return React48.createElement("svg", {
|
|
1859
|
+
return /* @__PURE__ */ React48.createElement("svg", {
|
|
1860
1860
|
viewBox: "0 0 24 24"
|
|
1861
|
-
}, React48.createElement("path", {
|
|
1861
|
+
}, /* @__PURE__ */ React48.createElement("path", {
|
|
1862
1862
|
d: "M8 5.14v14l11-7l-11-7z",
|
|
1863
1863
|
fill: stroke
|
|
1864
1864
|
}));
|
|
@@ -1890,25 +1890,25 @@ function PlayerControl(_a) {
|
|
|
1890
1890
|
const isLoading = player.phase === PlayerPhase2.WaitingFirstFrame || player.phase === PlayerPhase2.Buffering;
|
|
1891
1891
|
const isPlaying = player.phase === PlayerPhase2.Playing;
|
|
1892
1892
|
const { activeColor } = themes[theme];
|
|
1893
|
-
return React49.createElement("div", {
|
|
1893
|
+
return /* @__PURE__ */ React49.createElement("div", {
|
|
1894
1894
|
className: clsx11(name5, theme, { "auto-hide": autoHide })
|
|
1895
|
-
}, React49.createElement("button", {
|
|
1895
|
+
}, /* @__PURE__ */ React49.createElement("button", {
|
|
1896
1896
|
className: clsx11(`${name5}-btn`, isLoading ? "loading" : isPlaying ? "pause" : "play", theme),
|
|
1897
1897
|
disabled: isLoading,
|
|
1898
1898
|
onClick: player.togglePlay
|
|
1899
|
-
}, React49.createElement(Icon, {
|
|
1900
|
-
fallback: isLoading ? React49.createElement(Icons2.Loading, {
|
|
1899
|
+
}, /* @__PURE__ */ React49.createElement(Icon, {
|
|
1900
|
+
fallback: isLoading ? /* @__PURE__ */ React49.createElement(Icons2.Loading, {
|
|
1901
1901
|
theme
|
|
1902
|
-
}) : isPlaying ? React49.createElement(Icons2.Pause, {
|
|
1902
|
+
}) : isPlaying ? /* @__PURE__ */ React49.createElement(Icons2.Pause, {
|
|
1903
1903
|
theme
|
|
1904
|
-
}) : React49.createElement(Icons2.Play, {
|
|
1904
|
+
}) : /* @__PURE__ */ React49.createElement(Icons2.Play, {
|
|
1905
1905
|
theme
|
|
1906
1906
|
}),
|
|
1907
1907
|
src: isLoading ? icons.loadingIcon : isPlaying ? icons.pauseIcon : icons.playIcon,
|
|
1908
1908
|
alt: isLoading ? "[loading]" : isPlaying ? "[pause]" : "[play]"
|
|
1909
|
-
})), React49.createElement("span", {
|
|
1909
|
+
})), /* @__PURE__ */ React49.createElement("span", {
|
|
1910
1910
|
className: clsx11(`${name5}-slider`, { loading: isLoading }, theme)
|
|
1911
|
-
}, React49.createElement(RcSlider2, {
|
|
1911
|
+
}, /* @__PURE__ */ React49.createElement(RcSlider2, {
|
|
1912
1912
|
disabled: isLoading,
|
|
1913
1913
|
trackStyle: { background: activeColor },
|
|
1914
1914
|
handleStyle: { border: `1px solid ${activeColor}` },
|
|
@@ -1917,15 +1917,15 @@ function PlayerControl(_a) {
|
|
|
1917
1917
|
min: 0,
|
|
1918
1918
|
max: player.totalTime,
|
|
1919
1919
|
step: 100
|
|
1920
|
-
})), React49.createElement("span", {
|
|
1920
|
+
})), /* @__PURE__ */ React49.createElement("span", {
|
|
1921
1921
|
className: clsx11(`${name5}-current`, theme)
|
|
1922
|
-
}, renderTime(player.currentTime)), React49.createElement("span", {
|
|
1922
|
+
}, renderTime(player.currentTime)), /* @__PURE__ */ React49.createElement("span", {
|
|
1923
1923
|
className: clsx11(`${name5}-slash`, theme)
|
|
1924
|
-
}, "/"), React49.createElement("span", {
|
|
1924
|
+
}, "/"), /* @__PURE__ */ React49.createElement("span", {
|
|
1925
1925
|
className: clsx11(`${name5}-total`, theme)
|
|
1926
|
-
}, renderTime(player.totalTime)), React49.createElement("span", {
|
|
1926
|
+
}, renderTime(player.totalTime)), /* @__PURE__ */ React49.createElement("span", {
|
|
1927
1927
|
className: `${name5}-btn-interactive`
|
|
1928
|
-
}, React49.createElement(Tippy10, {
|
|
1928
|
+
}, /* @__PURE__ */ React49.createElement(Tippy10, {
|
|
1929
1929
|
className: "fastboard-tip",
|
|
1930
1930
|
content: renderSpeeds(player),
|
|
1931
1931
|
theme,
|
|
@@ -1934,11 +1934,11 @@ function PlayerControl(_a) {
|
|
|
1934
1934
|
offset: TopOffset,
|
|
1935
1935
|
arrow: false,
|
|
1936
1936
|
interactive: true
|
|
1937
|
-
}, React49.createElement(Button2, {
|
|
1937
|
+
}, /* @__PURE__ */ React49.createElement(Button2, {
|
|
1938
1938
|
content: t("speed"),
|
|
1939
1939
|
theme,
|
|
1940
1940
|
disabled: isLoading
|
|
1941
|
-
}, React49.createElement("span", {
|
|
1941
|
+
}, /* @__PURE__ */ React49.createElement("span", {
|
|
1942
1942
|
className: clsx11(`${name5}-speed-text`, theme)
|
|
1943
1943
|
}, player.speed, "x")))));
|
|
1944
1944
|
}
|
|
@@ -1950,9 +1950,9 @@ function renderTime(ms) {
|
|
|
1950
1950
|
}
|
|
1951
1951
|
var Speeds = [2, 1.5, 1.25, 1, 0.75, 0.5];
|
|
1952
1952
|
function renderSpeeds({ speed: current, setSpeed }) {
|
|
1953
|
-
return React49.createElement("div", {
|
|
1953
|
+
return /* @__PURE__ */ React49.createElement("div", {
|
|
1954
1954
|
className: clsx11(`${name5}-panel`, "speed")
|
|
1955
|
-
}, Speeds.map((speed) => React49.createElement("button", {
|
|
1955
|
+
}, Speeds.map((speed) => /* @__PURE__ */ React49.createElement("button", {
|
|
1956
1956
|
className: clsx11(`${name5}-btn`, "speed", {
|
|
1957
1957
|
active: speed === current
|
|
1958
1958
|
}),
|
|
@@ -1963,17 +1963,17 @@ function renderSpeeds({ speed: current, setSpeed }) {
|
|
|
1963
1963
|
|
|
1964
1964
|
// src/components/Fastboard.tsx
|
|
1965
1965
|
import React50, { forwardRef as forwardRef3, useCallback as useCallback13, useEffect as useEffect8 } from "react";
|
|
1966
|
-
var Fastboard = forwardRef3(function Fastboard2(_a, ref) {
|
|
1966
|
+
var Fastboard = /* @__PURE__ */ forwardRef3(function Fastboard2(_a, ref) {
|
|
1967
1967
|
var _b = _a, { app, theme, layout, language } = _b, restProps = __objRest(_b, ["app", "theme", "layout", "language"]);
|
|
1968
1968
|
if (!app) {
|
|
1969
|
-
return React50.createElement("div", __spreadValues({
|
|
1969
|
+
return /* @__PURE__ */ React50.createElement("div", __spreadValues({
|
|
1970
1970
|
className: "fastboard-root",
|
|
1971
1971
|
ref
|
|
1972
1972
|
}, restProps));
|
|
1973
1973
|
}
|
|
1974
|
-
return React50.createElement(FastboardAppContext.Provider, {
|
|
1974
|
+
return /* @__PURE__ */ React50.createElement(FastboardAppContext.Provider, {
|
|
1975
1975
|
value: app
|
|
1976
|
-
}, React50.createElement(FastboardInternal, __spreadValues(__spreadValues({
|
|
1976
|
+
}, /* @__PURE__ */ React50.createElement(FastboardInternal, __spreadValues(__spreadValues({
|
|
1977
1977
|
forwardedRef: ref
|
|
1978
1978
|
}, { theme, layout, language }), restProps)));
|
|
1979
1979
|
});
|
|
@@ -2014,23 +2014,33 @@ function FastboardInternal(_a) {
|
|
|
2014
2014
|
ZoomControl: zoom_control = showControls,
|
|
2015
2015
|
PageControl: page_control = showControls
|
|
2016
2016
|
} = layout;
|
|
2017
|
-
return React50.createElement(ThemeContext.Provider, {
|
|
2017
|
+
return /* @__PURE__ */ React50.createElement(ThemeContext.Provider, {
|
|
2018
2018
|
value: theme
|
|
2019
|
-
}, React50.createElement(I18nContext.Provider, {
|
|
2019
|
+
}, /* @__PURE__ */ React50.createElement(I18nContext.Provider, {
|
|
2020
2020
|
value: i18n
|
|
2021
|
-
}, React50.createElement("div", __spreadProps(__spreadValues({}, restProps), {
|
|
2021
|
+
}, /* @__PURE__ */ React50.createElement("div", __spreadProps(__spreadValues({}, restProps), {
|
|
2022
2022
|
className: "fastboard-root",
|
|
2023
2023
|
ref: forwardedRef
|
|
2024
|
-
}), React50.createElement("div", {
|
|
2024
|
+
}), /* @__PURE__ */ React50.createElement("div", {
|
|
2025
2025
|
className: "fastboard-view",
|
|
2026
2026
|
ref: useWhiteboard
|
|
2027
|
-
}), children ? children : React50.createElement(React50.Fragment, null, toolbar && React50.createElement("div", {
|
|
2027
|
+
}), children ? children : /* @__PURE__ */ React50.createElement(React50.Fragment, null, toolbar && /* @__PURE__ */ React50.createElement("div", {
|
|
2028
2028
|
className: "fastboard-left"
|
|
2029
|
-
}, React50.createElement(Toolbar, null)), (redo_undo || zoom_control) && React50.createElement("div", {
|
|
2029
|
+
}, /* @__PURE__ */ React50.createElement(Toolbar, null)), (redo_undo || zoom_control) && /* @__PURE__ */ React50.createElement("div", {
|
|
2030
2030
|
className: "fastboard-bottom-left"
|
|
2031
|
-
}, redo_undo && React50.createElement(RedoUndo, null), zoom_control && React50.createElement(ZoomControl, null)), page_control && React50.createElement("div", {
|
|
2031
|
+
}, redo_undo && /* @__PURE__ */ React50.createElement(RedoUndo, null), zoom_control && /* @__PURE__ */ React50.createElement(ZoomControl, null)), page_control && /* @__PURE__ */ React50.createElement("div", {
|
|
2032
2032
|
className: "fastboard-bottom-right"
|
|
2033
|
-
}, React50.createElement(PageControl, null))))));
|
|
2033
|
+
}, /* @__PURE__ */ React50.createElement(PageControl, null))))));
|
|
2034
|
+
}
|
|
2035
|
+
|
|
2036
|
+
// src/vanilla/index.tsx
|
|
2037
|
+
import React51 from "react";
|
|
2038
|
+
import ReactDOM2 from "react-dom";
|
|
2039
|
+
function mount(app, dom, props) {
|
|
2040
|
+
ReactDOM2.render(/* @__PURE__ */ React51.createElement(Fastboard, __spreadValues({
|
|
2041
|
+
app
|
|
2042
|
+
}, props)), dom);
|
|
2043
|
+
return () => ReactDOM2.unmountComponentAtNode(dom);
|
|
2034
2044
|
}
|
|
2035
2045
|
export {
|
|
2036
2046
|
EmptyToolbarHook,
|
|
@@ -2043,6 +2053,7 @@ export {
|
|
|
2043
2053
|
ThemeContext,
|
|
2044
2054
|
Toolbar,
|
|
2045
2055
|
ZoomControl,
|
|
2056
|
+
mount,
|
|
2046
2057
|
useBoxState,
|
|
2047
2058
|
useFastboardApp,
|
|
2048
2059
|
useFastboardValue,
|