@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 CHANGED
@@ -68,6 +68,7 @@ __export(src_exports, {
68
68
  ThemeContext: () => ThemeContext,
69
69
  Toolbar: () => Toolbar,
70
70
  ZoomControl: () => ZoomControl,
71
+ mount: () => mount,
71
72
  useBoxState: () => useBoxState,
72
73
  useFastboardApp: () => useFastboardApp,
73
74
  useFastboardValue: () => useFastboardValue,
@@ -84,10 +85,6 @@ __export(src_exports, {
84
85
  useZoomControl: () => useZoomControl
85
86
  });
86
87
 
87
- // ../../node_modules/.pnpm/tsup@5.11.11_typescript@4.5.4/node_modules/tsup/assets/cjs_shims.js
88
- var getImportMetaUrl = () => typeof document === "undefined" ? new URL("file:" + __filename).href : document.currentScript && document.currentScript.src || new URL("main.js", document.baseURI).href;
89
- var importMetaUrl = getImportMetaUrl();
90
-
91
88
  // src/internal/helpers.ts
92
89
  function noop() {
93
90
  return;
@@ -139,7 +136,7 @@ function useForceUpdate() {
139
136
  }
140
137
 
141
138
  // src/style.scss?inline
142
- 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';
139
+ var style_default = '.netless-window-manager-playground{width:100%;height:100%;position:relative;z-index:1;overflow:hidden;user-select:none}.netless-window-manager-sizer{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;overflow:hidden;display:flex}.netless-window-manager-sizer-horizontal{flex-direction:column}.netless-window-manager-sizer:before,.netless-window-manager-sizer:after{flex:1;content:"";display:block}.netless-window-manager-chess-sizer:before,.netless-window-manager-chess-sizer:after{background-image:linear-gradient(45deg,#b0b0b0 25%,transparent 25%),linear-gradient(-45deg,#b0b0b0 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#b0b0b0 75%),linear-gradient(-45deg,transparent 75%,#b0b0b0 75%);background-color:#fff;background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px}.netless-window-manager-wrapper{position:relative;z-index:1;width:100%;height:100%;overflow:hidden}.netless-window-manager-main-view{width:100%;height:100%}.netless-window-manager-cursor-pencil-image,.netless-window-manager-cursor-eraser-image{width:26px;height:26px}.netless-window-manager-cursor-selector-image{width:24px;height:24px}.netless-window-manager-cursor-selector-avatar{border-radius:50%;border-style:solid;border-width:2px;border-color:#fff;margin-bottom:2px}.netless-window-manager-cursor-selector-avatar img{width:12px}.netless-window-manager-cursor-inner{border-radius:4px;display:flex;align-items:center;justify-content:center;flex-direction:row;padding-left:4px;padding-right:4px;font-size:12px}.netless-window-manager-cursor-inner-mellow{height:32px;border-radius:16px;display:flex;align-items:center;justify-content:center;flex-direction:row;padding-left:16px;padding-right:16px}.netless-window-manager-cursor-tag-name{font-size:12px;margin-left:4px;padding:2px 8px;border-radius:4px}.netless-window-manager-cursor-mid{display:flex;flex-direction:column;align-items:center;justify-content:center;position:absolute;width:26px;height:26px;z-index:2147483647;left:0;top:0;will-change:transform;transition:transform .1s;transform-origin:0 0;user-select:none}.netless-window-manager-cursor-pencil-offset{margin-left:-20px}.netless-window-manager-cursor-selector-offset{margin-left:-22px;margin-top:56px}.netless-window-manager-cursor-text-offset{margin-left:-30px;margin-top:18px}.netless-window-manager-cursor-shape-offset{display:flex;flex-direction:column;align-items:center;justify-content:center;position:absolute;width:180px;height:64px;margin-left:-30px;margin-top:12px}.netless-window-manager-cursor-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';
143
140
 
144
141
  // src/behaviors/style.ts
145
142
  applyStyles(style_default);
@@ -147,8 +144,8 @@ applyStyles(style_default);
147
144
  // src/components/hooks.ts
148
145
  var import_window_manager = require("@netless/window-manager");
149
146
  var import_react2 = require("react");
150
- var FastboardAppContext = (0, import_react2.createContext)(null);
151
- var ThemeContext = (0, import_react2.createContext)("light");
147
+ var FastboardAppContext = /* @__PURE__ */ (0, import_react2.createContext)(null);
148
+ var ThemeContext = /* @__PURE__ */ (0, import_react2.createContext)("light");
152
149
  function useTheme(userTheme) {
153
150
  const themeFromContext = (0, import_react2.useContext)(ThemeContext);
154
151
  return userTheme || themeFromContext;
@@ -293,7 +290,7 @@ var createI18n = async ({
293
290
  });
294
291
  return import_i18next.default;
295
292
  };
296
- var I18nContext = (0, import_react4.createContext)(null);
293
+ var I18nContext = /* @__PURE__ */ (0, import_react4.createContext)(null);
297
294
  function useTranslation() {
298
295
  const i18n = (0, import_react4.useContext)(I18nContext);
299
296
  const t = (0, import_react4.useMemo)(() => i18n ? i18n.getFixedT(null, ["translation"]) : (id) => id, [i18n]);
@@ -303,7 +300,7 @@ function useTranslation() {
303
300
  // src/icons/index.tsx
304
301
  var import_react5 = __toESM(require("react"));
305
302
  function Icon({ fallback, src, alt = "[icon]" }) {
306
- return src ? import_react5.default.createElement("img", {
303
+ return src ? /* @__PURE__ */ import_react5.default.createElement("img", {
307
304
  src,
308
305
  alt,
309
306
  title: alt
@@ -341,17 +338,17 @@ var RightOffset = [0, 11];
341
338
  function Redo({ theme = "light", active }) {
342
339
  const config = themes[theme];
343
340
  const stroke = active ? config.activeColor : config.color;
344
- return import_react6.default.createElement("svg", {
341
+ return /* @__PURE__ */ import_react6.default.createElement("svg", {
345
342
  viewBox: "0 0 24 24"
346
- }, import_react6.default.createElement("g", {
343
+ }, /* @__PURE__ */ import_react6.default.createElement("g", {
347
344
  fill: "none",
348
345
  fillRule: "evenodd",
349
346
  stroke,
350
347
  strokeLinecap: "round",
351
348
  strokeLinejoin: "round"
352
- }, import_react6.default.createElement("path", {
349
+ }, /* @__PURE__ */ import_react6.default.createElement("path", {
353
350
  d: "M14 14h4v-4"
354
- }), import_react6.default.createElement("path", {
351
+ }), /* @__PURE__ */ import_react6.default.createElement("path", {
355
352
  d: "m18 14-.788-.9A7.005 7.005 0 0 0 6 14h0"
356
353
  })));
357
354
  }
@@ -361,17 +358,17 @@ var import_react7 = __toESM(require("react"));
361
358
  function Undo({ theme = "light", active }) {
362
359
  const config = themes[theme];
363
360
  const stroke = active ? config.activeColor : config.color;
364
- return import_react7.default.createElement("svg", {
361
+ return /* @__PURE__ */ import_react7.default.createElement("svg", {
365
362
  viewBox: "0 0 24 24"
366
- }, import_react7.default.createElement("g", {
363
+ }, /* @__PURE__ */ import_react7.default.createElement("g", {
367
364
  fill: "none",
368
365
  fillRule: "evenodd",
369
366
  stroke,
370
367
  strokeLinecap: "round",
371
368
  strokeLinejoin: "round"
372
- }, import_react7.default.createElement("path", {
369
+ }, /* @__PURE__ */ import_react7.default.createElement("path", {
373
370
  d: "M10 14H6v-4"
374
- }), import_react7.default.createElement("path", {
371
+ }), /* @__PURE__ */ import_react7.default.createElement("path", {
375
372
  d: "m6 14 .788-.9A7.005 7.005 0 0 1 18 14h0"
376
373
  })));
377
374
  }
@@ -384,9 +381,9 @@ function RedoUndo({ theme, undoIcon, undoIconDisable, redoIcon, redoIconDisable
384
381
  const writable = useWritable();
385
382
  const { redoSteps, undoSteps, redo, undo } = useRedoUndo();
386
383
  const disabled = !writable;
387
- return import_react9.default.createElement("div", {
384
+ return /* @__PURE__ */ import_react9.default.createElement("div", {
388
385
  className: (0, import_clsx.default)(name, theme)
389
- }, import_react9.default.createElement(import_react8.default, {
386
+ }, /* @__PURE__ */ import_react9.default.createElement(import_react8.default, {
390
387
  className: "fastboard-tip",
391
388
  content: t("undo"),
392
389
  theme,
@@ -395,17 +392,17 @@ function RedoUndo({ theme, undoIcon, undoIconDisable, redoIcon, redoIconDisable
395
392
  delay: [1e3, 400],
396
393
  duration: 300,
397
394
  offset: TopOffset
398
- }, import_react9.default.createElement("button", {
395
+ }, /* @__PURE__ */ import_react9.default.createElement("button", {
399
396
  className: (0, import_clsx.default)(`${name}-btn`, "undo", theme),
400
397
  disabled: disabled || undoSteps === 0,
401
398
  onClick: undo
402
- }, import_react9.default.createElement(Icon, {
403
- fallback: import_react9.default.createElement(Undo, {
399
+ }, /* @__PURE__ */ import_react9.default.createElement(Icon, {
400
+ fallback: /* @__PURE__ */ import_react9.default.createElement(Undo, {
404
401
  theme
405
402
  }),
406
403
  src: undoSteps === 0 ? undoIconDisable : undoIcon,
407
404
  alt: "[undo]"
408
- }))), import_react9.default.createElement(import_react8.default, {
405
+ }))), /* @__PURE__ */ import_react9.default.createElement(import_react8.default, {
409
406
  className: "fastboard-tip",
410
407
  content: t("redo"),
411
408
  theme,
@@ -414,12 +411,12 @@ function RedoUndo({ theme, undoIcon, undoIconDisable, redoIcon, redoIconDisable
414
411
  delay: [1e3, 400],
415
412
  duration: 300,
416
413
  offset: TopOffset
417
- }, import_react9.default.createElement("button", {
414
+ }, /* @__PURE__ */ import_react9.default.createElement("button", {
418
415
  className: (0, import_clsx.default)(`${name}-btn`, "redo", theme),
419
416
  disabled: disabled || redoSteps === 0,
420
417
  onClick: redo
421
- }, import_react9.default.createElement(Icon, {
422
- fallback: import_react9.default.createElement(Redo, {
418
+ }, /* @__PURE__ */ import_react9.default.createElement(Icon, {
419
+ fallback: /* @__PURE__ */ import_react9.default.createElement(Redo, {
423
420
  theme
424
421
  }),
425
422
  src: redoSteps === 0 ? redoIconDisable : redoIcon,
@@ -501,9 +498,9 @@ var import_react11 = __toESM(require("react"));
501
498
  function Minus({ theme = "light", active }) {
502
499
  const config = themes[theme];
503
500
  const stroke = active ? config.activeColor : config.color;
504
- return import_react11.default.createElement("svg", {
501
+ return /* @__PURE__ */ import_react11.default.createElement("svg", {
505
502
  viewBox: "0 0 24 24"
506
- }, import_react11.default.createElement("path", {
503
+ }, /* @__PURE__ */ import_react11.default.createElement("path", {
507
504
  fill: "none",
508
505
  stroke,
509
506
  strokeLinecap: "round",
@@ -517,9 +514,9 @@ var import_react12 = __toESM(require("react"));
517
514
  function Plus({ theme = "light", active }) {
518
515
  const config = themes[theme];
519
516
  const stroke = active ? config.activeColor : config.color;
520
- return import_react12.default.createElement("svg", {
517
+ return /* @__PURE__ */ import_react12.default.createElement("svg", {
521
518
  viewBox: "0 0 24 24"
522
- }, import_react12.default.createElement("path", {
519
+ }, /* @__PURE__ */ import_react12.default.createElement("path", {
523
520
  fill: "none",
524
521
  stroke,
525
522
  strokeLinecap: "round",
@@ -533,22 +530,22 @@ var import_react13 = __toESM(require("react"));
533
530
  function Reset({ theme = "light", active }) {
534
531
  const config = themes[theme];
535
532
  const stroke = active ? config.activeColor : config.color;
536
- return import_react13.default.createElement("svg", {
533
+ return /* @__PURE__ */ import_react13.default.createElement("svg", {
537
534
  viewBox: "0 0 24 24"
538
- }, import_react13.default.createElement("g", {
535
+ }, /* @__PURE__ */ import_react13.default.createElement("g", {
539
536
  fill: "none",
540
537
  fillRule: "evenodd",
541
538
  transform: "translate(-176 -684)"
542
- }, import_react13.default.createElement("path", {
539
+ }, /* @__PURE__ */ import_react13.default.createElement("path", {
543
540
  stroke,
544
541
  strokeLinejoin: "round",
545
542
  d: "M188 688v4m0 8v4m8-8h-4m-8 0h-4"
546
- }), import_react13.default.createElement("circle", {
543
+ }), /* @__PURE__ */ import_react13.default.createElement("circle", {
547
544
  cx: "188",
548
545
  cy: "696",
549
546
  r: "6",
550
547
  stroke
551
- }), import_react13.default.createElement("circle", {
548
+ }), /* @__PURE__ */ import_react13.default.createElement("circle", {
552
549
  cx: "188",
553
550
  cy: "696",
554
551
  r: "1",
@@ -572,9 +569,9 @@ function ZoomControl({
572
569
  const writable = useWritable();
573
570
  const { scale, resetCamera, zoomIn, zoomOut } = useZoomControl();
574
571
  const disabled = !writable;
575
- return import_react15.default.createElement("div", {
572
+ return /* @__PURE__ */ import_react15.default.createElement("div", {
576
573
  className: (0, import_clsx2.default)(name2, theme)
577
- }, import_react15.default.createElement(import_react14.default, {
574
+ }, /* @__PURE__ */ import_react15.default.createElement(import_react14.default, {
578
575
  className: "fastboard-tip",
579
576
  content: t("zoomOut"),
580
577
  theme,
@@ -583,21 +580,21 @@ function ZoomControl({
583
580
  delay: [1e3, 400],
584
581
  duration: 300,
585
582
  offset: TopOffset
586
- }, import_react15.default.createElement("button", {
583
+ }, /* @__PURE__ */ import_react15.default.createElement("button", {
587
584
  className: (0, import_clsx2.default)(`${name2}-btn`, "minus", theme),
588
585
  disabled,
589
586
  onClick: zoomOut
590
- }, import_react15.default.createElement(Icon, {
591
- fallback: import_react15.default.createElement(Minus, {
587
+ }, /* @__PURE__ */ import_react15.default.createElement(Icon, {
588
+ fallback: /* @__PURE__ */ import_react15.default.createElement(Minus, {
592
589
  theme
593
590
  }),
594
591
  src: disabled ? minusIconDisable : minusIcon,
595
592
  alt: "[minus]"
596
- }))), import_react15.default.createElement("span", {
593
+ }))), /* @__PURE__ */ import_react15.default.createElement("span", {
597
594
  className: (0, import_clsx2.default)(`${name2}-scale`, theme)
598
- }, Math.ceil(scale * 100)), import_react15.default.createElement("span", {
595
+ }, Math.ceil(scale * 100)), /* @__PURE__ */ import_react15.default.createElement("span", {
599
596
  className: (0, import_clsx2.default)(`${name2}-percent`, theme)
600
- }, "%"), import_react15.default.createElement(import_react14.default, {
597
+ }, "%"), /* @__PURE__ */ import_react15.default.createElement(import_react14.default, {
601
598
  className: "fastboard-tip",
602
599
  content: t("zoomIn"),
603
600
  theme,
@@ -606,17 +603,17 @@ function ZoomControl({
606
603
  delay: [1e3, 400],
607
604
  duration: 300,
608
605
  offset: TopOffset
609
- }, import_react15.default.createElement("button", {
606
+ }, /* @__PURE__ */ import_react15.default.createElement("button", {
610
607
  className: (0, import_clsx2.default)(`${name2}-btn`, "plus", theme),
611
608
  disabled,
612
609
  onClick: zoomIn
613
- }, import_react15.default.createElement(Icon, {
614
- fallback: import_react15.default.createElement(Plus, {
610
+ }, /* @__PURE__ */ import_react15.default.createElement(Icon, {
611
+ fallback: /* @__PURE__ */ import_react15.default.createElement(Plus, {
615
612
  theme
616
613
  }),
617
614
  src: disabled ? plusIconDisable : plusIcon,
618
615
  alt: "[plus]"
619
- }))), import_react15.default.createElement(import_react14.default, {
616
+ }))), /* @__PURE__ */ import_react15.default.createElement(import_react14.default, {
620
617
  className: "fastboard-tip",
621
618
  content: t("reset"),
622
619
  theme,
@@ -625,12 +622,12 @@ function ZoomControl({
625
622
  delay: [1e3, 400],
626
623
  duration: 300,
627
624
  offset: TopOffset
628
- }, import_react15.default.createElement("button", {
625
+ }, /* @__PURE__ */ import_react15.default.createElement("button", {
629
626
  className: (0, import_clsx2.default)(`${name2}-btn`, "reset", theme),
630
627
  disabled,
631
628
  onClick: resetCamera
632
- }, import_react15.default.createElement(Icon, {
633
- fallback: import_react15.default.createElement(Reset, {
629
+ }, /* @__PURE__ */ import_react15.default.createElement(Icon, {
630
+ fallback: /* @__PURE__ */ import_react15.default.createElement(Reset, {
634
631
  theme
635
632
  }),
636
633
  src: disabled ? resetIconDisable : resetIcon,
@@ -668,9 +665,9 @@ var import_react17 = __toESM(require("react"));
668
665
  function ChevronLeft({ theme = "light", active }) {
669
666
  const config = themes[theme];
670
667
  const stroke = active ? config.activeColor : config.color;
671
- return import_react17.default.createElement("svg", {
668
+ return /* @__PURE__ */ import_react17.default.createElement("svg", {
672
669
  viewBox: "0 0 24 24"
673
- }, import_react17.default.createElement("path", {
670
+ }, /* @__PURE__ */ import_react17.default.createElement("path", {
674
671
  fill: "none",
675
672
  stroke,
676
673
  strokeLinecap: "round",
@@ -684,9 +681,9 @@ var import_react18 = __toESM(require("react"));
684
681
  function ChevronRight({ theme = "light", active }) {
685
682
  const config = themes[theme];
686
683
  const stroke = active ? config.activeColor : config.color;
687
- return import_react18.default.createElement("svg", {
684
+ return /* @__PURE__ */ import_react18.default.createElement("svg", {
688
685
  viewBox: "0 0 24 24"
689
- }, import_react18.default.createElement("path", {
686
+ }, /* @__PURE__ */ import_react18.default.createElement("path", {
690
687
  fill: "none",
691
688
  stroke,
692
689
  strokeLinecap: "round",
@@ -700,9 +697,9 @@ var import_react19 = __toESM(require("react"));
700
697
  function FilePlus({ theme = "light", active }) {
701
698
  const config = themes[theme];
702
699
  const stroke = active ? config.activeColor : config.color;
703
- return import_react19.default.createElement("svg", {
700
+ return /* @__PURE__ */ import_react19.default.createElement("svg", {
704
701
  viewBox: "0 0 24 24"
705
- }, import_react19.default.createElement("path", {
702
+ }, /* @__PURE__ */ import_react19.default.createElement("path", {
706
703
  fill: stroke,
707
704
  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"
708
705
  }));
@@ -724,9 +721,9 @@ function PageControl({
724
721
  const writable = useWritable();
725
722
  const _a = usePageControl(), { pageIndex, pageCount } = _a, actions = __objRest(_a, ["pageIndex", "pageCount"]);
726
723
  const disabled = !writable;
727
- return import_react21.default.createElement("div", {
724
+ return /* @__PURE__ */ import_react21.default.createElement("div", {
728
725
  className: (0, import_clsx3.default)(name3, theme)
729
- }, import_react21.default.createElement(import_react20.default, {
726
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react20.default, {
730
727
  className: "fastboard-tip",
731
728
  content: t("prevPage"),
732
729
  theme,
@@ -735,23 +732,23 @@ function PageControl({
735
732
  delay: [1e3, 400],
736
733
  duration: 300,
737
734
  offset: TopOffset
738
- }, import_react21.default.createElement("button", {
735
+ }, /* @__PURE__ */ import_react21.default.createElement("button", {
739
736
  className: (0, import_clsx3.default)(`${name3}-btn`, "prev", theme),
740
737
  disabled: disabled || pageIndex === 0,
741
738
  onClick: actions.prevPage
742
- }, import_react21.default.createElement(Icon, {
743
- fallback: import_react21.default.createElement(ChevronLeft, {
739
+ }, /* @__PURE__ */ import_react21.default.createElement(Icon, {
740
+ fallback: /* @__PURE__ */ import_react21.default.createElement(ChevronLeft, {
744
741
  theme
745
742
  }),
746
743
  src: disabled ? prevIconDisable : prevIcon,
747
744
  alt: "[prev]"
748
- }))), import_react21.default.createElement("span", {
745
+ }))), /* @__PURE__ */ import_react21.default.createElement("span", {
749
746
  className: (0, import_clsx3.default)(`${name3}-page`, theme)
750
- }, pageCount === 0 ? "\u2026" : pageIndex + 1), import_react21.default.createElement("span", {
747
+ }, pageCount === 0 ? "\u2026" : pageIndex + 1), /* @__PURE__ */ import_react21.default.createElement("span", {
751
748
  className: (0, import_clsx3.default)(`${name3}-slash`, theme)
752
- }, "/"), import_react21.default.createElement("span", {
749
+ }, "/"), /* @__PURE__ */ import_react21.default.createElement("span", {
753
750
  className: (0, import_clsx3.default)(`${name3}-page-count`, theme)
754
- }, pageCount), import_react21.default.createElement(import_react20.default, {
751
+ }, pageCount), /* @__PURE__ */ import_react21.default.createElement(import_react20.default, {
755
752
  className: "fastboard-tip",
756
753
  content: t("nextPage"),
757
754
  theme,
@@ -760,17 +757,17 @@ function PageControl({
760
757
  delay: [1e3, 400],
761
758
  duration: 300,
762
759
  offset: TopOffset
763
- }, import_react21.default.createElement("button", {
760
+ }, /* @__PURE__ */ import_react21.default.createElement("button", {
764
761
  className: (0, import_clsx3.default)(`${name3}-btn`, "next", theme),
765
762
  disabled: disabled || pageIndex === pageCount - 1,
766
763
  onClick: actions.nextPage
767
- }, import_react21.default.createElement(Icon, {
768
- fallback: import_react21.default.createElement(ChevronRight, {
764
+ }, /* @__PURE__ */ import_react21.default.createElement(Icon, {
765
+ fallback: /* @__PURE__ */ import_react21.default.createElement(ChevronRight, {
769
766
  theme
770
767
  }),
771
768
  src: disabled ? nextIconDisable : nextIcon,
772
769
  alt: "[next]"
773
- }))), import_react21.default.createElement(import_react20.default, {
770
+ }))), /* @__PURE__ */ import_react21.default.createElement(import_react20.default, {
774
771
  className: "fastboard-tip",
775
772
  content: t("addPage"),
776
773
  theme,
@@ -779,12 +776,12 @@ function PageControl({
779
776
  delay: [1e3, 400],
780
777
  duration: 300,
781
778
  offset: TopOffset
782
- }, import_react21.default.createElement("button", {
779
+ }, /* @__PURE__ */ import_react21.default.createElement("button", {
783
780
  className: (0, import_clsx3.default)(`${name3}-btn`, "add", theme),
784
781
  disabled,
785
782
  onClick: actions.addPage
786
- }, import_react21.default.createElement(Icon, {
787
- fallback: import_react21.default.createElement(FilePlus, {
783
+ }, /* @__PURE__ */ import_react21.default.createElement(Icon, {
784
+ fallback: /* @__PURE__ */ import_react21.default.createElement(FilePlus, {
788
785
  theme
789
786
  }),
790
787
  src: disabled ? addIconDisable : addIcon,
@@ -892,13 +889,13 @@ var import_react43 = require("react");
892
889
  var import_react24 = __toESM(require("react"));
893
890
  var Apps = (props) => {
894
891
  const stroke = getStroke(props);
895
- return import_react24.default.createElement("svg", {
892
+ return /* @__PURE__ */ import_react24.default.createElement("svg", {
896
893
  viewBox: "0 0 24 24"
897
- }, import_react24.default.createElement("g", {
894
+ }, /* @__PURE__ */ import_react24.default.createElement("g", {
898
895
  fill: stroke
899
- }, import_react24.default.createElement("path", {
896
+ }, /* @__PURE__ */ import_react24.default.createElement("path", {
900
897
  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"
901
- }), import_react24.default.createElement("path", {
898
+ }), /* @__PURE__ */ import_react24.default.createElement("path", {
902
899
  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"
903
900
  })));
904
901
  };
@@ -907,9 +904,9 @@ var Apps = (props) => {
907
904
  var import_react25 = __toESM(require("react"));
908
905
  var Arrow = (props) => {
909
906
  const stroke = getStroke(props);
910
- return import_react25.default.createElement("svg", {
907
+ return /* @__PURE__ */ import_react25.default.createElement("svg", {
911
908
  viewBox: "0 0 24 24"
912
- }, import_react25.default.createElement("path", {
909
+ }, /* @__PURE__ */ import_react25.default.createElement("path", {
913
910
  fill: stroke,
914
911
  d: "M19 5v6l-2.647-2.646L5.99 18.718l-.708-.708L15.645 7.646 13 5h6Z"
915
912
  }));
@@ -919,9 +916,9 @@ var Arrow = (props) => {
919
916
  var import_react26 = __toESM(require("react"));
920
917
  var Circle = (props) => {
921
918
  const stroke = getStroke(props);
922
- return import_react26.default.createElement("svg", {
919
+ return /* @__PURE__ */ import_react26.default.createElement("svg", {
923
920
  viewBox: "0 0 24 24"
924
- }, import_react26.default.createElement("rect", {
921
+ }, /* @__PURE__ */ import_react26.default.createElement("rect", {
925
922
  width: "15",
926
923
  height: "15",
927
924
  x: "4.5",
@@ -936,9 +933,9 @@ var Circle = (props) => {
936
933
  var import_react27 = __toESM(require("react"));
937
934
  var Clean = (props) => {
938
935
  const stroke = getStroke(props);
939
- return import_react27.default.createElement("svg", {
936
+ return /* @__PURE__ */ import_react27.default.createElement("svg", {
940
937
  viewBox: "0 0 24 24"
941
- }, import_react27.default.createElement("path", {
938
+ }, /* @__PURE__ */ import_react27.default.createElement("path", {
942
939
  fill: stroke,
943
940
  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"
944
941
  }));
@@ -948,13 +945,13 @@ var Clean = (props) => {
948
945
  var import_react28 = __toESM(require("react"));
949
946
  var Clicker = (props) => {
950
947
  const stroke = getStroke(props);
951
- return import_react28.default.createElement("svg", {
948
+ return /* @__PURE__ */ import_react28.default.createElement("svg", {
952
949
  viewBox: "0 0 24 24"
953
- }, import_react28.default.createElement("g", {
950
+ }, /* @__PURE__ */ import_react28.default.createElement("g", {
954
951
  fill: "none"
955
- }, import_react28.default.createElement("path", {
952
+ }, /* @__PURE__ */ import_react28.default.createElement("path", {
956
953
  d: "M0 0h24v24H0z"
957
- }), import_react28.default.createElement("path", {
954
+ }), /* @__PURE__ */ import_react28.default.createElement("path", {
958
955
  fill: stroke,
959
956
  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"
960
957
  })));
@@ -964,9 +961,9 @@ var Clicker = (props) => {
964
961
  var import_react29 = __toESM(require("react"));
965
962
  var Collapse = (props) => {
966
963
  const stroke = getStroke(props);
967
- return import_react29.default.createElement("svg", {
964
+ return /* @__PURE__ */ import_react29.default.createElement("svg", {
968
965
  viewBox: "0 0 24 24"
969
- }, import_react29.default.createElement("path", {
966
+ }, /* @__PURE__ */ import_react29.default.createElement("path", {
970
967
  fill: "none",
971
968
  stroke,
972
969
  d: "m8 10-2 2 2 2m10-8H6m12 12H6m12-4h-8m8-4h-8"
@@ -977,9 +974,9 @@ var Collapse = (props) => {
977
974
  var import_react30 = __toESM(require("react"));
978
975
  var Diamond = (props) => {
979
976
  const stroke = getStroke(props);
980
- return import_react30.default.createElement("svg", {
977
+ return /* @__PURE__ */ import_react30.default.createElement("svg", {
981
978
  viewBox: "0 0 24 24"
982
- }, import_react30.default.createElement("path", {
979
+ }, /* @__PURE__ */ import_react30.default.createElement("path", {
983
980
  fill: "none",
984
981
  stroke,
985
982
  d: "M4.222 12 12 4.222 19.778 12 12 19.778z"
@@ -990,9 +987,9 @@ var Diamond = (props) => {
990
987
  var import_react31 = __toESM(require("react"));
991
988
  var Down = (props) => {
992
989
  const stroke = getStroke(props);
993
- return import_react31.default.createElement("svg", {
990
+ return /* @__PURE__ */ import_react31.default.createElement("svg", {
994
991
  viewBox: "0 0 24 24"
995
- }, import_react31.default.createElement("path", {
992
+ }, /* @__PURE__ */ import_react31.default.createElement("path", {
996
993
  fill: "none",
997
994
  stroke,
998
995
  d: "m16 13-2 2-2 2-2-2-2-2m8-6-2 2-2 2-2-2-2-2"
@@ -1003,9 +1000,9 @@ var Down = (props) => {
1003
1000
  var import_react32 = __toESM(require("react"));
1004
1001
  var Eraser = (props) => {
1005
1002
  const stroke = getStroke(props);
1006
- return import_react32.default.createElement("svg", {
1003
+ return /* @__PURE__ */ import_react32.default.createElement("svg", {
1007
1004
  viewBox: "0 0 24 24"
1008
- }, import_react32.default.createElement("path", {
1005
+ }, /* @__PURE__ */ import_react32.default.createElement("path", {
1009
1006
  fill: stroke,
1010
1007
  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"
1011
1008
  }));
@@ -1015,9 +1012,9 @@ var Eraser = (props) => {
1015
1012
  var import_react33 = __toESM(require("react"));
1016
1013
  var Expand = (props) => {
1017
1014
  const stroke = getStroke(props);
1018
- return import_react33.default.createElement("svg", {
1015
+ return /* @__PURE__ */ import_react33.default.createElement("svg", {
1019
1016
  viewBox: "0 0 24 24"
1020
- }, import_react33.default.createElement("path", {
1017
+ }, /* @__PURE__ */ import_react33.default.createElement("path", {
1021
1018
  fill: "none",
1022
1019
  stroke,
1023
1020
  d: "m16 10 2 2-2 2M6 6h12M6 18h12M6 14h8m-8-4h8"
@@ -1028,9 +1025,9 @@ var Expand = (props) => {
1028
1025
  var import_react34 = __toESM(require("react"));
1029
1026
  var Line = (props) => {
1030
1027
  const stroke = getStroke(props);
1031
- return import_react34.default.createElement("svg", {
1028
+ return /* @__PURE__ */ import_react34.default.createElement("svg", {
1032
1029
  viewBox: "0 0 24 24"
1033
- }, import_react34.default.createElement("path", {
1030
+ }, /* @__PURE__ */ import_react34.default.createElement("path", {
1034
1031
  fill: stroke,
1035
1032
  d: "m18.01 5.282.708.708L5.99 18.718l-.708-.708z"
1036
1033
  }));
@@ -1040,9 +1037,9 @@ var Line = (props) => {
1040
1037
  var import_react35 = __toESM(require("react"));
1041
1038
  var Pencil = (props) => {
1042
1039
  const stroke = getStroke(props);
1043
- return import_react35.default.createElement("svg", {
1040
+ return /* @__PURE__ */ import_react35.default.createElement("svg", {
1044
1041
  viewBox: "0 0 24 24"
1045
- }, import_react35.default.createElement("path", {
1042
+ }, /* @__PURE__ */ import_react35.default.createElement("path", {
1046
1043
  fill: stroke,
1047
1044
  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"
1048
1045
  }));
@@ -1052,9 +1049,9 @@ var Pencil = (props) => {
1052
1049
  var import_react36 = __toESM(require("react"));
1053
1050
  var Rectangle = (props) => {
1054
1051
  const stroke = getStroke(props);
1055
- return import_react36.default.createElement("svg", {
1052
+ return /* @__PURE__ */ import_react36.default.createElement("svg", {
1056
1053
  viewBox: "0 0 24 24"
1057
- }, import_react36.default.createElement("path", {
1054
+ }, /* @__PURE__ */ import_react36.default.createElement("path", {
1058
1055
  fill: "none",
1059
1056
  stroke,
1060
1057
  d: "M5.5 5.5h13v13h-13z"
@@ -1065,9 +1062,9 @@ var Rectangle = (props) => {
1065
1062
  var import_react37 = __toESM(require("react"));
1066
1063
  var Selector = (props) => {
1067
1064
  const stroke = getStroke(props);
1068
- return import_react37.default.createElement("svg", {
1065
+ return /* @__PURE__ */ import_react37.default.createElement("svg", {
1069
1066
  viewBox: "0 0 24 24"
1070
- }, import_react37.default.createElement("path", {
1067
+ }, /* @__PURE__ */ import_react37.default.createElement("path", {
1071
1068
  fill: stroke,
1072
1069
  d: "m12 12 8 2.667-3.556 1.777L14.667 20 12 12Zm3-8v7.5h-1V5H5v9h6.5v1H4V4h11Z"
1073
1070
  }));
@@ -1077,9 +1074,9 @@ var Selector = (props) => {
1077
1074
  var import_react38 = __toESM(require("react"));
1078
1075
  var SpeechBalloon = (props) => {
1079
1076
  const stroke = getStroke(props);
1080
- return import_react38.default.createElement("svg", {
1077
+ return /* @__PURE__ */ import_react38.default.createElement("svg", {
1081
1078
  viewBox: "0 0 24 24"
1082
- }, import_react38.default.createElement("path", {
1079
+ }, /* @__PURE__ */ import_react38.default.createElement("path", {
1083
1080
  fill: "none",
1084
1081
  stroke,
1085
1082
  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"
@@ -1090,9 +1087,9 @@ var SpeechBalloon = (props) => {
1090
1087
  var import_react39 = __toESM(require("react"));
1091
1088
  var Star = (props) => {
1092
1089
  const stroke = getStroke(props);
1093
- return import_react39.default.createElement("svg", {
1090
+ return /* @__PURE__ */ import_react39.default.createElement("svg", {
1094
1091
  viewBox: "0 0 24 24"
1095
- }, import_react39.default.createElement("path", {
1092
+ }, /* @__PURE__ */ import_react39.default.createElement("path", {
1096
1093
  fill: "none",
1097
1094
  stroke,
1098
1095
  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"
@@ -1103,9 +1100,9 @@ var Star = (props) => {
1103
1100
  var import_react40 = __toESM(require("react"));
1104
1101
  var Text = (props) => {
1105
1102
  const stroke = getStroke(props);
1106
- return import_react40.default.createElement("svg", {
1103
+ return /* @__PURE__ */ import_react40.default.createElement("svg", {
1107
1104
  viewBox: "0 0 24 24"
1108
- }, import_react40.default.createElement("path", {
1105
+ }, /* @__PURE__ */ import_react40.default.createElement("path", {
1109
1106
  fill: stroke,
1110
1107
  d: "M18.5 5.5V8h-1V6.5H13v11h2v1H9v-1h2v-11H6.5V8h-1V5.5h13Z"
1111
1108
  }));
@@ -1115,9 +1112,9 @@ var Text = (props) => {
1115
1112
  var import_react41 = __toESM(require("react"));
1116
1113
  var Triangle = (props) => {
1117
1114
  const stroke = getStroke(props);
1118
- return import_react41.default.createElement("svg", {
1115
+ return /* @__PURE__ */ import_react41.default.createElement("svg", {
1119
1116
  viewBox: "0 0 24 24"
1120
- }, import_react41.default.createElement("path", {
1117
+ }, /* @__PURE__ */ import_react41.default.createElement("path", {
1121
1118
  fill: "none",
1122
1119
  stroke,
1123
1120
  d: "M12 6.008 19.138 18.5H4.862L12 6.008Z"
@@ -1128,9 +1125,9 @@ var Triangle = (props) => {
1128
1125
  var import_react42 = __toESM(require("react"));
1129
1126
  var Up = (props) => {
1130
1127
  const stroke = getStroke(props);
1131
- return import_react42.default.createElement("svg", {
1128
+ return /* @__PURE__ */ import_react42.default.createElement("svg", {
1132
1129
  viewBox: "0 0 24 24"
1133
- }, import_react42.default.createElement("path", {
1130
+ }, /* @__PURE__ */ import_react42.default.createElement("path", {
1134
1131
  fill: "none",
1135
1132
  stroke,
1136
1133
  d: "m16 11-2-2-2-2-2 2-2 2m8 6-2-2-2-2-2 2-2 2"
@@ -1167,7 +1164,7 @@ var import_react45 = __toESM(require("@tippyjs/react"));
1167
1164
  var Button = (0, import_react44.forwardRef)((props, ref) => {
1168
1165
  const { content, disabled, active, onClick, interactive, placement = "right", children } = props;
1169
1166
  const { writable, theme } = (0, import_react44.useContext)(ToolbarContext);
1170
- return import_react44.default.createElement(import_react45.default, {
1167
+ return /* @__PURE__ */ import_react44.default.createElement(import_react45.default, {
1171
1168
  className: "fastboard-tip",
1172
1169
  content,
1173
1170
  interactive,
@@ -1177,7 +1174,7 @@ var Button = (0, import_react44.forwardRef)((props, ref) => {
1177
1174
  offset: placement.includes("right") ? RightOffset : void 0,
1178
1175
  delay: [1e3, 400],
1179
1176
  duration: 300
1180
- }, import_react44.default.createElement("button", {
1177
+ }, /* @__PURE__ */ import_react44.default.createElement("button", {
1181
1178
  ref,
1182
1179
  className: (0, import_clsx4.default)("fastboard-toolbar-btn", theme, { active }),
1183
1180
  onClick,
@@ -1189,9 +1186,9 @@ var Button = (0, import_react44.forwardRef)((props, ref) => {
1189
1186
  function renderToolTip(text, hotkey) {
1190
1187
  if (!(typeof hotkey === "string"))
1191
1188
  return text;
1192
- return import_react46.default.createElement("span", {
1189
+ return /* @__PURE__ */ import_react46.default.createElement("span", {
1193
1190
  className: "fastboard-toolbar-tooltip"
1194
- }, import_react46.default.createElement("span", null, text), import_react46.default.createElement("span", {
1191
+ }, /* @__PURE__ */ import_react46.default.createElement("span", null, text), /* @__PURE__ */ import_react46.default.createElement("span", {
1195
1192
  className: "fastboard-toolbar-hotkey"
1196
1193
  }, hotkey.toUpperCase()));
1197
1194
  }
@@ -1205,12 +1202,12 @@ function ClickerButton() {
1205
1202
  const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
1206
1203
  const active = appliance === import_white_web_sdk.ApplianceNames.clicker;
1207
1204
  const disabled = !writable;
1208
- return import_react46.default.createElement(Button, {
1205
+ return /* @__PURE__ */ import_react46.default.createElement(Button, {
1209
1206
  content: renderToolTip(t("clicker"), shortcut),
1210
1207
  onClick: changeAppliance,
1211
1208
  active
1212
- }, import_react46.default.createElement(Icon, {
1213
- fallback: import_react46.default.createElement(Icons.Clicker, {
1209
+ }, /* @__PURE__ */ import_react46.default.createElement(Icon, {
1210
+ fallback: /* @__PURE__ */ import_react46.default.createElement(Icons.Clicker, {
1214
1211
  theme,
1215
1212
  active
1216
1213
  }),
@@ -1227,12 +1224,12 @@ function SelectorButton() {
1227
1224
  const active = appliance === import_white_web_sdk.ApplianceNames.selector;
1228
1225
  const disabled = !writable;
1229
1226
  const shortcut = (app.hotKeys || defaultHotKeys).changeToSelector;
1230
- return import_react46.default.createElement(Button, {
1227
+ return /* @__PURE__ */ import_react46.default.createElement(Button, {
1231
1228
  content: renderToolTip(t("selector"), shortcut),
1232
1229
  onClick: changeAppliance,
1233
1230
  active
1234
- }, import_react46.default.createElement(Icon, {
1235
- fallback: import_react46.default.createElement(Icons.Selector, {
1231
+ }, /* @__PURE__ */ import_react46.default.createElement(Icon, {
1232
+ fallback: /* @__PURE__ */ import_react46.default.createElement(Icons.Selector, {
1236
1233
  theme,
1237
1234
  active
1238
1235
  }),
@@ -1249,12 +1246,12 @@ function EraserButton() {
1249
1246
  const active = appliance === import_white_web_sdk.ApplianceNames.eraser;
1250
1247
  const disabled = !writable;
1251
1248
  const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToEraser;
1252
- return import_react46.default.createElement(Button, {
1249
+ return /* @__PURE__ */ import_react46.default.createElement(Button, {
1253
1250
  content: renderToolTip(t("eraser"), shortcut),
1254
1251
  onClick: changeAppliance,
1255
1252
  active
1256
- }, import_react46.default.createElement(Icon, {
1257
- fallback: import_react46.default.createElement(Icons.Eraser, {
1253
+ }, /* @__PURE__ */ import_react46.default.createElement(Icon, {
1254
+ fallback: /* @__PURE__ */ import_react46.default.createElement(Icons.Eraser, {
1258
1255
  theme,
1259
1256
  active
1260
1257
  }),
@@ -1266,11 +1263,11 @@ function CleanButton() {
1266
1263
  const { t } = useTranslation();
1267
1264
  const { theme, icons, writable, cleanCurrentScene } = (0, import_react46.useContext)(ToolbarContext);
1268
1265
  const disabled = !writable;
1269
- return import_react46.default.createElement(Button, {
1266
+ return /* @__PURE__ */ import_react46.default.createElement(Button, {
1270
1267
  content: t("clean"),
1271
1268
  onClick: cleanCurrentScene
1272
- }, import_react46.default.createElement(Icon, {
1273
- fallback: import_react46.default.createElement(Icons.Clean, {
1269
+ }, /* @__PURE__ */ import_react46.default.createElement(Icon, {
1270
+ fallback: /* @__PURE__ */ import_react46.default.createElement(Icons.Clean, {
1274
1271
  theme
1275
1272
  }),
1276
1273
  src: disabled ? icons == null ? void 0 : icons.cleanIconDisable : icons == null ? void 0 : icons.cleanIcon,
@@ -1295,19 +1292,19 @@ var countdown_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyC
1295
1292
  function AppsButton({ content, onClick }) {
1296
1293
  const { theme, icons, writable } = (0, import_react48.useContext)(ToolbarContext);
1297
1294
  const disabled = !writable;
1298
- const button = import_react48.default.createElement(Button, {
1295
+ const button = /* @__PURE__ */ import_react48.default.createElement(Button, {
1299
1296
  content: "Apps",
1300
1297
  onClick
1301
- }, import_react48.default.createElement(Icon, {
1302
- fallback: import_react48.default.createElement(Icons.Apps, {
1298
+ }, /* @__PURE__ */ import_react48.default.createElement(Icon, {
1299
+ fallback: /* @__PURE__ */ import_react48.default.createElement(Icons.Apps, {
1303
1300
  theme
1304
1301
  }),
1305
1302
  src: disabled ? icons == null ? void 0 : icons.appsIconDisable : icons == null ? void 0 : icons.appsIcon,
1306
1303
  alt: "[apps]"
1307
1304
  }));
1308
- return content === false ? button : import_react48.default.createElement("span", {
1305
+ return content === false ? button : /* @__PURE__ */ import_react48.default.createElement("span", {
1309
1306
  className: "fastboard-toolbar-btn-interactive"
1310
- }, import_react48.default.createElement(import_react47.default, {
1307
+ }, /* @__PURE__ */ import_react48.default.createElement(import_react47.default, {
1311
1308
  className: "fastboard-tip",
1312
1309
  content: renderAppsButtonContent(content),
1313
1310
  theme,
@@ -1319,25 +1316,25 @@ function AppsButton({ content, onClick }) {
1319
1316
  }, button));
1320
1317
  }
1321
1318
  function renderAppsButtonContent(content) {
1322
- return import_react48.default.createElement("div", {
1319
+ return /* @__PURE__ */ import_react48.default.createElement("div", {
1323
1320
  className: "fastboard-toolbar-panel apps"
1324
- }, import_react48.default.createElement("div", {
1321
+ }, /* @__PURE__ */ import_react48.default.createElement("div", {
1325
1322
  className: "fastboard-toolbar-apps"
1326
- }, content || import_react48.default.createElement(DefaultApps, null)));
1323
+ }, content || /* @__PURE__ */ import_react48.default.createElement(DefaultApps, null)));
1327
1324
  }
1328
1325
  function DefaultApps() {
1329
1326
  const app = useFastboardApp();
1330
- return import_react48.default.createElement(import_react48.default.Fragment, null, import_react48.default.createElement(AppIcon, {
1327
+ return /* @__PURE__ */ import_react48.default.createElement(import_react48.default.Fragment, null, /* @__PURE__ */ import_react48.default.createElement(AppIcon, {
1331
1328
  title: "Code Editor",
1332
1329
  src: vscode_default,
1333
1330
  alt: "[code editor]",
1334
1331
  onClick: app == null ? void 0 : app.insertCodeEditor.bind(app)
1335
- }), import_react48.default.createElement(AppIcon, {
1332
+ }), /* @__PURE__ */ import_react48.default.createElement(AppIcon, {
1336
1333
  title: "GeoGebra",
1337
1334
  src: geogebra_default,
1338
1335
  alt: "[geogebra]",
1339
1336
  onClick: app == null ? void 0 : app.insertGeoGebra.bind(app)
1340
- }), import_react48.default.createElement(AppIcon, {
1337
+ }), /* @__PURE__ */ import_react48.default.createElement(AppIcon, {
1341
1338
  title: "Countdown",
1342
1339
  src: countdown_default,
1343
1340
  alt: "[countdown]",
@@ -1345,17 +1342,17 @@ function DefaultApps() {
1345
1342
  }));
1346
1343
  }
1347
1344
  function AppIcon({ title, src, alt, onClick }) {
1348
- return import_react48.default.createElement("span", {
1345
+ return /* @__PURE__ */ import_react48.default.createElement("span", {
1349
1346
  className: "fastboard-toolbar-app-icon"
1350
- }, import_react48.default.createElement(Button, {
1347
+ }, /* @__PURE__ */ import_react48.default.createElement(Button, {
1351
1348
  placement: "top",
1352
1349
  content: title,
1353
1350
  onClick
1354
- }, import_react48.default.createElement("img", {
1351
+ }, /* @__PURE__ */ import_react48.default.createElement("img", {
1355
1352
  src,
1356
1353
  alt,
1357
1354
  title
1358
- })), import_react48.default.createElement("span", {
1355
+ })), /* @__PURE__ */ import_react48.default.createElement("span", {
1359
1356
  className: "fastboard-toolbar-app-icon-text"
1360
1357
  }, title));
1361
1358
  }
@@ -1383,17 +1380,17 @@ function ColorBox() {
1383
1380
  const { theme, memberState, setStrokeColor, writable } = (0, import_react49.useContext)(ToolbarContext);
1384
1381
  const strokeColor = memberState == null ? void 0 : memberState.strokeColor;
1385
1382
  const disabled = !writable;
1386
- return import_react49.default.createElement("div", {
1383
+ return /* @__PURE__ */ import_react49.default.createElement("div", {
1387
1384
  className: (0, import_clsx5.default)("fastboard-toolbar-color-box", theme)
1388
- }, colorKeys.map((key) => import_react49.default.createElement("div", {
1385
+ }, colorKeys.map((key) => /* @__PURE__ */ import_react49.default.createElement("div", {
1389
1386
  key,
1390
1387
  className: (0, import_clsx5.default)("fastboard-toolbar-color-item", theme),
1391
1388
  onClick: () => setStrokeColor(colors[key])
1392
- }, import_react49.default.createElement("div", {
1389
+ }, /* @__PURE__ */ import_react49.default.createElement("div", {
1393
1390
  className: (0, import_clsx5.default)("fastboard-toolbar-color-border", theme, {
1394
1391
  active: strokeColor && isEqualArray(strokeColor, colors[key])
1395
1392
  })
1396
- }, import_react49.default.createElement("button", {
1393
+ }, /* @__PURE__ */ import_react49.default.createElement("button", {
1397
1394
  className: (0, import_clsx5.default)("fastboard-toolbar-color-btn"),
1398
1395
  style: { background: key },
1399
1396
  disabled,
@@ -1409,7 +1406,7 @@ var import_clsx6 = __toESM(require("clsx"));
1409
1406
  var import_react50 = __toESM(require("react"));
1410
1407
  function CutLine() {
1411
1408
  const { theme } = (0, import_react50.useContext)(ToolbarContext);
1412
- return import_react50.default.createElement("span", {
1409
+ return /* @__PURE__ */ import_react50.default.createElement("span", {
1413
1410
  className: (0, import_clsx6.default)(`${name4}-cut-line`, theme)
1414
1411
  });
1415
1412
  }
@@ -1422,7 +1419,7 @@ function Slider() {
1422
1419
  const { theme, writable, memberState, setStrokeWidth } = (0, import_react51.useContext)(ToolbarContext);
1423
1420
  const { activeColor } = themes[theme];
1424
1421
  const strokeWidth = (memberState == null ? void 0 : memberState.strokeWidth) || 0;
1425
- return import_react51.default.createElement(import_rc_slider.default, {
1422
+ return /* @__PURE__ */ import_react51.default.createElement(import_rc_slider.default, {
1426
1423
  disabled: !writable,
1427
1424
  className: (0, import_clsx7.default)("fastboard-toolbar-slider", theme),
1428
1425
  trackStyle: { background: activeColor },
@@ -1446,9 +1443,9 @@ function PencilButton() {
1446
1443
  const active = appliance === import_white_web_sdk2.ApplianceNames.pencil;
1447
1444
  const disabled = !writable;
1448
1445
  const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToPencil;
1449
- return import_react53.default.createElement("span", {
1446
+ return /* @__PURE__ */ import_react53.default.createElement("span", {
1450
1447
  className: "fastboard-toolbar-btn-interactive"
1451
- }, import_react53.default.createElement(import_react52.default, {
1448
+ }, /* @__PURE__ */ import_react53.default.createElement(import_react52.default, {
1452
1449
  className: "fastboard-tip",
1453
1450
  content: renderPencilButtonContent(),
1454
1451
  theme,
@@ -1457,25 +1454,25 @@ function PencilButton() {
1457
1454
  offset: RightOffset,
1458
1455
  arrow: false,
1459
1456
  interactive: true
1460
- }, import_react53.default.createElement(Button, {
1457
+ }, /* @__PURE__ */ import_react53.default.createElement(Button, {
1461
1458
  content: renderToolTip(t("pencil"), shortcut),
1462
1459
  active,
1463
1460
  onClick: changeAppliance
1464
- }, import_react53.default.createElement(Icon, {
1465
- fallback: import_react53.default.createElement(Icons.Pencil, {
1461
+ }, /* @__PURE__ */ import_react53.default.createElement(Icon, {
1462
+ fallback: /* @__PURE__ */ import_react53.default.createElement(Icons.Pencil, {
1466
1463
  theme,
1467
1464
  active
1468
1465
  }),
1469
1466
  src: disabled ? icons == null ? void 0 : icons.pencilIconDisable : icons == null ? void 0 : icons.pencilIcon,
1470
1467
  alt: "[pencil]"
1471
- }), import_react53.default.createElement("span", {
1468
+ }), /* @__PURE__ */ import_react53.default.createElement("span", {
1472
1469
  className: "fastboard-toolbar-triangle"
1473
1470
  }))));
1474
1471
  }
1475
1472
  function renderPencilButtonContent() {
1476
- return import_react53.default.createElement("div", {
1473
+ return /* @__PURE__ */ import_react53.default.createElement("div", {
1477
1474
  className: "fastboard-toolbar-panel pencil"
1478
- }, import_react53.default.createElement(Slider, null), import_react53.default.createElement(CutLine, null), import_react53.default.createElement(ColorBox, null));
1475
+ }, /* @__PURE__ */ import_react53.default.createElement(Slider, null), /* @__PURE__ */ import_react53.default.createElement(CutLine, null), /* @__PURE__ */ import_react53.default.createElement(ColorBox, null));
1479
1476
  }
1480
1477
 
1481
1478
  // src/components/Toolbar/components/ShapesButton.tsx
@@ -1522,9 +1519,9 @@ function ShapesButton() {
1522
1519
  const key = appliance === import_white_web_sdk4.ApplianceNames.shape ? shape : appliance;
1523
1520
  const active = ShapeTypes.has(key);
1524
1521
  const CurrentIcon = ShapesMap[key] || Icons.Rectangle;
1525
- return import_react55.default.createElement("span", {
1522
+ return /* @__PURE__ */ import_react55.default.createElement("span", {
1526
1523
  className: "fastboard-toolbar-btn-interactive"
1527
- }, import_react55.default.createElement(import_react54.default, {
1524
+ }, /* @__PURE__ */ import_react55.default.createElement(import_react54.default, {
1528
1525
  className: "fastboard-tip",
1529
1526
  content: renderShapesButtonContent(),
1530
1527
  theme,
@@ -1533,31 +1530,31 @@ function ShapesButton() {
1533
1530
  offset: RightOffset,
1534
1531
  arrow: false,
1535
1532
  interactive: true
1536
- }, import_react55.default.createElement(Button, {
1533
+ }, /* @__PURE__ */ import_react55.default.createElement(Button, {
1537
1534
  content: t("shape"),
1538
1535
  active
1539
- }, import_react55.default.createElement(CurrentIcon, {
1536
+ }, /* @__PURE__ */ import_react55.default.createElement(CurrentIcon, {
1540
1537
  theme,
1541
1538
  active
1542
- }), import_react55.default.createElement("span", {
1539
+ }), /* @__PURE__ */ import_react55.default.createElement("span", {
1543
1540
  className: "fastboard-toolbar-triangle"
1544
1541
  }))));
1545
1542
  }
1546
1543
  function renderShapesButtonContent() {
1547
- return import_react55.default.createElement("div", {
1544
+ return /* @__PURE__ */ import_react55.default.createElement("div", {
1548
1545
  className: "fastboard-toolbar-panel shapes"
1549
- }, import_react55.default.createElement(ShapesBox, null), import_react55.default.createElement(CutLine, null), import_react55.default.createElement(Slider, null), import_react55.default.createElement(CutLine, null), import_react55.default.createElement(ColorBox, null));
1546
+ }, /* @__PURE__ */ import_react55.default.createElement(ShapesBox, null), /* @__PURE__ */ import_react55.default.createElement(CutLine, null), /* @__PURE__ */ import_react55.default.createElement(Slider, null), /* @__PURE__ */ import_react55.default.createElement(CutLine, null), /* @__PURE__ */ import_react55.default.createElement(ColorBox, null));
1550
1547
  }
1551
1548
  function ShapesBox() {
1552
1549
  const { t } = useTranslation();
1553
- return import_react55.default.createElement("div", {
1550
+ return /* @__PURE__ */ import_react55.default.createElement("div", {
1554
1551
  className: "fastboard-toolbar-shapes"
1555
- }, ApplianceShapes.map((Appliance) => import_react55.default.createElement(ApplianceShapeButton, {
1552
+ }, ApplianceShapes.map((Appliance) => /* @__PURE__ */ import_react55.default.createElement(ApplianceShapeButton, {
1556
1553
  key: Appliance,
1557
1554
  content: t(Appliance),
1558
1555
  Appliance,
1559
1556
  Icon: ShapesMap[Appliance]
1560
- })), Shapes.map((shape) => import_react55.default.createElement(ShapeShapeButton, {
1557
+ })), Shapes.map((shape) => /* @__PURE__ */ import_react55.default.createElement(ShapeShapeButton, {
1561
1558
  key: shape,
1562
1559
  content: t(shape),
1563
1560
  shape,
@@ -1568,12 +1565,12 @@ function ApplianceShapeButton({ content, Appliance, Icon: Icon2 }) {
1568
1565
  const { theme, writable, setAppliance, memberState } = (0, import_react55.useContext)(ToolbarContext);
1569
1566
  const current = memberState == null ? void 0 : memberState.currentApplianceName;
1570
1567
  const disabled = !writable;
1571
- return import_react55.default.createElement(Button, {
1568
+ return /* @__PURE__ */ import_react55.default.createElement(Button, {
1572
1569
  content,
1573
1570
  disabled,
1574
1571
  placement: "top",
1575
1572
  onClick: () => setAppliance(Appliance)
1576
- }, import_react55.default.createElement(Icon2, {
1573
+ }, /* @__PURE__ */ import_react55.default.createElement(Icon2, {
1577
1574
  theme,
1578
1575
  active: current === Appliance
1579
1576
  }));
@@ -1583,12 +1580,12 @@ function ShapeShapeButton({ content, shape, Icon: Icon2 }) {
1583
1580
  const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
1584
1581
  const current = appliance === import_white_web_sdk4.ApplianceNames.shape && (memberState == null ? void 0 : memberState.shapeType);
1585
1582
  const disabled = !writable;
1586
- return import_react55.default.createElement(Button, {
1583
+ return /* @__PURE__ */ import_react55.default.createElement(Button, {
1587
1584
  content,
1588
1585
  disabled,
1589
1586
  placement: "top",
1590
1587
  onClick: () => setAppliance(import_white_web_sdk4.ApplianceNames.shape, shape)
1591
- }, import_react55.default.createElement(Icon2, {
1588
+ }, /* @__PURE__ */ import_react55.default.createElement(Icon2, {
1592
1589
  theme,
1593
1590
  active: current === shape
1594
1591
  }));
@@ -1609,9 +1606,9 @@ function TextButton() {
1609
1606
  const active = appliance === import_white_web_sdk5.ApplianceNames.text;
1610
1607
  const disabled = !writable;
1611
1608
  const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToText;
1612
- return import_react57.default.createElement("span", {
1609
+ return /* @__PURE__ */ import_react57.default.createElement("span", {
1613
1610
  className: "fastboard-toolbar-btn-interactive"
1614
- }, import_react57.default.createElement(import_react56.default, {
1611
+ }, /* @__PURE__ */ import_react57.default.createElement(import_react56.default, {
1615
1612
  className: "fastboard-tip",
1616
1613
  content: renderTextButtonContent(),
1617
1614
  theme,
@@ -1620,25 +1617,25 @@ function TextButton() {
1620
1617
  offset: RightOffset,
1621
1618
  arrow: false,
1622
1619
  interactive: true
1623
- }, import_react57.default.createElement(Button, {
1620
+ }, /* @__PURE__ */ import_react57.default.createElement(Button, {
1624
1621
  content: renderToolTip(t("text"), shortcut),
1625
1622
  active,
1626
1623
  onClick: changeAppliance
1627
- }, import_react57.default.createElement(Icon, {
1628
- fallback: import_react57.default.createElement(Icons.Text, {
1624
+ }, /* @__PURE__ */ import_react57.default.createElement(Icon, {
1625
+ fallback: /* @__PURE__ */ import_react57.default.createElement(Icons.Text, {
1629
1626
  theme,
1630
1627
  active
1631
1628
  }),
1632
1629
  src: disabled ? icons == null ? void 0 : icons.textIconDisable : icons == null ? void 0 : icons.textIcon,
1633
1630
  alt: "[text]"
1634
- }), import_react57.default.createElement("span", {
1631
+ }), /* @__PURE__ */ import_react57.default.createElement("span", {
1635
1632
  className: "fastboard-toolbar-triangle"
1636
1633
  }))));
1637
1634
  }
1638
1635
  function renderTextButtonContent() {
1639
- return import_react57.default.createElement("div", {
1636
+ return /* @__PURE__ */ import_react57.default.createElement("div", {
1640
1637
  className: "fastboard-toolbar-panel text"
1641
- }, import_react57.default.createElement(ColorBox, null));
1638
+ }, /* @__PURE__ */ import_react57.default.createElement(ColorBox, null));
1642
1639
  }
1643
1640
 
1644
1641
  // src/components/Toolbar/components/UpDownButtons.tsx
@@ -1646,27 +1643,27 @@ var import_react58 = __toESM(require("react"));
1646
1643
  function UpButton({ disabled, scrollTo }) {
1647
1644
  const { theme, icons } = (0, import_react58.useContext)(ToolbarContext);
1648
1645
  const scrollUp = (0, import_react58.useCallback)(() => scrollTo(-ItemHeight), [scrollTo]);
1649
- return import_react58.default.createElement(import_react58.default.Fragment, null, import_react58.default.createElement(Button, {
1646
+ return /* @__PURE__ */ import_react58.default.createElement(import_react58.default.Fragment, null, /* @__PURE__ */ import_react58.default.createElement(Button, {
1650
1647
  content: "Up",
1651
1648
  disabled,
1652
1649
  onClick: scrollUp
1653
- }, import_react58.default.createElement(Icon, {
1654
- fallback: import_react58.default.createElement(Icons.Up, {
1650
+ }, /* @__PURE__ */ import_react58.default.createElement(Icon, {
1651
+ fallback: /* @__PURE__ */ import_react58.default.createElement(Icons.Up, {
1655
1652
  theme
1656
1653
  }),
1657
1654
  src: disabled ? icons == null ? void 0 : icons.upIconDisable : icons == null ? void 0 : icons.upIcon,
1658
1655
  alt: "[up]"
1659
- })), import_react58.default.createElement(CutLine, null));
1656
+ })), /* @__PURE__ */ import_react58.default.createElement(CutLine, null));
1660
1657
  }
1661
1658
  function DownButton({ disabled, scrollTo }) {
1662
1659
  const { theme, icons } = (0, import_react58.useContext)(ToolbarContext);
1663
1660
  const scrollDown = (0, import_react58.useCallback)(() => scrollTo(ItemHeight), [scrollTo]);
1664
- return import_react58.default.createElement(import_react58.default.Fragment, null, import_react58.default.createElement(CutLine, null), import_react58.default.createElement(Button, {
1661
+ return /* @__PURE__ */ import_react58.default.createElement(import_react58.default.Fragment, null, /* @__PURE__ */ import_react58.default.createElement(CutLine, null), /* @__PURE__ */ import_react58.default.createElement(Button, {
1665
1662
  content: "Down",
1666
1663
  disabled,
1667
1664
  onClick: scrollDown
1668
- }, import_react58.default.createElement(Icon, {
1669
- fallback: import_react58.default.createElement(Icons.Down, {
1665
+ }, /* @__PURE__ */ import_react58.default.createElement(Icon, {
1666
+ fallback: /* @__PURE__ */ import_react58.default.createElement(Icons.Down, {
1670
1667
  theme
1671
1668
  }),
1672
1669
  src: disabled ? icons == null ? void 0 : icons.downIconDisable : icons == null ? void 0 : icons.downIcon,
@@ -1705,17 +1702,17 @@ var Content = import_react59.default.memo(() => {
1705
1702
  return () => resizeObserver.disconnect();
1706
1703
  }
1707
1704
  }, []);
1708
- return import_react59.default.createElement(import_react59.default.Fragment, null, needScroll && import_react59.default.createElement(UpButton, {
1705
+ return /* @__PURE__ */ import_react59.default.createElement(import_react59.default.Fragment, null, needScroll && /* @__PURE__ */ import_react59.default.createElement(UpButton, {
1709
1706
  scrollTo,
1710
1707
  disabled: disableScrollUp
1711
- }), import_react59.default.createElement("div", {
1708
+ }), /* @__PURE__ */ import_react59.default.createElement("div", {
1712
1709
  ref,
1713
1710
  className: (0, import_clsx8.default)(`${name4}-section`),
1714
1711
  style: {
1715
1712
  height: `${sectionHeight}px`,
1716
1713
  overflow: needScroll ? "hidden" : "visible"
1717
1714
  }
1718
- }, import_react59.default.createElement(ClickerButton, null), import_react59.default.createElement(SelectorButton, null), import_react59.default.createElement(PencilButton, null), import_react59.default.createElement(TextButton, null), import_react59.default.createElement(ShapesButton, null), import_react59.default.createElement(EraserButton, null), import_react59.default.createElement(CleanButton, null), import_react59.default.createElement(AppsButton, null)), needScroll && import_react59.default.createElement(DownButton, {
1715
+ }, /* @__PURE__ */ import_react59.default.createElement(ClickerButton, null), /* @__PURE__ */ import_react59.default.createElement(SelectorButton, null), /* @__PURE__ */ import_react59.default.createElement(PencilButton, null), /* @__PURE__ */ import_react59.default.createElement(TextButton, null), /* @__PURE__ */ import_react59.default.createElement(ShapesButton, null), /* @__PURE__ */ import_react59.default.createElement(EraserButton, null), /* @__PURE__ */ import_react59.default.createElement(CleanButton, null), /* @__PURE__ */ import_react59.default.createElement(AppsButton, null)), needScroll && /* @__PURE__ */ import_react59.default.createElement(DownButton, {
1719
1716
  scrollTo,
1720
1717
  disabled: disableScrollDown
1721
1718
  }));
@@ -1744,9 +1741,9 @@ var Toolbar = ({ theme, icons }) => {
1744
1741
  }, 400);
1745
1742
  return () => clearTimeout(timer);
1746
1743
  }, [onHover]);
1747
- return import_react60.default.createElement(ToolbarContext.Provider, {
1744
+ return /* @__PURE__ */ import_react60.default.createElement(ToolbarContext.Provider, {
1748
1745
  value: __spreadValues({ theme, icons }, hook)
1749
- }, import_react60.default.createElement(import_framer_motion.AnimatePresence, null, expanded ? import_react60.default.createElement(import_framer_motion.motion.div, {
1746
+ }, /* @__PURE__ */ import_react60.default.createElement(import_framer_motion.AnimatePresence, null, expanded ? /* @__PURE__ */ import_react60.default.createElement(import_framer_motion.motion.div, {
1750
1747
  initial: { x: -100 },
1751
1748
  animate: { x: 0, transition: { duration: 0.5 } },
1752
1749
  key: "toolbar",
@@ -1760,22 +1757,22 @@ var Toolbar = ({ theme, icons }) => {
1760
1757
  onAnimationStart: () => setPointEvents(false),
1761
1758
  onAnimationComplete: () => setPointEvents(true),
1762
1759
  style: { pointerEvents: pointEvents ? "auto" : "none" }
1763
- }, import_react60.default.createElement(Content, null), expanded && (onHover || delayedOnHover) && import_react60.default.createElement(Mask, {
1760
+ }, /* @__PURE__ */ import_react60.default.createElement(Content, null), expanded && (onHover || delayedOnHover) && /* @__PURE__ */ import_react60.default.createElement(Mask, {
1764
1761
  toolbar
1765
- }, import_react60.default.createElement("div", {
1762
+ }, /* @__PURE__ */ import_react60.default.createElement("div", {
1766
1763
  onClick: toggle
1767
- }, import_react60.default.createElement("img", {
1764
+ }, /* @__PURE__ */ import_react60.default.createElement("img", {
1768
1765
  draggable: false,
1769
1766
  className: (0, import_clsx9.default)(`${name4}-mask-btn`, theme),
1770
1767
  src: collapsed_default
1771
- })))) : import_react60.default.createElement(import_framer_motion.motion.div, {
1768
+ })))) : /* @__PURE__ */ import_react60.default.createElement(import_framer_motion.motion.div, {
1772
1769
  className: (0, import_clsx9.default)(`${name4}-expand-btn`, theme),
1773
1770
  key: "expand",
1774
1771
  onClick: toggle,
1775
1772
  initial: { x: -100 },
1776
1773
  animate: { x: 0, transition: { duration: 0.5 } }
1777
- }, !expanded && import_react60.default.createElement(Icon, {
1778
- fallback: import_react60.default.createElement("img", {
1774
+ }, !expanded && /* @__PURE__ */ import_react60.default.createElement(Icon, {
1775
+ fallback: /* @__PURE__ */ import_react60.default.createElement("img", {
1779
1776
  draggable: false,
1780
1777
  src: expanded_default,
1781
1778
  className: (0, import_clsx9.default)(`${name4}-mask-btn`, theme)
@@ -1865,7 +1862,7 @@ var import_react62 = __toESM(require("react"));
1865
1862
  var import_react63 = __toESM(require("@tippyjs/react"));
1866
1863
  var Button2 = (0, import_react62.forwardRef)((props, ref) => {
1867
1864
  const { theme, content, disabled, active, onClick, interactive, placement = "top", children } = props;
1868
- return import_react62.default.createElement(import_react63.default, {
1865
+ return /* @__PURE__ */ import_react62.default.createElement(import_react63.default, {
1869
1866
  className: "fastboard-tip",
1870
1867
  content,
1871
1868
  interactive,
@@ -1875,7 +1872,7 @@ var Button2 = (0, import_react62.forwardRef)((props, ref) => {
1875
1872
  offset: TopOffset,
1876
1873
  delay: [1e3, 400],
1877
1874
  duration: 300
1878
- }, import_react62.default.createElement("button", {
1875
+ }, /* @__PURE__ */ import_react62.default.createElement("button", {
1879
1876
  ref,
1880
1877
  className: (0, import_clsx10.default)("fastboard-player-control-btn", theme, { active }),
1881
1878
  onClick,
@@ -1890,9 +1887,9 @@ var import_react67 = require("react");
1890
1887
  var import_react64 = __toESM(require("react"));
1891
1888
  var Loading = (props) => {
1892
1889
  const stroke = getStroke(props);
1893
- return import_react64.default.createElement("svg", {
1890
+ return /* @__PURE__ */ import_react64.default.createElement("svg", {
1894
1891
  viewBox: "0 0 24 24"
1895
- }, import_react64.default.createElement("path", {
1892
+ }, /* @__PURE__ */ import_react64.default.createElement("path", {
1896
1893
  d: "M12 4V2A10 10 0 0 0 2 12h2a8 8 0 0 1 8-8z",
1897
1894
  fill: stroke
1898
1895
  }));
@@ -1902,9 +1899,9 @@ var Loading = (props) => {
1902
1899
  var import_react65 = __toESM(require("react"));
1903
1900
  var Pause = (props) => {
1904
1901
  const stroke = getStroke(props);
1905
- return import_react65.default.createElement("svg", {
1902
+ return /* @__PURE__ */ import_react65.default.createElement("svg", {
1906
1903
  viewBox: "0 0 24 24"
1907
- }, import_react65.default.createElement("path", {
1904
+ }, /* @__PURE__ */ import_react65.default.createElement("path", {
1908
1905
  d: "M14 19h4V5h-4M6 19h4V5H6v14z",
1909
1906
  fill: stroke
1910
1907
  }));
@@ -1914,9 +1911,9 @@ var Pause = (props) => {
1914
1911
  var import_react66 = __toESM(require("react"));
1915
1912
  var Play = (props) => {
1916
1913
  const stroke = getStroke(props);
1917
- return import_react66.default.createElement("svg", {
1914
+ return /* @__PURE__ */ import_react66.default.createElement("svg", {
1918
1915
  viewBox: "0 0 24 24"
1919
- }, import_react66.default.createElement("path", {
1916
+ }, /* @__PURE__ */ import_react66.default.createElement("path", {
1920
1917
  d: "M8 5.14v14l11-7l-11-7z",
1921
1918
  fill: stroke
1922
1919
  }));
@@ -1948,25 +1945,25 @@ function PlayerControl(_a) {
1948
1945
  const isLoading = player.phase === import_white_web_sdk7.PlayerPhase.WaitingFirstFrame || player.phase === import_white_web_sdk7.PlayerPhase.Buffering;
1949
1946
  const isPlaying = player.phase === import_white_web_sdk7.PlayerPhase.Playing;
1950
1947
  const { activeColor } = themes[theme];
1951
- return import_react69.default.createElement("div", {
1948
+ return /* @__PURE__ */ import_react69.default.createElement("div", {
1952
1949
  className: (0, import_clsx11.default)(name5, theme, { "auto-hide": autoHide })
1953
- }, import_react69.default.createElement("button", {
1950
+ }, /* @__PURE__ */ import_react69.default.createElement("button", {
1954
1951
  className: (0, import_clsx11.default)(`${name5}-btn`, isLoading ? "loading" : isPlaying ? "pause" : "play", theme),
1955
1952
  disabled: isLoading,
1956
1953
  onClick: player.togglePlay
1957
- }, import_react69.default.createElement(Icon, {
1958
- fallback: isLoading ? import_react69.default.createElement(Icons2.Loading, {
1954
+ }, /* @__PURE__ */ import_react69.default.createElement(Icon, {
1955
+ fallback: isLoading ? /* @__PURE__ */ import_react69.default.createElement(Icons2.Loading, {
1959
1956
  theme
1960
- }) : isPlaying ? import_react69.default.createElement(Icons2.Pause, {
1957
+ }) : isPlaying ? /* @__PURE__ */ import_react69.default.createElement(Icons2.Pause, {
1961
1958
  theme
1962
- }) : import_react69.default.createElement(Icons2.Play, {
1959
+ }) : /* @__PURE__ */ import_react69.default.createElement(Icons2.Play, {
1963
1960
  theme
1964
1961
  }),
1965
1962
  src: isLoading ? icons.loadingIcon : isPlaying ? icons.pauseIcon : icons.playIcon,
1966
1963
  alt: isLoading ? "[loading]" : isPlaying ? "[pause]" : "[play]"
1967
- })), import_react69.default.createElement("span", {
1964
+ })), /* @__PURE__ */ import_react69.default.createElement("span", {
1968
1965
  className: (0, import_clsx11.default)(`${name5}-slider`, { loading: isLoading }, theme)
1969
- }, import_react69.default.createElement(import_rc_slider2.default, {
1966
+ }, /* @__PURE__ */ import_react69.default.createElement(import_rc_slider2.default, {
1970
1967
  disabled: isLoading,
1971
1968
  trackStyle: { background: activeColor },
1972
1969
  handleStyle: { border: `1px solid ${activeColor}` },
@@ -1975,15 +1972,15 @@ function PlayerControl(_a) {
1975
1972
  min: 0,
1976
1973
  max: player.totalTime,
1977
1974
  step: 100
1978
- })), import_react69.default.createElement("span", {
1975
+ })), /* @__PURE__ */ import_react69.default.createElement("span", {
1979
1976
  className: (0, import_clsx11.default)(`${name5}-current`, theme)
1980
- }, renderTime(player.currentTime)), import_react69.default.createElement("span", {
1977
+ }, renderTime(player.currentTime)), /* @__PURE__ */ import_react69.default.createElement("span", {
1981
1978
  className: (0, import_clsx11.default)(`${name5}-slash`, theme)
1982
- }, "/"), import_react69.default.createElement("span", {
1979
+ }, "/"), /* @__PURE__ */ import_react69.default.createElement("span", {
1983
1980
  className: (0, import_clsx11.default)(`${name5}-total`, theme)
1984
- }, renderTime(player.totalTime)), import_react69.default.createElement("span", {
1981
+ }, renderTime(player.totalTime)), /* @__PURE__ */ import_react69.default.createElement("span", {
1985
1982
  className: `${name5}-btn-interactive`
1986
- }, import_react69.default.createElement(import_react68.default, {
1983
+ }, /* @__PURE__ */ import_react69.default.createElement(import_react68.default, {
1987
1984
  className: "fastboard-tip",
1988
1985
  content: renderSpeeds(player),
1989
1986
  theme,
@@ -1992,11 +1989,11 @@ function PlayerControl(_a) {
1992
1989
  offset: TopOffset,
1993
1990
  arrow: false,
1994
1991
  interactive: true
1995
- }, import_react69.default.createElement(Button2, {
1992
+ }, /* @__PURE__ */ import_react69.default.createElement(Button2, {
1996
1993
  content: t("speed"),
1997
1994
  theme,
1998
1995
  disabled: isLoading
1999
- }, import_react69.default.createElement("span", {
1996
+ }, /* @__PURE__ */ import_react69.default.createElement("span", {
2000
1997
  className: (0, import_clsx11.default)(`${name5}-speed-text`, theme)
2001
1998
  }, player.speed, "x")))));
2002
1999
  }
@@ -2008,9 +2005,9 @@ function renderTime(ms) {
2008
2005
  }
2009
2006
  var Speeds = [2, 1.5, 1.25, 1, 0.75, 0.5];
2010
2007
  function renderSpeeds({ speed: current, setSpeed }) {
2011
- return import_react69.default.createElement("div", {
2008
+ return /* @__PURE__ */ import_react69.default.createElement("div", {
2012
2009
  className: (0, import_clsx11.default)(`${name5}-panel`, "speed")
2013
- }, Speeds.map((speed) => import_react69.default.createElement("button", {
2010
+ }, Speeds.map((speed) => /* @__PURE__ */ import_react69.default.createElement("button", {
2014
2011
  className: (0, import_clsx11.default)(`${name5}-btn`, "speed", {
2015
2012
  active: speed === current
2016
2013
  }),
@@ -2021,17 +2018,17 @@ function renderSpeeds({ speed: current, setSpeed }) {
2021
2018
 
2022
2019
  // src/components/Fastboard.tsx
2023
2020
  var import_react70 = __toESM(require("react"));
2024
- var Fastboard = (0, import_react70.forwardRef)(function Fastboard2(_a, ref) {
2021
+ var Fastboard = /* @__PURE__ */ (0, import_react70.forwardRef)(function Fastboard2(_a, ref) {
2025
2022
  var _b = _a, { app, theme, layout, language } = _b, restProps = __objRest(_b, ["app", "theme", "layout", "language"]);
2026
2023
  if (!app) {
2027
- return import_react70.default.createElement("div", __spreadValues({
2024
+ return /* @__PURE__ */ import_react70.default.createElement("div", __spreadValues({
2028
2025
  className: "fastboard-root",
2029
2026
  ref
2030
2027
  }, restProps));
2031
2028
  }
2032
- return import_react70.default.createElement(FastboardAppContext.Provider, {
2029
+ return /* @__PURE__ */ import_react70.default.createElement(FastboardAppContext.Provider, {
2033
2030
  value: app
2034
- }, import_react70.default.createElement(FastboardInternal, __spreadValues(__spreadValues({
2031
+ }, /* @__PURE__ */ import_react70.default.createElement(FastboardInternal, __spreadValues(__spreadValues({
2035
2032
  forwardedRef: ref
2036
2033
  }, { theme, layout, language }), restProps)));
2037
2034
  });
@@ -2072,23 +2069,33 @@ function FastboardInternal(_a) {
2072
2069
  ZoomControl: zoom_control = showControls,
2073
2070
  PageControl: page_control = showControls
2074
2071
  } = layout;
2075
- return import_react70.default.createElement(ThemeContext.Provider, {
2072
+ return /* @__PURE__ */ import_react70.default.createElement(ThemeContext.Provider, {
2076
2073
  value: theme
2077
- }, import_react70.default.createElement(I18nContext.Provider, {
2074
+ }, /* @__PURE__ */ import_react70.default.createElement(I18nContext.Provider, {
2078
2075
  value: i18n
2079
- }, import_react70.default.createElement("div", __spreadProps(__spreadValues({}, restProps), {
2076
+ }, /* @__PURE__ */ import_react70.default.createElement("div", __spreadProps(__spreadValues({}, restProps), {
2080
2077
  className: "fastboard-root",
2081
2078
  ref: forwardedRef
2082
- }), import_react70.default.createElement("div", {
2079
+ }), /* @__PURE__ */ import_react70.default.createElement("div", {
2083
2080
  className: "fastboard-view",
2084
2081
  ref: useWhiteboard
2085
- }), children ? children : import_react70.default.createElement(import_react70.default.Fragment, null, toolbar && import_react70.default.createElement("div", {
2082
+ }), children ? children : /* @__PURE__ */ import_react70.default.createElement(import_react70.default.Fragment, null, toolbar && /* @__PURE__ */ import_react70.default.createElement("div", {
2086
2083
  className: "fastboard-left"
2087
- }, import_react70.default.createElement(Toolbar, null)), (redo_undo || zoom_control) && import_react70.default.createElement("div", {
2084
+ }, /* @__PURE__ */ import_react70.default.createElement(Toolbar, null)), (redo_undo || zoom_control) && /* @__PURE__ */ import_react70.default.createElement("div", {
2088
2085
  className: "fastboard-bottom-left"
2089
- }, redo_undo && import_react70.default.createElement(RedoUndo, null), zoom_control && import_react70.default.createElement(ZoomControl, null)), page_control && import_react70.default.createElement("div", {
2086
+ }, redo_undo && /* @__PURE__ */ import_react70.default.createElement(RedoUndo, null), zoom_control && /* @__PURE__ */ import_react70.default.createElement(ZoomControl, null)), page_control && /* @__PURE__ */ import_react70.default.createElement("div", {
2090
2087
  className: "fastboard-bottom-right"
2091
- }, import_react70.default.createElement(PageControl, null))))));
2088
+ }, /* @__PURE__ */ import_react70.default.createElement(PageControl, null))))));
2089
+ }
2090
+
2091
+ // src/vanilla/index.tsx
2092
+ var import_react71 = __toESM(require("react"));
2093
+ var import_react_dom2 = __toESM(require("react-dom"));
2094
+ function mount(app, dom, props) {
2095
+ import_react_dom2.default.render(/* @__PURE__ */ import_react71.default.createElement(Fastboard, __spreadValues({
2096
+ app
2097
+ }, props)), dom);
2098
+ return () => import_react_dom2.default.unmountComponentAtNode(dom);
2092
2099
  }
2093
2100
  module.exports = __toCommonJS(src_exports);
2094
2101
  //# sourceMappingURL=index.js.map