@netless/fastboard-react 0.1.0 → 0.2.2
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 +426 -487
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +368 -425
- package/dist/index.mjs.map +1 -1
- package/package.json +18 -13
- package/src/components/Fastboard.tsx +27 -17
- package/src/components/PageControl/PageControl.tsx +2 -4
- package/src/components/PageControl/hooks.ts +18 -61
- package/src/components/Toolbar/Content.tsx +19 -4
- package/src/components/Toolbar/Toolbar.scss +13 -3
- package/src/components/Toolbar/Toolbar.tsx +15 -47
- package/src/components/hooks.ts +1 -1
- package/src/index.ts +1 -0
- package/src/vanilla/index.tsx +18 -0
- package/dist/behaviors/style.d.ts +0 -1
- package/dist/components/Fastboard.d.ts +0 -15
- package/dist/components/PageControl/PageControl.d.ts +0 -5
- package/dist/components/PageControl/hooks.d.ts +0 -9
- package/dist/components/PageControl/index.d.ts +0 -2
- package/dist/components/PlayerControl/PlayerControl.d.ts +0 -9
- package/dist/components/PlayerControl/hooks.d.ts +0 -11
- package/dist/components/PlayerControl/icons/Loading.d.ts +0 -3
- package/dist/components/PlayerControl/icons/Pause.d.ts +0 -3
- package/dist/components/PlayerControl/icons/Play.d.ts +0 -3
- package/dist/components/PlayerControl/icons/index.d.ts +0 -6
- package/dist/components/PlayerControl/index.d.ts +0 -2
- package/dist/components/RedoUndo/RedoUndo.d.ts +0 -5
- package/dist/components/RedoUndo/hooks.d.ts +0 -6
- package/dist/components/RedoUndo/index.d.ts +0 -2
- package/dist/components/Toolbar/Content.d.ts +0 -2
- package/dist/components/Toolbar/Toolbar.d.ts +0 -14
- package/dist/components/Toolbar/components/ApplianceButtons.d.ts +0 -7
- package/dist/components/Toolbar/components/AppsButton.d.ts +0 -6
- package/dist/components/Toolbar/components/ColorBox.d.ts +0 -2
- package/dist/components/Toolbar/components/CutLine.d.ts +0 -2
- package/dist/components/Toolbar/components/Mask.d.ts +0 -7
- package/dist/components/Toolbar/components/PencilButton.d.ts +0 -2
- package/dist/components/Toolbar/components/ShapesButton.d.ts +0 -3
- package/dist/components/Toolbar/components/Slider.d.ts +0 -2
- package/dist/components/Toolbar/components/TextButton.d.ts +0 -2
- package/dist/components/Toolbar/components/UpDownButtons.d.ts +0 -7
- package/dist/components/Toolbar/const.d.ts +0 -18
- package/dist/components/Toolbar/hooks.d.ts +0 -12
- package/dist/components/Toolbar/icons/Apps.d.ts +0 -3
- package/dist/components/Toolbar/icons/Arrow.d.ts +0 -3
- package/dist/components/Toolbar/icons/Circle.d.ts +0 -3
- package/dist/components/Toolbar/icons/Clean.d.ts +0 -3
- package/dist/components/Toolbar/icons/Clicker.d.ts +0 -3
- package/dist/components/Toolbar/icons/Collapse.d.ts +0 -3
- package/dist/components/Toolbar/icons/Diamond.d.ts +0 -3
- package/dist/components/Toolbar/icons/Down.d.ts +0 -3
- package/dist/components/Toolbar/icons/Eraser.d.ts +0 -3
- package/dist/components/Toolbar/icons/Expand.d.ts +0 -3
- package/dist/components/Toolbar/icons/Line.d.ts +0 -3
- package/dist/components/Toolbar/icons/Pencil.d.ts +0 -3
- package/dist/components/Toolbar/icons/Rectangle.d.ts +0 -3
- package/dist/components/Toolbar/icons/Selector.d.ts +0 -3
- package/dist/components/Toolbar/icons/SpeechBalloon.d.ts +0 -3
- package/dist/components/Toolbar/icons/Star.d.ts +0 -3
- package/dist/components/Toolbar/icons/Text.d.ts +0 -3
- package/dist/components/Toolbar/icons/Triangle.d.ts +0 -3
- package/dist/components/Toolbar/icons/Up.d.ts +0 -3
- package/dist/components/Toolbar/icons/index.d.ts +0 -22
- package/dist/components/Toolbar/index.d.ts +0 -2
- package/dist/components/ZoomControl/ZoomControl.d.ts +0 -5
- package/dist/components/ZoomControl/hooks.d.ts +0 -7
- package/dist/components/ZoomControl/index.d.ts +0 -2
- package/dist/components/hooks.d.ts +0 -13
- package/dist/i18n/index.d.ts +0 -12
- package/dist/icons/ChevronLeft.d.ts +0 -3
- package/dist/icons/ChevronRight.d.ts +0 -3
- package/dist/icons/FilePlus.d.ts +0 -3
- package/dist/icons/Minus.d.ts +0 -3
- package/dist/icons/Plus.d.ts +0 -3
- package/dist/icons/Redo.d.ts +0 -3
- package/dist/icons/Reset.d.ts +0 -3
- package/dist/icons/Undo.d.ts +0 -3
- package/dist/icons/index.d.ts +0 -7
- package/dist/index.d.ts +0 -9
- package/dist/internal/helpers.d.ts +0 -16
- package/dist/internal/hooks.d.ts +0 -3
- package/dist/internal/index.d.ts +0 -2
- package/dist/theme.d.ts +0 -16
- package/dist/typings.d.ts +0 -10
- package/src/components/Toolbar/components/Mask.tsx +0 -44
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:100%;height:100%}.fastboard-toolbar-btn:disabled{opacity:.5;cursor:not-allowed}.fastboard-toolbar-btn.light:not(:disabled):hover{background-color:#3381ff1a}.fastboard-toolbar-btn.dark:not(:disabled):hover{background-color:#3381ff40}.fastboard-toolbar-triangle{width:0px;height:0px;border-bottom:4px solid;border-left:4px solid transparent;position:absolute;bottom:0;right:0}.fastboard-toolbar-cut-line{display:inline-block;height:.5px;width:100%}.fastboard-toolbar-cut-line.light{background-color:#e7e7e7}.fastboard-toolbar-cut-line.dark{background-color:#ffffff26}.fastboard-toolbar-section{display:inline-flex;flex-flow:column nowrap;gap:4px;scroll-behavior:smooth}.fastboard-toolbar-section.collapsed{transform:translate(-100%);transition:1s transform}.fastboard-toolbar-panel{width:120px;padding:0;display:flex;flex-flow:column nowrap;align-items:center;gap:8px}.fastboard-toolbar-panel.apps{width:224px}.fastboard-toolbar-color-box,.fastboard-toolbar-shapes{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;align-items:center;justify-items:center}.fastboard-toolbar-color-box .fastboard-toolbar-btn,.fastboard-toolbar-shapes .fastboard-toolbar-btn{padding:0;width:24px;height:24px}.fastboard-toolbar-apps{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;align-items:center;justify-items:center}.fastboard-toolbar-apps .fastboard-toolbar-btn{width:40px;height:40px;font-size:0}.fastboard-toolbar-app-icon{padding-top:4px;display:inline-flex;flex-flow:column nowrap;align-items:center;gap:4px}.fastboard-toolbar-app-icon .fastboard-toolbar-btn{padding:0}.fastboard-toolbar-app-icon-text{font-size:12px;color:#5d5d5d;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.fastboard-toolbar-color-item{width:24px;height:24px;border-radius:4px;cursor:pointer}.fastboard-toolbar-color-item *.light:hover{background-color:#f5f5f5}.fastboard-toolbar-color-item *.dark:hover{background-color:#333}.fastboard-toolbar-color-border{width:24px;height:24px;border:1px solid transparent;border-radius:4px;display:inline-flex;align-items:center;justify-content:center}.fastboard-toolbar-color-border.active.light,.fastboard-toolbar-color-border.active.dark{border:1px solid rgba(51,129,255,.8)}.fastboard-toolbar-color-btn{margin:0;border:1px solid rgba(0,0,0,.24);padding:0;appearance:none;width:16px;height:16px;border-radius:4px;cursor:pointer}.fastboard-toolbar-color-btn:focus-visible{outline-offset:2px}.fastboard-toolbar-mask{position:absolute;left:calc(100% + 1px);top:50%;transform:translateY(-50%)}.fastboard-toolbar-mask.dark{left:100%}.fastboard-toolbar-mask-btn{width:17px;height:62px;cursor:pointer}.fastboard-toolbar-mask-btn.dark{filter:invert(.8)}.fastboard-toolbar-expand-btn{display:flex;align-items:center;position:absolute;left:0}.fastboard-player-control{width:100%;display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:4px;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.fastboard-player-control.auto-hide{opacity:0;transition:opacity .2s}.fastboard-player-control.auto-hide:hover{opacity:1}.fastboard-player-control .rc-slider-disabled{background:transparent;opacity:.5}.fastboard-player-control .rc-slider-rail,.fastboard-player-control .rc-slider-track{height:2px}.fastboard-player-control .tippy-content{padding:8px}.fastboard-player-control .tippy-box{border:1px solid rgba(0,0,0,.15);background-color:#333333f2;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.fastboard-player-control .tippy-box[data-theme~=light]{background-color:#fffffff2;box-shadow:0 5px 10px #00000040}.fastboard-player-control.light{color:#333;background-color:#ffffffd9;border:1px solid rgba(0,0,0,.15)}.fastboard-player-control.dark{color:#ddd;background-color:#333333d9;border:1px solid rgba(0,0,0,.45)}.fastboard-player-control-btn{appearance:none;cursor:pointer;margin:0;border:0;padding:0;min-width:24px;height:24px;background-color:transparent;border-radius:4px;font-size:24px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.fastboard-player-control-btn svg,.fastboard-player-control-btn img{width:1em;height:1em}.fastboard-player-control-btn:disabled{opacity:.5;cursor:not-allowed}.fastboard-player-control-btn.light:not(:disabled):hover{background-color:#3381ff1a}.fastboard-player-control-btn.dark:not(:disabled):hover{background-color:#3381ff40}.fastboard-player-control-btn.loading{animation:fastboard-player-control-rotate .5s linear infinite}@keyframes fastboard-player-control-rotate{to{transform:rotate(360deg)}}.fastboard-player-control-panel{padding:0;display:flex;flex-flow:column nowrap;align-items:stretch;gap:4px}.fastboard-player-control-panel .fastboard-player-control-btn{width:initial;height:initial;user-select:none;font-size:12px;padding:4px;justify-content:flex-end}.fastboard-player-control-panel .fastboard-player-control-btn.active{color:#3381ff}.fastboard-player-control-slider{width:100%;padding:0 7px}.fastboard-player-control-slider.loading{cursor:not-allowed}.fastboard-player-control-slash{opacity:.6}.fastboard-player-control-current,.fastboard-player-control-slash,.fastboard-player-control-total,.fastboard-player-control-speed-text{font-size:12px;font-variant-numeric:tabular-nums}.tippy-box.fastboard-tip{color:#eee;background-color:#000000f2;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.tippy-box.fastboard-tip[data-placement^=right]>.tippy-arrow:before{top:4px;border-width:4px;border-right-color:#000}.tippy-box.fastboard-tip[data-placement^=top]>.tippy-arrow:before{left:4px;border-width:4px;border-top-color:#000}\n';
|
|
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,
|
|
@@ -640,58 +637,21 @@ function ZoomControl({
|
|
|
640
637
|
|
|
641
638
|
// src/components/PageControl/hooks.ts
|
|
642
639
|
var import_react16 = require("react");
|
|
643
|
-
function usePageControl(
|
|
644
|
-
const
|
|
645
|
-
const
|
|
640
|
+
function usePageControl() {
|
|
641
|
+
const app = useFastboardApp();
|
|
642
|
+
const pageIndex = useFastboardValue(app.sceneIndex);
|
|
643
|
+
const pageCount = useFastboardValue(app.sceneLength);
|
|
646
644
|
const addPage = (0, import_react16.useCallback)(async () => {
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
}, [room, manager, pageIndex]);
|
|
658
|
-
const prevPage = (0, import_react16.useCallback)(() => {
|
|
659
|
-
if (manager) {
|
|
660
|
-
manager.setMainViewSceneIndex(pageIndex - 1);
|
|
661
|
-
} else if (room) {
|
|
662
|
-
room.pptPreviousStep();
|
|
663
|
-
}
|
|
664
|
-
}, [room, manager, pageIndex]);
|
|
665
|
-
const nextPage = (0, import_react16.useCallback)(() => {
|
|
666
|
-
if (manager) {
|
|
667
|
-
manager.setMainViewSceneIndex(pageIndex + 1);
|
|
668
|
-
} else if (room) {
|
|
669
|
-
room.pptNextStep();
|
|
670
|
-
}
|
|
671
|
-
}, [room, manager, pageIndex]);
|
|
672
|
-
(0, import_react16.useEffect)(() => {
|
|
673
|
-
if (room) {
|
|
674
|
-
setPageIndex(room.state.sceneState.index);
|
|
675
|
-
setPageCount(room.state.sceneState.scenes.length);
|
|
676
|
-
if (manager) {
|
|
677
|
-
manager.emitter.on("mainViewSceneIndexChange", setPageIndex);
|
|
678
|
-
return () => {
|
|
679
|
-
manager.emitter.off("mainViewSceneIndexChange", setPageIndex);
|
|
680
|
-
};
|
|
681
|
-
} else {
|
|
682
|
-
const onRoomStateChanged = (modifyState) => {
|
|
683
|
-
if (modifyState.sceneState) {
|
|
684
|
-
setPageIndex(modifyState.sceneState.index);
|
|
685
|
-
setPageCount(modifyState.sceneState.scenes.length);
|
|
686
|
-
}
|
|
687
|
-
};
|
|
688
|
-
room.callbacks.on("onRoomStateChanged", onRoomStateChanged);
|
|
689
|
-
return () => {
|
|
690
|
-
room.callbacks.off("onRoomStateChanged", onRoomStateChanged);
|
|
691
|
-
};
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
}, [room, manager]);
|
|
645
|
+
await app.manager.switchMainViewToWriter();
|
|
646
|
+
app.room.putScenes(app.manager.mainViewSceneDir, [{}], pageIndex + 1);
|
|
647
|
+
await app.manager.setMainViewSceneIndex(pageIndex + 1);
|
|
648
|
+
}, [app, pageIndex]);
|
|
649
|
+
const prevPage = (0, import_react16.useCallback)(async () => {
|
|
650
|
+
await app.manager.setMainViewSceneIndex(pageIndex - 1);
|
|
651
|
+
}, [app, pageIndex]);
|
|
652
|
+
const nextPage = (0, import_react16.useCallback)(async () => {
|
|
653
|
+
await app.manager.setMainViewSceneIndex(pageIndex + 1);
|
|
654
|
+
}, [app, pageIndex]);
|
|
695
655
|
return { pageIndex, pageCount, prevPage, nextPage, addPage };
|
|
696
656
|
}
|
|
697
657
|
|
|
@@ -705,9 +665,9 @@ var import_react17 = __toESM(require("react"));
|
|
|
705
665
|
function ChevronLeft({ theme = "light", active }) {
|
|
706
666
|
const config = themes[theme];
|
|
707
667
|
const stroke = active ? config.activeColor : config.color;
|
|
708
|
-
return import_react17.default.createElement("svg", {
|
|
668
|
+
return /* @__PURE__ */ import_react17.default.createElement("svg", {
|
|
709
669
|
viewBox: "0 0 24 24"
|
|
710
|
-
}, import_react17.default.createElement("path", {
|
|
670
|
+
}, /* @__PURE__ */ import_react17.default.createElement("path", {
|
|
711
671
|
fill: "none",
|
|
712
672
|
stroke,
|
|
713
673
|
strokeLinecap: "round",
|
|
@@ -721,9 +681,9 @@ var import_react18 = __toESM(require("react"));
|
|
|
721
681
|
function ChevronRight({ theme = "light", active }) {
|
|
722
682
|
const config = themes[theme];
|
|
723
683
|
const stroke = active ? config.activeColor : config.color;
|
|
724
|
-
return import_react18.default.createElement("svg", {
|
|
684
|
+
return /* @__PURE__ */ import_react18.default.createElement("svg", {
|
|
725
685
|
viewBox: "0 0 24 24"
|
|
726
|
-
}, import_react18.default.createElement("path", {
|
|
686
|
+
}, /* @__PURE__ */ import_react18.default.createElement("path", {
|
|
727
687
|
fill: "none",
|
|
728
688
|
stroke,
|
|
729
689
|
strokeLinecap: "round",
|
|
@@ -737,9 +697,9 @@ var import_react19 = __toESM(require("react"));
|
|
|
737
697
|
function FilePlus({ theme = "light", active }) {
|
|
738
698
|
const config = themes[theme];
|
|
739
699
|
const stroke = active ? config.activeColor : config.color;
|
|
740
|
-
return import_react19.default.createElement("svg", {
|
|
700
|
+
return /* @__PURE__ */ import_react19.default.createElement("svg", {
|
|
741
701
|
viewBox: "0 0 24 24"
|
|
742
|
-
}, import_react19.default.createElement("path", {
|
|
702
|
+
}, /* @__PURE__ */ import_react19.default.createElement("path", {
|
|
743
703
|
fill: stroke,
|
|
744
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"
|
|
745
705
|
}));
|
|
@@ -756,15 +716,14 @@ function PageControl({
|
|
|
756
716
|
nextIcon,
|
|
757
717
|
nextIconDisable
|
|
758
718
|
}) {
|
|
759
|
-
const app = useFastboardApp();
|
|
760
719
|
theme = useTheme(theme);
|
|
761
720
|
const { t } = useTranslation();
|
|
762
721
|
const writable = useWritable();
|
|
763
|
-
const _a = usePageControl(
|
|
722
|
+
const _a = usePageControl(), { pageIndex, pageCount } = _a, actions = __objRest(_a, ["pageIndex", "pageCount"]);
|
|
764
723
|
const disabled = !writable;
|
|
765
|
-
return import_react21.default.createElement("div", {
|
|
724
|
+
return /* @__PURE__ */ import_react21.default.createElement("div", {
|
|
766
725
|
className: (0, import_clsx3.default)(name3, theme)
|
|
767
|
-
}, import_react21.default.createElement(import_react20.default, {
|
|
726
|
+
}, /* @__PURE__ */ import_react21.default.createElement(import_react20.default, {
|
|
768
727
|
className: "fastboard-tip",
|
|
769
728
|
content: t("prevPage"),
|
|
770
729
|
theme,
|
|
@@ -773,23 +732,23 @@ function PageControl({
|
|
|
773
732
|
delay: [1e3, 400],
|
|
774
733
|
duration: 300,
|
|
775
734
|
offset: TopOffset
|
|
776
|
-
}, import_react21.default.createElement("button", {
|
|
735
|
+
}, /* @__PURE__ */ import_react21.default.createElement("button", {
|
|
777
736
|
className: (0, import_clsx3.default)(`${name3}-btn`, "prev", theme),
|
|
778
737
|
disabled: disabled || pageIndex === 0,
|
|
779
738
|
onClick: actions.prevPage
|
|
780
|
-
}, import_react21.default.createElement(Icon, {
|
|
781
|
-
fallback: import_react21.default.createElement(ChevronLeft, {
|
|
739
|
+
}, /* @__PURE__ */ import_react21.default.createElement(Icon, {
|
|
740
|
+
fallback: /* @__PURE__ */ import_react21.default.createElement(ChevronLeft, {
|
|
782
741
|
theme
|
|
783
742
|
}),
|
|
784
743
|
src: disabled ? prevIconDisable : prevIcon,
|
|
785
744
|
alt: "[prev]"
|
|
786
|
-
}))), import_react21.default.createElement("span", {
|
|
745
|
+
}))), /* @__PURE__ */ import_react21.default.createElement("span", {
|
|
787
746
|
className: (0, import_clsx3.default)(`${name3}-page`, theme)
|
|
788
|
-
}, pageCount === 0 ? "\u2026" : pageIndex + 1), import_react21.default.createElement("span", {
|
|
747
|
+
}, pageCount === 0 ? "\u2026" : pageIndex + 1), /* @__PURE__ */ import_react21.default.createElement("span", {
|
|
789
748
|
className: (0, import_clsx3.default)(`${name3}-slash`, theme)
|
|
790
|
-
}, "/"), import_react21.default.createElement("span", {
|
|
749
|
+
}, "/"), /* @__PURE__ */ import_react21.default.createElement("span", {
|
|
791
750
|
className: (0, import_clsx3.default)(`${name3}-page-count`, theme)
|
|
792
|
-
}, pageCount), import_react21.default.createElement(import_react20.default, {
|
|
751
|
+
}, pageCount), /* @__PURE__ */ import_react21.default.createElement(import_react20.default, {
|
|
793
752
|
className: "fastboard-tip",
|
|
794
753
|
content: t("nextPage"),
|
|
795
754
|
theme,
|
|
@@ -798,17 +757,17 @@ function PageControl({
|
|
|
798
757
|
delay: [1e3, 400],
|
|
799
758
|
duration: 300,
|
|
800
759
|
offset: TopOffset
|
|
801
|
-
}, import_react21.default.createElement("button", {
|
|
760
|
+
}, /* @__PURE__ */ import_react21.default.createElement("button", {
|
|
802
761
|
className: (0, import_clsx3.default)(`${name3}-btn`, "next", theme),
|
|
803
762
|
disabled: disabled || pageIndex === pageCount - 1,
|
|
804
763
|
onClick: actions.nextPage
|
|
805
|
-
}, import_react21.default.createElement(Icon, {
|
|
806
|
-
fallback: import_react21.default.createElement(ChevronRight, {
|
|
764
|
+
}, /* @__PURE__ */ import_react21.default.createElement(Icon, {
|
|
765
|
+
fallback: /* @__PURE__ */ import_react21.default.createElement(ChevronRight, {
|
|
807
766
|
theme
|
|
808
767
|
}),
|
|
809
768
|
src: disabled ? nextIconDisable : nextIcon,
|
|
810
769
|
alt: "[next]"
|
|
811
|
-
}))), import_react21.default.createElement(import_react20.default, {
|
|
770
|
+
}))), /* @__PURE__ */ import_react21.default.createElement(import_react20.default, {
|
|
812
771
|
className: "fastboard-tip",
|
|
813
772
|
content: t("addPage"),
|
|
814
773
|
theme,
|
|
@@ -817,12 +776,12 @@ function PageControl({
|
|
|
817
776
|
delay: [1e3, 400],
|
|
818
777
|
duration: 300,
|
|
819
778
|
offset: TopOffset
|
|
820
|
-
}, import_react21.default.createElement("button", {
|
|
779
|
+
}, /* @__PURE__ */ import_react21.default.createElement("button", {
|
|
821
780
|
className: (0, import_clsx3.default)(`${name3}-btn`, "add", theme),
|
|
822
781
|
disabled,
|
|
823
782
|
onClick: actions.addPage
|
|
824
|
-
}, import_react21.default.createElement(Icon, {
|
|
825
|
-
fallback: import_react21.default.createElement(FilePlus, {
|
|
783
|
+
}, /* @__PURE__ */ import_react21.default.createElement(Icon, {
|
|
784
|
+
fallback: /* @__PURE__ */ import_react21.default.createElement(FilePlus, {
|
|
826
785
|
theme
|
|
827
786
|
}),
|
|
828
787
|
src: disabled ? addIconDisable : addIcon,
|
|
@@ -872,94 +831,56 @@ var EmptyToolbarHook = {
|
|
|
872
831
|
// src/components/Toolbar/Toolbar.tsx
|
|
873
832
|
var import_clsx9 = __toESM(require("clsx"));
|
|
874
833
|
var import_framer_motion = require("framer-motion");
|
|
875
|
-
var
|
|
876
|
-
|
|
877
|
-
// src/components/Toolbar/components/assets/collapsed.png
|
|
878
|
-
var collapsed_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAB8CAYAAAAMw2JFAAAAAXNSR0IArs4c6QAAA49JREFUeF7tnLFv00AUh5/TFVYkxIDEnKFjJ/gb2CIqpUPagYXNEV2LRGk7tAiRSA0bWcC0QzowwQKuVDnCLE2KTZCMSNLkHCLalCpBkdFVMTKh8TXO+c4S16XDSb0vv/vyfE3fqwQR+ZIA4AoAdADgJ08mSVXVV9ls9nE+nzcBAAFAnweQ1Gg06gihrmEYubm5OeX4+LgBAD9Yw0iO49S63S7U6/VYq9UyCoXC2tLS0kcAwEA9VkBnIO5m7XYbJwTVanVLluWcruvfAOA7ADhhA/0Fgjfr9/tweHgYs20baZq2sbCw8HaQTqgy/wPivvKTkxN8XFPNZvMdC5lHgmAgx3EAISQhhHqGYWyGKbMviJsOC5kvBOIjcxUAWjRkHgtkSGZb07R1WjKPDeIj82cAaAatzIFBhmU2TTOXTCZfBq3ME4HQlJkKCA2ZqYJMIjN1kKAyhwYyrsyhgpwns6IoyysrK/rgQfrnqc4ExCtzrVb7tbe39yCVSr0GAFyZz2CYguANT09PwbIsaWdn5146nX4zuO+wB8EwnU5HqlQqdiKRuHNwcFDC1Zh5Iu4xWZYVU1V1eXZ29jlOhRvI0dGRVC6XP8zMzNwFgK/cQHq9HpTLZXt6evo2AFS4geDbX6lUisXj8VsA8IkbCHZlf39/Kh6P3xQg7jtHJDL826JIRCRC+gRBOCIcEY6QEhCOkBISdUQ4IhwhJSAcISUk6kjojjxaXbt0Py3jP1DCtes3ruLvVetLnenRYIgnT7OX3Y25gLgQ3gSYg3ghuIEMQ3ABOQ+COcgoCKYgfhD/Jwh+1ZE4GrdKRkJWPxhulTUSBe28ZLglMgzDHcR9N3G/BpDuHH7r4qoY+lUx6PGIoxFHQ3JHOCIcEY6QEhCOkBISdUQ4IhwhJSAcISUk6ohwxM+RyLR/RaYhLjItgpFomoxEG2kkGmvxRBPXVmPPWIypKMpD5s3X3kEh0zSfJZPJF6NmK0JrI3VHpxBCaiaTWc/n877TJtRBPMNkdrFY3Jifn8ed3njUzneYjCqIZ7xue3FxMadpGh6vu9BEEhUQr4yFQmE1yMDhRCDjyEi6JAUGGVdG6iBBZaQK4pVRluVNXdfZjsfRkHGiRGjKGBjEI+P7TCazQaqMpI1I635jtmNVRtJGpPVRg8fbtGW8EAiL6VUiyGA4vUd6TJN+0KTr0u7u7hYLGUmg0fkHBiRSVuu/AWpfZNft9vFDAAAAAElFTkSuQmCC";
|
|
834
|
+
var import_react59 = __toESM(require("react"));
|
|
879
835
|
|
|
880
836
|
// src/components/Toolbar/components/assets/expanded.png
|
|
881
837
|
var expanded_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAB8CAYAAAAMw2JFAAAAAXNSR0IArs4c6QAAA5xJREFUeF7tnL9v00AUx5/TlRkJMSAxZ+jYCf4GtopK6dB2qBBsjshaJErboWVJpYaNLGDaIR2YYAFXqlxhlvzAJkhGJGlyDhVNSpWgyOiqBJnQ+urznW2Jy1JVVnKffv3x8yV9LxLE5CEBwFUA6ALAzyiZJFVVX21ubj7N5/MmACAAGEQBJDWbzQZCqGcYRm52dlbpdDpNAPgRNozkOE691+tBo9FItNtto1AorC0tLX0EAAzUDwvoDGS02NHREU4IarXatizLOV3XvwHAdwBweAP9BYIXGwwGcHh4mLBtG2matrGwsPB2mA5Xmf8BGf3lJycn+HRNtFqtd2HIfCEIBnIcBxBCEkKobxjGFk+ZPUFG6YQh86VAPGSuAUCbhcy+QMZktjVNW2cls28QD5k/A0CLtjJTg4zLbJpmLpVKvaStzIFAWMrMBISFzExBgsjMHIRWZm4gfmXmCnKezIqiLK+srOjDG+mfu3ooIG6Z6/X6r/39/Udzc3OvAQBX5jOYUEHwgqenp2BZlrS7u/sgnU6/Ge53wgfBMN1uV6pWq/b09PTdSqVSwtU49ERGp8myrISqqsszMzPPcSqRgRwfH0vlcvnD1NTUIgB8jQyk3+9DuVy2Jycn7wBANTIQvPsrlUqJZDJ5GwA+RQaCXSkWixPJZPKWABldOSKR8XeLIhGRCOkTBOGIcEQ4QkpAOEJKSNQR4YhwhJSAcISUkKgjTBy5fuPmNfxCNetLA/98srp25WFaxv+UpH5QnZpxEPz7/XuLnSAwzEBwFEFgmIIEgWEOQgvDBYQGhhuIXxiuIH5g/g8QP5czt0T8QFB/mHdeZXXXdr8QXEBoIJiD0EIwBQkCwQwksm0A9abD44lUl68A4ZEAkz0rDzDhiDg1JK+EI8IR4QgpAeEIKSFRR4QjwhFSAsIRUkKijsTSkdi0f8WmIS42LYKxaJqMRRtpLBpr8URTpK3GrrEYU1GUx6E3X7sHhUzTfJZKpV5cNFvBrY10NDqFEFKz2ex6Pp/3nDZhDuIaJrMPDg425ufncac3HrXzHCZjCuIar9vJZDI5TdPweN2lJpKYgLhlLBQKqzQDh4FA/MhI2ptQg/iVkTkIrYxMQdwyyrK8pet6uONxLGQMlAhLGalBXDK+z2azG6TKSFqIdNxrzNZXZSQtRDp+0eDxDmsZLwUSxvQqEWQ4nN4n3aZJLxT0uLS3t7cdhowk0Ph8gQGJNKzjvwGKWUjXcvHclAAAAABJRU5ErkJggg==";
|
|
882
838
|
|
|
883
|
-
// src/components/Toolbar/components/Mask.tsx
|
|
884
|
-
var import_react23 = __toESM(require("react"));
|
|
885
|
-
var import_react_dom = __toESM(require("react-dom"));
|
|
886
|
-
var Mask = import_react23.default.memo(({ toolbar, children }) => {
|
|
887
|
-
const [rootElement] = (0, import_react23.useState)(() => {
|
|
888
|
-
const element = document.createElement("div");
|
|
889
|
-
element.style.position = "absolute";
|
|
890
|
-
return element;
|
|
891
|
-
});
|
|
892
|
-
(0, import_react23.useEffect)(() => {
|
|
893
|
-
if (toolbar && rootElement) {
|
|
894
|
-
toolbar.appendChild(rootElement);
|
|
895
|
-
}
|
|
896
|
-
}, [rootElement, toolbar]);
|
|
897
|
-
(0, import_react23.useEffect)(() => {
|
|
898
|
-
if (rootElement && toolbar) {
|
|
899
|
-
toolbar.appendChild(rootElement);
|
|
900
|
-
const toolbarRect = toolbar.getBoundingClientRect();
|
|
901
|
-
const halfHeight = toolbarRect.height / 2 - 31;
|
|
902
|
-
rootElement.style.top = halfHeight + "px";
|
|
903
|
-
rootElement.style.left = "41px";
|
|
904
|
-
rootElement.style.width = "17px";
|
|
905
|
-
rootElement.style.height = "62px";
|
|
906
|
-
return () => {
|
|
907
|
-
toolbar.removeChild(rootElement);
|
|
908
|
-
};
|
|
909
|
-
}
|
|
910
|
-
}, [rootElement, toolbar]);
|
|
911
|
-
if (rootElement) {
|
|
912
|
-
return import_react_dom.default.createPortal(children, rootElement);
|
|
913
|
-
} else {
|
|
914
|
-
return null;
|
|
915
|
-
}
|
|
916
|
-
});
|
|
917
|
-
|
|
918
839
|
// src/components/Toolbar/Content.tsx
|
|
919
840
|
var import_clsx8 = __toESM(require("clsx"));
|
|
920
|
-
var
|
|
841
|
+
var import_react58 = __toESM(require("react"));
|
|
921
842
|
|
|
922
843
|
// src/components/Toolbar/components/ApplianceButtons.tsx
|
|
923
|
-
var
|
|
844
|
+
var import_react45 = __toESM(require("react"));
|
|
924
845
|
var import_white_web_sdk = require("white-web-sdk");
|
|
925
846
|
|
|
926
847
|
// src/components/Toolbar/icons/index.ts
|
|
927
|
-
var
|
|
848
|
+
var import_react42 = require("react");
|
|
928
849
|
|
|
929
850
|
// src/components/Toolbar/icons/Apps.tsx
|
|
930
|
-
var
|
|
851
|
+
var import_react23 = __toESM(require("react"));
|
|
931
852
|
var Apps = (props) => {
|
|
932
853
|
const stroke = getStroke(props);
|
|
933
|
-
return
|
|
854
|
+
return /* @__PURE__ */ import_react23.default.createElement("svg", {
|
|
934
855
|
viewBox: "0 0 24 24"
|
|
935
|
-
},
|
|
856
|
+
}, /* @__PURE__ */ import_react23.default.createElement("g", {
|
|
936
857
|
fill: stroke
|
|
937
|
-
},
|
|
858
|
+
}, /* @__PURE__ */ import_react23.default.createElement("path", {
|
|
938
859
|
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"
|
|
939
|
-
}),
|
|
860
|
+
}), /* @__PURE__ */ import_react23.default.createElement("path", {
|
|
940
861
|
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"
|
|
941
862
|
})));
|
|
942
863
|
};
|
|
943
864
|
|
|
944
865
|
// src/components/Toolbar/icons/Arrow.tsx
|
|
945
|
-
var
|
|
866
|
+
var import_react24 = __toESM(require("react"));
|
|
946
867
|
var Arrow = (props) => {
|
|
947
868
|
const stroke = getStroke(props);
|
|
948
|
-
return
|
|
869
|
+
return /* @__PURE__ */ import_react24.default.createElement("svg", {
|
|
949
870
|
viewBox: "0 0 24 24"
|
|
950
|
-
},
|
|
871
|
+
}, /* @__PURE__ */ import_react24.default.createElement("path", {
|
|
951
872
|
fill: stroke,
|
|
952
873
|
d: "M19 5v6l-2.647-2.646L5.99 18.718l-.708-.708L15.645 7.646 13 5h6Z"
|
|
953
874
|
}));
|
|
954
875
|
};
|
|
955
876
|
|
|
956
877
|
// src/components/Toolbar/icons/Circle.tsx
|
|
957
|
-
var
|
|
878
|
+
var import_react25 = __toESM(require("react"));
|
|
958
879
|
var Circle = (props) => {
|
|
959
880
|
const stroke = getStroke(props);
|
|
960
|
-
return
|
|
881
|
+
return /* @__PURE__ */ import_react25.default.createElement("svg", {
|
|
961
882
|
viewBox: "0 0 24 24"
|
|
962
|
-
},
|
|
883
|
+
}, /* @__PURE__ */ import_react25.default.createElement("rect", {
|
|
963
884
|
width: "15",
|
|
964
885
|
height: "15",
|
|
965
886
|
x: "4.5",
|
|
@@ -971,40 +892,40 @@ var Circle = (props) => {
|
|
|
971
892
|
};
|
|
972
893
|
|
|
973
894
|
// src/components/Toolbar/icons/Clean.tsx
|
|
974
|
-
var
|
|
895
|
+
var import_react26 = __toESM(require("react"));
|
|
975
896
|
var Clean = (props) => {
|
|
976
897
|
const stroke = getStroke(props);
|
|
977
|
-
return
|
|
898
|
+
return /* @__PURE__ */ import_react26.default.createElement("svg", {
|
|
978
899
|
viewBox: "0 0 24 24"
|
|
979
|
-
},
|
|
900
|
+
}, /* @__PURE__ */ import_react26.default.createElement("path", {
|
|
980
901
|
fill: stroke,
|
|
981
902
|
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"
|
|
982
903
|
}));
|
|
983
904
|
};
|
|
984
905
|
|
|
985
906
|
// src/components/Toolbar/icons/Clicker.tsx
|
|
986
|
-
var
|
|
907
|
+
var import_react27 = __toESM(require("react"));
|
|
987
908
|
var Clicker = (props) => {
|
|
988
909
|
const stroke = getStroke(props);
|
|
989
|
-
return
|
|
910
|
+
return /* @__PURE__ */ import_react27.default.createElement("svg", {
|
|
990
911
|
viewBox: "0 0 24 24"
|
|
991
|
-
},
|
|
912
|
+
}, /* @__PURE__ */ import_react27.default.createElement("g", {
|
|
992
913
|
fill: "none"
|
|
993
|
-
},
|
|
914
|
+
}, /* @__PURE__ */ import_react27.default.createElement("path", {
|
|
994
915
|
d: "M0 0h24v24H0z"
|
|
995
|
-
}),
|
|
916
|
+
}), /* @__PURE__ */ import_react27.default.createElement("path", {
|
|
996
917
|
fill: stroke,
|
|
997
918
|
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"
|
|
998
919
|
})));
|
|
999
920
|
};
|
|
1000
921
|
|
|
1001
922
|
// src/components/Toolbar/icons/Collapse.tsx
|
|
1002
|
-
var
|
|
923
|
+
var import_react28 = __toESM(require("react"));
|
|
1003
924
|
var Collapse = (props) => {
|
|
1004
925
|
const stroke = getStroke(props);
|
|
1005
|
-
return
|
|
926
|
+
return /* @__PURE__ */ import_react28.default.createElement("svg", {
|
|
1006
927
|
viewBox: "0 0 24 24"
|
|
1007
|
-
},
|
|
928
|
+
}, /* @__PURE__ */ import_react28.default.createElement("path", {
|
|
1008
929
|
fill: "none",
|
|
1009
930
|
stroke,
|
|
1010
931
|
d: "m8 10-2 2 2 2m10-8H6m12 12H6m12-4h-8m8-4h-8"
|
|
@@ -1012,12 +933,12 @@ var Collapse = (props) => {
|
|
|
1012
933
|
};
|
|
1013
934
|
|
|
1014
935
|
// src/components/Toolbar/icons/Diamond.tsx
|
|
1015
|
-
var
|
|
936
|
+
var import_react29 = __toESM(require("react"));
|
|
1016
937
|
var Diamond = (props) => {
|
|
1017
938
|
const stroke = getStroke(props);
|
|
1018
|
-
return
|
|
939
|
+
return /* @__PURE__ */ import_react29.default.createElement("svg", {
|
|
1019
940
|
viewBox: "0 0 24 24"
|
|
1020
|
-
},
|
|
941
|
+
}, /* @__PURE__ */ import_react29.default.createElement("path", {
|
|
1021
942
|
fill: "none",
|
|
1022
943
|
stroke,
|
|
1023
944
|
d: "M4.222 12 12 4.222 19.778 12 12 19.778z"
|
|
@@ -1025,12 +946,12 @@ var Diamond = (props) => {
|
|
|
1025
946
|
};
|
|
1026
947
|
|
|
1027
948
|
// src/components/Toolbar/icons/Down.tsx
|
|
1028
|
-
var
|
|
949
|
+
var import_react30 = __toESM(require("react"));
|
|
1029
950
|
var Down = (props) => {
|
|
1030
951
|
const stroke = getStroke(props);
|
|
1031
|
-
return
|
|
952
|
+
return /* @__PURE__ */ import_react30.default.createElement("svg", {
|
|
1032
953
|
viewBox: "0 0 24 24"
|
|
1033
|
-
},
|
|
954
|
+
}, /* @__PURE__ */ import_react30.default.createElement("path", {
|
|
1034
955
|
fill: "none",
|
|
1035
956
|
stroke,
|
|
1036
957
|
d: "m16 13-2 2-2 2-2-2-2-2m8-6-2 2-2 2-2-2-2-2"
|
|
@@ -1038,24 +959,24 @@ var Down = (props) => {
|
|
|
1038
959
|
};
|
|
1039
960
|
|
|
1040
961
|
// src/components/Toolbar/icons/Eraser.tsx
|
|
1041
|
-
var
|
|
962
|
+
var import_react31 = __toESM(require("react"));
|
|
1042
963
|
var Eraser = (props) => {
|
|
1043
964
|
const stroke = getStroke(props);
|
|
1044
|
-
return
|
|
965
|
+
return /* @__PURE__ */ import_react31.default.createElement("svg", {
|
|
1045
966
|
viewBox: "0 0 24 24"
|
|
1046
|
-
},
|
|
967
|
+
}, /* @__PURE__ */ import_react31.default.createElement("path", {
|
|
1047
968
|
fill: stroke,
|
|
1048
969
|
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"
|
|
1049
970
|
}));
|
|
1050
971
|
};
|
|
1051
972
|
|
|
1052
973
|
// src/components/Toolbar/icons/Expand.tsx
|
|
1053
|
-
var
|
|
974
|
+
var import_react32 = __toESM(require("react"));
|
|
1054
975
|
var Expand = (props) => {
|
|
1055
976
|
const stroke = getStroke(props);
|
|
1056
|
-
return
|
|
977
|
+
return /* @__PURE__ */ import_react32.default.createElement("svg", {
|
|
1057
978
|
viewBox: "0 0 24 24"
|
|
1058
|
-
},
|
|
979
|
+
}, /* @__PURE__ */ import_react32.default.createElement("path", {
|
|
1059
980
|
fill: "none",
|
|
1060
981
|
stroke,
|
|
1061
982
|
d: "m16 10 2 2-2 2M6 6h12M6 18h12M6 14h8m-8-4h8"
|
|
@@ -1063,36 +984,36 @@ var Expand = (props) => {
|
|
|
1063
984
|
};
|
|
1064
985
|
|
|
1065
986
|
// src/components/Toolbar/icons/Line.tsx
|
|
1066
|
-
var
|
|
987
|
+
var import_react33 = __toESM(require("react"));
|
|
1067
988
|
var Line = (props) => {
|
|
1068
989
|
const stroke = getStroke(props);
|
|
1069
|
-
return
|
|
990
|
+
return /* @__PURE__ */ import_react33.default.createElement("svg", {
|
|
1070
991
|
viewBox: "0 0 24 24"
|
|
1071
|
-
},
|
|
992
|
+
}, /* @__PURE__ */ import_react33.default.createElement("path", {
|
|
1072
993
|
fill: stroke,
|
|
1073
994
|
d: "m18.01 5.282.708.708L5.99 18.718l-.708-.708z"
|
|
1074
995
|
}));
|
|
1075
996
|
};
|
|
1076
997
|
|
|
1077
998
|
// src/components/Toolbar/icons/Pencil.tsx
|
|
1078
|
-
var
|
|
999
|
+
var import_react34 = __toESM(require("react"));
|
|
1079
1000
|
var Pencil = (props) => {
|
|
1080
1001
|
const stroke = getStroke(props);
|
|
1081
|
-
return
|
|
1002
|
+
return /* @__PURE__ */ import_react34.default.createElement("svg", {
|
|
1082
1003
|
viewBox: "0 0 24 24"
|
|
1083
|
-
},
|
|
1004
|
+
}, /* @__PURE__ */ import_react34.default.createElement("path", {
|
|
1084
1005
|
fill: stroke,
|
|
1085
1006
|
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"
|
|
1086
1007
|
}));
|
|
1087
1008
|
};
|
|
1088
1009
|
|
|
1089
1010
|
// src/components/Toolbar/icons/Rectangle.tsx
|
|
1090
|
-
var
|
|
1011
|
+
var import_react35 = __toESM(require("react"));
|
|
1091
1012
|
var Rectangle = (props) => {
|
|
1092
1013
|
const stroke = getStroke(props);
|
|
1093
|
-
return
|
|
1014
|
+
return /* @__PURE__ */ import_react35.default.createElement("svg", {
|
|
1094
1015
|
viewBox: "0 0 24 24"
|
|
1095
|
-
},
|
|
1016
|
+
}, /* @__PURE__ */ import_react35.default.createElement("path", {
|
|
1096
1017
|
fill: "none",
|
|
1097
1018
|
stroke,
|
|
1098
1019
|
d: "M5.5 5.5h13v13h-13z"
|
|
@@ -1100,24 +1021,24 @@ var Rectangle = (props) => {
|
|
|
1100
1021
|
};
|
|
1101
1022
|
|
|
1102
1023
|
// src/components/Toolbar/icons/Selector.tsx
|
|
1103
|
-
var
|
|
1024
|
+
var import_react36 = __toESM(require("react"));
|
|
1104
1025
|
var Selector = (props) => {
|
|
1105
1026
|
const stroke = getStroke(props);
|
|
1106
|
-
return
|
|
1027
|
+
return /* @__PURE__ */ import_react36.default.createElement("svg", {
|
|
1107
1028
|
viewBox: "0 0 24 24"
|
|
1108
|
-
},
|
|
1029
|
+
}, /* @__PURE__ */ import_react36.default.createElement("path", {
|
|
1109
1030
|
fill: stroke,
|
|
1110
1031
|
d: "m12 12 8 2.667-3.556 1.777L14.667 20 12 12Zm3-8v7.5h-1V5H5v9h6.5v1H4V4h11Z"
|
|
1111
1032
|
}));
|
|
1112
1033
|
};
|
|
1113
1034
|
|
|
1114
1035
|
// src/components/Toolbar/icons/SpeechBalloon.tsx
|
|
1115
|
-
var
|
|
1036
|
+
var import_react37 = __toESM(require("react"));
|
|
1116
1037
|
var SpeechBalloon = (props) => {
|
|
1117
1038
|
const stroke = getStroke(props);
|
|
1118
|
-
return
|
|
1039
|
+
return /* @__PURE__ */ import_react37.default.createElement("svg", {
|
|
1119
1040
|
viewBox: "0 0 24 24"
|
|
1120
|
-
},
|
|
1041
|
+
}, /* @__PURE__ */ import_react37.default.createElement("path", {
|
|
1121
1042
|
fill: "none",
|
|
1122
1043
|
stroke,
|
|
1123
1044
|
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"
|
|
@@ -1125,12 +1046,12 @@ var SpeechBalloon = (props) => {
|
|
|
1125
1046
|
};
|
|
1126
1047
|
|
|
1127
1048
|
// src/components/Toolbar/icons/Star.tsx
|
|
1128
|
-
var
|
|
1049
|
+
var import_react38 = __toESM(require("react"));
|
|
1129
1050
|
var Star = (props) => {
|
|
1130
1051
|
const stroke = getStroke(props);
|
|
1131
|
-
return
|
|
1052
|
+
return /* @__PURE__ */ import_react38.default.createElement("svg", {
|
|
1132
1053
|
viewBox: "0 0 24 24"
|
|
1133
|
-
},
|
|
1054
|
+
}, /* @__PURE__ */ import_react38.default.createElement("path", {
|
|
1134
1055
|
fill: "none",
|
|
1135
1056
|
stroke,
|
|
1136
1057
|
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"
|
|
@@ -1138,24 +1059,24 @@ var Star = (props) => {
|
|
|
1138
1059
|
};
|
|
1139
1060
|
|
|
1140
1061
|
// src/components/Toolbar/icons/Text.tsx
|
|
1141
|
-
var
|
|
1062
|
+
var import_react39 = __toESM(require("react"));
|
|
1142
1063
|
var Text = (props) => {
|
|
1143
1064
|
const stroke = getStroke(props);
|
|
1144
|
-
return
|
|
1065
|
+
return /* @__PURE__ */ import_react39.default.createElement("svg", {
|
|
1145
1066
|
viewBox: "0 0 24 24"
|
|
1146
|
-
},
|
|
1067
|
+
}, /* @__PURE__ */ import_react39.default.createElement("path", {
|
|
1147
1068
|
fill: stroke,
|
|
1148
1069
|
d: "M18.5 5.5V8h-1V6.5H13v11h2v1H9v-1h2v-11H6.5V8h-1V5.5h13Z"
|
|
1149
1070
|
}));
|
|
1150
1071
|
};
|
|
1151
1072
|
|
|
1152
1073
|
// src/components/Toolbar/icons/Triangle.tsx
|
|
1153
|
-
var
|
|
1074
|
+
var import_react40 = __toESM(require("react"));
|
|
1154
1075
|
var Triangle = (props) => {
|
|
1155
1076
|
const stroke = getStroke(props);
|
|
1156
|
-
return
|
|
1077
|
+
return /* @__PURE__ */ import_react40.default.createElement("svg", {
|
|
1157
1078
|
viewBox: "0 0 24 24"
|
|
1158
|
-
},
|
|
1079
|
+
}, /* @__PURE__ */ import_react40.default.createElement("path", {
|
|
1159
1080
|
fill: "none",
|
|
1160
1081
|
stroke,
|
|
1161
1082
|
d: "M12 6.008 19.138 18.5H4.862L12 6.008Z"
|
|
@@ -1163,12 +1084,12 @@ var Triangle = (props) => {
|
|
|
1163
1084
|
};
|
|
1164
1085
|
|
|
1165
1086
|
// src/components/Toolbar/icons/Up.tsx
|
|
1166
|
-
var
|
|
1087
|
+
var import_react41 = __toESM(require("react"));
|
|
1167
1088
|
var Up = (props) => {
|
|
1168
1089
|
const stroke = getStroke(props);
|
|
1169
|
-
return
|
|
1090
|
+
return /* @__PURE__ */ import_react41.default.createElement("svg", {
|
|
1170
1091
|
viewBox: "0 0 24 24"
|
|
1171
|
-
},
|
|
1092
|
+
}, /* @__PURE__ */ import_react41.default.createElement("path", {
|
|
1172
1093
|
fill: "none",
|
|
1173
1094
|
stroke,
|
|
1174
1095
|
d: "m16 11-2-2-2-2-2 2-2 2m8 6-2-2-2-2-2 2-2 2"
|
|
@@ -1177,35 +1098,35 @@ var Up = (props) => {
|
|
|
1177
1098
|
|
|
1178
1099
|
// src/components/Toolbar/icons/index.ts
|
|
1179
1100
|
var Icons = {
|
|
1180
|
-
Clicker: (0,
|
|
1181
|
-
Collapse: (0,
|
|
1182
|
-
Eraser: (0,
|
|
1183
|
-
Expand: (0,
|
|
1184
|
-
Pencil: (0,
|
|
1185
|
-
Selector: (0,
|
|
1186
|
-
Rectangle: (0,
|
|
1187
|
-
Text: (0,
|
|
1188
|
-
Apps: (0,
|
|
1189
|
-
Clean: (0,
|
|
1190
|
-
Circle: (0,
|
|
1191
|
-
Line: (0,
|
|
1192
|
-
Arrow: (0,
|
|
1193
|
-
Star: (0,
|
|
1194
|
-
Diamond: (0,
|
|
1195
|
-
SpeechBalloon: (0,
|
|
1196
|
-
Triangle: (0,
|
|
1197
|
-
Up: (0,
|
|
1198
|
-
Down: (0,
|
|
1101
|
+
Clicker: (0, import_react42.memo)(Clicker),
|
|
1102
|
+
Collapse: (0, import_react42.memo)(Collapse),
|
|
1103
|
+
Eraser: (0, import_react42.memo)(Eraser),
|
|
1104
|
+
Expand: (0, import_react42.memo)(Expand),
|
|
1105
|
+
Pencil: (0, import_react42.memo)(Pencil),
|
|
1106
|
+
Selector: (0, import_react42.memo)(Selector),
|
|
1107
|
+
Rectangle: (0, import_react42.memo)(Rectangle),
|
|
1108
|
+
Text: (0, import_react42.memo)(Text),
|
|
1109
|
+
Apps: (0, import_react42.memo)(Apps),
|
|
1110
|
+
Clean: (0, import_react42.memo)(Clean),
|
|
1111
|
+
Circle: (0, import_react42.memo)(Circle),
|
|
1112
|
+
Line: (0, import_react42.memo)(Line),
|
|
1113
|
+
Arrow: (0, import_react42.memo)(Arrow),
|
|
1114
|
+
Star: (0, import_react42.memo)(Star),
|
|
1115
|
+
Diamond: (0, import_react42.memo)(Diamond),
|
|
1116
|
+
SpeechBalloon: (0, import_react42.memo)(SpeechBalloon),
|
|
1117
|
+
Triangle: (0, import_react42.memo)(Triangle),
|
|
1118
|
+
Up: (0, import_react42.memo)(Up),
|
|
1119
|
+
Down: (0, import_react42.memo)(Down)
|
|
1199
1120
|
};
|
|
1200
1121
|
|
|
1201
1122
|
// src/components/Toolbar/components/Button.tsx
|
|
1202
1123
|
var import_clsx4 = __toESM(require("clsx"));
|
|
1203
|
-
var
|
|
1204
|
-
var
|
|
1205
|
-
var Button = (0,
|
|
1124
|
+
var import_react43 = __toESM(require("react"));
|
|
1125
|
+
var import_react44 = __toESM(require("@tippyjs/react"));
|
|
1126
|
+
var Button = (0, import_react43.forwardRef)((props, ref) => {
|
|
1206
1127
|
const { content, disabled, active, onClick, interactive, placement = "right", children } = props;
|
|
1207
|
-
const { writable, theme } = (0,
|
|
1208
|
-
return
|
|
1128
|
+
const { writable, theme } = (0, import_react43.useContext)(ToolbarContext);
|
|
1129
|
+
return /* @__PURE__ */ import_react43.default.createElement(import_react44.default, {
|
|
1209
1130
|
className: "fastboard-tip",
|
|
1210
1131
|
content,
|
|
1211
1132
|
interactive,
|
|
@@ -1215,7 +1136,7 @@ var Button = (0, import_react44.forwardRef)((props, ref) => {
|
|
|
1215
1136
|
offset: placement.includes("right") ? RightOffset : void 0,
|
|
1216
1137
|
delay: [1e3, 400],
|
|
1217
1138
|
duration: 300
|
|
1218
|
-
},
|
|
1139
|
+
}, /* @__PURE__ */ import_react43.default.createElement("button", {
|
|
1219
1140
|
ref,
|
|
1220
1141
|
className: (0, import_clsx4.default)("fastboard-toolbar-btn", theme, { active }),
|
|
1221
1142
|
onClick,
|
|
@@ -1227,9 +1148,9 @@ var Button = (0, import_react44.forwardRef)((props, ref) => {
|
|
|
1227
1148
|
function renderToolTip(text, hotkey) {
|
|
1228
1149
|
if (!(typeof hotkey === "string"))
|
|
1229
1150
|
return text;
|
|
1230
|
-
return
|
|
1151
|
+
return /* @__PURE__ */ import_react45.default.createElement("span", {
|
|
1231
1152
|
className: "fastboard-toolbar-tooltip"
|
|
1232
|
-
},
|
|
1153
|
+
}, /* @__PURE__ */ import_react45.default.createElement("span", null, text), /* @__PURE__ */ import_react45.default.createElement("span", {
|
|
1233
1154
|
className: "fastboard-toolbar-hotkey"
|
|
1234
1155
|
}, hotkey.toUpperCase()));
|
|
1235
1156
|
}
|
|
@@ -1237,18 +1158,18 @@ function ClickerButton() {
|
|
|
1237
1158
|
var _a;
|
|
1238
1159
|
const app = useFastboardApp();
|
|
1239
1160
|
const { t } = useTranslation();
|
|
1240
|
-
const { theme, icons, writable, setAppliance, memberState } = (0,
|
|
1241
|
-
const changeAppliance = (0,
|
|
1161
|
+
const { theme, icons, writable, setAppliance, memberState } = (0, import_react45.useContext)(ToolbarContext);
|
|
1162
|
+
const changeAppliance = (0, import_react45.useCallback)(() => setAppliance(import_white_web_sdk.ApplianceNames.clicker), [setAppliance]);
|
|
1242
1163
|
const shortcut = (_a = app.hotKeys) == null ? void 0 : _a.changeToClick;
|
|
1243
1164
|
const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1244
1165
|
const active = appliance === import_white_web_sdk.ApplianceNames.clicker;
|
|
1245
1166
|
const disabled = !writable;
|
|
1246
|
-
return
|
|
1167
|
+
return /* @__PURE__ */ import_react45.default.createElement(Button, {
|
|
1247
1168
|
content: renderToolTip(t("clicker"), shortcut),
|
|
1248
1169
|
onClick: changeAppliance,
|
|
1249
1170
|
active
|
|
1250
|
-
},
|
|
1251
|
-
fallback:
|
|
1171
|
+
}, /* @__PURE__ */ import_react45.default.createElement(Icon, {
|
|
1172
|
+
fallback: /* @__PURE__ */ import_react45.default.createElement(Icons.Clicker, {
|
|
1252
1173
|
theme,
|
|
1253
1174
|
active
|
|
1254
1175
|
}),
|
|
@@ -1259,18 +1180,18 @@ function ClickerButton() {
|
|
|
1259
1180
|
function SelectorButton() {
|
|
1260
1181
|
const app = useFastboardApp();
|
|
1261
1182
|
const { t } = useTranslation();
|
|
1262
|
-
const { theme, icons, writable, setAppliance, memberState } = (0,
|
|
1263
|
-
const changeAppliance = (0,
|
|
1183
|
+
const { theme, icons, writable, setAppliance, memberState } = (0, import_react45.useContext)(ToolbarContext);
|
|
1184
|
+
const changeAppliance = (0, import_react45.useCallback)(() => setAppliance(import_white_web_sdk.ApplianceNames.selector), [setAppliance]);
|
|
1264
1185
|
const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1265
1186
|
const active = appliance === import_white_web_sdk.ApplianceNames.selector;
|
|
1266
1187
|
const disabled = !writable;
|
|
1267
1188
|
const shortcut = (app.hotKeys || defaultHotKeys).changeToSelector;
|
|
1268
|
-
return
|
|
1189
|
+
return /* @__PURE__ */ import_react45.default.createElement(Button, {
|
|
1269
1190
|
content: renderToolTip(t("selector"), shortcut),
|
|
1270
1191
|
onClick: changeAppliance,
|
|
1271
1192
|
active
|
|
1272
|
-
},
|
|
1273
|
-
fallback:
|
|
1193
|
+
}, /* @__PURE__ */ import_react45.default.createElement(Icon, {
|
|
1194
|
+
fallback: /* @__PURE__ */ import_react45.default.createElement(Icons.Selector, {
|
|
1274
1195
|
theme,
|
|
1275
1196
|
active
|
|
1276
1197
|
}),
|
|
@@ -1281,18 +1202,18 @@ function SelectorButton() {
|
|
|
1281
1202
|
function EraserButton() {
|
|
1282
1203
|
const app = useFastboardApp();
|
|
1283
1204
|
const { t } = useTranslation();
|
|
1284
|
-
const { theme, icons, writable, setAppliance, memberState } = (0,
|
|
1285
|
-
const changeAppliance = (0,
|
|
1205
|
+
const { theme, icons, writable, setAppliance, memberState } = (0, import_react45.useContext)(ToolbarContext);
|
|
1206
|
+
const changeAppliance = (0, import_react45.useCallback)(() => setAppliance(import_white_web_sdk.ApplianceNames.eraser), [setAppliance]);
|
|
1286
1207
|
const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1287
1208
|
const active = appliance === import_white_web_sdk.ApplianceNames.eraser;
|
|
1288
1209
|
const disabled = !writable;
|
|
1289
1210
|
const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToEraser;
|
|
1290
|
-
return
|
|
1211
|
+
return /* @__PURE__ */ import_react45.default.createElement(Button, {
|
|
1291
1212
|
content: renderToolTip(t("eraser"), shortcut),
|
|
1292
1213
|
onClick: changeAppliance,
|
|
1293
1214
|
active
|
|
1294
|
-
},
|
|
1295
|
-
fallback:
|
|
1215
|
+
}, /* @__PURE__ */ import_react45.default.createElement(Icon, {
|
|
1216
|
+
fallback: /* @__PURE__ */ import_react45.default.createElement(Icons.Eraser, {
|
|
1296
1217
|
theme,
|
|
1297
1218
|
active
|
|
1298
1219
|
}),
|
|
@@ -1302,13 +1223,13 @@ function EraserButton() {
|
|
|
1302
1223
|
}
|
|
1303
1224
|
function CleanButton() {
|
|
1304
1225
|
const { t } = useTranslation();
|
|
1305
|
-
const { theme, icons, writable, cleanCurrentScene } = (0,
|
|
1226
|
+
const { theme, icons, writable, cleanCurrentScene } = (0, import_react45.useContext)(ToolbarContext);
|
|
1306
1227
|
const disabled = !writable;
|
|
1307
|
-
return
|
|
1228
|
+
return /* @__PURE__ */ import_react45.default.createElement(Button, {
|
|
1308
1229
|
content: t("clean"),
|
|
1309
1230
|
onClick: cleanCurrentScene
|
|
1310
|
-
},
|
|
1311
|
-
fallback:
|
|
1231
|
+
}, /* @__PURE__ */ import_react45.default.createElement(Icon, {
|
|
1232
|
+
fallback: /* @__PURE__ */ import_react45.default.createElement(Icons.Clean, {
|
|
1312
1233
|
theme
|
|
1313
1234
|
}),
|
|
1314
1235
|
src: disabled ? icons == null ? void 0 : icons.cleanIconDisable : icons == null ? void 0 : icons.cleanIcon,
|
|
@@ -1317,8 +1238,8 @@ function CleanButton() {
|
|
|
1317
1238
|
}
|
|
1318
1239
|
|
|
1319
1240
|
// src/components/Toolbar/components/AppsButton.tsx
|
|
1320
|
-
var
|
|
1321
|
-
var
|
|
1241
|
+
var import_react46 = __toESM(require("@tippyjs/react"));
|
|
1242
|
+
var import_react47 = __toESM(require("react"));
|
|
1322
1243
|
|
|
1323
1244
|
// src/components/Toolbar/components/assets/vscode.png
|
|
1324
1245
|
var vscode_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAAAXNSR0IArs4c6QAABnxJREFUWMPtWWlsVFUUPve+ZTY6HUoLpS1tEUrLVooKLgWVTQGVfRWhiUpAECGGEgOJShRj9I9EjSEQIMhSBIKBQoBgQCMEKEuo1LKV7rRl2pm201nf3Hv8MdNKO/NmBqWFGE7Oj8nkzb3f+8653zn3DEFEePyMwmNpT2D9D2CJnb1BpcWx/WKdTYoZ01f/SpKoE0kkvyKdehKL7jat++WapalZlOS4wS+aNGRiMp2QLHWTySODde5Ow/r8YpvDCZxRgj2HjCKEAqHdZJiYIk5KEYwa2tWwjhXVfn3iptujACIwhQLEZWYT0oqDUINExvcRJqeKsTraRbDyCiq/P3Wbcw4AiByYVwCMzRz1Dyz/5kQn0rHJ4tsDRG37nHvIKY+Im34v3XGuDDm2fuODhoiAAU/bPSz/Dnq8fFmmprMEQmH8q+M3t54t9TLOEH3OETkCB1ALCnJ+slzpLIFwetj6I8Uni+ugfVYQBB9TIZLFw7FTYDU7ldwDf14st0Dg5oiICIAMgaiGPmI5vWF2SQJ5KkYTFpPZ5vpwb+H12iYIRkgrWxDiZGEkKs8Rfzhv3n7FQgnJyeq+ZESsJKimYIXFsXzXlSqrXe0B3prqXJ2tgBgGpLzC8IvTdVsKGrwK83i8mwsaVuRXm+1K0OWKa5rf2XGp3NLSluCBzgGMBu26qcM1oogIQR3Cwvr8dO3P1xoZIgPCgDDEP8ptc/ZWnKvsyMf50obFOy/fa3KELCJkcKJp9+LscYMTfaypeRhYR240ImfY3u7ZXEsPVW0qqGetdB+7VvNB3lVri4txVHMEMm9E8racEUkxegTg4BOLoB4O1ursXoTQQJ49infjWfPy/Kp6u5J3vnTNvit2hxPVLUqn+WrG0LWTMrSS0Hbc1KjiEE4g5g+LkQW6/lStx8sChe90ie2Nantz1U2ueECQgApAKZAOqUzS46O+nZPVN9bQQQVUpSsSgZg5xGTS0dzjdXaXO3ABq5NDj77YWAPORqAiUBGoQNqQETrr2T5rJ6YbNB1X5qAKC8MG0Wfj+hk3T02MNmgYQjAnPDoBoxM483KmcKYwzhiCTitvmD5kw9TBgZh8sEJ4pE3zM4n6n2b0iTeqyinqTBjXD4Gi4kHG+sXq894dOevpJNUwqahD0OCGKtXpcdq8OSmpMVpVTRJkHteP64zTshL2L83O6G0MsZoK8X5/wJrIFDCXoNIdZJ2aNIEpiZu6Iw3TjISoPwgPwtb12uaZP565VduE5hLusnGE4M7xwDXrtF13iu85Q2F6KEEsKLPM23zhbpOLUYkTEevLuN3qa1CCGOe3zM4Ze8rzCi2qHUzkGq8G63hR7YJtF+/ZnAwIJwKnIicSWiq5zRxicZvLs/pYde7xGruHBUQaWAiPhK28CxVLdl5usbv8QUJAQjkVUJCwqcbotSKQEAHdfbVhys7SEos7IIjqFsBYR1jbzpSu3l/oVrztmSBABE7lcZmpv60Y+eWrCYIg+LvhYMiK6hyTd5QeLGqMMIbh28DP8os8jAVSKIli7oQBK8b2FyjJGa4zaYWVR+863YpaajY63O8frrxQ7fhkTLxOom0C8S9nENOzkgBIu9dHiI/W57333KrxaQL1F5mpA007ZiZH6WTVaCIwxrdcrJ+ys6TM6ob/eBK/mZW58PkU9PW6AEjIy+k9T6waPTottsOTL6V2Ozg/tZdRGwIZ53i5qmXClr+OFJlDXuMiuL5yxA1Hizf+elugZOXY/rmvpYdomu9Y3DP3lJZZXSEuXOB1U2SJaUMJISrSgYULoyO6VRdWN8qCkBEfFTYPamzKnL1lhTWO4BKEjCgewpWEAcMIJWqX3qJF0RHJaWaiKRJMANA7Sjq0oG92ahQCCZo3vr4UH1apjty668R9c1PeHGhiAB3KOSJy7t9YFVbnjd0MsrBterJJK2y9VH//67d95AhqNzKJduaQUhbId68nrhnVixDappX+e75/OhJU4smMNE3nDikpIevH9Y7RCx+fuMsY950pisB9oDrKANVLdPYA6aMsuStmpytf6BmrF5cdrnZ7FETgiAQA4b4oEmqUydw0MWeQHG8Qum6ku2BYTA+d+Na+ima7AzgIiIgEAIBSk4YszJAWDZRjtF0+pPSPTytapu0qMVuaJYEkpA/rqSc5GeL8DNmkoY9y0gwAN+tdn542W6HbvEGG2WmSQXoMBuBP/lx5Auuxs78BCY9M0wbXBY0AAAAASUVORK5CYII=";
|
|
@@ -1331,21 +1252,21 @@ var countdown_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyC
|
|
|
1331
1252
|
|
|
1332
1253
|
// src/components/Toolbar/components/AppsButton.tsx
|
|
1333
1254
|
function AppsButton({ content, onClick }) {
|
|
1334
|
-
const { theme, icons, writable } = (0,
|
|
1255
|
+
const { theme, icons, writable } = (0, import_react47.useContext)(ToolbarContext);
|
|
1335
1256
|
const disabled = !writable;
|
|
1336
|
-
const button =
|
|
1257
|
+
const button = /* @__PURE__ */ import_react47.default.createElement(Button, {
|
|
1337
1258
|
content: "Apps",
|
|
1338
1259
|
onClick
|
|
1339
|
-
},
|
|
1340
|
-
fallback:
|
|
1260
|
+
}, /* @__PURE__ */ import_react47.default.createElement(Icon, {
|
|
1261
|
+
fallback: /* @__PURE__ */ import_react47.default.createElement(Icons.Apps, {
|
|
1341
1262
|
theme
|
|
1342
1263
|
}),
|
|
1343
1264
|
src: disabled ? icons == null ? void 0 : icons.appsIconDisable : icons == null ? void 0 : icons.appsIcon,
|
|
1344
1265
|
alt: "[apps]"
|
|
1345
1266
|
}));
|
|
1346
|
-
return content === false ? button :
|
|
1267
|
+
return content === false ? button : /* @__PURE__ */ import_react47.default.createElement("span", {
|
|
1347
1268
|
className: "fastboard-toolbar-btn-interactive"
|
|
1348
|
-
},
|
|
1269
|
+
}, /* @__PURE__ */ import_react47.default.createElement(import_react46.default, {
|
|
1349
1270
|
className: "fastboard-tip",
|
|
1350
1271
|
content: renderAppsButtonContent(content),
|
|
1351
1272
|
theme,
|
|
@@ -1357,25 +1278,25 @@ function AppsButton({ content, onClick }) {
|
|
|
1357
1278
|
}, button));
|
|
1358
1279
|
}
|
|
1359
1280
|
function renderAppsButtonContent(content) {
|
|
1360
|
-
return
|
|
1281
|
+
return /* @__PURE__ */ import_react47.default.createElement("div", {
|
|
1361
1282
|
className: "fastboard-toolbar-panel apps"
|
|
1362
|
-
},
|
|
1283
|
+
}, /* @__PURE__ */ import_react47.default.createElement("div", {
|
|
1363
1284
|
className: "fastboard-toolbar-apps"
|
|
1364
|
-
}, content ||
|
|
1285
|
+
}, content || /* @__PURE__ */ import_react47.default.createElement(DefaultApps, null)));
|
|
1365
1286
|
}
|
|
1366
1287
|
function DefaultApps() {
|
|
1367
1288
|
const app = useFastboardApp();
|
|
1368
|
-
return
|
|
1289
|
+
return /* @__PURE__ */ import_react47.default.createElement(import_react47.default.Fragment, null, /* @__PURE__ */ import_react47.default.createElement(AppIcon, {
|
|
1369
1290
|
title: "Code Editor",
|
|
1370
1291
|
src: vscode_default,
|
|
1371
1292
|
alt: "[code editor]",
|
|
1372
1293
|
onClick: app == null ? void 0 : app.insertCodeEditor.bind(app)
|
|
1373
|
-
}),
|
|
1294
|
+
}), /* @__PURE__ */ import_react47.default.createElement(AppIcon, {
|
|
1374
1295
|
title: "GeoGebra",
|
|
1375
1296
|
src: geogebra_default,
|
|
1376
1297
|
alt: "[geogebra]",
|
|
1377
1298
|
onClick: app == null ? void 0 : app.insertGeoGebra.bind(app)
|
|
1378
|
-
}),
|
|
1299
|
+
}), /* @__PURE__ */ import_react47.default.createElement(AppIcon, {
|
|
1379
1300
|
title: "Countdown",
|
|
1380
1301
|
src: countdown_default,
|
|
1381
1302
|
alt: "[countdown]",
|
|
@@ -1383,29 +1304,29 @@ function DefaultApps() {
|
|
|
1383
1304
|
}));
|
|
1384
1305
|
}
|
|
1385
1306
|
function AppIcon({ title, src, alt, onClick }) {
|
|
1386
|
-
return
|
|
1307
|
+
return /* @__PURE__ */ import_react47.default.createElement("span", {
|
|
1387
1308
|
className: "fastboard-toolbar-app-icon"
|
|
1388
|
-
},
|
|
1309
|
+
}, /* @__PURE__ */ import_react47.default.createElement(Button, {
|
|
1389
1310
|
placement: "top",
|
|
1390
1311
|
content: title,
|
|
1391
1312
|
onClick
|
|
1392
|
-
},
|
|
1313
|
+
}, /* @__PURE__ */ import_react47.default.createElement("img", {
|
|
1393
1314
|
src,
|
|
1394
1315
|
alt,
|
|
1395
1316
|
title
|
|
1396
|
-
})),
|
|
1317
|
+
})), /* @__PURE__ */ import_react47.default.createElement("span", {
|
|
1397
1318
|
className: "fastboard-toolbar-app-icon-text"
|
|
1398
1319
|
}, title));
|
|
1399
1320
|
}
|
|
1400
1321
|
|
|
1401
1322
|
// src/components/Toolbar/components/PencilButton.tsx
|
|
1402
|
-
var
|
|
1403
|
-
var
|
|
1323
|
+
var import_react51 = __toESM(require("@tippyjs/react"));
|
|
1324
|
+
var import_react52 = __toESM(require("react"));
|
|
1404
1325
|
var import_white_web_sdk2 = require("white-web-sdk");
|
|
1405
1326
|
|
|
1406
1327
|
// src/components/Toolbar/components/ColorBox.tsx
|
|
1407
1328
|
var import_clsx5 = __toESM(require("clsx"));
|
|
1408
|
-
var
|
|
1329
|
+
var import_react48 = __toESM(require("react"));
|
|
1409
1330
|
var colors = {
|
|
1410
1331
|
"#E02020": [224, 32, 32],
|
|
1411
1332
|
"#F7B500": [247, 181, 0],
|
|
@@ -1418,20 +1339,20 @@ var colors = {
|
|
|
1418
1339
|
};
|
|
1419
1340
|
var colorKeys = Object.keys(colors);
|
|
1420
1341
|
function ColorBox() {
|
|
1421
|
-
const { theme, memberState, setStrokeColor, writable } = (0,
|
|
1342
|
+
const { theme, memberState, setStrokeColor, writable } = (0, import_react48.useContext)(ToolbarContext);
|
|
1422
1343
|
const strokeColor = memberState == null ? void 0 : memberState.strokeColor;
|
|
1423
1344
|
const disabled = !writable;
|
|
1424
|
-
return
|
|
1345
|
+
return /* @__PURE__ */ import_react48.default.createElement("div", {
|
|
1425
1346
|
className: (0, import_clsx5.default)("fastboard-toolbar-color-box", theme)
|
|
1426
|
-
}, colorKeys.map((key) =>
|
|
1347
|
+
}, colorKeys.map((key) => /* @__PURE__ */ import_react48.default.createElement("div", {
|
|
1427
1348
|
key,
|
|
1428
1349
|
className: (0, import_clsx5.default)("fastboard-toolbar-color-item", theme),
|
|
1429
1350
|
onClick: () => setStrokeColor(colors[key])
|
|
1430
|
-
},
|
|
1351
|
+
}, /* @__PURE__ */ import_react48.default.createElement("div", {
|
|
1431
1352
|
className: (0, import_clsx5.default)("fastboard-toolbar-color-border", theme, {
|
|
1432
1353
|
active: strokeColor && isEqualArray(strokeColor, colors[key])
|
|
1433
1354
|
})
|
|
1434
|
-
},
|
|
1355
|
+
}, /* @__PURE__ */ import_react48.default.createElement("button", {
|
|
1435
1356
|
className: (0, import_clsx5.default)("fastboard-toolbar-color-btn"),
|
|
1436
1357
|
style: { background: key },
|
|
1437
1358
|
disabled,
|
|
@@ -1444,10 +1365,10 @@ function ColorBox() {
|
|
|
1444
1365
|
|
|
1445
1366
|
// src/components/Toolbar/components/CutLine.tsx
|
|
1446
1367
|
var import_clsx6 = __toESM(require("clsx"));
|
|
1447
|
-
var
|
|
1368
|
+
var import_react49 = __toESM(require("react"));
|
|
1448
1369
|
function CutLine() {
|
|
1449
|
-
const { theme } = (0,
|
|
1450
|
-
return
|
|
1370
|
+
const { theme } = (0, import_react49.useContext)(ToolbarContext);
|
|
1371
|
+
return /* @__PURE__ */ import_react49.default.createElement("span", {
|
|
1451
1372
|
className: (0, import_clsx6.default)(`${name4}-cut-line`, theme)
|
|
1452
1373
|
});
|
|
1453
1374
|
}
|
|
@@ -1455,12 +1376,12 @@ function CutLine() {
|
|
|
1455
1376
|
// src/components/Toolbar/components/Slider.tsx
|
|
1456
1377
|
var import_clsx7 = __toESM(require("clsx"));
|
|
1457
1378
|
var import_rc_slider = __toESM(require("rc-slider"));
|
|
1458
|
-
var
|
|
1379
|
+
var import_react50 = __toESM(require("react"));
|
|
1459
1380
|
function Slider() {
|
|
1460
|
-
const { theme, writable, memberState, setStrokeWidth } = (0,
|
|
1381
|
+
const { theme, writable, memberState, setStrokeWidth } = (0, import_react50.useContext)(ToolbarContext);
|
|
1461
1382
|
const { activeColor } = themes[theme];
|
|
1462
1383
|
const strokeWidth = (memberState == null ? void 0 : memberState.strokeWidth) || 0;
|
|
1463
|
-
return
|
|
1384
|
+
return /* @__PURE__ */ import_react50.default.createElement(import_rc_slider.default, {
|
|
1464
1385
|
disabled: !writable,
|
|
1465
1386
|
className: (0, import_clsx7.default)("fastboard-toolbar-slider", theme),
|
|
1466
1387
|
trackStyle: { background: activeColor },
|
|
@@ -1476,17 +1397,17 @@ function Slider() {
|
|
|
1476
1397
|
function PencilButton() {
|
|
1477
1398
|
const app = useFastboardApp();
|
|
1478
1399
|
const { t } = useTranslation();
|
|
1479
|
-
const { theme, icons, writable, setAppliance, memberState } = (0,
|
|
1480
|
-
const changeAppliance = (0,
|
|
1400
|
+
const { theme, icons, writable, setAppliance, memberState } = (0, import_react52.useContext)(ToolbarContext);
|
|
1401
|
+
const changeAppliance = (0, import_react52.useCallback)(() => {
|
|
1481
1402
|
setAppliance(import_white_web_sdk2.ApplianceNames.pencil);
|
|
1482
1403
|
}, [setAppliance]);
|
|
1483
1404
|
const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1484
1405
|
const active = appliance === import_white_web_sdk2.ApplianceNames.pencil;
|
|
1485
1406
|
const disabled = !writable;
|
|
1486
1407
|
const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToPencil;
|
|
1487
|
-
return
|
|
1408
|
+
return /* @__PURE__ */ import_react52.default.createElement("span", {
|
|
1488
1409
|
className: "fastboard-toolbar-btn-interactive"
|
|
1489
|
-
},
|
|
1410
|
+
}, /* @__PURE__ */ import_react52.default.createElement(import_react51.default, {
|
|
1490
1411
|
className: "fastboard-tip",
|
|
1491
1412
|
content: renderPencilButtonContent(),
|
|
1492
1413
|
theme,
|
|
@@ -1495,30 +1416,30 @@ function PencilButton() {
|
|
|
1495
1416
|
offset: RightOffset,
|
|
1496
1417
|
arrow: false,
|
|
1497
1418
|
interactive: true
|
|
1498
|
-
},
|
|
1419
|
+
}, /* @__PURE__ */ import_react52.default.createElement(Button, {
|
|
1499
1420
|
content: renderToolTip(t("pencil"), shortcut),
|
|
1500
1421
|
active,
|
|
1501
1422
|
onClick: changeAppliance
|
|
1502
|
-
},
|
|
1503
|
-
fallback:
|
|
1423
|
+
}, /* @__PURE__ */ import_react52.default.createElement(Icon, {
|
|
1424
|
+
fallback: /* @__PURE__ */ import_react52.default.createElement(Icons.Pencil, {
|
|
1504
1425
|
theme,
|
|
1505
1426
|
active
|
|
1506
1427
|
}),
|
|
1507
1428
|
src: disabled ? icons == null ? void 0 : icons.pencilIconDisable : icons == null ? void 0 : icons.pencilIcon,
|
|
1508
1429
|
alt: "[pencil]"
|
|
1509
|
-
}),
|
|
1430
|
+
}), /* @__PURE__ */ import_react52.default.createElement("span", {
|
|
1510
1431
|
className: "fastboard-toolbar-triangle"
|
|
1511
1432
|
}))));
|
|
1512
1433
|
}
|
|
1513
1434
|
function renderPencilButtonContent() {
|
|
1514
|
-
return
|
|
1435
|
+
return /* @__PURE__ */ import_react52.default.createElement("div", {
|
|
1515
1436
|
className: "fastboard-toolbar-panel pencil"
|
|
1516
|
-
},
|
|
1437
|
+
}, /* @__PURE__ */ import_react52.default.createElement(Slider, null), /* @__PURE__ */ import_react52.default.createElement(CutLine, null), /* @__PURE__ */ import_react52.default.createElement(ColorBox, null));
|
|
1517
1438
|
}
|
|
1518
1439
|
|
|
1519
1440
|
// src/components/Toolbar/components/ShapesButton.tsx
|
|
1520
|
-
var
|
|
1521
|
-
var
|
|
1441
|
+
var import_react53 = __toESM(require("@tippyjs/react"));
|
|
1442
|
+
var import_react54 = __toESM(require("react"));
|
|
1522
1443
|
var import_white_web_sdk4 = require("white-web-sdk");
|
|
1523
1444
|
|
|
1524
1445
|
// src/components/Toolbar/const.ts
|
|
@@ -1554,15 +1475,15 @@ var MinHeight = ItemHeight * 2 - 4;
|
|
|
1554
1475
|
var ShapeTypes = /* @__PURE__ */ new Set([...ApplianceShapes, ...Shapes]);
|
|
1555
1476
|
function ShapesButton() {
|
|
1556
1477
|
const { t } = useTranslation();
|
|
1557
|
-
const { theme, memberState } = (0,
|
|
1478
|
+
const { theme, memberState } = (0, import_react54.useContext)(ToolbarContext);
|
|
1558
1479
|
const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1559
1480
|
const shape = memberState == null ? void 0 : memberState.shapeType;
|
|
1560
1481
|
const key = appliance === import_white_web_sdk4.ApplianceNames.shape ? shape : appliance;
|
|
1561
1482
|
const active = ShapeTypes.has(key);
|
|
1562
1483
|
const CurrentIcon = ShapesMap[key] || Icons.Rectangle;
|
|
1563
|
-
return
|
|
1484
|
+
return /* @__PURE__ */ import_react54.default.createElement("span", {
|
|
1564
1485
|
className: "fastboard-toolbar-btn-interactive"
|
|
1565
|
-
},
|
|
1486
|
+
}, /* @__PURE__ */ import_react54.default.createElement(import_react53.default, {
|
|
1566
1487
|
className: "fastboard-tip",
|
|
1567
1488
|
content: renderShapesButtonContent(),
|
|
1568
1489
|
theme,
|
|
@@ -1571,31 +1492,31 @@ function ShapesButton() {
|
|
|
1571
1492
|
offset: RightOffset,
|
|
1572
1493
|
arrow: false,
|
|
1573
1494
|
interactive: true
|
|
1574
|
-
},
|
|
1495
|
+
}, /* @__PURE__ */ import_react54.default.createElement(Button, {
|
|
1575
1496
|
content: t("shape"),
|
|
1576
1497
|
active
|
|
1577
|
-
},
|
|
1498
|
+
}, /* @__PURE__ */ import_react54.default.createElement(CurrentIcon, {
|
|
1578
1499
|
theme,
|
|
1579
1500
|
active
|
|
1580
|
-
}),
|
|
1501
|
+
}), /* @__PURE__ */ import_react54.default.createElement("span", {
|
|
1581
1502
|
className: "fastboard-toolbar-triangle"
|
|
1582
1503
|
}))));
|
|
1583
1504
|
}
|
|
1584
1505
|
function renderShapesButtonContent() {
|
|
1585
|
-
return
|
|
1506
|
+
return /* @__PURE__ */ import_react54.default.createElement("div", {
|
|
1586
1507
|
className: "fastboard-toolbar-panel shapes"
|
|
1587
|
-
},
|
|
1508
|
+
}, /* @__PURE__ */ import_react54.default.createElement(ShapesBox, null), /* @__PURE__ */ import_react54.default.createElement(CutLine, null), /* @__PURE__ */ import_react54.default.createElement(Slider, null), /* @__PURE__ */ import_react54.default.createElement(CutLine, null), /* @__PURE__ */ import_react54.default.createElement(ColorBox, null));
|
|
1588
1509
|
}
|
|
1589
1510
|
function ShapesBox() {
|
|
1590
1511
|
const { t } = useTranslation();
|
|
1591
|
-
return
|
|
1512
|
+
return /* @__PURE__ */ import_react54.default.createElement("div", {
|
|
1592
1513
|
className: "fastboard-toolbar-shapes"
|
|
1593
|
-
}, ApplianceShapes.map((Appliance) =>
|
|
1514
|
+
}, ApplianceShapes.map((Appliance) => /* @__PURE__ */ import_react54.default.createElement(ApplianceShapeButton, {
|
|
1594
1515
|
key: Appliance,
|
|
1595
1516
|
content: t(Appliance),
|
|
1596
1517
|
Appliance,
|
|
1597
1518
|
Icon: ShapesMap[Appliance]
|
|
1598
|
-
})), Shapes.map((shape) =>
|
|
1519
|
+
})), Shapes.map((shape) => /* @__PURE__ */ import_react54.default.createElement(ShapeShapeButton, {
|
|
1599
1520
|
key: shape,
|
|
1600
1521
|
content: t(shape),
|
|
1601
1522
|
shape,
|
|
@@ -1603,53 +1524,53 @@ function ShapesBox() {
|
|
|
1603
1524
|
})));
|
|
1604
1525
|
}
|
|
1605
1526
|
function ApplianceShapeButton({ content, Appliance, Icon: Icon2 }) {
|
|
1606
|
-
const { theme, writable, setAppliance, memberState } = (0,
|
|
1527
|
+
const { theme, writable, setAppliance, memberState } = (0, import_react54.useContext)(ToolbarContext);
|
|
1607
1528
|
const current = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1608
1529
|
const disabled = !writable;
|
|
1609
|
-
return
|
|
1530
|
+
return /* @__PURE__ */ import_react54.default.createElement(Button, {
|
|
1610
1531
|
content,
|
|
1611
1532
|
disabled,
|
|
1612
1533
|
placement: "top",
|
|
1613
1534
|
onClick: () => setAppliance(Appliance)
|
|
1614
|
-
},
|
|
1535
|
+
}, /* @__PURE__ */ import_react54.default.createElement(Icon2, {
|
|
1615
1536
|
theme,
|
|
1616
1537
|
active: current === Appliance
|
|
1617
1538
|
}));
|
|
1618
1539
|
}
|
|
1619
1540
|
function ShapeShapeButton({ content, shape, Icon: Icon2 }) {
|
|
1620
|
-
const { theme, writable, setAppliance, memberState } = (0,
|
|
1541
|
+
const { theme, writable, setAppliance, memberState } = (0, import_react54.useContext)(ToolbarContext);
|
|
1621
1542
|
const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1622
1543
|
const current = appliance === import_white_web_sdk4.ApplianceNames.shape && (memberState == null ? void 0 : memberState.shapeType);
|
|
1623
1544
|
const disabled = !writable;
|
|
1624
|
-
return
|
|
1545
|
+
return /* @__PURE__ */ import_react54.default.createElement(Button, {
|
|
1625
1546
|
content,
|
|
1626
1547
|
disabled,
|
|
1627
1548
|
placement: "top",
|
|
1628
1549
|
onClick: () => setAppliance(import_white_web_sdk4.ApplianceNames.shape, shape)
|
|
1629
|
-
},
|
|
1550
|
+
}, /* @__PURE__ */ import_react54.default.createElement(Icon2, {
|
|
1630
1551
|
theme,
|
|
1631
1552
|
active: current === shape
|
|
1632
1553
|
}));
|
|
1633
1554
|
}
|
|
1634
1555
|
|
|
1635
1556
|
// src/components/Toolbar/components/TextButton.tsx
|
|
1636
|
-
var
|
|
1637
|
-
var
|
|
1557
|
+
var import_react55 = __toESM(require("@tippyjs/react"));
|
|
1558
|
+
var import_react56 = __toESM(require("react"));
|
|
1638
1559
|
var import_white_web_sdk5 = require("white-web-sdk");
|
|
1639
1560
|
function TextButton() {
|
|
1640
1561
|
const app = useFastboardApp();
|
|
1641
1562
|
const { t } = useTranslation();
|
|
1642
|
-
const { theme, icons, writable, setAppliance, memberState } = (0,
|
|
1643
|
-
const changeAppliance = (0,
|
|
1563
|
+
const { theme, icons, writable, setAppliance, memberState } = (0, import_react56.useContext)(ToolbarContext);
|
|
1564
|
+
const changeAppliance = (0, import_react56.useCallback)(() => {
|
|
1644
1565
|
setAppliance(import_white_web_sdk5.ApplianceNames.text);
|
|
1645
1566
|
}, [setAppliance]);
|
|
1646
1567
|
const appliance = memberState == null ? void 0 : memberState.currentApplianceName;
|
|
1647
1568
|
const active = appliance === import_white_web_sdk5.ApplianceNames.text;
|
|
1648
1569
|
const disabled = !writable;
|
|
1649
1570
|
const shortcut = ((app == null ? void 0 : app.hotKeys) || defaultHotKeys).changeToText;
|
|
1650
|
-
return
|
|
1571
|
+
return /* @__PURE__ */ import_react56.default.createElement("span", {
|
|
1651
1572
|
className: "fastboard-toolbar-btn-interactive"
|
|
1652
|
-
},
|
|
1573
|
+
}, /* @__PURE__ */ import_react56.default.createElement(import_react55.default, {
|
|
1653
1574
|
className: "fastboard-tip",
|
|
1654
1575
|
content: renderTextButtonContent(),
|
|
1655
1576
|
theme,
|
|
@@ -1658,53 +1579,53 @@ function TextButton() {
|
|
|
1658
1579
|
offset: RightOffset,
|
|
1659
1580
|
arrow: false,
|
|
1660
1581
|
interactive: true
|
|
1661
|
-
},
|
|
1582
|
+
}, /* @__PURE__ */ import_react56.default.createElement(Button, {
|
|
1662
1583
|
content: renderToolTip(t("text"), shortcut),
|
|
1663
1584
|
active,
|
|
1664
1585
|
onClick: changeAppliance
|
|
1665
|
-
},
|
|
1666
|
-
fallback:
|
|
1586
|
+
}, /* @__PURE__ */ import_react56.default.createElement(Icon, {
|
|
1587
|
+
fallback: /* @__PURE__ */ import_react56.default.createElement(Icons.Text, {
|
|
1667
1588
|
theme,
|
|
1668
1589
|
active
|
|
1669
1590
|
}),
|
|
1670
1591
|
src: disabled ? icons == null ? void 0 : icons.textIconDisable : icons == null ? void 0 : icons.textIcon,
|
|
1671
1592
|
alt: "[text]"
|
|
1672
|
-
}),
|
|
1593
|
+
}), /* @__PURE__ */ import_react56.default.createElement("span", {
|
|
1673
1594
|
className: "fastboard-toolbar-triangle"
|
|
1674
1595
|
}))));
|
|
1675
1596
|
}
|
|
1676
1597
|
function renderTextButtonContent() {
|
|
1677
|
-
return
|
|
1598
|
+
return /* @__PURE__ */ import_react56.default.createElement("div", {
|
|
1678
1599
|
className: "fastboard-toolbar-panel text"
|
|
1679
|
-
},
|
|
1600
|
+
}, /* @__PURE__ */ import_react56.default.createElement(ColorBox, null));
|
|
1680
1601
|
}
|
|
1681
1602
|
|
|
1682
1603
|
// src/components/Toolbar/components/UpDownButtons.tsx
|
|
1683
|
-
var
|
|
1604
|
+
var import_react57 = __toESM(require("react"));
|
|
1684
1605
|
function UpButton({ disabled, scrollTo }) {
|
|
1685
|
-
const { theme, icons } = (0,
|
|
1686
|
-
const scrollUp = (0,
|
|
1687
|
-
return
|
|
1606
|
+
const { theme, icons } = (0, import_react57.useContext)(ToolbarContext);
|
|
1607
|
+
const scrollUp = (0, import_react57.useCallback)(() => scrollTo(-ItemHeight), [scrollTo]);
|
|
1608
|
+
return /* @__PURE__ */ import_react57.default.createElement(import_react57.default.Fragment, null, /* @__PURE__ */ import_react57.default.createElement(Button, {
|
|
1688
1609
|
content: "Up",
|
|
1689
1610
|
disabled,
|
|
1690
1611
|
onClick: scrollUp
|
|
1691
|
-
},
|
|
1692
|
-
fallback:
|
|
1612
|
+
}, /* @__PURE__ */ import_react57.default.createElement(Icon, {
|
|
1613
|
+
fallback: /* @__PURE__ */ import_react57.default.createElement(Icons.Up, {
|
|
1693
1614
|
theme
|
|
1694
1615
|
}),
|
|
1695
1616
|
src: disabled ? icons == null ? void 0 : icons.upIconDisable : icons == null ? void 0 : icons.upIcon,
|
|
1696
1617
|
alt: "[up]"
|
|
1697
|
-
})),
|
|
1618
|
+
})), /* @__PURE__ */ import_react57.default.createElement(CutLine, null));
|
|
1698
1619
|
}
|
|
1699
1620
|
function DownButton({ disabled, scrollTo }) {
|
|
1700
|
-
const { theme, icons } = (0,
|
|
1701
|
-
const scrollDown = (0,
|
|
1702
|
-
return
|
|
1621
|
+
const { theme, icons } = (0, import_react57.useContext)(ToolbarContext);
|
|
1622
|
+
const scrollDown = (0, import_react57.useCallback)(() => scrollTo(ItemHeight), [scrollTo]);
|
|
1623
|
+
return /* @__PURE__ */ import_react57.default.createElement(import_react57.default.Fragment, null, /* @__PURE__ */ import_react57.default.createElement(CutLine, null), /* @__PURE__ */ import_react57.default.createElement(Button, {
|
|
1703
1624
|
content: "Down",
|
|
1704
1625
|
disabled,
|
|
1705
1626
|
onClick: scrollDown
|
|
1706
|
-
},
|
|
1707
|
-
fallback:
|
|
1627
|
+
}, /* @__PURE__ */ import_react57.default.createElement(Icon, {
|
|
1628
|
+
fallback: /* @__PURE__ */ import_react57.default.createElement(Icons.Down, {
|
|
1708
1629
|
theme
|
|
1709
1630
|
}),
|
|
1710
1631
|
src: disabled ? icons == null ? void 0 : icons.downIconDisable : icons == null ? void 0 : icons.downIcon,
|
|
@@ -1712,25 +1633,30 @@ function DownButton({ disabled, scrollTo }) {
|
|
|
1712
1633
|
})));
|
|
1713
1634
|
}
|
|
1714
1635
|
|
|
1636
|
+
// src/components/Toolbar/components/assets/collapsed.png
|
|
1637
|
+
var collapsed_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAB8CAYAAAAMw2JFAAAAAXNSR0IArs4c6QAAA49JREFUeF7tnLFv00AUh5/TFVYkxIDEnKFjJ/gb2CIqpUPagYXNEV2LRGk7tAiRSA0bWcC0QzowwQKuVDnCLE2KTZCMSNLkHCLalCpBkdFVMTKh8TXO+c4S16XDSb0vv/vyfE3fqwQR+ZIA4AoAdADgJ08mSVXVV9ls9nE+nzcBAAFAnweQ1Gg06gihrmEYubm5OeX4+LgBAD9Yw0iO49S63S7U6/VYq9UyCoXC2tLS0kcAwEA9VkBnIO5m7XYbJwTVanVLluWcruvfAOA7ADhhA/0Fgjfr9/tweHgYs20baZq2sbCw8HaQTqgy/wPivvKTkxN8XFPNZvMdC5lHgmAgx3EAISQhhHqGYWyGKbMviJsOC5kvBOIjcxUAWjRkHgtkSGZb07R1WjKPDeIj82cAaAatzIFBhmU2TTOXTCZfBq3ME4HQlJkKCA2ZqYJMIjN1kKAyhwYyrsyhgpwns6IoyysrK/rgQfrnqc4ExCtzrVb7tbe39yCVSr0GAFyZz2CYguANT09PwbIsaWdn5146nX4zuO+wB8EwnU5HqlQqdiKRuHNwcFDC1Zh5Iu4xWZYVU1V1eXZ29jlOhRvI0dGRVC6XP8zMzNwFgK/cQHq9HpTLZXt6evo2AFS4geDbX6lUisXj8VsA8IkbCHZlf39/Kh6P3xQg7jtHJDL826JIRCRC+gRBOCIcEY6QEhCOkBISdUQ4IhwhJSAcISUk6kjojjxaXbt0Py3jP1DCtes3ruLvVetLnenRYIgnT7OX3Y25gLgQ3gSYg3ghuIEMQ3ABOQ+COcgoCKYgfhD/Jwh+1ZE4GrdKRkJWPxhulTUSBe28ZLglMgzDHcR9N3G/BpDuHH7r4qoY+lUx6PGIoxFHQ3JHOCIcEY6QEhCOkBISdUQ4IhwhJSAcISUk6ohwxM+RyLR/RaYhLjItgpFomoxEG2kkGmvxRBPXVmPPWIypKMpD5s3X3kEh0zSfJZPJF6NmK0JrI3VHpxBCaiaTWc/n877TJtRBPMNkdrFY3Jifn8ed3njUzneYjCqIZ7xue3FxMadpGh6vu9BEEhUQr4yFQmE1yMDhRCDjyEi6JAUGGVdG6iBBZaQK4pVRluVNXdfZjsfRkHGiRGjKGBjEI+P7TCazQaqMpI1I635jtmNVRtJGpPVRg8fbtGW8EAiL6VUiyGA4vUd6TJN+0KTr0u7u7hYLGUmg0fkHBiRSVuu/AWpfZNft9vFDAAAAAElFTkSuQmCC";
|
|
1638
|
+
|
|
1715
1639
|
// src/components/Toolbar/Content.tsx
|
|
1716
|
-
|
|
1717
|
-
const
|
|
1718
|
-
const
|
|
1719
|
-
const [
|
|
1640
|
+
function Content({ onCollapse }) {
|
|
1641
|
+
const { theme, icons, writable } = (0, import_react58.useContext)(ToolbarContext);
|
|
1642
|
+
const ref = (0, import_react58.useRef)(null);
|
|
1643
|
+
const [scrollTop, setScrollTop] = (0, import_react58.useState)(0);
|
|
1644
|
+
const [parentHeight, setParentHeight] = (0, import_react58.useState)(0);
|
|
1645
|
+
const disabled = !writable;
|
|
1720
1646
|
const needScroll = parentHeight < ItemHeight * ItemsCount + 48;
|
|
1721
1647
|
const sectionHeight = clamp(parentHeight - 48 * (needScroll ? 3 : 1), MinHeight, MaxHeight);
|
|
1722
1648
|
const scrollBuffer = Math.max(parentHeight - sectionHeight - 1, 0);
|
|
1723
1649
|
const disableScrollUp = scrollTop === 0;
|
|
1724
1650
|
const disableScrollDown = scrollTop === scrollBuffer;
|
|
1725
|
-
const scrollTo = (0,
|
|
1651
|
+
const scrollTo = (0, import_react58.useCallback)((height) => {
|
|
1726
1652
|
setScrollTop(clamp(scrollTop + height, 0, scrollBuffer));
|
|
1727
1653
|
}, [scrollBuffer, scrollTop]);
|
|
1728
|
-
(0,
|
|
1654
|
+
(0, import_react58.useEffect)(() => {
|
|
1729
1655
|
if (ref.current) {
|
|
1730
1656
|
ref.current.scrollTop = scrollTop;
|
|
1731
1657
|
}
|
|
1732
1658
|
}, [scrollTop]);
|
|
1733
|
-
(0,
|
|
1659
|
+
(0, import_react58.useEffect)(() => {
|
|
1734
1660
|
var _a, _b;
|
|
1735
1661
|
const container = (_b = (_a = ref.current) == null ? void 0 : _a.parentElement) == null ? void 0 : _b.parentElement;
|
|
1736
1662
|
if (container) {
|
|
@@ -1743,95 +1669,82 @@ var Content = import_react59.default.memo(() => {
|
|
|
1743
1669
|
return () => resizeObserver.disconnect();
|
|
1744
1670
|
}
|
|
1745
1671
|
}, []);
|
|
1746
|
-
return
|
|
1672
|
+
return /* @__PURE__ */ import_react58.default.createElement(import_react58.default.Fragment, null, needScroll && /* @__PURE__ */ import_react58.default.createElement(UpButton, {
|
|
1747
1673
|
scrollTo,
|
|
1748
1674
|
disabled: disableScrollUp
|
|
1749
|
-
}),
|
|
1675
|
+
}), /* @__PURE__ */ import_react58.default.createElement("div", {
|
|
1750
1676
|
ref,
|
|
1751
1677
|
className: (0, import_clsx8.default)(`${name4}-section`),
|
|
1752
1678
|
style: {
|
|
1753
1679
|
height: `${sectionHeight}px`,
|
|
1754
1680
|
overflow: needScroll ? "hidden" : "visible"
|
|
1755
1681
|
}
|
|
1756
|
-
},
|
|
1682
|
+
}, /* @__PURE__ */ import_react58.default.createElement(ClickerButton, null), /* @__PURE__ */ import_react58.default.createElement(SelectorButton, null), /* @__PURE__ */ import_react58.default.createElement(PencilButton, null), /* @__PURE__ */ import_react58.default.createElement(TextButton, null), /* @__PURE__ */ import_react58.default.createElement(ShapesButton, null), /* @__PURE__ */ import_react58.default.createElement(EraserButton, null), /* @__PURE__ */ import_react58.default.createElement(CleanButton, null), /* @__PURE__ */ import_react58.default.createElement(AppsButton, null)), needScroll && /* @__PURE__ */ import_react58.default.createElement(DownButton, {
|
|
1757
1683
|
scrollTo,
|
|
1758
1684
|
disabled: disableScrollDown
|
|
1759
|
-
})
|
|
1760
|
-
|
|
1685
|
+
}), /* @__PURE__ */ import_react58.default.createElement("div", {
|
|
1686
|
+
className: (0, import_clsx8.default)("fastboard-toolbar-mask", theme),
|
|
1687
|
+
onClick: onCollapse
|
|
1688
|
+
}, /* @__PURE__ */ import_react58.default.createElement(Icon, {
|
|
1689
|
+
fallback: /* @__PURE__ */ import_react58.default.createElement("img", {
|
|
1690
|
+
draggable: false,
|
|
1691
|
+
className: (0, import_clsx8.default)(`${name4}-mask-btn`, theme),
|
|
1692
|
+
src: collapsed_default
|
|
1693
|
+
}),
|
|
1694
|
+
src: disabled ? icons == null ? void 0 : icons.expandIconDisable : icons == null ? void 0 : icons.expandIcon
|
|
1695
|
+
})));
|
|
1696
|
+
}
|
|
1761
1697
|
|
|
1762
1698
|
// src/components/Toolbar/Toolbar.tsx
|
|
1763
|
-
var ToolbarContext = (0,
|
|
1699
|
+
var ToolbarContext = (0, import_react59.createContext)(__spreadValues({
|
|
1764
1700
|
theme: "light"
|
|
1765
1701
|
}, EmptyToolbarHook));
|
|
1766
1702
|
var name4 = "fastboard-toolbar";
|
|
1767
|
-
|
|
1703
|
+
function Toolbar({ theme, icons }) {
|
|
1768
1704
|
theme = useTheme(theme);
|
|
1769
1705
|
const hook = useToolbar();
|
|
1770
|
-
const [expanded, setExpanded] = (0,
|
|
1771
|
-
const [
|
|
1772
|
-
const [onHover, setOnHover] = (0, import_react60.useState)(false);
|
|
1773
|
-
const [delayedOnHover, setDelayedOnHover] = (0, import_react60.useState)(false);
|
|
1774
|
-
const [pointEvents, setPointEvents] = (0, import_react60.useState)(true);
|
|
1706
|
+
const [expanded, setExpanded] = (0, import_react59.useState)(true);
|
|
1707
|
+
const [pointerEvents, setPointerEvents] = (0, import_react59.useState)("auto");
|
|
1775
1708
|
const disabled = !hook.writable;
|
|
1776
|
-
|
|
1777
|
-
setExpanded((e) => !e);
|
|
1778
|
-
}, []);
|
|
1779
|
-
(0, import_react60.useEffect)(() => {
|
|
1780
|
-
const timer = setTimeout(() => {
|
|
1781
|
-
setDelayedOnHover(onHover);
|
|
1782
|
-
}, 400);
|
|
1783
|
-
return () => clearTimeout(timer);
|
|
1784
|
-
}, [onHover]);
|
|
1785
|
-
return import_react60.default.createElement(ToolbarContext.Provider, {
|
|
1709
|
+
return /* @__PURE__ */ import_react59.default.createElement(ToolbarContext.Provider, {
|
|
1786
1710
|
value: __spreadValues({ theme, icons }, hook)
|
|
1787
|
-
},
|
|
1788
|
-
initial: { x: -100 },
|
|
1789
|
-
animate: { x: 0, transition: { duration: 0.5 } },
|
|
1711
|
+
}, /* @__PURE__ */ import_react59.default.createElement(import_framer_motion.AnimatePresence, null, expanded ? /* @__PURE__ */ import_react59.default.createElement(import_framer_motion.motion.div, {
|
|
1790
1712
|
key: "toolbar",
|
|
1791
|
-
ref: toolbarRef,
|
|
1792
1713
|
className: (0, import_clsx9.default)(name4, theme),
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
},
|
|
1796
|
-
onMouseLeave: () => setOnHover(false),
|
|
1714
|
+
initial: { x: -100 },
|
|
1715
|
+
animate: { x: 0, transition: { duration: 0.5 } },
|
|
1797
1716
|
exit: { x: -100, transition: { duration: 0.5 } },
|
|
1798
|
-
onAnimationStart: () =>
|
|
1799
|
-
onAnimationComplete: () =>
|
|
1800
|
-
style: { pointerEvents
|
|
1801
|
-
},
|
|
1802
|
-
|
|
1803
|
-
}
|
|
1804
|
-
onClick: toggle
|
|
1805
|
-
}, import_react60.default.createElement("img", {
|
|
1806
|
-
draggable: false,
|
|
1807
|
-
className: (0, import_clsx9.default)(`${name4}-mask-btn`, theme),
|
|
1808
|
-
src: collapsed_default
|
|
1809
|
-
})))) : import_react60.default.createElement(import_framer_motion.motion.div, {
|
|
1717
|
+
onAnimationStart: () => setPointerEvents("none"),
|
|
1718
|
+
onAnimationComplete: () => setPointerEvents("auto"),
|
|
1719
|
+
style: { pointerEvents }
|
|
1720
|
+
}, /* @__PURE__ */ import_react59.default.createElement(Content, {
|
|
1721
|
+
onCollapse: () => setExpanded(false)
|
|
1722
|
+
})) : /* @__PURE__ */ import_react59.default.createElement(import_framer_motion.motion.div, {
|
|
1810
1723
|
className: (0, import_clsx9.default)(`${name4}-expand-btn`, theme),
|
|
1811
1724
|
key: "expand",
|
|
1812
|
-
onClick:
|
|
1725
|
+
onClick: () => setExpanded(true),
|
|
1813
1726
|
initial: { x: -100 },
|
|
1814
1727
|
animate: { x: 0, transition: { duration: 0.5 } }
|
|
1815
|
-
},
|
|
1816
|
-
fallback:
|
|
1728
|
+
}, /* @__PURE__ */ import_react59.default.createElement(Icon, {
|
|
1729
|
+
fallback: /* @__PURE__ */ import_react59.default.createElement("img", {
|
|
1817
1730
|
draggable: false,
|
|
1818
1731
|
src: expanded_default,
|
|
1819
1732
|
className: (0, import_clsx9.default)(`${name4}-mask-btn`, theme)
|
|
1820
1733
|
}),
|
|
1821
1734
|
src: disabled ? icons == null ? void 0 : icons.expandIconDisable : icons == null ? void 0 : icons.expandIcon
|
|
1822
1735
|
}))));
|
|
1823
|
-
}
|
|
1736
|
+
}
|
|
1824
1737
|
|
|
1825
1738
|
// src/components/PlayerControl/hooks.ts
|
|
1826
|
-
var
|
|
1739
|
+
var import_react60 = require("react");
|
|
1827
1740
|
var import_white_web_sdk6 = require("white-web-sdk");
|
|
1828
1741
|
var EMPTY_ARRAY = [];
|
|
1829
1742
|
function useForceUpdate2() {
|
|
1830
|
-
const [, forceUpdate_] = (0,
|
|
1831
|
-
return (0,
|
|
1743
|
+
const [, forceUpdate_] = (0, import_react60.useState)({});
|
|
1744
|
+
return (0, import_react60.useCallback)(() => forceUpdate_({}), EMPTY_ARRAY);
|
|
1832
1745
|
}
|
|
1833
1746
|
function usePlayerControl(player) {
|
|
1834
|
-
const togglePlay = (0,
|
|
1747
|
+
const togglePlay = (0, import_react60.useCallback)(() => {
|
|
1835
1748
|
if (player) {
|
|
1836
1749
|
switch (player.phase) {
|
|
1837
1750
|
case import_white_web_sdk6.PlayerPhase.WaitingFirstFrame:
|
|
@@ -1847,25 +1760,25 @@ function usePlayerControl(player) {
|
|
|
1847
1760
|
}
|
|
1848
1761
|
}
|
|
1849
1762
|
}, [player]);
|
|
1850
|
-
const seekToProgressTime = (0,
|
|
1763
|
+
const seekToProgressTime = (0, import_react60.useCallback)((time) => {
|
|
1851
1764
|
if (player) {
|
|
1852
1765
|
player.seekToProgressTime(time);
|
|
1853
1766
|
}
|
|
1854
1767
|
}, [player]);
|
|
1855
1768
|
const lastPlayer = useLastValue(player);
|
|
1856
1769
|
const forceUpdate = useForceUpdate2();
|
|
1857
|
-
const setSpeed = (0,
|
|
1770
|
+
const setSpeed = (0, import_react60.useCallback)((speed2) => {
|
|
1858
1771
|
if (player) {
|
|
1859
1772
|
player.playbackSpeed = speed2;
|
|
1860
1773
|
forceUpdate();
|
|
1861
1774
|
}
|
|
1862
1775
|
}, [forceUpdate, player]);
|
|
1863
|
-
(0,
|
|
1776
|
+
(0, import_react60.useEffect)(() => {
|
|
1864
1777
|
if (!lastPlayer && player) {
|
|
1865
1778
|
forceUpdate();
|
|
1866
1779
|
}
|
|
1867
1780
|
}, [forceUpdate, lastPlayer, player]);
|
|
1868
|
-
(0,
|
|
1781
|
+
(0, import_react60.useEffect)(() => {
|
|
1869
1782
|
if (player) {
|
|
1870
1783
|
player.callbacks.on("onPhaseChanged", forceUpdate);
|
|
1871
1784
|
player.callbacks.on("onProgressTimeChanged", forceUpdate);
|
|
@@ -1891,19 +1804,19 @@ function usePlayerControl(player) {
|
|
|
1891
1804
|
}
|
|
1892
1805
|
|
|
1893
1806
|
// src/components/PlayerControl/PlayerControl.tsx
|
|
1894
|
-
var
|
|
1807
|
+
var import_react67 = __toESM(require("@tippyjs/react"));
|
|
1895
1808
|
var import_clsx11 = __toESM(require("clsx"));
|
|
1896
1809
|
var import_rc_slider2 = __toESM(require("rc-slider"));
|
|
1897
|
-
var
|
|
1810
|
+
var import_react68 = __toESM(require("react"));
|
|
1898
1811
|
var import_white_web_sdk7 = require("white-web-sdk");
|
|
1899
1812
|
|
|
1900
1813
|
// src/components/PlayerControl/components/Button.tsx
|
|
1901
1814
|
var import_clsx10 = __toESM(require("clsx"));
|
|
1902
|
-
var
|
|
1903
|
-
var
|
|
1904
|
-
var Button2 = (0,
|
|
1815
|
+
var import_react61 = __toESM(require("react"));
|
|
1816
|
+
var import_react62 = __toESM(require("@tippyjs/react"));
|
|
1817
|
+
var Button2 = (0, import_react61.forwardRef)((props, ref) => {
|
|
1905
1818
|
const { theme, content, disabled, active, onClick, interactive, placement = "top", children } = props;
|
|
1906
|
-
return
|
|
1819
|
+
return /* @__PURE__ */ import_react61.default.createElement(import_react62.default, {
|
|
1907
1820
|
className: "fastboard-tip",
|
|
1908
1821
|
content,
|
|
1909
1822
|
interactive,
|
|
@@ -1913,7 +1826,7 @@ var Button2 = (0, import_react62.forwardRef)((props, ref) => {
|
|
|
1913
1826
|
offset: TopOffset,
|
|
1914
1827
|
delay: [1e3, 400],
|
|
1915
1828
|
duration: 300
|
|
1916
|
-
},
|
|
1829
|
+
}, /* @__PURE__ */ import_react61.default.createElement("button", {
|
|
1917
1830
|
ref,
|
|
1918
1831
|
className: (0, import_clsx10.default)("fastboard-player-control-btn", theme, { active }),
|
|
1919
1832
|
onClick,
|
|
@@ -1922,39 +1835,39 @@ var Button2 = (0, import_react62.forwardRef)((props, ref) => {
|
|
|
1922
1835
|
});
|
|
1923
1836
|
|
|
1924
1837
|
// src/components/PlayerControl/icons/index.ts
|
|
1925
|
-
var
|
|
1838
|
+
var import_react66 = require("react");
|
|
1926
1839
|
|
|
1927
1840
|
// src/components/PlayerControl/icons/Loading.tsx
|
|
1928
|
-
var
|
|
1841
|
+
var import_react63 = __toESM(require("react"));
|
|
1929
1842
|
var Loading = (props) => {
|
|
1930
1843
|
const stroke = getStroke(props);
|
|
1931
|
-
return
|
|
1844
|
+
return /* @__PURE__ */ import_react63.default.createElement("svg", {
|
|
1932
1845
|
viewBox: "0 0 24 24"
|
|
1933
|
-
},
|
|
1846
|
+
}, /* @__PURE__ */ import_react63.default.createElement("path", {
|
|
1934
1847
|
d: "M12 4V2A10 10 0 0 0 2 12h2a8 8 0 0 1 8-8z",
|
|
1935
1848
|
fill: stroke
|
|
1936
1849
|
}));
|
|
1937
1850
|
};
|
|
1938
1851
|
|
|
1939
1852
|
// src/components/PlayerControl/icons/Pause.tsx
|
|
1940
|
-
var
|
|
1853
|
+
var import_react64 = __toESM(require("react"));
|
|
1941
1854
|
var Pause = (props) => {
|
|
1942
1855
|
const stroke = getStroke(props);
|
|
1943
|
-
return
|
|
1856
|
+
return /* @__PURE__ */ import_react64.default.createElement("svg", {
|
|
1944
1857
|
viewBox: "0 0 24 24"
|
|
1945
|
-
},
|
|
1858
|
+
}, /* @__PURE__ */ import_react64.default.createElement("path", {
|
|
1946
1859
|
d: "M14 19h4V5h-4M6 19h4V5H6v14z",
|
|
1947
1860
|
fill: stroke
|
|
1948
1861
|
}));
|
|
1949
1862
|
};
|
|
1950
1863
|
|
|
1951
1864
|
// src/components/PlayerControl/icons/Play.tsx
|
|
1952
|
-
var
|
|
1865
|
+
var import_react65 = __toESM(require("react"));
|
|
1953
1866
|
var Play = (props) => {
|
|
1954
1867
|
const stroke = getStroke(props);
|
|
1955
|
-
return
|
|
1868
|
+
return /* @__PURE__ */ import_react65.default.createElement("svg", {
|
|
1956
1869
|
viewBox: "0 0 24 24"
|
|
1957
|
-
},
|
|
1870
|
+
}, /* @__PURE__ */ import_react65.default.createElement("path", {
|
|
1958
1871
|
d: "M8 5.14v14l11-7l-11-7z",
|
|
1959
1872
|
fill: stroke
|
|
1960
1873
|
}));
|
|
@@ -1962,9 +1875,9 @@ var Play = (props) => {
|
|
|
1962
1875
|
|
|
1963
1876
|
// src/components/PlayerControl/icons/index.ts
|
|
1964
1877
|
var Icons2 = {
|
|
1965
|
-
Play: (0,
|
|
1966
|
-
Pause: (0,
|
|
1967
|
-
Loading: (0,
|
|
1878
|
+
Play: (0, import_react66.memo)(Play),
|
|
1879
|
+
Pause: (0, import_react66.memo)(Pause),
|
|
1880
|
+
Loading: (0, import_react66.memo)(Loading)
|
|
1968
1881
|
};
|
|
1969
1882
|
|
|
1970
1883
|
// src/components/PlayerControl/PlayerControl.tsx
|
|
@@ -1973,12 +1886,12 @@ function PlayerControl(_a) {
|
|
|
1973
1886
|
var _b = _a, { theme, autoHide = false, player: player_ } = _b, icons = __objRest(_b, ["theme", "autoHide", "player"]);
|
|
1974
1887
|
theme = useTheme(theme);
|
|
1975
1888
|
const { t } = useTranslation();
|
|
1976
|
-
const [currentTime, setCurrentTime] = (0,
|
|
1889
|
+
const [currentTime, setCurrentTime] = (0, import_react68.useState)(0);
|
|
1977
1890
|
const player = usePlayerControl(player_);
|
|
1978
|
-
(0,
|
|
1891
|
+
(0, import_react68.useEffect)(() => {
|
|
1979
1892
|
setCurrentTime(player.currentTime);
|
|
1980
1893
|
}, [player.currentTime]);
|
|
1981
|
-
(0,
|
|
1894
|
+
(0, import_react68.useEffect)(() => {
|
|
1982
1895
|
if (player.currentTime !== currentTime) {
|
|
1983
1896
|
player.seekToProgressTime(currentTime);
|
|
1984
1897
|
}
|
|
@@ -1986,25 +1899,25 @@ function PlayerControl(_a) {
|
|
|
1986
1899
|
const isLoading = player.phase === import_white_web_sdk7.PlayerPhase.WaitingFirstFrame || player.phase === import_white_web_sdk7.PlayerPhase.Buffering;
|
|
1987
1900
|
const isPlaying = player.phase === import_white_web_sdk7.PlayerPhase.Playing;
|
|
1988
1901
|
const { activeColor } = themes[theme];
|
|
1989
|
-
return
|
|
1902
|
+
return /* @__PURE__ */ import_react68.default.createElement("div", {
|
|
1990
1903
|
className: (0, import_clsx11.default)(name5, theme, { "auto-hide": autoHide })
|
|
1991
|
-
},
|
|
1904
|
+
}, /* @__PURE__ */ import_react68.default.createElement("button", {
|
|
1992
1905
|
className: (0, import_clsx11.default)(`${name5}-btn`, isLoading ? "loading" : isPlaying ? "pause" : "play", theme),
|
|
1993
1906
|
disabled: isLoading,
|
|
1994
1907
|
onClick: player.togglePlay
|
|
1995
|
-
},
|
|
1996
|
-
fallback: isLoading ?
|
|
1908
|
+
}, /* @__PURE__ */ import_react68.default.createElement(Icon, {
|
|
1909
|
+
fallback: isLoading ? /* @__PURE__ */ import_react68.default.createElement(Icons2.Loading, {
|
|
1997
1910
|
theme
|
|
1998
|
-
}) : isPlaying ?
|
|
1911
|
+
}) : isPlaying ? /* @__PURE__ */ import_react68.default.createElement(Icons2.Pause, {
|
|
1999
1912
|
theme
|
|
2000
|
-
}) :
|
|
1913
|
+
}) : /* @__PURE__ */ import_react68.default.createElement(Icons2.Play, {
|
|
2001
1914
|
theme
|
|
2002
1915
|
}),
|
|
2003
1916
|
src: isLoading ? icons.loadingIcon : isPlaying ? icons.pauseIcon : icons.playIcon,
|
|
2004
1917
|
alt: isLoading ? "[loading]" : isPlaying ? "[pause]" : "[play]"
|
|
2005
|
-
})),
|
|
1918
|
+
})), /* @__PURE__ */ import_react68.default.createElement("span", {
|
|
2006
1919
|
className: (0, import_clsx11.default)(`${name5}-slider`, { loading: isLoading }, theme)
|
|
2007
|
-
},
|
|
1920
|
+
}, /* @__PURE__ */ import_react68.default.createElement(import_rc_slider2.default, {
|
|
2008
1921
|
disabled: isLoading,
|
|
2009
1922
|
trackStyle: { background: activeColor },
|
|
2010
1923
|
handleStyle: { border: `1px solid ${activeColor}` },
|
|
@@ -2013,15 +1926,15 @@ function PlayerControl(_a) {
|
|
|
2013
1926
|
min: 0,
|
|
2014
1927
|
max: player.totalTime,
|
|
2015
1928
|
step: 100
|
|
2016
|
-
})),
|
|
1929
|
+
})), /* @__PURE__ */ import_react68.default.createElement("span", {
|
|
2017
1930
|
className: (0, import_clsx11.default)(`${name5}-current`, theme)
|
|
2018
|
-
}, renderTime(player.currentTime)),
|
|
1931
|
+
}, renderTime(player.currentTime)), /* @__PURE__ */ import_react68.default.createElement("span", {
|
|
2019
1932
|
className: (0, import_clsx11.default)(`${name5}-slash`, theme)
|
|
2020
|
-
}, "/"),
|
|
1933
|
+
}, "/"), /* @__PURE__ */ import_react68.default.createElement("span", {
|
|
2021
1934
|
className: (0, import_clsx11.default)(`${name5}-total`, theme)
|
|
2022
|
-
}, renderTime(player.totalTime)),
|
|
1935
|
+
}, renderTime(player.totalTime)), /* @__PURE__ */ import_react68.default.createElement("span", {
|
|
2023
1936
|
className: `${name5}-btn-interactive`
|
|
2024
|
-
},
|
|
1937
|
+
}, /* @__PURE__ */ import_react68.default.createElement(import_react67.default, {
|
|
2025
1938
|
className: "fastboard-tip",
|
|
2026
1939
|
content: renderSpeeds(player),
|
|
2027
1940
|
theme,
|
|
@@ -2030,11 +1943,11 @@ function PlayerControl(_a) {
|
|
|
2030
1943
|
offset: TopOffset,
|
|
2031
1944
|
arrow: false,
|
|
2032
1945
|
interactive: true
|
|
2033
|
-
},
|
|
1946
|
+
}, /* @__PURE__ */ import_react68.default.createElement(Button2, {
|
|
2034
1947
|
content: t("speed"),
|
|
2035
1948
|
theme,
|
|
2036
1949
|
disabled: isLoading
|
|
2037
|
-
},
|
|
1950
|
+
}, /* @__PURE__ */ import_react68.default.createElement("span", {
|
|
2038
1951
|
className: (0, import_clsx11.default)(`${name5}-speed-text`, theme)
|
|
2039
1952
|
}, player.speed, "x")))));
|
|
2040
1953
|
}
|
|
@@ -2046,9 +1959,9 @@ function renderTime(ms) {
|
|
|
2046
1959
|
}
|
|
2047
1960
|
var Speeds = [2, 1.5, 1.25, 1, 0.75, 0.5];
|
|
2048
1961
|
function renderSpeeds({ speed: current, setSpeed }) {
|
|
2049
|
-
return
|
|
1962
|
+
return /* @__PURE__ */ import_react68.default.createElement("div", {
|
|
2050
1963
|
className: (0, import_clsx11.default)(`${name5}-panel`, "speed")
|
|
2051
|
-
}, Speeds.map((speed) =>
|
|
1964
|
+
}, Speeds.map((speed) => /* @__PURE__ */ import_react68.default.createElement("button", {
|
|
2052
1965
|
className: (0, import_clsx11.default)(`${name5}-btn`, "speed", {
|
|
2053
1966
|
active: speed === current
|
|
2054
1967
|
}),
|
|
@@ -2058,34 +1971,49 @@ function renderSpeeds({ speed: current, setSpeed }) {
|
|
|
2058
1971
|
}
|
|
2059
1972
|
|
|
2060
1973
|
// src/components/Fastboard.tsx
|
|
2061
|
-
var
|
|
2062
|
-
|
|
2063
|
-
var _b = _a, { app } = _b, restProps = __objRest(_b, ["app"]);
|
|
1974
|
+
var import_react69 = __toESM(require("react"));
|
|
1975
|
+
var Fastboard = /* @__PURE__ */ (0, import_react69.forwardRef)(function Fastboard2(_a, ref) {
|
|
1976
|
+
var _b = _a, { app, theme, layout, language } = _b, restProps = __objRest(_b, ["app", "theme", "layout", "language"]);
|
|
2064
1977
|
if (!app) {
|
|
2065
|
-
return
|
|
2066
|
-
className: "fastboard-root"
|
|
2067
|
-
|
|
1978
|
+
return /* @__PURE__ */ import_react69.default.createElement("div", __spreadValues({
|
|
1979
|
+
className: "fastboard-root",
|
|
1980
|
+
ref
|
|
1981
|
+
}, restProps));
|
|
2068
1982
|
}
|
|
2069
|
-
return
|
|
1983
|
+
return /* @__PURE__ */ import_react69.default.createElement(FastboardAppContext.Provider, {
|
|
2070
1984
|
value: app
|
|
2071
|
-
},
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
1985
|
+
}, /* @__PURE__ */ import_react69.default.createElement(FastboardInternal, __spreadValues(__spreadValues({
|
|
1986
|
+
forwardedRef: ref
|
|
1987
|
+
}, { theme, layout, language }), restProps)));
|
|
1988
|
+
});
|
|
1989
|
+
function FastboardInternal(_a) {
|
|
1990
|
+
var _b = _a, {
|
|
1991
|
+
forwardedRef,
|
|
1992
|
+
language,
|
|
1993
|
+
layout = {},
|
|
1994
|
+
theme = "light",
|
|
1995
|
+
children
|
|
1996
|
+
} = _b, restProps = __objRest(_b, [
|
|
1997
|
+
"forwardedRef",
|
|
1998
|
+
"language",
|
|
1999
|
+
"layout",
|
|
2000
|
+
"theme",
|
|
2001
|
+
"children"
|
|
2002
|
+
]);
|
|
2079
2003
|
const app = useFastboardApp();
|
|
2080
2004
|
const forceUpdate = useForceUpdate();
|
|
2081
2005
|
const i18n = useAsyncValue(() => createI18n({ language }));
|
|
2082
|
-
(0,
|
|
2006
|
+
(0, import_react69.useEffect)(() => {
|
|
2083
2007
|
if (i18n)
|
|
2084
2008
|
i18n.changeLanguage(language);
|
|
2085
2009
|
forceUpdate();
|
|
2086
2010
|
}, [forceUpdate, i18n, language]);
|
|
2087
|
-
|
|
2088
|
-
|
|
2011
|
+
(0, import_react69.useEffect)(() => {
|
|
2012
|
+
app.manager.setPrefersColorScheme(theme);
|
|
2013
|
+
}, [app, theme]);
|
|
2014
|
+
const useWhiteboard = (0, import_react69.useCallback)((container) => {
|
|
2015
|
+
if (container && app)
|
|
2016
|
+
app.manager.bindContainer(container);
|
|
2089
2017
|
}, [app]);
|
|
2090
2018
|
const hideControls = useHideControls();
|
|
2091
2019
|
const showControls = !hideControls;
|
|
@@ -2095,22 +2023,33 @@ function FastboardInternal({
|
|
|
2095
2023
|
ZoomControl: zoom_control = showControls,
|
|
2096
2024
|
PageControl: page_control = showControls
|
|
2097
2025
|
} = layout;
|
|
2098
|
-
return
|
|
2026
|
+
return /* @__PURE__ */ import_react69.default.createElement(ThemeContext.Provider, {
|
|
2099
2027
|
value: theme
|
|
2100
|
-
},
|
|
2028
|
+
}, /* @__PURE__ */ import_react69.default.createElement(I18nContext.Provider, {
|
|
2101
2029
|
value: i18n
|
|
2102
|
-
},
|
|
2103
|
-
className: "fastboard-root"
|
|
2104
|
-
|
|
2030
|
+
}, /* @__PURE__ */ import_react69.default.createElement("div", __spreadProps(__spreadValues({}, restProps), {
|
|
2031
|
+
className: "fastboard-root",
|
|
2032
|
+
ref: forwardedRef
|
|
2033
|
+
}), /* @__PURE__ */ import_react69.default.createElement("div", {
|
|
2105
2034
|
className: "fastboard-view",
|
|
2106
2035
|
ref: useWhiteboard
|
|
2107
|
-
}), children ? children :
|
|
2036
|
+
}), children ? children : /* @__PURE__ */ import_react69.default.createElement(import_react69.default.Fragment, null, toolbar && /* @__PURE__ */ import_react69.default.createElement("div", {
|
|
2108
2037
|
className: "fastboard-left"
|
|
2109
|
-
},
|
|
2038
|
+
}, /* @__PURE__ */ import_react69.default.createElement(Toolbar, null)), (redo_undo || zoom_control) && /* @__PURE__ */ import_react69.default.createElement("div", {
|
|
2110
2039
|
className: "fastboard-bottom-left"
|
|
2111
|
-
}, redo_undo &&
|
|
2040
|
+
}, redo_undo && /* @__PURE__ */ import_react69.default.createElement(RedoUndo, null), zoom_control && /* @__PURE__ */ import_react69.default.createElement(ZoomControl, null)), page_control && /* @__PURE__ */ import_react69.default.createElement("div", {
|
|
2112
2041
|
className: "fastboard-bottom-right"
|
|
2113
|
-
},
|
|
2042
|
+
}, /* @__PURE__ */ import_react69.default.createElement(PageControl, null))))));
|
|
2043
|
+
}
|
|
2044
|
+
|
|
2045
|
+
// src/vanilla/index.tsx
|
|
2046
|
+
var import_react70 = __toESM(require("react"));
|
|
2047
|
+
var import_react_dom = __toESM(require("react-dom"));
|
|
2048
|
+
function mount(app, dom, props) {
|
|
2049
|
+
import_react_dom.default.render(/* @__PURE__ */ import_react70.default.createElement(Fastboard, __spreadValues({
|
|
2050
|
+
app
|
|
2051
|
+
}, props)), dom);
|
|
2052
|
+
return () => import_react_dom.default.unmountComponentAtNode(dom);
|
|
2114
2053
|
}
|
|
2115
2054
|
module.exports = __toCommonJS(src_exports);
|
|
2116
2055
|
//# sourceMappingURL=index.js.map
|