@netless/fastboard 0.0.4 → 0.0.8
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.cjs.js +4 -4
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +415 -105
- package/dist/index.es.js.map +1 -1
- package/dist/svelte.cjs.js +2 -0
- package/dist/svelte.cjs.js.map +1 -0
- package/dist/svelte.es.js +31 -0
- package/dist/svelte.es.js.map +1 -0
- package/dist/vue.cjs.js +2 -0
- package/dist/vue.cjs.js.map +1 -0
- package/dist/vue.es.js +42 -0
- package/dist/vue.es.js.map +1 -0
- package/package.json +23 -2
- package/src/WhiteboardApp.ts +51 -3
- package/src/components/PageControl.tsx +5 -5
- package/src/components/Root.tsx +30 -11
- package/src/hooks.ts +11 -4
- package/src/index.ts +4 -0
- package/src/internal/Instance.tsx +30 -13
- package/src/internal/mount-whiteboard.ts +1 -1
- package/src/svelte.ts +45 -0
- package/src/vue.ts +74 -0
package/dist/index.cjs.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var Re=Object.defineProperty,He=Object.defineProperties;var Ge=Object.getOwnPropertyDescriptors;var te=Object.getOwnPropertySymbols;var xe=Object.prototype.hasOwnProperty,me=Object.prototype.propertyIsEnumerable;var le=(e,t,o)=>t in e?Re(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,S=(e,t)=>{for(var o in t||(t={}))xe.call(t,o)&&le(e,o,t[o]);if(te)for(var o of te(t))me.call(t,o)&&le(e,o,t[o]);return e},V=(e,t)=>He(e,Ge(t));var we=(e,t)=>{var o={};for(var r in e)xe.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(e!=null&&te)for(var r of te(e))t.indexOf(r)<0&&me.call(e,r)&&(o[r]=e[r]);return o};var A=(e,t,o)=>(le(e,typeof t!="symbol"?t+"":t,o),o);Object.defineProperty(exports,"__esModule",{value:!0});exports[Symbol.toStringTag]="Module";var B=require("@netless/window-manager"),b=require("white-web-sdk"),Ve=require("i18next"),i=require("react"),Je=require("react-dom"),Ue=require("clsx"),Fe=require("@tippyjs/react"),Ye=require("rc-slider");function J(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}function oe(e){if(e&&e.__esModule)return e;var t={__proto__:null,[Symbol.toStringTag]:"Module"};return e&&Object.keys(e).forEach(function(o){if(o!=="default"){var r=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,r.get?r:{enumerable:!0,get:function(){return e[o]}})}}),t.default=e,Object.freeze(t)}var ke=J(Ve),Qe=J(i),se=J(Je),g=J(Ue),M=J(Fe),ve=J(Ye);B.WindowManager.register({kind:"Slide",appOptions:{debug:!1},src:async()=>{var t;const e=await Promise.resolve().then(function(){return oe(require("@netless/app-slide"))});return(t=e.default)!=null?t:e}});B.WindowManager.register({kind:"Monaco",src:async()=>{var t;const e=await Promise.resolve().then(function(){return oe(require("@netless/app-monaco"))});return(t=e.default)!=null?t:e}});B.WindowManager.register({kind:"Countdown",src:async()=>{var t;const e=await Promise.resolve().then(function(){return oe(require("@netless/app-countdown"))});return(t=e.default)!=null?t:e}});B.WindowManager.register({kind:"GeoGebra",src:async()=>{var t;const e=await Promise.resolve().then(function(){return oe(require("@netless/app-geogebra"))});return(t=e.default)!=null?t:e},appOptions:{HTML5Codebase:"https://flat-storage-cn-hz.whiteboard.agora.io/GeoGebra/HTML5/5.0/web3d"}});function Q(){}function qe(e){const t=document.createElement("style");return t.appendChild(document.createTextNode(e)),document.head.appendChild(t),t}function ce(e,t,o){return e<t?t:e>o?o:e}function Ke(e,t){return e.length===t.length&&e.every((o,r)=>o===t[r])}class Xe{constructor(){A(this,"running",!1);A(this,"nextFn",null);A(this,"step",()=>{if(this.nextFn){const t=this.nextFn;this.nextFn=null,Promise.resolve(t()).then(this.step)}else this.running=!1})}schedule(t){this.running?this.nextFn=t:(this.running=!0,Promise.resolve(t()).then(this.step))}}const _e={clicker:"clicker",selector:"selector",text:"text",pencil:"pencil",arrow:"arrow",hand:"hand",eraser:"eraser",laser:"laser",collapse:"Collapse",expand:"Expand",zoomIn:"Zoom In",zoomOut:"Zoom Out",reset:"Reset",prevPage:"Prev Page",nextPage:"Next Page",addPage:"Add Page",redo:"Redo",undo:"Undo",shape:"Shape",triangle:"Triangle",rhombus:"Rhombus",pentagram:"Pentagram",speechBalloon:"Speech Balloon",rectangle:"Rectangle",ellipse:"Ellipse",straight:"Straight",speed:"Speed"};var $e={translation:_e};const et={clicker:"\u70B9\u51FB",selector:"\u9009\u62E9",text:"\u6587\u5B57",pencil:"\u94C5\u7B14",arrow:"\u7BAD\u5934",hand:"\u6293\u624B",eraser:"\u6A61\u76AE",laser:"\u6FC0\u5149\u7B14",zoomIn:"\u653E\u5927",zoomOut:"\u7F29\u5C0F",reset:"\u91CD\u7F6E",prevPage:"\u4E0A\u4E00\u9875",nextPage:"\u4E0B\u4E00\u9875",addPage:"\u6DFB\u52A0\u9875\u9762",redo:"\u91CD\u505A",undo:"\u64A4\u9500",collapse:"\u6536\u8D77",expand:"\u5C55\u5F00",clean:"\u6E05\u5C4F",shape:"\u5F62\u72B6",triangle:"\u4E09\u89D2\u5F62",rhombus:"\u83F1\u5F62",pentagram:"\u4E94\u89D2\u661F",speechBalloon:"\u6C14\u7403",rectangle:"\u77E9\u5F62",ellipse:"\u692D\u5706",straight:"\u76F4\u7EBF",speed:"\u901F\u5EA6"};var tt={translation:et};const ot=async e=>{const t=navigator.language||"zh-CN",o=e.language||t;return await ke.default.init({lng:o,resources:{en:$e,"zh-CN":tt}}),ke.default};function at(e){(!e.invisiblePlugins||!e.invisiblePlugins.includes(B.WindowManager))&&(e.invisiblePlugins=[...e.invisiblePlugins||[],B.WindowManager])}const q={changeToSelector:"s",changeToLaserPointer:"z",changeToPencil:"p",changeToRectangle:"r",changeToEllipse:"c",changeToEraser:"e",changeToText:"t",changeToStraight:"l",changeToArrow:"a",changeToHand:"h"};async function rt(e,t,o,r){const n=new b.WhiteWebSdk(V(S({},e),{useMobXState:!0}));at(t),t=S({},t);const s=t.callbacks;delete t.callbacks;const l=V(S({floatBar:!0,hotKeys:S(S({},b.DefaultHotKeys),q)},t),{useMultiViews:!0,disableNewPencil:!1,disableMagixEventDispatchLimit:!0}),c=await n.joinRoom(l,s),p=await B.WindowManager.mount(V(S({cursor:!0,debug:!1},o),{room:c})),d=await ot({language:r});return{sdk:n,room:c,manager:p,i18n:d}}var ae={exports:{}},K={};/*
|
|
2
2
|
object-assign
|
|
3
3
|
(c) Sindre Sorhus
|
|
4
4
|
@license MIT
|
|
5
|
-
*/var
|
|
5
|
+
*/var Ce=Object.getOwnPropertySymbols,nt=Object.prototype.hasOwnProperty,it=Object.prototype.propertyIsEnumerable;function lt(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function st(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},o=0;o<10;o++)t["_"+String.fromCharCode(o)]=o;var r=Object.getOwnPropertyNames(t).map(function(s){return t[s]});if(r.join("")!=="0123456789")return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach(function(s){n[s]=s}),Object.keys(Object.assign({},n)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}st();/** @license React v17.0.2
|
|
6
6
|
* react-jsx-runtime.production.min.js
|
|
7
7
|
*
|
|
8
8
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
9
9
|
*
|
|
10
10
|
* This source code is licensed under the MIT license found in the
|
|
11
11
|
* LICENSE file in the root directory of this source tree.
|
|
12
|
-
*/var nt=Je.default,xe=60103;q.Fragment=60107;if(typeof Symbol=="function"&&Symbol.for){var me=Symbol.for;xe=me("react.element"),q.Fragment=me("react.fragment")}var it=nt.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,lt=Object.prototype.hasOwnProperty,st={key:!0,ref:!0,__self:!0,__source:!0};function we(e,t,r){var a,i={},s=null,l=null;r!==void 0&&(s=""+r),t.key!==void 0&&(s=""+t.key),t.ref!==void 0&&(l=t.ref);for(a in t)lt.call(t,a)&&!st.hasOwnProperty(a)&&(i[a]=t[a]);if(e&&e.defaultProps)for(a in t=e.defaultProps,t)i[a]===void 0&&(i[a]=t[a]);return{$$typeof:xe,type:e,key:s,ref:l,props:i,_owner:it.current}}q.jsx=we;q.jsxs=we;te.exports=q;const o=te.exports.jsx,f=te.exports.jsxs,K=te.exports.Fragment;function w({fallback:e,src:t,alt:r="[icon]"}){return t?o("img",{src:t,alt:r,title:r}):e}const ke={color:"#5D5D5D",activeColor:"#3381FF",backgroundColor:"#fff",hoverBackgroundColor:"rgba(51, 129, 255, 0.1)"},ct=G(T({},ke),{color:"#eee",backgroundColor:"#111"}),P={light:ke,dark:ct},k=e=>{let t;return e.theme?t=P[e.theme]:t=P.light,e.active?t.activeColor:t.color},Z=[0,11],X=[0,11],dt=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:f("g",{fill:t,children:[o("path",{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"}),o("path",{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"})]})})},pt=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:t,d:"M19 5v6l-2.647-2.646L5.99 18.718l-.708-.708L15.645 7.646 13 5h6Z"})})},bt=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("rect",{width:"15",height:"15",x:"4.5",y:"4.5",fill:"none",stroke:t,rx:"7.5"})})},gt=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:t,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"})})},ft=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:f("g",{fill:"none",children:[o("path",{d:"M0 0h24v24H0z"}),o("path",{fill:t,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"})]})})},ut=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:"none",stroke:t,d:"m8 10-2 2 2 2m10-8H6m12 12H6m12-4h-8m8-4h-8"})})},ht=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:"none",stroke:t,d:"M4.222 12 12 4.222 19.778 12 12 19.778z"})})},xt=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:"none",stroke:t,d:"m16 13-2 2-2 2-2-2-2-2m8-6-2 2-2 2-2-2-2-2"})})},mt=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:t,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"})})},wt=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:"none",stroke:t,d:"m16 10 2 2-2 2M6 6h12M6 18h12M6 14h8m-8-4h8"})})},kt=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:t,d:"m18.01 5.282.708.708L5.99 18.718l-.708-.708z"})})},vt=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:t,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"})})},Ct=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:"none",stroke:t,d:"M5.5 5.5h13v13h-13z"})})},yt=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:t,d:"m12 12 8 2.667-3.556 1.777L14.667 20 12 12Zm3-8v7.5h-1V5H5v9h6.5v1H4V4h11Z"})})},It=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:"none",stroke:t,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"})})},At=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:"none",stroke:t,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"})})},Mt=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:t,d:"M18.5 5.5V8h-1V6.5H13v11h2v1H9v-1h2v-11H6.5V8h-1V5.5h13Z"})})},St=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:"none",stroke:t,d:"M12 6.008 19.138 18.5H4.862L12 6.008Z"})})},Nt=e=>{const t=k(e);return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:"none",stroke:t,d:"m16 11-2-2-2-2-2 2-2 2m8 6-2-2-2-2-2 2-2 2"})})},m={Clicker:n.memo(ft),Collapse:n.memo(ut),Eraser:n.memo(mt),Expand:n.memo(wt),Pencil:n.memo(vt),Selector:n.memo(yt),Rectangle:n.memo(Ct),Text:n.memo(Mt),Apps:n.memo(dt),Clean:n.memo(gt),Circle:n.memo(bt),Line:n.memo(kt),Arrow:n.memo(pt),Star:n.memo(At),Diamond:n.memo(ht),SpeechBalloon:n.memo(It),Triangle:n.memo(St),Up:n.memo(Nt),Down:n.memo(xt)},M=n.forwardRef((e,t)=>{const{content:r,disabled:a,active:i,onClick:s,interactive:l,placement:c="right",children:b}=e,{writable:d,theme:h}=n.useContext(v);return o(z.default,{className:"fastboard-tip",content:r,interactive:l,theme:h,disabled:a||!d,placement:c,offset:c.includes("right")?X:void 0,duration:300,children:o("button",{ref:t,className:u.default("fastboard-toolbar-btn",h,{active:i}),onClick:s,disabled:a||!d,children:b})})});function V(){const{theme:e}=n.useContext(v);return o("span",{className:u.default(`${pe}-cut-line`,e)})}function zt(e){const[t,r]=n.useState(!1);return n.useEffect(()=>{if(e){const a=()=>r(e.isWritable);return a(),e.callbacks.on("onEnableWriteNowChanged",a),()=>e.callbacks.off("onEnableWriteNowChanged",a)}},[e]),t}function Pt(e){const[t,r]=n.useState(void 0);return n.useEffect(()=>{if(e){r(e.state.memberState);const a=i=>{i.memberState&&r(i.memberState)};return e.callbacks.on("onRoomStateChanged",a),()=>e.callbacks.off("onRoomStateChanged",a)}},[e]),{memberState:t}}function Lt(e){const t=zt(e),{memberState:r}=Pt(e),a=n.useCallback(()=>{(e==null?void 0:e.isWritable)&&e.cleanCurrentScene()},[e]),i=n.useCallback((c,b)=>{(e==null?void 0:e.isWritable)&&e.setMemberState({currentApplianceName:c,shapeType:b})},[e]),s=n.useCallback(c=>{(e==null?void 0:e.isWritable)&&e.setMemberState({strokeWidth:c})},[e]),l=n.useCallback(c=>{(e==null?void 0:e.isWritable)&&e.setMemberState({strokeColor:c})},[e]);return{writable:t,memberState:r,cleanCurrentScene:a,setAppliance:i,setStrokeWidth:s,setStrokeColor:l}}const Tt={writable:!1,memberState:void 0,cleanCurrentScene:Y,setAppliance:Y,setStrokeWidth:Y,setStrokeColor:Y},se={[p.ApplianceNames.rectangle]:m.Rectangle,[p.ApplianceNames.ellipse]:m.Circle,[p.ApplianceNames.straight]:m.Line,[p.ApplianceNames.arrow]:m.Arrow,[p.ShapeType.Pentagram]:m.Star,[p.ShapeType.Rhombus]:m.Diamond,[p.ShapeType.Triangle]:m.Triangle,[p.ShapeType.SpeechBalloon]:m.SpeechBalloon},ve=[p.ApplianceNames.rectangle,p.ApplianceNames.ellipse,p.ApplianceNames.straight,p.ApplianceNames.arrow],Ce=[p.ShapeType.Pentagram,p.ShapeType.Rhombus,p.ShapeType.Triangle,p.ShapeType.SpeechBalloon],_=32+4,ye=8,jt=_*ye-4,Dt=_*2-4;function Wt({disabled:e,scrollTo:t}){const{theme:r,icons:a}=n.useContext(v),i=n.useCallback(()=>t(-_),[t]);return f(K,{children:[o(M,{content:"Up",disabled:e,onClick:i,children:o(w,{fallback:o(m.Up,{theme:r}),src:e?a==null?void 0:a.upIconDisable:a==null?void 0:a.upIcon,alt:"[up]"})}),o(V,{})]})}function Bt({disabled:e,scrollTo:t}){const{theme:r,icons:a}=n.useContext(v),i=n.useCallback(()=>t(_),[t]);return f(K,{children:[o(V,{}),o(M,{content:"Down",disabled:e,onClick:i,children:o(w,{fallback:o(m.Down,{theme:r}),src:e?a==null?void 0:a.downIconDisable:a==null?void 0:a.downIcon,alt:"[down]"})})]})}function $(e,t){return typeof t!="string"?e:f("span",{className:"fastboard-toolbar-tooltip",children:[o("span",{children:e}),o("span",{className:"fastboard-toolbar-hotkey",children:t.toUpperCase()})]})}function Zt(){var g;const e=E(),{theme:t,icons:r,writable:a,setAppliance:i,memberState:s,i18n:l}=n.useContext(v),c=n.useCallback(()=>i(p.ApplianceNames.clicker),[i]),b=(g=e==null?void 0:e.config.joinRoom.hotKeys)==null?void 0:g.changeToClick,h=(s==null?void 0:s.currentApplianceName)===p.ApplianceNames.clicker,x=!a;return o(M,{content:$(l==null?void 0:l.t("clicker"),b),onClick:c,active:h,children:o(w,{fallback:o(m.Clicker,{theme:t,active:h}),src:x?r==null?void 0:r.clickerIconDisable:r==null?void 0:r.clickerIcon,alt:"[clicker]"})})}function Ot(){const e=E(),{theme:t,icons:r,writable:a,setAppliance:i,memberState:s,i18n:l}=n.useContext(v),c=n.useCallback(()=>i(p.ApplianceNames.selector),[i]),d=(s==null?void 0:s.currentApplianceName)===p.ApplianceNames.selector,h=!a,x=((e==null?void 0:e.config.joinRoom.hotKeys)||Q).changeToSelector;return o(M,{content:$(l==null?void 0:l.t("selector"),x),onClick:c,active:d,children:o(w,{fallback:o(m.Selector,{theme:t,active:d}),src:h?r==null?void 0:r.selectorIconDisable:r==null?void 0:r.selectorIcon,alt:"[selector]"})})}function Rt(){const e=E(),{theme:t,icons:r,writable:a,setAppliance:i,memberState:s,i18n:l}=n.useContext(v),c=n.useCallback(()=>i(p.ApplianceNames.eraser),[i]),d=(s==null?void 0:s.currentApplianceName)===p.ApplianceNames.eraser,h=!a,x=((e==null?void 0:e.config.joinRoom.hotKeys)||Q).changeToEraser;return o(M,{content:$(l==null?void 0:l.t("eraser"),x),onClick:c,active:d,children:o(w,{fallback:o(m.Eraser,{theme:t,active:d}),src:h?r==null?void 0:r.eraserIconDisable:r==null?void 0:r.eraserIcon,alt:"[eraser]"})})}function Et(){const{theme:e,icons:t,writable:r,cleanCurrentScene:a,i18n:i}=n.useContext(v),s=!r;return o(M,{content:i==null?void 0:i.t("clean"),onClick:a,children:o(w,{fallback:o(m.Clean,{theme:e}),src:s?t==null?void 0:t.cleanIconDisable:t==null?void 0:t.cleanIcon,alt:"[clean]"})})}var Ht="data:image/png;base64,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",Gt="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAB+5JREFUaN7tWglIVWkUdsMtC5OcRFMKoaZ0yLGNaSYl0honUlscSspkMrUwM0dsk7ByKdRSxKUUhqksMttwyRYqpwxpZ1qo0LSMkzk6YloWmc7/HeeV9/nue8/Kp80kHHjbvff//rN95/vV6+zspP+C6X0B8n8Acv/+fUpNTaU1a9bQtm3b6MqVK/T27dvPB8jLly8pPDycjIyMyMDAiIYOHSFem5K+vj4tXLiQ6uvrBz6Qjo4OCgwMFIs2IHf3FRQfX0lpac2UlFRLPj5bydDQhDw9PamtrW1gAykvLxeLNSQvr/W0e3cn7dr13vA+ICCH9PT0KCoqio4fP05nzpyhq1ev0uPHj6m9vX3gAFmxYgWZm1sJLzRJQCgsK6udHBwmkI2NDYWGhlJISAgbrgO4nJwcunnzJr169ar/gFRXV5Orqys5On7fwxsKy8nppKlTfxFgzSk4OFilAdi6deuouLiYXrx4oTsgtbW1lJmZyTvs4OBAdnbOskDw+YQJP9PgwYP593JgFLZx40a6detW3wJpbW2lffv20apVq949eMqUKSJHjCkm5qpKICkpdRx6vr6+dOHCBc4ThFNMTMy7UFMGg7A7dOiQVjnUayC3b9/m3VJ+aEBAAJmZmXEebN9eI/FMWtrf5OT0I1lYWHAeKFe7J0+ecDjFxsaq9E52dja9fv360wDBA0tLS2nlypUqdw4htmfPHl6shYU1eXisoSVLcmn27BgaNmwU95asrCy1z0Cinz59miIiIiT3X758udic7fz869evqyzhWgGBa/fv369yt1JSUqiysvLdb69du0bz5s3jXEC5NTU1pRkzZtCpU6e09vrTp08pMTGR7z99+nTRWIfyvRTm6OjIYYnN1RoIqMXevXt7xDA6+MmTJ1XGLx7Q1NREjx49ooaGhg+iJ8jDuXPn8sLt7b8VzfZ3Wru2nIKC8gSQH5gtbNmyRT2Qmpoa3kEkJZJaGcSGDRskXugLQy4h51xdF1BGRqukcGRmtolSHsjhikbcA8i9e/do1qxZZGJiwjsB1Hjt4uJCy5YtYxCbN2+mxsbGPmezyBNT08GUnEwqq2BqaqPIxWHk5+cnBXLjxg2ysrISsW1N3t6bKTr6DxE+JTRp0iLmT3Z2dgzi+fPnOqHl4GWjRn1Hubmq+xI+Hzt2Jo0ZM4ZDmYGgtGHXLS1tKS6uUlI6u3hSLoPpHpN9bSgQyAV1QJycvGj06NGcgwzkxIkTHEohIfky9KKDnJ29GD2SUBdA0CQHDbLiEFK1pvT0Ft74OXPmvA+trVu3krGxmSilT1VeBFu8OJtzBrxKF0AuXbrEbNrNLVQ0xHal9bylmTOjeD3oLe+AbNq0SSSWBe3YUS8LJDDwN/ZaVVWVzsIL1RHPHDdulpg2T4tps0Yw5TJRyebz56BIil7CQAoKCvgL/FiOuU6e7C/quT01NzfrDAh6FBqutbW1pCGikkZHR0toi56i+YC9jhgxvkdMItmjos7zyLp69ep+ERaweSjHbm5u3B6WLl1Kd+7cUU1RwHFAJ4YP/1pwmzwxqlYJEvcncyUTk0HCveN00j/kLD4+XtKUMVnKci0QsyFDhvzbDA255HaNr15UV1fXbyBAJjFFdiepEDpkgWRkZAguEyTEAh92I+IT0k53ctYfhkrZfRgDoVTmbxIgCQkJkrETfwNBfDt48KAkrDBsqaXxcXFxEiBgrv0NAoUIQp9iXfDM3bt31QMZiB45evSoxBugSW/evFEPBFNe94sw1vYnCCiTKPnd13Tx4kXNo+6xY8ckF+F9f4HArqPYdF8PQl+VN3oAgfzS/UJwMF1ULIwGhYWFHDZJSUk8LIFtKGteysKFLBAM9ZGRkZLE6utJ8MiRI2Rra8sE0MjITFjXUAdagqFJsRaM271SUfLy8iQ7gWMBOXd+rOXn5/O4CoUyIqJU0KMmnggDA3PFkOfAo66/vz9HhnID1AgEgkFYWJgEDNyOMgjtCd1/586dTLM1aU3qrKWlhadOe3sXMVs09+B3sbG3edR1cnKiZ8+efZhAd+DAAQkQb29vGjlyJLvcwKCLuuD1tGnTVNZ0bQxzRBcVL5QdHTw9I1kr1qaf6ckd2GA+BwjwLAMDzOzfiIcWC280iIQkIb7tEvP9V4JkDmcNuLdAkkUMYUN27PhLFkhYWBHnTkVFxYdLppCEQJ2hHNrYjBPx29DD/TEx14X7h3Ac97ZKoahgkYmJNbJAgoL28yZCGPko7ffw4cPs/tDQAlmF3dPzV05KTe7HTIHymZubyxs0f37XlOfnlyKr4I8f78Me1+bMRC0QJDV2LTm5TnbXwsO7hAuEYklJCZ0/f57Kysro7NmzTC8gQKM/QJlUPk5A2UVCr19frgSmgxYtShP31efi8tHHChCdcbOEhGpZICEhXV6D3qtoXArTdAaCkLS0tGThw80thO8FadTZ+Sd+LqZBTWVXKyAIBSxywYJkle7HZxACMFkqlEhNpjhuA0FFEqNQYAaCUI2eYmxszNoAZo7eHJzqaeI77u7uIgcshfsrZIW7iRMnqvUAvsOEl56ezmVXeUxV5BCODEBUP6Q/aVTjHz58yD3E2Nicj52Dg/PZ/S4uvtxTPDw86MGDB3T58mUWvkE0kRtFRUV07tw59iqOCfrqWLpX5yNwP5QLlGKFJINExcmVrrTgT3r0hjMP7DC6ubZJ+OWfar4A+cztHyyv+3VOTz+jAAAAAElFTkSuQmCC",Jt="data:image/png;base64,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";function Vt({content:e,onClick:t}){const{theme:r,icons:a,writable:i}=n.useContext(v),s=!i,l=o(M,{content:"Apps",onClick:t,children:o(w,{fallback:o(m.Apps,{theme:r}),src:s?a==null?void 0:a.appsIconDisable:a==null?void 0:a.appsIcon,alt:"[apps]"})});return e===!1?l:o("span",{className:"fastboard-toolbar-btn-interactive",children:o(z.default,{className:"fastboard-tip",content:Ut(e),theme:r,placement:"right-end",trigger:"click",offset:X,arrow:!1,interactive:!0,children:l})})}function Ut(e){return o("div",{className:"fastboard-toolbar-panel apps",children:o("div",{className:"fastboard-toolbar-apps",children:e||o(Ft,{})})})}function Ft(){const e=E();return f(K,{children:[o(ce,{title:"Code Editor",src:Ht,alt:"[code editor]",onClick:e==null?void 0:e.insertCodeEditor.bind(e)}),o(ce,{title:"GeoGebra",src:Gt,alt:"[geogebra]",onClick:e==null?void 0:e.insertGeoGebra.bind(e)}),o(ce,{title:"Countdown",src:Jt,alt:"[countdown]",onClick:e==null?void 0:e.insertCountdown.bind(e)})]})}function ce({title:e,src:t,alt:r,onClick:a}){return f("span",{className:"fastboard-toolbar-app-icon",children:[o(M,{placement:"top",content:e,onClick:a,children:o("img",{src:t,alt:r,title:e})}),o("span",{className:"fastboard-toolbar-app-icon-text",children:e})]})}const oe={"#E02020":[224,32,32],"#F7B500":[247,181,0],"#6DD400":[109,212,0],"#32C5FF":[50,197,255],"#0091FF":[0,145,255],"#6236FF":[98,54,255],"#B620E0":[182,32,224],"#6D7278":[109,114,120]},Yt=Object.keys(oe);function de(){const{theme:e,memberState:t,setStrokeColor:r,writable:a}=n.useContext(v),i=t==null?void 0:t.strokeColor,s=!a;return o("div",{className:u.default("fastboard-toolbar-color-box",e),children:Yt.map(l=>o("div",{className:u.default("fastboard-toolbar-color-item",e),onClick:()=>r(oe[l]),children:o("div",{className:u.default("fastboard-toolbar-color-border",e,{active:i&&Fe(i,oe[l])}),children:o("button",{className:u.default("fastboard-toolbar-color-btn"),style:{background:l},disabled:s,onClick:c=>{c.stopPropagation(),r(oe[l])}})})},l))})}function Ie(){const{theme:e,writable:t,memberState:r,setStrokeWidth:a}=n.useContext(v),{activeColor:i}=P[e],s=(r==null?void 0:r.strokeWidth)||0;return o(Ve.default,{disabled:!t,className:u.default("fastboard-toolbar-slider",e),trackStyle:{background:i},handleStyle:{border:`1px solid ${i}`},value:s,onChange:a,min:1,max:32})}function Qt(){const e=E(),{theme:t,icons:r,writable:a,setAppliance:i,memberState:s,i18n:l}=n.useContext(v),c=n.useCallback(()=>{i(p.ApplianceNames.pencil)},[i]),d=(s==null?void 0:s.currentApplianceName)===p.ApplianceNames.pencil,h=!a,x=((e==null?void 0:e.config.joinRoom.hotKeys)||Q).changeToPencil;return o("span",{className:"fastboard-toolbar-btn-interactive",children:o(z.default,{className:"fastboard-tip",content:qt(),theme:t,placement:"right-start",trigger:"click",offset:X,arrow:!1,interactive:!0,children:f(M,{content:$(l==null?void 0:l.t("pencil"),x),active:d,onClick:c,children:[o(w,{fallback:o(m.Pencil,{theme:t,active:d}),src:h?r==null?void 0:r.pencilIconDisable:r==null?void 0:r.pencilIcon,alt:"[pencil]"}),o("span",{className:"fastboard-toolbar-triangle"})]})})})}function qt(){return f("div",{className:"fastboard-toolbar-panel pencil",children:[o(Ie,{}),o(V,{}),o(de,{})]})}function Kt(){const e=E(),{theme:t,icons:r,writable:a,setAppliance:i,memberState:s,i18n:l}=n.useContext(v),c=n.useCallback(()=>{i(p.ApplianceNames.text)},[i]),d=(s==null?void 0:s.currentApplianceName)===p.ApplianceNames.text,h=!a,x=((e==null?void 0:e.config.joinRoom.hotKeys)||Q).changeToText;return o("span",{className:"fastboard-toolbar-btn-interactive",children:o(z.default,{className:"fastboard-tip",content:Xt(),theme:t,placement:"right-start",trigger:"click",offset:X,arrow:!1,interactive:!0,children:f(M,{content:$(l==null?void 0:l.t("text"),x),active:d,onClick:c,children:[o(w,{fallback:o(m.Text,{theme:t,active:d}),src:h?r==null?void 0:r.textIconDisable:r==null?void 0:r.textIcon,alt:"[text]"}),o("span",{className:"fastboard-toolbar-triangle"})]})})})}function Xt(){return o("div",{className:"fastboard-toolbar-panel text",children:o(de,{})})}const _t=new Set([...ve,...Ce]);function $t(){const{theme:e,memberState:t,i18n:r}=n.useContext(v),a=t==null?void 0:t.currentApplianceName,i=t==null?void 0:t.shapeType,s=a===p.ApplianceNames.shape?i:a,l=_t.has(s),c=se[s]||m.Rectangle;return o("span",{className:"fastboard-toolbar-btn-interactive",children:o(z.default,{className:"fastboard-tip",content:eo(),theme:e,placement:"right-start",trigger:"click",offset:X,arrow:!1,interactive:!0,children:f(M,{content:r==null?void 0:r.t("shape"),active:l,children:[o(c,{theme:e,active:l}),o("span",{className:"fastboard-toolbar-triangle"})]})})})}function eo(){return f("div",{className:"fastboard-toolbar-panel shapes",children:[o(to,{}),o(V,{}),o(Ie,{}),o(V,{}),o(de,{})]})}function to(){const{i18n:e}=n.useContext(v);return f("div",{className:"fastboard-toolbar-shapes",children:[ve.map(t=>o(oo,{content:e==null?void 0:e.t(t),Appliance:t,Icon:se[t]},t)),Ce.map(t=>o(ro,{content:e==null?void 0:e.t(t),shape:t,Icon:se[t]},t))]})}function oo({content:e,Appliance:t,Icon:r}){const{theme:a,writable:i,setAppliance:s,memberState:l}=n.useContext(v),c=l==null?void 0:l.currentApplianceName;return o(M,{content:e,disabled:!i,placement:"top",onClick:()=>s(t),children:o(r,{theme:a,active:c===t})})}function ro({content:e,shape:t,Icon:r}){const{theme:a,writable:i,setAppliance:s,memberState:l}=n.useContext(v),b=(l==null?void 0:l.currentApplianceName)===p.ApplianceNames.shape&&(l==null?void 0:l.shapeType);return o(M,{content:e,disabled:!i,placement:"top",onClick:()=>s(p.ApplianceNames.shape,t),children:o(r,{theme:a,active:b===t})})}function ao(){var y,S,B,H,N,j,C;const e=E(),t=n.useRef(null),[r,a]=n.useState(0),[i,s]=n.useState(0),l=(B=(S=(y=e==null?void 0:e.config.toolbar)==null?void 0:y.apps)==null?void 0:S.enable)!=null?B:!0,c=i<_*ye+48,b=le(i-48*(c?3:1),Dt,jt),d=Math.max(i-b-1,0),h=r===0,x=r===d,g=n.useCallback(I=>{a(le(r+I,0,d))},[d,r]);return n.useEffect(()=>{t.current&&(t.current.scrollTop=r)},[r]),n.useEffect(()=>{var L,F;const I=(F=(L=t.current)==null?void 0:L.parentElement)==null?void 0:F.parentElement;if(I){const{paddingTop:O,paddingBottom:Le}=getComputedStyle(I),Te=parseInt(O)+parseInt(Le)||0,ge=new ResizeObserver(()=>{s(I.getBoundingClientRect().height-Te)});return ge.observe(I),()=>ge.disconnect()}},[]),f(K,{children:[c&&o(Wt,{scrollTo:g,disabled:h}),f("div",{ref:t,className:`${pe}-section`,style:{height:`${b}px`,overflow:c?"hidden":"visible"},children:[o(Zt,{}),o(Ot,{}),o(Qt,{}),o(Kt,{}),o($t,{}),o(Rt,{}),o(Et,{}),l&&o(Vt,{content:(N=(H=e==null?void 0:e.config.toolbar)==null?void 0:H.apps)==null?void 0:N.content,onClick:(C=(j=e==null?void 0:e.config.toolbar)==null?void 0:j.apps)==null?void 0:C.onClick})]}),c&&o(Bt,{scrollTo:g,disabled:x})]})}const v=n.createContext(T({theme:"light"},Tt)),pe="fastboard-toolbar",Ae=({theme:e="light",icons:t,room:r,i18n:a})=>{const[i,s]=n.useState(!0),l=Lt(r),c=n.useCallback(()=>s(d=>!d),[]),b=!l.writable;return o(v.Provider,{value:G(T({theme:e,icons:t},l),{i18n:a}),children:f("div",{className:u.default(pe,e),children:[i?o(M,{content:a==null?void 0:a.t("collapse"),onClick:c,children:o(w,{fallback:o(m.Collapse,{theme:e}),src:b?t==null?void 0:t.collapseIconDisable:t==null?void 0:t.collapseIcon})}):o(M,{content:a==null?void 0:a.t("expand"),onClick:c,children:o(w,{fallback:o(m.Expand,{theme:e}),src:b?t==null?void 0:t.expandIconDisable:t==null?void 0:t.expandIcon})}),i&&f(K,{children:[o(V,{}),o(ao,{})]})]})})};function no({theme:e="light",active:t}){const r=P[e],a=t?r.activeColor:r.color;return o("svg",{viewBox:"0 0 24 24",children:f("g",{fill:"none",fillRule:"evenodd",stroke:a,strokeLinecap:"round",strokeLinejoin:"round",children:[o("path",{d:"M10 14H6v-4"}),o("path",{d:"m6 14 .788-.9A7.005 7.005 0 0 1 18 14h0"})]})})}function io({theme:e="light",active:t}){const r=P[e],a=t?r.activeColor:r.color;return o("svg",{viewBox:"0 0 24 24",children:f("g",{fill:"none",fillRule:"evenodd",stroke:a,strokeLinecap:"round",strokeLinejoin:"round",children:[o("path",{d:"M14 14h4v-4"}),o("path",{d:"m18 14-.788-.9A7.005 7.005 0 0 0 6 14h0"})]})})}const be="fastboard-redo-undo";function Me({room:e,theme:t="light",undoIcon:r,undoIconDisable:a,redoIcon:i,redoIconDisable:s,i18n:l}){const[c,b]=n.useState(!1),[d,h]=n.useState(0),[x,g]=n.useState(0);n.useEffect(()=>{if(e){b(e.isWritable),e.isWritable&&(e.disableSerialization=!1);const S=()=>b((e==null?void 0:e.isWritable)||!1);return e.callbacks.on("onEnableWriteNowChanged",S),e.callbacks.on("onCanUndoStepsUpdate",h),e.callbacks.on("onCanRedoStepsUpdate",g),()=>{e.callbacks.off("onEnableWriteNowChanged",S),e.callbacks.off("onCanUndoStepsUpdate",h),e.callbacks.off("onCanRedoStepsUpdate",g)}}},[e]);const y=!c;return f("div",{className:u.default(be,t),children:[o(z.default,{className:"fastboard-tip",content:l==null?void 0:l.t("undo"),theme:t,disabled:y,placement:"top",duration:300,offset:Z,children:o("button",{className:u.default(`${be}-btn`,"undo",t),disabled:y||d===0,onClick:n.useCallback(()=>e&&e.undo(),[e]),children:o(w,{fallback:o(no,{theme:t}),src:d===0?a:r,alt:"[undo]"})})}),o(z.default,{className:"fastboard-tip",content:l==null?void 0:l.t("redo"),theme:t,disabled:y,placement:"top",duration:300,offset:Z,children:o("button",{className:u.default(`${be}-btn`,"redo",t),disabled:y||x===0,onClick:n.useCallback(()=>e&&e.redo(),[e]),children:o(w,{fallback:o(io,{theme:t}),src:x===0?s:i,alt:"[redo]"})})})]})}function lo({theme:e="light",active:t}){const r=P[e],a=t?r.activeColor:r.color;return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:"none",stroke:a,strokeLinecap:"round",strokeLinejoin:"round",d:"M7 12h10"})})}function so({theme:e="light",active:t}){const r=P[e],a=t?r.activeColor:r.color;return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:"none",stroke:a,strokeLinecap:"round",strokeLinejoin:"round",d:"M12 7v10m-5-5h10"})})}function co({theme:e="light",active:t}){const r=P[e],a=t?r.activeColor:r.color;return o("svg",{viewBox:"0 0 24 24",children:f("g",{fill:"none",fillRule:"evenodd",transform:"translate(-176 -684)",children:[o("path",{stroke:a,strokeLinejoin:"round",d:"M188 688v4m0 8v4m8-8h-4m-8 0h-4"}),o("circle",{cx:"188",cy:"696",r:"6",stroke:a}),o("circle",{cx:"188",cy:"696",r:"1",fill:a})]})})}const U="fastboard-zoom-control",W=[.10737418240000011,.13421772800000012,.16777216000000014,.20971520000000016,.26214400000000015,.3276800000000002,.4096000000000002,.5120000000000001,.6400000000000001,.8,1,1.26,1.5876000000000001,2.000376,2.5204737600000002,3.1757969376000004,4.001504141376,5.041895218133761,6.352787974848539,8.00451284830916,10];function re(e,t){const{length:r}=W,a=r-1;if(e<W[0])return W[0];if(e>W[a])return W[a];for(let i=0;i<r;++i){const s=W[i],l=i===0?-1/0:(W[i-1]+s)/2,c=i===a?1/0:(W[i+1]+s)/2;if(l<=e&&e<=c)return W[le(i+t,0,a)]}return 1}function Se({room:e,manager:t,theme:r="light",resetIcon:a,resetIconDisable:i,minusIcon:s,minusIconDisable:l,plusIcon:c,plusIconDisable:b,i18n:d}){const[h,x]=n.useState(!1),[g,y]=n.useState(1),S=n.useCallback(()=>{if(e==null?void 0:e.isWritable)if(t)t.mainView.moveCamera({scale:1,centerX:0,centerY:0});else{const{scenes:j,index:C}=e.state.sceneState;j[C].ppt?e.scalePptToFit():e.moveCamera({scale:1,centerX:0,centerY:0})}},[e,t]),B=n.useCallback(()=>{(e==null?void 0:e.isWritable)&&(t?t.mainView.moveCamera({scale:re(g,1),centerX:0,centerY:0}):e.moveCamera({scale:re(g,1),centerX:0,centerY:0}))},[e,t,g]),H=n.useCallback(()=>{(e==null?void 0:e.isWritable)&&(t?t.mainView.moveCamera({scale:re(g,-1),centerX:0,centerY:0}):e.moveCamera({scale:re(g,-1),centerX:0,centerY:0}))},[e,t,g]);n.useEffect(()=>{e&&(x(e.isWritable),y(e.state.cameraState.scale)),t&&y(t.mainView.camera.scale);const j=L=>{L.cameraState&&y(L.cameraState.scale)},C=({scale:L})=>y(L),I=()=>x((e==null?void 0:e.isWritable)||!1);return e&&(e.callbacks.on("onEnableWriteNowChanged",I),t?t.mainView.callbacks.on("onCameraUpdated",C):e.callbacks.on("onRoomStateChanged",j)),()=>{e&&(e.callbacks.off("onEnableWriteNowChanged",I),e.callbacks.off("onRoomStateChanged",j),t==null||t.mainView.callbacks.off("onCameraUpdated",C))}},[e,t]);const N=!h;return f("div",{className:u.default(U,r),children:[o(z.default,{className:"fastboard-tip",content:d==null?void 0:d.t("zoomOut"),theme:r,disabled:N,placement:"top",duration:300,offset:Z,children:o("button",{className:u.default(`${U}-btn`,"minus",r),disabled:N,onClick:H,children:o(w,{fallback:o(lo,{theme:r}),src:N?l:s,alt:"[minus]"})})}),o("span",{className:u.default(`${U}-scale`,r),children:Math.ceil(g*100)}),o("span",{className:u.default(`${U}-percent`,r),children:"%"}),o(z.default,{className:"fastboard-tip",content:d==null?void 0:d.t("zoomIn"),theme:r,disabled:N,placement:"top",duration:300,offset:Z,children:o("button",{className:u.default(`${U}-btn`,"plus",r),disabled:N,onClick:B,children:o(w,{fallback:o(so,{theme:r}),src:N?b:c,alt:"[plus]"})})}),o(z.default,{className:"fastboard-tip",content:d==null?void 0:d.t("reset"),theme:r,disabled:N,placement:"top",duration:300,offset:Z,children:o("button",{className:u.default(`${U}-btn`,"reset",r),disabled:N,onClick:S,children:o(w,{fallback:o(co,{theme:r}),src:N?i:a,alt:"[reset]"})})})]})}function po({theme:e="light",active:t}){const r=P[e],a=t?r.activeColor:r.color;return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:a,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"})})}function bo({theme:e="light",active:t}){const r=P[e],a=t?r.activeColor:r.color;return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:"none",stroke:a,strokeLinecap:"round",strokeLinejoin:"round",d:"m14 16-2-2-2-2 2-2 2-2"})})}function go({theme:e="light",active:t}){const r=P[e],a=t?r.activeColor:r.color;return o("svg",{viewBox:"0 0 24 24",children:o("path",{fill:"none",stroke:a,strokeLinecap:"round",strokeLinejoin:"round",d:"m10 16 2-2 2-2-2-2-2-2"})})}const R="fastboard-page-control";function Ne({room:e,manager:t,theme:r="light",addIcon:a,addIconDisable:i,prevIcon:s,prevIconDisable:l,nextIcon:c,nextIconDisable:b,i18n:d}){const[h,x]=n.useState(!1),[g,y]=n.useState(0),[S,B]=n.useState(0),H=n.useCallback(async()=>{if(t&&e){await t.switchMainViewToWriter();const I=e.state.sceneState.contextPath;e.putScenes(I,[{}],S),await t.setMainViewSceneIndex(g)}else if(!t&&e){const I=e.state.sceneState.contextPath;e.putScenes(I,[{}],S),e.setSceneIndex(g)}},[e,t,S,g]),N=n.useCallback(()=>{(e==null?void 0:e.isWritable)&&(t?t.setMainViewSceneIndex(g-1):e.pptPreviousStep())},[e,t,g]),j=n.useCallback(()=>{(e==null?void 0:e.isWritable)&&(t?t.setMainViewSceneIndex(g+1):e.pptNextStep())},[e,t,g]);n.useEffect(()=>{e&&(x(e.isWritable),y(e.state.sceneState.index),B(e.state.sceneState.scenes.length));const I=O=>{O.sceneState&&(y(O.sceneState.index),B(O.sceneState.scenes.length))},L=O=>{e&&O===0&&(y(e.state.sceneState.index),B(e.state.sceneState.scenes.length))},F=()=>x((e==null?void 0:e.isWritable)||!1);return e&&(e.callbacks.on("onEnableWriteNowChanged",F),e.callbacks.on("onRoomStateChanged",I),t==null||t.callbacks.on("mainViewModeChange",L)),()=>{e&&(e.callbacks.off("onEnableWriteNowChanged",F),e.callbacks.off("onRoomStateChanged",I),t==null||t.callbacks.off("mainViewModeChange",L))}},[e,t]);const C=!h;return f("div",{className:u.default(R,r),children:[o(z.default,{className:"fastboard-tip",content:d==null?void 0:d.t("prevPage"),theme:r,disabled:C,placement:"top",duration:300,offset:Z,children:o("button",{className:u.default(`${R}-btn`,"prev",r),disabled:C||g===0,onClick:N,children:o(w,{fallback:o(bo,{theme:r}),src:C?l:s,alt:"[prev]"})})}),o("span",{className:u.default(`${R}-page`,r),children:S===0?"\u2026":g+1}),o("span",{className:u.default(`${R}-slash`,r),children:"/"}),o("span",{className:u.default(`${R}-page-count`,r),children:S}),o(z.default,{className:"fastboard-tip",content:d==null?void 0:d.t("nextPage"),theme:r,disabled:C,placement:"top",duration:300,offset:Z,children:o("button",{className:u.default(`${R}-btn`,"next",r),disabled:C||g===S-1,onClick:j,children:o(w,{fallback:o(go,{theme:r}),src:C?b:c,alt:"[next]"})})}),o(z.default,{className:"fastboard-tip",content:d==null?void 0:d.t("addPage"),theme:r,disabled:C,placement:"top",duration:300,offset:Z,children:o("button",{className:u.default(`${R}-btn`,"add",r),disabled:C,onClick:H,children:o(w,{fallback:o(po,{theme:r}),src:C?i:a,alt:"[add]"})})})]})}function fo({instance:e}){const[t]=n.useState(()=>new Ye),r=n.useCallback(a=>t.schedule(a?()=>e.mount(a):()=>e.unmount()),[e,t]);return o(ae.Context.Provider,{value:e,children:f("div",{className:"fastboard-root",children:[!e.room&&o("div",{className:"fastboard-loading",children:"Loading\u2026"}),o("div",{className:"fastboard-view",ref:r}),o("div",{className:"fastboard-left",children:o(Ae,{room:e.room,manager:e.manager,i18n:e.i18n})}),f("div",{className:"fastboard-bottom-left",children:[o(Me,{room:e.room,manager:e.manager,i18n:e.i18n}),o(Se,{room:e.room,manager:e.manager,i18n:e.i18n})]}),o("div",{className:"fastboard-bottom-right",children:o(Ne,{room:e.room,manager:e.manager,i18n:e.i18n})})]})})}class ae{constructor(t){A(this,"config");A(this,"sdk",null);A(this,"room",null);A(this,"manager",null);A(this,"i18n",null);A(this,"ready",!1);A(this,"resolveReady");A(this,"readyPromise");A(this,"_target",null);this.config=t,this.refreshReadyPromise(),this.initialize()}refreshReadyPromise(){this.readyPromise=new Promise(t=>{this.resolveReady=()=>{this.resolveReady=Y,this.ready=!0,t()}})}async initialize(){const t=await et(this.config.sdkConfig,this.config.joinRoom,this.config.managerConfig||{},this.config.language||"en-US");this.accept(t),this.resolveReady()}get target(){return this._target}set target(t){this._target&&t&&ie.default.unmountComponentAtNode(this._target),this._target=t,this.forceUpdate()}async forceUpdate(){await this.readyPromise,this.target&&ie.default.render(o(fo,{instance:this}),this.target)}accept({sdk:t,room:r,manager:a,i18n:i}){this.sdk=t,this.room=r,this.manager=a,this.i18n=i,this.forceUpdate()}async dispose(){this.room&&await this.unmount(),this.target&&(ie.default.unmountComponentAtNode(this.target),this.sdk=this.room=this.manager=this.target=null)}async mount(t){await this.readyPromise,this.manager&&this.manager.bindContainer(t)}async unmount(){if(this.manager&&(this.manager.destroy(),this.manager=null),this.room){try{await this.room.disconnect()}catch{}this.room=null}this.refreshReadyPromise()}insertDocs(t){if(!this.manager)throw new Error("[WhiteboardApp] cannot insert doc before mounted");switch(t.fileType){case"pdf":case"ppt":return this.manager.addApp({kind:"DocsViewer",options:{scenePath:t.scenePath,title:t.title,scenes:t.scenes}});case"pptx":return this.manager.addApp({kind:"Slide",options:{scenePath:t.scenePath,title:t.title},attributes:{taskId:t.taskId,url:t.url}})}}insertCodeEditor(){if(!this.manager)throw new Error("[WhiteboardApp] cannot insert app before mounted");return this.manager.addApp({kind:"Monaco",options:{title:"Code Editor"}})}insertGeoGebra(){if(!this.manager)throw new Error("[WhiteboardApp] cannot insert app before mounted");return this.manager.addApp({kind:"GeoGebra",options:{title:"GeoGebra"}})}insertCountdown(){if(!this.manager)throw new Error("[WhiteboardApp] cannot insert app before mounted");return this.manager.addApp({kind:"Countdown",options:{title:"Countdown"}})}async changeLanguage(t){var r;try{await((r=this.i18n)==null?void 0:r.changeLanguage(t))}finally{await this.forceUpdate()}}}A(ae,"Context",n.createContext(null));function E(){return n.useContext(ae.Context)}var uo=`.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}.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}.telebox-title{overflow:hidden;margin:0 24px 0 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-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-maximized{display:flex}.telebox-titles{flex:1;height:100%;margin:0 16px 0 -16px;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{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}.telebox-titles-tab~.telebox-titles-tab{margin-left:2px}.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-loading{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;opacity:.6}.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.dark{color:#ddd;background-color:#333333d9;border:1px solid rgba(0,0,0,.45)}.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-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-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}
|
|
13
|
-
`;
|
|
12
|
+
*/var ct=Qe.default,ye=60103;K.Fragment=60107;if(typeof Symbol=="function"&&Symbol.for){var Ie=Symbol.for;ye=Ie("react.element"),K.Fragment=Ie("react.fragment")}var dt=ct.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,pt=Object.prototype.hasOwnProperty,bt={key:!0,ref:!0,__self:!0,__source:!0};function Ae(e,t,o){var r,n={},s=null,l=null;o!==void 0&&(s=""+o),t.key!==void 0&&(s=""+t.key),t.ref!==void 0&&(l=t.ref);for(r in t)pt.call(t,r)&&!bt.hasOwnProperty(r)&&(n[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)n[r]===void 0&&(n[r]=t[r]);return{$$typeof:ye,type:e,key:s,ref:l,props:n,_owner:dt.current}}K.jsx=Ae;K.jsxs=Ae;ae.exports=K;const a=ae.exports.jsx,h=ae.exports.jsxs,X=ae.exports.Fragment;function w({fallback:e,src:t,alt:o="[icon]"}){return t?a("img",{src:t,alt:o,title:o}):e}const Se={color:"#5D5D5D",activeColor:"#3381FF",backgroundColor:"#fff",hoverBackgroundColor:"rgba(51, 129, 255, 0.1)"},ft=V(S({},Se),{color:"#eee",backgroundColor:"#111"}),z={light:Se,dark:ft},m=e=>{let t;return e.theme?t=z[e.theme]:t=z.light,e.active?t.activeColor:t.color},j=[0,11],_=[0,11],gt=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:h("g",{fill:t,children:[a("path",{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"}),a("path",{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"})]})})},ut=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:t,d:"M19 5v6l-2.647-2.646L5.99 18.718l-.708-.708L15.645 7.646 13 5h6Z"})})},ht=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("rect",{width:"15",height:"15",x:"4.5",y:"4.5",fill:"none",stroke:t,rx:"7.5"})})},xt=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:t,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"})})},mt=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:h("g",{fill:"none",children:[a("path",{d:"M0 0h24v24H0z"}),a("path",{fill:t,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"})]})})},wt=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:"none",stroke:t,d:"m8 10-2 2 2 2m10-8H6m12 12H6m12-4h-8m8-4h-8"})})},kt=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:"none",stroke:t,d:"M4.222 12 12 4.222 19.778 12 12 19.778z"})})},vt=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:"none",stroke:t,d:"m16 13-2 2-2 2-2-2-2-2m8-6-2 2-2 2-2-2-2-2"})})},Ct=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:t,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"})})},yt=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:"none",stroke:t,d:"m16 10 2 2-2 2M6 6h12M6 18h12M6 14h8m-8-4h8"})})},It=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:t,d:"m18.01 5.282.708.708L5.99 18.718l-.708-.708z"})})},At=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:t,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"})})},St=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:"none",stroke:t,d:"M5.5 5.5h13v13h-13z"})})},Mt=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:t,d:"m12 12 8 2.667-3.556 1.777L14.667 20 12 12Zm3-8v7.5h-1V5H5v9h6.5v1H4V4h11Z"})})},Nt=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:"none",stroke:t,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"})})},Pt=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:"none",stroke:t,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"})})},zt=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:t,d:"M18.5 5.5V8h-1V6.5H13v11h2v1H9v-1h2v-11H6.5V8h-1V5.5h13Z"})})},Tt=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:"none",stroke:t,d:"M12 6.008 19.138 18.5H4.862L12 6.008Z"})})},Lt=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:"none",stroke:t,d:"m16 11-2-2-2-2-2 2-2 2m8 6-2-2-2-2-2 2-2 2"})})},k={Clicker:i.memo(mt),Collapse:i.memo(wt),Eraser:i.memo(Ct),Expand:i.memo(yt),Pencil:i.memo(At),Selector:i.memo(Mt),Rectangle:i.memo(St),Text:i.memo(zt),Apps:i.memo(gt),Clean:i.memo(xt),Circle:i.memo(ht),Line:i.memo(It),Arrow:i.memo(ut),Star:i.memo(Pt),Diamond:i.memo(kt),SpeechBalloon:i.memo(Nt),Triangle:i.memo(Tt),Up:i.memo(Lt),Down:i.memo(vt)},N=i.forwardRef((e,t)=>{const{content:o,disabled:r,active:n,onClick:s,interactive:l,placement:c="right",children:p}=e,{writable:d,theme:f}=i.useContext(v);return a(M.default,{className:"fastboard-tip",content:o,interactive:l,theme:f,disabled:r||!d,placement:c,offset:c.includes("right")?_:void 0,duration:300,children:a("button",{ref:t,className:g.default("fastboard-toolbar-btn",f,{active:n}),onClick:s,disabled:r||!d,children:p})})});function U(){const{theme:e}=i.useContext(v);return a("span",{className:g.default(`${fe}-cut-line`,e)})}function jt(e){const[t,o]=i.useState(!1);return i.useEffect(()=>{if(e){const r=()=>o(e.isWritable);return r(),e.callbacks.on("onEnableWriteNowChanged",r),()=>e.callbacks.off("onEnableWriteNowChanged",r)}},[e]),t}function Dt(e){const[t,o]=i.useState(void 0);return i.useEffect(()=>{if(e){o(e.state.memberState);const r=n=>{n.memberState&&o(n.memberState)};return e.callbacks.on("onRoomStateChanged",r),()=>e.callbacks.off("onRoomStateChanged",r)}},[e]),{memberState:t}}function Wt(e){const t=jt(e),{memberState:o}=Dt(e),r=i.useCallback(()=>{(e==null?void 0:e.isWritable)&&e.cleanCurrentScene()},[e]),n=i.useCallback((c,p)=>{(e==null?void 0:e.isWritable)&&e.setMemberState({currentApplianceName:c,shapeType:p})},[e]),s=i.useCallback(c=>{(e==null?void 0:e.isWritable)&&e.setMemberState({strokeWidth:c})},[e]),l=i.useCallback(c=>{(e==null?void 0:e.isWritable)&&e.setMemberState({strokeColor:c})},[e]);return{writable:t,memberState:o,cleanCurrentScene:r,setAppliance:n,setStrokeWidth:s,setStrokeColor:l}}const Bt={writable:!1,memberState:void 0,cleanCurrentScene:Q,setAppliance:Q,setStrokeWidth:Q,setStrokeColor:Q},de={[b.ApplianceNames.rectangle]:k.Rectangle,[b.ApplianceNames.ellipse]:k.Circle,[b.ApplianceNames.straight]:k.Line,[b.ApplianceNames.arrow]:k.Arrow,[b.ShapeType.Pentagram]:k.Star,[b.ShapeType.Rhombus]:k.Diamond,[b.ShapeType.Triangle]:k.Triangle,[b.ShapeType.SpeechBalloon]:k.SpeechBalloon},Me=[b.ApplianceNames.rectangle,b.ApplianceNames.ellipse,b.ApplianceNames.straight,b.ApplianceNames.arrow],Ne=[b.ShapeType.Pentagram,b.ShapeType.Rhombus,b.ShapeType.Triangle,b.ShapeType.SpeechBalloon],$=32+4,Pe=8,Zt=$*Pe-4,Et=$*2-4;function Ot({disabled:e,scrollTo:t}){const{theme:o,icons:r}=i.useContext(v),n=i.useCallback(()=>t(-$),[t]);return h(X,{children:[a(N,{content:"Up",disabled:e,onClick:n,children:a(w,{fallback:a(k.Up,{theme:o}),src:e?r==null?void 0:r.upIconDisable:r==null?void 0:r.upIcon,alt:"[up]"})}),a(U,{})]})}function Rt({disabled:e,scrollTo:t}){const{theme:o,icons:r}=i.useContext(v),n=i.useCallback(()=>t($),[t]);return h(X,{children:[a(U,{}),a(N,{content:"Down",disabled:e,onClick:n,children:a(w,{fallback:a(k.Down,{theme:o}),src:e?r==null?void 0:r.downIconDisable:r==null?void 0:r.downIcon,alt:"[down]"})})]})}function ee(e,t){return typeof t!="string"?e:h("span",{className:"fastboard-toolbar-tooltip",children:[a("span",{children:e}),a("span",{className:"fastboard-toolbar-hotkey",children:t.toUpperCase()})]})}function Ht(){var u;const e=H(),{theme:t,icons:o,writable:r,setAppliance:n,memberState:s,i18n:l}=i.useContext(v),c=i.useCallback(()=>n(b.ApplianceNames.clicker),[n]),p=(u=e==null?void 0:e.config.joinRoom.hotKeys)==null?void 0:u.changeToClick,f=(s==null?void 0:s.currentApplianceName)===b.ApplianceNames.clicker,x=!r;return a(N,{content:ee(l==null?void 0:l.t("clicker"),p),onClick:c,active:f,children:a(w,{fallback:a(k.Clicker,{theme:t,active:f}),src:x?o==null?void 0:o.clickerIconDisable:o==null?void 0:o.clickerIcon,alt:"[clicker]"})})}function Gt(){const e=H(),{theme:t,icons:o,writable:r,setAppliance:n,memberState:s,i18n:l}=i.useContext(v),c=i.useCallback(()=>n(b.ApplianceNames.selector),[n]),d=(s==null?void 0:s.currentApplianceName)===b.ApplianceNames.selector,f=!r,x=((e==null?void 0:e.config.joinRoom.hotKeys)||q).changeToSelector;return a(N,{content:ee(l==null?void 0:l.t("selector"),x),onClick:c,active:d,children:a(w,{fallback:a(k.Selector,{theme:t,active:d}),src:f?o==null?void 0:o.selectorIconDisable:o==null?void 0:o.selectorIcon,alt:"[selector]"})})}function Vt(){const e=H(),{theme:t,icons:o,writable:r,setAppliance:n,memberState:s,i18n:l}=i.useContext(v),c=i.useCallback(()=>n(b.ApplianceNames.eraser),[n]),d=(s==null?void 0:s.currentApplianceName)===b.ApplianceNames.eraser,f=!r,x=((e==null?void 0:e.config.joinRoom.hotKeys)||q).changeToEraser;return a(N,{content:ee(l==null?void 0:l.t("eraser"),x),onClick:c,active:d,children:a(w,{fallback:a(k.Eraser,{theme:t,active:d}),src:f?o==null?void 0:o.eraserIconDisable:o==null?void 0:o.eraserIcon,alt:"[eraser]"})})}function Jt(){const{theme:e,icons:t,writable:o,cleanCurrentScene:r,i18n:n}=i.useContext(v),s=!o;return a(N,{content:n==null?void 0:n.t("clean"),onClick:r,children:a(w,{fallback:a(k.Clean,{theme:e}),src:s?t==null?void 0:t.cleanIconDisable:t==null?void 0:t.cleanIcon,alt:"[clean]"})})}var Ut="data:image/png;base64,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",Ft="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAB+5JREFUaN7tWglIVWkUdsMtC5OcRFMKoaZ0yLGNaSYl0honUlscSspkMrUwM0dsk7ByKdRSxKUUhqksMttwyRYqpwxpZ1qo0LSMkzk6YloWmc7/HeeV9/nue8/Kp80kHHjbvff//rN95/vV6+zspP+C6X0B8n8Acv/+fUpNTaU1a9bQtm3b6MqVK/T27dvPB8jLly8pPDycjIyMyMDAiIYOHSFem5K+vj4tXLiQ6uvrBz6Qjo4OCgwMFIs2IHf3FRQfX0lpac2UlFRLPj5bydDQhDw9PamtrW1gAykvLxeLNSQvr/W0e3cn7dr13vA+ICCH9PT0KCoqio4fP05nzpyhq1ev0uPHj6m9vX3gAFmxYgWZm1sJLzRJQCgsK6udHBwmkI2NDYWGhlJISAgbrgO4nJwcunnzJr169ar/gFRXV5Orqys5On7fwxsKy8nppKlTfxFgzSk4OFilAdi6deuouLiYXrx4oTsgtbW1lJmZyTvs4OBAdnbOskDw+YQJP9PgwYP593JgFLZx40a6detW3wJpbW2lffv20apVq949eMqUKSJHjCkm5qpKICkpdRx6vr6+dOHCBc4ThFNMTMy7UFMGg7A7dOiQVjnUayC3b9/m3VJ+aEBAAJmZmXEebN9eI/FMWtrf5OT0I1lYWHAeKFe7J0+ecDjFxsaq9E52dja9fv360wDBA0tLS2nlypUqdw4htmfPHl6shYU1eXisoSVLcmn27BgaNmwU95asrCy1z0Cinz59miIiIiT3X758udic7fz869evqyzhWgGBa/fv369yt1JSUqiysvLdb69du0bz5s3jXEC5NTU1pRkzZtCpU6e09vrTp08pMTGR7z99+nTRWIfyvRTm6OjIYYnN1RoIqMXevXt7xDA6+MmTJ1XGLx7Q1NREjx49ooaGhg+iJ8jDuXPn8sLt7b8VzfZ3Wru2nIKC8gSQH5gtbNmyRT2Qmpoa3kEkJZJaGcSGDRskXugLQy4h51xdF1BGRqukcGRmtolSHsjhikbcA8i9e/do1qxZZGJiwjsB1Hjt4uJCy5YtYxCbN2+mxsbGPmezyBNT08GUnEwqq2BqaqPIxWHk5+cnBXLjxg2ysrISsW1N3t6bKTr6DxE+JTRp0iLmT3Z2dgzi+fPnOqHl4GWjRn1Hubmq+xI+Hzt2Jo0ZM4ZDmYGgtGHXLS1tKS6uUlI6u3hSLoPpHpN9bSgQyAV1QJycvGj06NGcgwzkxIkTHEohIfky9KKDnJ29GD2SUBdA0CQHDbLiEFK1pvT0Ft74OXPmvA+trVu3krGxmSilT1VeBFu8OJtzBrxKF0AuXbrEbNrNLVQ0xHal9bylmTOjeD3oLe+AbNq0SSSWBe3YUS8LJDDwN/ZaVVWVzsIL1RHPHDdulpg2T4tps0Yw5TJRyebz56BIil7CQAoKCvgL/FiOuU6e7C/quT01NzfrDAh6FBqutbW1pCGikkZHR0toi56i+YC9jhgxvkdMItmjos7zyLp69ep+ERaweSjHbm5u3B6WLl1Kd+7cUU1RwHFAJ4YP/1pwmzwxqlYJEvcncyUTk0HCveN00j/kLD4+XtKUMVnKci0QsyFDhvzbDA255HaNr15UV1fXbyBAJjFFdiepEDpkgWRkZAguEyTEAh92I+IT0k53ctYfhkrZfRgDoVTmbxIgCQkJkrETfwNBfDt48KAkrDBsqaXxcXFxEiBgrv0NAoUIQp9iXfDM3bt31QMZiB45evSoxBugSW/evFEPBFNe94sw1vYnCCiTKPnd13Tx4kXNo+6xY8ckF+F9f4HArqPYdF8PQl+VN3oAgfzS/UJwMF1ULIwGhYWFHDZJSUk8LIFtKGteysKFLBAM9ZGRkZLE6utJ8MiRI2Rra8sE0MjITFjXUAdagqFJsRaM271SUfLy8iQ7gWMBOXd+rOXn5/O4CoUyIqJU0KMmnggDA3PFkOfAo66/vz9HhnID1AgEgkFYWJgEDNyOMgjtCd1/586dTLM1aU3qrKWlhadOe3sXMVs09+B3sbG3edR1cnKiZ8+efZhAd+DAAQkQb29vGjlyJLvcwKCLuuD1tGnTVNZ0bQxzRBcVL5QdHTw9I1kr1qaf6ckd2GA+BwjwLAMDzOzfiIcWC280iIQkIb7tEvP9V4JkDmcNuLdAkkUMYUN27PhLFkhYWBHnTkVFxYdLppCEQJ2hHNrYjBPx29DD/TEx14X7h3Ac97ZKoahgkYmJNbJAgoL28yZCGPko7ffw4cPs/tDQAlmF3dPzV05KTe7HTIHymZubyxs0f37XlOfnlyKr4I8f78Me1+bMRC0QJDV2LTm5TnbXwsO7hAuEYklJCZ0/f57Kysro7NmzTC8gQKM/QJlUPk5A2UVCr19frgSmgxYtShP31efi8tHHChCdcbOEhGpZICEhXV6D3qtoXArTdAaCkLS0tGThw80thO8FadTZ+Sd+LqZBTWVXKyAIBSxywYJkle7HZxACMFkqlEhNpjhuA0FFEqNQYAaCUI2eYmxszNoAZo7eHJzqaeI77u7uIgcshfsrZIW7iRMnqvUAvsOEl56ezmVXeUxV5BCODEBUP6Q/aVTjHz58yD3E2Nicj52Dg/PZ/S4uvtxTPDw86MGDB3T58mUWvkE0kRtFRUV07tw59iqOCfrqWLpX5yNwP5QLlGKFJINExcmVrrTgT3r0hjMP7DC6ubZJ+OWfar4A+cztHyyv+3VOTz+jAAAAAElFTkSuQmCC",Yt="data:image/png;base64,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";function Qt({content:e,onClick:t}){const{theme:o,icons:r,writable:n}=i.useContext(v),s=!n,l=a(N,{content:"Apps",onClick:t,children:a(w,{fallback:a(k.Apps,{theme:o}),src:s?r==null?void 0:r.appsIconDisable:r==null?void 0:r.appsIcon,alt:"[apps]"})});return e===!1?l:a("span",{className:"fastboard-toolbar-btn-interactive",children:a(M.default,{className:"fastboard-tip",content:qt(e),theme:o,placement:"right-end",trigger:"click",offset:_,arrow:!1,interactive:!0,children:l})})}function qt(e){return a("div",{className:"fastboard-toolbar-panel apps",children:a("div",{className:"fastboard-toolbar-apps",children:e||a(Kt,{})})})}function Kt(){const e=H();return h(X,{children:[a(pe,{title:"Code Editor",src:Ut,alt:"[code editor]",onClick:e==null?void 0:e.insertCodeEditor.bind(e)}),a(pe,{title:"GeoGebra",src:Ft,alt:"[geogebra]",onClick:e==null?void 0:e.insertGeoGebra.bind(e)}),a(pe,{title:"Countdown",src:Yt,alt:"[countdown]",onClick:e==null?void 0:e.insertCountdown.bind(e)})]})}function pe({title:e,src:t,alt:o,onClick:r}){return h("span",{className:"fastboard-toolbar-app-icon",children:[a(N,{placement:"top",content:e,onClick:r,children:a("img",{src:t,alt:o,title:e})}),a("span",{className:"fastboard-toolbar-app-icon-text",children:e})]})}const re={"#E02020":[224,32,32],"#F7B500":[247,181,0],"#6DD400":[109,212,0],"#32C5FF":[50,197,255],"#0091FF":[0,145,255],"#6236FF":[98,54,255],"#B620E0":[182,32,224],"#6D7278":[109,114,120]},Xt=Object.keys(re);function be(){const{theme:e,memberState:t,setStrokeColor:o,writable:r}=i.useContext(v),n=t==null?void 0:t.strokeColor,s=!r;return a("div",{className:g.default("fastboard-toolbar-color-box",e),children:Xt.map(l=>a("div",{className:g.default("fastboard-toolbar-color-item",e),onClick:()=>o(re[l]),children:a("div",{className:g.default("fastboard-toolbar-color-border",e,{active:n&&Ke(n,re[l])}),children:a("button",{className:g.default("fastboard-toolbar-color-btn"),style:{background:l},disabled:s,onClick:c=>{c.stopPropagation(),o(re[l])}})})},l))})}function ze(){const{theme:e,writable:t,memberState:o,setStrokeWidth:r}=i.useContext(v),{activeColor:n}=z[e],s=(o==null?void 0:o.strokeWidth)||0;return a(ve.default,{disabled:!t,className:g.default("fastboard-toolbar-slider",e),trackStyle:{background:n},handleStyle:{border:`1px solid ${n}`},value:s,onChange:r,min:1,max:32})}function _t(){const e=H(),{theme:t,icons:o,writable:r,setAppliance:n,memberState:s,i18n:l}=i.useContext(v),c=i.useCallback(()=>{n(b.ApplianceNames.pencil)},[n]),d=(s==null?void 0:s.currentApplianceName)===b.ApplianceNames.pencil,f=!r,x=((e==null?void 0:e.config.joinRoom.hotKeys)||q).changeToPencil;return a("span",{className:"fastboard-toolbar-btn-interactive",children:a(M.default,{className:"fastboard-tip",content:$t(),theme:t,placement:"right-start",trigger:"click",offset:_,arrow:!1,interactive:!0,children:h(N,{content:ee(l==null?void 0:l.t("pencil"),x),active:d,onClick:c,children:[a(w,{fallback:a(k.Pencil,{theme:t,active:d}),src:f?o==null?void 0:o.pencilIconDisable:o==null?void 0:o.pencilIcon,alt:"[pencil]"}),a("span",{className:"fastboard-toolbar-triangle"})]})})})}function $t(){return h("div",{className:"fastboard-toolbar-panel pencil",children:[a(ze,{}),a(U,{}),a(be,{})]})}function eo(){const e=H(),{theme:t,icons:o,writable:r,setAppliance:n,memberState:s,i18n:l}=i.useContext(v),c=i.useCallback(()=>{n(b.ApplianceNames.text)},[n]),d=(s==null?void 0:s.currentApplianceName)===b.ApplianceNames.text,f=!r,x=((e==null?void 0:e.config.joinRoom.hotKeys)||q).changeToText;return a("span",{className:"fastboard-toolbar-btn-interactive",children:a(M.default,{className:"fastboard-tip",content:to(),theme:t,placement:"right-start",trigger:"click",offset:_,arrow:!1,interactive:!0,children:h(N,{content:ee(l==null?void 0:l.t("text"),x),active:d,onClick:c,children:[a(w,{fallback:a(k.Text,{theme:t,active:d}),src:f?o==null?void 0:o.textIconDisable:o==null?void 0:o.textIcon,alt:"[text]"}),a("span",{className:"fastboard-toolbar-triangle"})]})})})}function to(){return a("div",{className:"fastboard-toolbar-panel text",children:a(be,{})})}const oo=new Set([...Me,...Ne]);function ao(){const{theme:e,memberState:t,i18n:o}=i.useContext(v),r=t==null?void 0:t.currentApplianceName,n=t==null?void 0:t.shapeType,s=r===b.ApplianceNames.shape?n:r,l=oo.has(s),c=de[s]||k.Rectangle;return a("span",{className:"fastboard-toolbar-btn-interactive",children:a(M.default,{className:"fastboard-tip",content:ro(),theme:e,placement:"right-start",trigger:"click",offset:_,arrow:!1,interactive:!0,children:h(N,{content:o==null?void 0:o.t("shape"),active:l,children:[a(c,{theme:e,active:l}),a("span",{className:"fastboard-toolbar-triangle"})]})})})}function ro(){return h("div",{className:"fastboard-toolbar-panel shapes",children:[a(no,{}),a(U,{}),a(ze,{}),a(U,{}),a(be,{})]})}function no(){const{i18n:e}=i.useContext(v);return h("div",{className:"fastboard-toolbar-shapes",children:[Me.map(t=>a(io,{content:e==null?void 0:e.t(t),Appliance:t,Icon:de[t]},t)),Ne.map(t=>a(lo,{content:e==null?void 0:e.t(t),shape:t,Icon:de[t]},t))]})}function io({content:e,Appliance:t,Icon:o}){const{theme:r,writable:n,setAppliance:s,memberState:l}=i.useContext(v),c=l==null?void 0:l.currentApplianceName;return a(N,{content:e,disabled:!n,placement:"top",onClick:()=>s(t),children:a(o,{theme:r,active:c===t})})}function lo({content:e,shape:t,Icon:o}){const{theme:r,writable:n,setAppliance:s,memberState:l}=i.useContext(v),p=(l==null?void 0:l.currentApplianceName)===b.ApplianceNames.shape&&(l==null?void 0:l.shapeType);return a(N,{content:e,disabled:!n,placement:"top",onClick:()=>s(b.ApplianceNames.shape,t),children:a(o,{theme:r,active:p===t})})}function so(){var y,T,E,G,P,W,C;const e=H(),t=i.useRef(null),[o,r]=i.useState(0),[n,s]=i.useState(0),l=(E=(T=(y=e==null?void 0:e.config.toolbar)==null?void 0:y.apps)==null?void 0:T.enable)!=null?E:!0,c=n<$*Pe+48,p=ce(n-48*(c?3:1),Et,Zt),d=Math.max(n-p-1,0),f=o===0,x=o===d,u=i.useCallback(I=>{r(ce(o+I,0,d))},[d,o]);return i.useEffect(()=>{t.current&&(t.current.scrollTop=o)},[o]),i.useEffect(()=>{var L,Y;const I=(Y=(L=t.current)==null?void 0:L.parentElement)==null?void 0:Y.parentElement;if(I){const{paddingTop:O,paddingBottom:Ee}=getComputedStyle(I),Oe=parseInt(O)+parseInt(Ee)||0,he=new ResizeObserver(()=>{s(I.getBoundingClientRect().height-Oe)});return he.observe(I),()=>he.disconnect()}},[]),h(X,{children:[c&&a(Ot,{scrollTo:u,disabled:f}),h("div",{ref:t,className:`${fe}-section`,style:{height:`${p}px`,overflow:c?"hidden":"visible"},children:[a(Ht,{}),a(Gt,{}),a(_t,{}),a(eo,{}),a(ao,{}),a(Vt,{}),a(Jt,{}),l&&a(Qt,{content:(P=(G=e==null?void 0:e.config.toolbar)==null?void 0:G.apps)==null?void 0:P.content,onClick:(C=(W=e==null?void 0:e.config.toolbar)==null?void 0:W.apps)==null?void 0:C.onClick})]}),c&&a(Rt,{scrollTo:u,disabled:x})]})}const v=i.createContext(S({theme:"light"},Bt)),fe="fastboard-toolbar",Te=({theme:e="light",icons:t,room:o,i18n:r})=>{const[n,s]=i.useState(!0),l=Wt(o),c=i.useCallback(()=>s(d=>!d),[]),p=!l.writable;return a(v.Provider,{value:V(S({theme:e,icons:t},l),{i18n:r}),children:h("div",{className:g.default(fe,e),children:[n?a(N,{content:r==null?void 0:r.t("collapse"),onClick:c,children:a(w,{fallback:a(k.Collapse,{theme:e}),src:p?t==null?void 0:t.collapseIconDisable:t==null?void 0:t.collapseIcon})}):a(N,{content:r==null?void 0:r.t("expand"),onClick:c,children:a(w,{fallback:a(k.Expand,{theme:e}),src:p?t==null?void 0:t.expandIconDisable:t==null?void 0:t.expandIcon})}),n&&h(X,{children:[a(U,{}),a(so,{})]})]})})};function co({theme:e="light",active:t}){const o=z[e],r=t?o.activeColor:o.color;return a("svg",{viewBox:"0 0 24 24",children:h("g",{fill:"none",fillRule:"evenodd",stroke:r,strokeLinecap:"round",strokeLinejoin:"round",children:[a("path",{d:"M10 14H6v-4"}),a("path",{d:"m6 14 .788-.9A7.005 7.005 0 0 1 18 14h0"})]})})}function po({theme:e="light",active:t}){const o=z[e],r=t?o.activeColor:o.color;return a("svg",{viewBox:"0 0 24 24",children:h("g",{fill:"none",fillRule:"evenodd",stroke:r,strokeLinecap:"round",strokeLinejoin:"round",children:[a("path",{d:"M14 14h4v-4"}),a("path",{d:"m18 14-.788-.9A7.005 7.005 0 0 0 6 14h0"})]})})}const ge="fastboard-redo-undo";function Le({room:e,theme:t="light",undoIcon:o,undoIconDisable:r,redoIcon:n,redoIconDisable:s,i18n:l}){const[c,p]=i.useState(!1),[d,f]=i.useState(0),[x,u]=i.useState(0);i.useEffect(()=>{if(e){p(e.isWritable),e.isWritable&&(e.disableSerialization=!1);const T=()=>p((e==null?void 0:e.isWritable)||!1);return e.callbacks.on("onEnableWriteNowChanged",T),e.callbacks.on("onCanUndoStepsUpdate",f),e.callbacks.on("onCanRedoStepsUpdate",u),()=>{e.callbacks.off("onEnableWriteNowChanged",T),e.callbacks.off("onCanUndoStepsUpdate",f),e.callbacks.off("onCanRedoStepsUpdate",u)}}},[e]);const y=!c;return h("div",{className:g.default(ge,t),children:[a(M.default,{className:"fastboard-tip",content:l==null?void 0:l.t("undo"),theme:t,disabled:y,placement:"top",duration:300,offset:j,children:a("button",{className:g.default(`${ge}-btn`,"undo",t),disabled:y||d===0,onClick:i.useCallback(()=>e&&e.undo(),[e]),children:a(w,{fallback:a(co,{theme:t}),src:d===0?r:o,alt:"[undo]"})})}),a(M.default,{className:"fastboard-tip",content:l==null?void 0:l.t("redo"),theme:t,disabled:y,placement:"top",duration:300,offset:j,children:a("button",{className:g.default(`${ge}-btn`,"redo",t),disabled:y||x===0,onClick:i.useCallback(()=>e&&e.redo(),[e]),children:a(w,{fallback:a(po,{theme:t}),src:x===0?s:n,alt:"[redo]"})})})]})}function bo({theme:e="light",active:t}){const o=z[e],r=t?o.activeColor:o.color;return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:"none",stroke:r,strokeLinecap:"round",strokeLinejoin:"round",d:"M7 12h10"})})}function fo({theme:e="light",active:t}){const o=z[e],r=t?o.activeColor:o.color;return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:"none",stroke:r,strokeLinecap:"round",strokeLinejoin:"round",d:"M12 7v10m-5-5h10"})})}function go({theme:e="light",active:t}){const o=z[e],r=t?o.activeColor:o.color;return a("svg",{viewBox:"0 0 24 24",children:h("g",{fill:"none",fillRule:"evenodd",transform:"translate(-176 -684)",children:[a("path",{stroke:r,strokeLinejoin:"round",d:"M188 688v4m0 8v4m8-8h-4m-8 0h-4"}),a("circle",{cx:"188",cy:"696",r:"6",stroke:r}),a("circle",{cx:"188",cy:"696",r:"1",fill:r})]})})}const F="fastboard-zoom-control",Z=[.10737418240000011,.13421772800000012,.16777216000000014,.20971520000000016,.26214400000000015,.3276800000000002,.4096000000000002,.5120000000000001,.6400000000000001,.8,1,1.26,1.5876000000000001,2.000376,2.5204737600000002,3.1757969376000004,4.001504141376,5.041895218133761,6.352787974848539,8.00451284830916,10];function ne(e,t){const{length:o}=Z,r=o-1;if(e<Z[0])return Z[0];if(e>Z[r])return Z[r];for(let n=0;n<o;++n){const s=Z[n],l=n===0?-1/0:(Z[n-1]+s)/2,c=n===r?1/0:(Z[n+1]+s)/2;if(l<=e&&e<=c)return Z[ce(n+t,0,r)]}return 1}function je({room:e,manager:t,theme:o="light",resetIcon:r,resetIconDisable:n,minusIcon:s,minusIconDisable:l,plusIcon:c,plusIconDisable:p,i18n:d}){const[f,x]=i.useState(!1),[u,y]=i.useState(1),T=i.useCallback(()=>{if(e==null?void 0:e.isWritable)if(t)t.mainView.moveCamera({scale:1,centerX:0,centerY:0});else{const{scenes:W,index:C}=e.state.sceneState;W[C].ppt?e.scalePptToFit():e.moveCamera({scale:1,centerX:0,centerY:0})}},[e,t]),E=i.useCallback(()=>{(e==null?void 0:e.isWritable)&&(t?t.mainView.moveCamera({scale:ne(u,1),centerX:0,centerY:0}):e.moveCamera({scale:ne(u,1),centerX:0,centerY:0}))},[e,t,u]),G=i.useCallback(()=>{(e==null?void 0:e.isWritable)&&(t?t.mainView.moveCamera({scale:ne(u,-1),centerX:0,centerY:0}):e.moveCamera({scale:ne(u,-1),centerX:0,centerY:0}))},[e,t,u]);i.useEffect(()=>{e&&(x(e.isWritable),y(e.state.cameraState.scale)),t&&y(t.mainView.camera.scale);const W=L=>{L.cameraState&&y(L.cameraState.scale)},C=({scale:L})=>y(L),I=()=>x((e==null?void 0:e.isWritable)||!1);return e&&(e.callbacks.on("onEnableWriteNowChanged",I),t?t.mainView.callbacks.on("onCameraUpdated",C):e.callbacks.on("onRoomStateChanged",W)),()=>{e&&(e.callbacks.off("onEnableWriteNowChanged",I),e.callbacks.off("onRoomStateChanged",W),t==null||t.mainView.callbacks.off("onCameraUpdated",C))}},[e,t]);const P=!f;return h("div",{className:g.default(F,o),children:[a(M.default,{className:"fastboard-tip",content:d==null?void 0:d.t("zoomOut"),theme:o,disabled:P,placement:"top",duration:300,offset:j,children:a("button",{className:g.default(`${F}-btn`,"minus",o),disabled:P,onClick:G,children:a(w,{fallback:a(bo,{theme:o}),src:P?l:s,alt:"[minus]"})})}),a("span",{className:g.default(`${F}-scale`,o),children:Math.ceil(u*100)}),a("span",{className:g.default(`${F}-percent`,o),children:"%"}),a(M.default,{className:"fastboard-tip",content:d==null?void 0:d.t("zoomIn"),theme:o,disabled:P,placement:"top",duration:300,offset:j,children:a("button",{className:g.default(`${F}-btn`,"plus",o),disabled:P,onClick:E,children:a(w,{fallback:a(fo,{theme:o}),src:P?p:c,alt:"[plus]"})})}),a(M.default,{className:"fastboard-tip",content:d==null?void 0:d.t("reset"),theme:o,disabled:P,placement:"top",duration:300,offset:j,children:a("button",{className:g.default(`${F}-btn`,"reset",o),disabled:P,onClick:T,children:a(w,{fallback:a(go,{theme:o}),src:P?n:r,alt:"[reset]"})})})]})}function uo({theme:e="light",active:t}){const o=z[e],r=t?o.activeColor:o.color;return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:r,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"})})}function ho({theme:e="light",active:t}){const o=z[e],r=t?o.activeColor:o.color;return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:"none",stroke:r,strokeLinecap:"round",strokeLinejoin:"round",d:"m14 16-2-2-2-2 2-2 2-2"})})}function xo({theme:e="light",active:t}){const o=z[e],r=t?o.activeColor:o.color;return a("svg",{viewBox:"0 0 24 24",children:a("path",{fill:"none",stroke:r,strokeLinecap:"round",strokeLinejoin:"round",d:"m10 16 2-2 2-2-2-2-2-2"})})}const R="fastboard-page-control";function De({room:e,manager:t,theme:o="light",addIcon:r,addIconDisable:n,prevIcon:s,prevIconDisable:l,nextIcon:c,nextIconDisable:p,i18n:d}){const[f,x]=i.useState(!1),[u,y]=i.useState(0),[T,E]=i.useState(0),G=i.useCallback(async()=>{if(t&&e){await t.switchMainViewToWriter();const I=e.state.sceneState.contextPath;e.putScenes(I,[{}],u+1),await t.setMainViewSceneIndex(u+1)}else if(!t&&e){const I=e.state.sceneState.contextPath;e.putScenes(I,[{}],u+1),e.setSceneIndex(u+1)}},[e,t,u]),P=i.useCallback(()=>{(e==null?void 0:e.isWritable)&&(t?t.setMainViewSceneIndex(u-1):e.pptPreviousStep())},[e,t,u]),W=i.useCallback(()=>{(e==null?void 0:e.isWritable)&&(t?t.setMainViewSceneIndex(u+1):e.pptNextStep())},[e,t,u]);i.useEffect(()=>{e&&(x(e.isWritable),y(e.state.sceneState.index),E(e.state.sceneState.scenes.length));const I=O=>{O.sceneState&&(y(O.sceneState.index),E(O.sceneState.scenes.length))},L=O=>{e&&O===0&&(y(e.state.sceneState.index),E(e.state.sceneState.scenes.length))},Y=()=>x((e==null?void 0:e.isWritable)||!1);return e&&(e.callbacks.on("onEnableWriteNowChanged",Y),e.callbacks.on("onRoomStateChanged",I),t==null||t.callbacks.on("mainViewModeChange",L)),()=>{e&&(e.callbacks.off("onEnableWriteNowChanged",Y),e.callbacks.off("onRoomStateChanged",I),t==null||t.callbacks.off("mainViewModeChange",L))}},[e,t]);const C=!f;return h("div",{className:g.default(R,o),children:[a(M.default,{className:"fastboard-tip",content:d==null?void 0:d.t("prevPage"),theme:o,disabled:C,placement:"top",duration:300,offset:j,children:a("button",{className:g.default(`${R}-btn`,"prev",o),disabled:C||u===0,onClick:P,children:a(w,{fallback:a(ho,{theme:o}),src:C?l:s,alt:"[prev]"})})}),a("span",{className:g.default(`${R}-page`,o),children:T===0?"\u2026":u+1}),a("span",{className:g.default(`${R}-slash`,o),children:"/"}),a("span",{className:g.default(`${R}-page-count`,o),children:T}),a(M.default,{className:"fastboard-tip",content:d==null?void 0:d.t("nextPage"),theme:o,disabled:C,placement:"top",duration:300,offset:j,children:a("button",{className:g.default(`${R}-btn`,"next",o),disabled:C||u===T-1,onClick:W,children:a(w,{fallback:a(xo,{theme:o}),src:C?p:c,alt:"[next]"})})}),a(M.default,{className:"fastboard-tip",content:d==null?void 0:d.t("addPage"),theme:o,disabled:C,placement:"top",duration:300,offset:j,children:a("button",{className:g.default(`${R}-btn`,"add",o),disabled:C,onClick:G,children:a(w,{fallback:a(uo,{theme:o}),src:C?n:r,alt:"[add]"})})})]})}function mo({instance:e}){const[t]=i.useState(()=>new Xe),o=i.useCallback(p=>t.schedule(p?()=>e.mount(p):()=>e.unmount()),[e,t]),{Toolbar:r=!0,RedoUndo:n=!0,ZoomControl:s=!0,PageControl:l=!0}=e.config.layout||{},c={room:e.room,manager:e.manager,i18n:e.i18n};return a(ie.Context.Provider,{value:e,children:h("div",{className:"fastboard-root",children:[!e.room&&a("div",{className:"fastboard-loading",children:"Loading\u2026"}),a("div",{className:"fastboard-view",ref:o}),r&&a("div",{className:"fastboard-left",children:a(Te,S({},c))}),(n||s)&&h("div",{className:"fastboard-bottom-left",children:[n&&a(Le,S({},c)),s&&a(je,S({},c))]}),l&&a("div",{className:"fastboard-bottom-right",children:a(De,S({},c))})]})})}class ie{constructor(t){A(this,"config");A(this,"sdk",null);A(this,"room",null);A(this,"manager",null);A(this,"i18n",null);A(this,"ready",!1);A(this,"resolveReady");A(this,"readyPromise");A(this,"target",null);A(this,"collector",null);this.config=S({},t),this.refreshReadyPromise(),this.initialize()}refreshReadyPromise(){this.readyPromise=new Promise(t=>{this.resolveReady=()=>{this.resolveReady=Q,this.ready=!0,t()}})}async initialize(){const t=await rt(this.config.sdkConfig,this.config.joinRoom,this.config.managerConfig||{},this.config.language||"en-US");this.accept(t),this.resolveReady()}bindElement(t,o){this.target&&t&&se.default.unmountComponentAtNode(this.target),this.target=t,this.collector=o,this.forceUpdate()}updateLayout(t){this.config.layout=t,this.forceUpdate()}async forceUpdate(){await this.readyPromise,this.target&&se.default.render(a(mo,{instance:this}),this.target)}accept({sdk:t,room:o,manager:r,i18n:n}){this.sdk=t,this.room=o,this.manager=r,this.i18n=n,this.forceUpdate()}async dispose(){this.room&&await this.unmount(),this.target&&(se.default.unmountComponentAtNode(this.target),this.sdk=this.room=this.manager=this.target=null)}async mount(t){if(await this.readyPromise,!this.manager)throw new Error("[WhiteboardApp] mounted, but not found window manager");this.collector?this.manager.bindContainer(t,this.collector):this.manager.bindContainer(t)}async unmount(){if(this.manager&&(this.manager.destroy(),this.manager=null),this.room){try{await this.room.disconnect()}catch{}this.room=null}this.refreshReadyPromise()}insertDocs(t){if(!this.manager)throw new Error("[WhiteboardApp] cannot insert doc before mounted");switch(t.fileType){case"pdf":case"ppt":return this.manager.addApp({kind:"DocsViewer",options:{scenePath:t.scenePath,title:t.title,scenes:t.scenes}});case"pptx":return this.manager.addApp({kind:"Slide",options:{scenePath:t.scenePath,title:t.title},attributes:{taskId:t.taskId,url:t.url}})}}insertCodeEditor(){if(!this.manager)throw new Error("[WhiteboardApp] cannot insert app before mounted");return this.manager.addApp({kind:"Monaco",options:{title:"Code Editor"}})}insertGeoGebra(){if(!this.manager)throw new Error("[WhiteboardApp] cannot insert app before mounted");return this.manager.addApp({kind:"GeoGebra",options:{title:"GeoGebra"}})}insertCountdown(){if(!this.manager)throw new Error("[WhiteboardApp] cannot insert app before mounted");return this.manager.addApp({kind:"Countdown",options:{title:"Countdown"}})}async changeLanguage(t){var o;try{await((o=this.i18n)==null?void 0:o.changeLanguage(t))}finally{await this.forceUpdate()}}}A(ie,"Context",i.createContext(null));function H(){return i.useContext(ie.Context)}var wo=`.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}.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}.telebox-title{overflow:hidden;margin:0 24px 0 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-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-maximized{display:flex}.telebox-titles{flex:1;height:100%;margin:0 16px 0 -16px;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{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}.telebox-titles-tab~.telebox-titles-tab{margin-left:2px}.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-loading{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;opacity:.6}.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.dark{color:#ddd;background-color:#333333d9;border:1px solid rgba(0,0,0,.45)}.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-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-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}
|
|
13
|
+
`;qe(wo);class We{constructor(t){A(this,"_instance");this.config=t,this._instance=new ie(t)}get room(){return this._instance.room}get manager(){return this._instance.manager}get sdk(){return this._instance.sdk}get i18n(){return this._instance.i18n}get target(){return this._instance.target}get collector(){return this._instance.collector}bindElement(t,o){this._instance.bindElement(t||null,o||null)}get layout(){return this._instance.config.layout}updateLayout(t){this._instance.updateLayout(t)}insertDocs(t){return this._instance.insertDocs(t)}insertCodeEditor(){return this._instance.insertCodeEditor()}insertGeoGebra(){return this._instance.insertGeoGebra()}insertCountdown(){return this._instance.insertCountdown()}changeLanguage(t){return this._instance.changeLanguage(t)}dispose(){return this._instance.dispose()}}const ko="0.0.8",vo=[];function Co(){const[,e]=i.useState({});return i.useCallback(()=>e({}),vo)}function yo(e){const t=i.useRef(e);return i.useEffect(()=>{t.current=e},[e]),t.current}function Io(e){const t=i.useCallback(()=>{if(e)switch(e.phase){case b.PlayerPhase.WaitingFirstFrame:case b.PlayerPhase.Pause:case b.PlayerPhase.Ended:{e.play();break}case b.PlayerPhase.Playing:{e.pause();break}}},[e]),o=i.useCallback(f=>{e&&e.seekToProgressTime(f)},[e]),r=yo(e),n=Co(),s=i.useCallback(f=>{e&&(e.playbackSpeed=f,n())},[n,e]);i.useEffect(()=>{!r&&e&&n()},[n,r,e]),i.useEffect(()=>{if(e)return e.callbacks.on("onPhaseChanged",n),e.callbacks.on("onProgressTimeChanged",n),()=>{e.callbacks.off("onPhaseChanged",n),e.callbacks.off("onProgressTimeChanged",n)}},[n,e]);const l=e?e.phase:b.PlayerPhase.WaitingFirstFrame,c=e?e.progressTime:0,p=e?e.timeDuration:0,d=e?e.playbackSpeed:1;return{phase:l,currentTime:c,totalTime:p,speed:d,setSpeed:s,togglePlay:t,seekToProgressTime:o}}const Ao=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{d:"M12 4V2A10 10 0 0 0 2 12h2a8 8 0 0 1 8-8z",fill:t})})},So=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{d:"M14 19h4V5h-4M6 19h4V5H6v14z",fill:t})})},Mo=e=>{const t=m(e);return a("svg",{viewBox:"0 0 24 24",children:a("path",{d:"M8 5.14v14l11-7l-11-7z",fill:t})})},ue={Play:i.memo(Mo),Pause:i.memo(So),Loading:i.memo(Ao)},No=i.forwardRef((e,t)=>{const{theme:o,content:r,disabled:n,active:s,onClick:l,interactive:c,placement:p="top",children:d}=e;return a(M.default,{className:"fastboard-tip",content:r,interactive:c,theme:o,disabled:n,placement:p,offset:j,duration:300,children:a("button",{ref:t,className:g.default("fastboard-player-control-btn",o,{active:s}),onClick:l,disabled:n,children:d})})}),D="fastboard-player-control";function Po(s){var l=s,{autoHide:e=!1,player:t,theme:o="light",i18n:r}=l,n=we(l,["autoHide","player","theme","i18n"]);const[c,p]=i.useState(0),d=Io(t);i.useEffect(()=>{p(d.currentTime)},[d.currentTime]),i.useEffect(()=>{d.currentTime!==c&&d.seekToProgressTime(c)},[c]);const f=d.phase===b.PlayerPhase.WaitingFirstFrame||d.phase===b.PlayerPhase.Buffering,x=d.phase===b.PlayerPhase.Playing,{activeColor:u}=z[o];return h("div",{className:g.default(D,o,{"auto-hide":e}),children:[a("button",{className:g.default(`${D}-btn`,f?"loading":x?"pause":"play",o),disabled:f,onClick:d.togglePlay,children:a(w,{fallback:f?a(ue.Loading,{theme:o}):x?a(ue.Pause,{theme:o}):a(ue.Play,{theme:o}),src:f?n.loadingIcon:x?n.pauseIcon:n.playIcon,alt:f?"[loading]":x?"[pause]":"[play]"})}),a("span",{className:g.default(`${D}-slider`,{loading:f},o),children:a(ve.default,{disabled:f,trackStyle:{background:u},handleStyle:{border:`1px solid ${u}`},value:c,onChange:p,min:0,max:d.totalTime,step:100})}),a("span",{className:g.default(`${D}-current`,o),children:Be(d.currentTime)}),a("span",{className:g.default(`${D}-slash`,o),children:"/"}),a("span",{className:g.default(`${D}-total`,o),children:Be(d.totalTime)}),a("span",{className:`${D}-btn-interactive`,children:a(M.default,{className:"fastboard-tip",content:To(d),theme:o,placement:"top-end",trigger:"click",offset:j,arrow:!1,interactive:!0,children:a(No,{content:r==null?void 0:r.t("speed"),theme:o,disabled:f,children:h("span",{className:g.default(`${D}-speed-text`,o),children:[d.speed,"x"]})})})})]})}function Be(e){let t=e/1e3;const o=Math.floor(t/60);return t=Math.floor(t)%60,`${String(o).padStart(2,"0")}:${String(t).padStart(2,"0")}`}const zo=[2,1.5,1.25,1,.75,.5];function To({speed:e,setSpeed:t}){return a("div",{className:g.default(`${D}-panel`,"speed"),children:zo.map(o=>h("button",{className:g.default(`${D}-btn`,"speed",{active:o===e}),onClick:()=>t(o),children:[o,"x"]},o))})}function Lo(e){const[t,o]=i.useState(null),[r,n]=i.useState(null),[s,l]=i.useState(null);return i.useEffect(()=>{let c=!0;const p=Ze(e).then(d=>{c&&o(d)});return()=>{c=!1,p.then(()=>t==null?void 0:t.dispose())}},[]),i.useEffect(()=>{t&&t.bindElement(r,s)},[t,s,r]),Object.assign([t,n,l],{app:t,ref:n,collectorRef:l})}const jo=B.WindowManager.register.bind(B.WindowManager);async function Ze(e){const t=new We(e);return await t._instance.readyPromise,t}exports.PageControl=De;exports.PlayerControl=Po;exports.RedoUndo=Le;exports.Toolbar=Te;exports.WhiteboardApp=We;exports.ZoomControl=je;exports.createWhiteboardApp=Ze;exports.register=jo;exports.useFastboard=Lo;exports.version=ko;
|
|
14
14
|
//# sourceMappingURL=index.cjs.js.map
|