@netless/window-manager 0.3.10 → 0.3.12
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/AppManager.d.ts +2 -2
- package/dist/BoxManager.d.ts +9 -5
- package/dist/MainView.d.ts +8 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.es.js +1 -1
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +3 -3
- package/src/AppManager.ts +2 -2
- package/src/BoxManager.ts +41 -16
- package/src/MainView.ts +11 -0
- package/src/Utils/RoomHacker.ts +3 -0
- package/src/index.ts +34 -2
- package/src/style.css +1 -0
package/dist/style.css
CHANGED
@@ -1 +1 @@
|
|
1
|
-
.netless-window-manager-playground{width:100%;height:100%;position:relative;z-index:1;overflow:hidden}.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{width:26px;height:26px}.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:fixed;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-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-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}.telebox-collector-icon{width:18px;height:16px}.telebox-collector-visible{visibility:visible;pointer-events:initial}.telebox-collector-readonly{cursor:not-allowed}.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}
|
1
|
+
.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{width:26px;height:26px}.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:fixed;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}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@netless/window-manager",
|
3
|
-
"version": "0.3.
|
3
|
+
"version": "0.3.12",
|
4
4
|
"description": "",
|
5
5
|
"main": "dist/index.es.js",
|
6
6
|
"module": "dist/index.es.js",
|
@@ -22,9 +22,9 @@
|
|
22
22
|
},
|
23
23
|
"dependencies": {
|
24
24
|
"@juggle/resize-observer": "^3.3.1",
|
25
|
-
"@netless/app-docs-viewer": "
|
25
|
+
"@netless/app-docs-viewer": "0.1.22",
|
26
26
|
"@netless/app-media-player": "0.1.0-beta.5",
|
27
|
-
"@netless/telebox-insider": "0.2.
|
27
|
+
"@netless/telebox-insider": "0.2.9",
|
28
28
|
"emittery": "^0.9.2",
|
29
29
|
"lodash": "^4.17.21",
|
30
30
|
"p-retry": "^4.6.1",
|
package/src/AppManager.ts
CHANGED
@@ -25,7 +25,7 @@ import { onObjectRemoved, safeListenPropsUpdated } from "./Utils/Reactive";
|
|
25
25
|
import { ReconnectRefresher } from "./ReconnectRefresher";
|
26
26
|
import { ViewManager } from "./ViewManager";
|
27
27
|
import type { Displayer, DisplayerState, Room } from "white-web-sdk";
|
28
|
-
import type {
|
28
|
+
import type { CreateTeleBoxManagerConfig } from "./BoxManager";
|
29
29
|
import type {
|
30
30
|
AddAppParams,
|
31
31
|
BaseInsertParams,
|
@@ -47,7 +47,7 @@ export class AppManager {
|
|
47
47
|
|
48
48
|
private appListeners: AppListeners;
|
49
49
|
|
50
|
-
constructor(public windowManger: WindowManager, options:
|
50
|
+
constructor(public windowManger: WindowManager, options: CreateTeleBoxManagerConfig) {
|
51
51
|
this.displayer = windowManger.displayer;
|
52
52
|
this.cameraStore = new CameraStore();
|
53
53
|
this.mainViewProxy = new MainViewProxy(this);
|
package/src/BoxManager.ts
CHANGED
@@ -1,23 +1,19 @@
|
|
1
1
|
import { callbacks, emitter, WindowManager } from "./index";
|
2
2
|
import { debounce, maxBy } from "lodash";
|
3
|
-
import {
|
4
|
-
DEFAULT_COLLECTOR_STYLE,
|
5
|
-
Events,
|
6
|
-
MIN_HEIGHT,
|
7
|
-
MIN_WIDTH
|
8
|
-
} from "./constants";
|
9
|
-
import type { AddAppOptions, AppInitState } from "./index";
|
3
|
+
import { DEFAULT_COLLECTOR_STYLE, Events, MIN_HEIGHT, MIN_WIDTH } from "./constants";
|
10
4
|
import {
|
11
5
|
TELE_BOX_MANAGER_EVENT,
|
12
6
|
TELE_BOX_STATE,
|
13
7
|
TeleBoxCollector,
|
14
8
|
TeleBoxManager,
|
15
9
|
} from "@netless/telebox-insider";
|
10
|
+
import type { AddAppOptions, AppInitState } from "./index";
|
16
11
|
import type {
|
17
12
|
TeleBoxManagerUpdateConfig,
|
18
13
|
TeleBoxManagerCreateConfig,
|
19
14
|
ReadonlyTeleBox,
|
20
15
|
TeleBoxManagerConfig,
|
16
|
+
TeleBoxColorScheme,
|
21
17
|
} from "@netless/telebox-insider";
|
22
18
|
import type Emittery from "emittery";
|
23
19
|
import type { AppManager } from "./AppManager";
|
@@ -45,9 +41,10 @@ type SetBoxMinSizeParams = AppId & { minWidth: number; minHeight: number };
|
|
45
41
|
|
46
42
|
type SetBoxTitleParams = AppId & { title: string };
|
47
43
|
|
48
|
-
export type
|
44
|
+
export type CreateTeleBoxManagerConfig = {
|
49
45
|
collectorContainer?: HTMLElement;
|
50
46
|
collectorStyles?: Partial<CSSStyleDeclaration>;
|
47
|
+
prefersColorScheme?: TeleBoxColorScheme;
|
51
48
|
};
|
52
49
|
|
53
50
|
export class BoxManager {
|
@@ -57,9 +54,9 @@ export class BoxManager {
|
|
57
54
|
|
58
55
|
constructor(
|
59
56
|
private manager: AppManager,
|
60
|
-
|
57
|
+
createTeleBoxManagerConfig?: CreateTeleBoxManagerConfig
|
61
58
|
) {
|
62
|
-
this.teleBoxManager = this.setupBoxManager(
|
59
|
+
this.teleBoxManager = this.setupBoxManager(createTeleBoxManagerConfig);
|
63
60
|
this.teleBoxManager.events.on(TELE_BOX_MANAGER_EVENT.State, state => {
|
64
61
|
if (state) {
|
65
62
|
callbacks.emit("boxStateChange", state);
|
@@ -69,7 +66,7 @@ export class BoxManager {
|
|
69
66
|
this.teleBoxManager.events.on("minimized", minimized => {
|
70
67
|
this.manager.safeSetAttributes({ minimized });
|
71
68
|
});
|
72
|
-
this.teleBoxManager.events.on("maximized",
|
69
|
+
this.teleBoxManager.events.on("maximized", maximized => {
|
73
70
|
this.manager.safeSetAttributes({ maximized });
|
74
71
|
});
|
75
72
|
this.teleBoxManager.events.on("removed", boxes => {
|
@@ -86,7 +83,11 @@ export class BoxManager {
|
|
86
83
|
this.teleBoxManager.events.on(
|
87
84
|
"intrinsic_resize",
|
88
85
|
debounce((box: ReadonlyTeleBox): void => {
|
89
|
-
emitter.emit("resize", {
|
86
|
+
emitter.emit("resize", {
|
87
|
+
appId: box.id,
|
88
|
+
width: box.intrinsicWidth,
|
89
|
+
height: box.intrinsicHeight,
|
90
|
+
});
|
90
91
|
}, 200)
|
91
92
|
);
|
92
93
|
this.teleBoxManager.events.on("focused", box => {
|
@@ -100,6 +101,12 @@ export class BoxManager {
|
|
100
101
|
this.blurFocusBox();
|
101
102
|
}
|
102
103
|
});
|
104
|
+
this.teleBoxManager.events.on("dark_mode", darkMode => {
|
105
|
+
callbacks.emit("darkModeChange", darkMode);
|
106
|
+
});
|
107
|
+
this.teleBoxManager.events.on("prefers_color_scheme", colorScheme => {
|
108
|
+
callbacks.emit("prefersColorSchemeChange", colorScheme);
|
109
|
+
});
|
103
110
|
}
|
104
111
|
|
105
112
|
public get boxState() {
|
@@ -114,6 +121,14 @@ export class BoxManager {
|
|
114
121
|
return this.teleBoxManager.minimized;
|
115
122
|
}
|
116
123
|
|
124
|
+
public get darkMode() {
|
125
|
+
return this.teleBoxManager.darkMode;
|
126
|
+
}
|
127
|
+
|
128
|
+
public get prefersColorScheme(): TeleBoxColorScheme {
|
129
|
+
return this.teleBoxManager.prefersColorScheme;
|
130
|
+
}
|
131
|
+
|
117
132
|
public createBox(params: CreateBoxParams): void {
|
118
133
|
if (!this.teleBoxManager) return;
|
119
134
|
let { minwidth = MIN_WIDTH, minheight = MIN_HEIGHT } = params.app.config ?? {};
|
@@ -156,7 +171,9 @@ export class BoxManager {
|
|
156
171
|
}
|
157
172
|
}
|
158
173
|
|
159
|
-
public setupBoxManager(
|
174
|
+
public setupBoxManager(
|
175
|
+
createTeleBoxManagerConfig?: CreateTeleBoxManagerConfig
|
176
|
+
): TeleBoxManager {
|
160
177
|
const root = WindowManager.wrapper ? WindowManager.wrapper : document.body;
|
161
178
|
const rect = root.getBoundingClientRect();
|
162
179
|
const initManagerState: TeleBoxManagerConfig = {
|
@@ -168,9 +185,13 @@ export class BoxManager {
|
|
168
185
|
height: rect.height,
|
169
186
|
},
|
170
187
|
fence: false,
|
188
|
+
prefersColorScheme: createTeleBoxManagerConfig?.prefersColorScheme,
|
189
|
+
};
|
190
|
+
const container = createTeleBoxManagerConfig?.collectorContainer || WindowManager.wrapper;
|
191
|
+
const styles = {
|
192
|
+
...DEFAULT_COLLECTOR_STYLE,
|
193
|
+
...createTeleBoxManagerConfig?.collectorStyles,
|
171
194
|
};
|
172
|
-
const container = collectorConfig?.collectorContainer || WindowManager.wrapper;
|
173
|
-
const styles = { ...DEFAULT_COLLECTOR_STYLE, ...collectorConfig?.collectorStyles };
|
174
195
|
const teleBoxCollector = new TeleBoxCollector({
|
175
196
|
styles: styles,
|
176
197
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
@@ -224,7 +245,7 @@ export class BoxManager {
|
|
224
245
|
if (state.maximized != null) {
|
225
246
|
this.teleBoxManager.setMaximized(Boolean(state.maximized), true);
|
226
247
|
this.teleBoxManager.setMinimized(Boolean(state.minimized), true);
|
227
|
-
}
|
248
|
+
}
|
228
249
|
setTimeout(() => {
|
229
250
|
if (state.focus) {
|
230
251
|
this.teleBoxManager.update(box.id, { focus: true }, true);
|
@@ -298,6 +319,10 @@ export class BoxManager {
|
|
298
319
|
this.teleBoxManager.setReadonly(readonly);
|
299
320
|
}
|
300
321
|
|
322
|
+
public setPrefersColorScheme(colorScheme: TeleBoxColorScheme) {
|
323
|
+
this.teleBoxManager.setPrefersColorScheme(colorScheme);
|
324
|
+
}
|
325
|
+
|
301
326
|
public destroy() {
|
302
327
|
this.teleBoxManager.destroy();
|
303
328
|
}
|
package/src/MainView.ts
CHANGED
@@ -88,6 +88,10 @@ export class MainViewProxy extends Base {
|
|
88
88
|
return this.mainView;
|
89
89
|
}
|
90
90
|
|
91
|
+
public get cameraState() {
|
92
|
+
return { ...this.view.camera, ...this.view.size };
|
93
|
+
}
|
94
|
+
|
91
95
|
public createMainView(): View {
|
92
96
|
const mainView = createView(this.manager.displayer);
|
93
97
|
mainView.callbacks.on("onSizeUpdated", () => {
|
@@ -139,6 +143,7 @@ export class MainViewProxy extends Base {
|
|
139
143
|
|
140
144
|
private sizeListener = (size: Size) => {
|
141
145
|
this.setMainViewSize(size);
|
146
|
+
callbacks.emit("cameraStateChange", this.cameraState);
|
142
147
|
};
|
143
148
|
|
144
149
|
public setMainViewSize = debounce(size => {
|
@@ -147,10 +152,16 @@ export class MainViewProxy extends Base {
|
|
147
152
|
|
148
153
|
private addCameraListener() {
|
149
154
|
this.view.callbacks.on("onCameraUpdatedByDevice", this.cameraListener);
|
155
|
+
this.view.callbacks.on("onCameraUpdated", this.cameraStateChangeListener);
|
150
156
|
}
|
151
157
|
|
152
158
|
private removeCameraListener() {
|
153
159
|
this.view.callbacks.off("onCameraUpdatedByDevice", this.cameraListener);
|
160
|
+
this.view.callbacks.off("onCameraUpdated", this.cameraStateChangeListener)
|
161
|
+
}
|
162
|
+
|
163
|
+
private cameraStateChangeListener = () => {
|
164
|
+
callbacks.emit("cameraStateChange", this.cameraState);
|
154
165
|
}
|
155
166
|
|
156
167
|
public switchViewModeToWriter(): void {
|
package/src/Utils/RoomHacker.ts
CHANGED
@@ -33,6 +33,9 @@ export const replaceRoomFunction = (room: Room, manager: AppManager) => {
|
|
33
33
|
room.moveCameraToContain = (...args) => manager.mainView.moveCameraToContain(...args);
|
34
34
|
room.convertToPointInWorld = (...args) => manager.mainView.convertToPointInWorld(...args);
|
35
35
|
room.setCameraBound = (...args) => manager.mainView.setCameraBound(...args);
|
36
|
+
room.scenePreview = (...args) => manager.mainView.scenePreview(...args);
|
37
|
+
room.fillSceneSnapshot = (...args) => manager.mainView.fillSceneSnapshot(...args);
|
38
|
+
room.generateScreenshot = (...args) => manager.mainView.generateScreenshot(...args);
|
36
39
|
}
|
37
40
|
|
38
41
|
};
|
package/src/index.ts
CHANGED
@@ -51,10 +51,11 @@ import type {
|
|
51
51
|
Point,
|
52
52
|
Rectangle,
|
53
53
|
ViewVisionMode,
|
54
|
+
CameraState,
|
54
55
|
} from "white-web-sdk";
|
55
56
|
import type { AppListeners } from "./AppListener";
|
56
57
|
import type { NetlessApp, RegisterParams } from "./typings";
|
57
|
-
import type { TeleBoxState } from "@netless/telebox-insider";
|
58
|
+
import type { TeleBoxColorScheme, TeleBoxState } from "@netless/telebox-insider";
|
58
59
|
import type { AppProxy } from "./AppProxy";
|
59
60
|
|
60
61
|
const ResizeObserver = window.ResizeObserver || ResizeObserverPolyfill;
|
@@ -141,6 +142,9 @@ export const emitter: Emittery<EmitterEvent> = new Emittery();
|
|
141
142
|
export type PublicEvent = {
|
142
143
|
mainViewModeChange: ViewVisionMode;
|
143
144
|
boxStateChange: `${TELE_BOX_STATE}`;
|
145
|
+
darkModeChange: boolean;
|
146
|
+
prefersColorSchemeChange: TeleBoxColorScheme;
|
147
|
+
cameraStateChange: CameraState;
|
144
148
|
};
|
145
149
|
|
146
150
|
export type MountParams = {
|
@@ -156,6 +160,7 @@ export type MountParams = {
|
|
156
160
|
cursor?: boolean;
|
157
161
|
debug?: boolean;
|
158
162
|
disableCameraTransform?: boolean;
|
163
|
+
prefersColorScheme?: TeleBoxColorScheme;
|
159
164
|
};
|
160
165
|
|
161
166
|
export const callbacks: Emittery<PublicEvent> = new Emittery();
|
@@ -170,7 +175,7 @@ export class WindowManager extends InvisiblePlugin<WindowMangerAttributes> {
|
|
170
175
|
public static containerSizeRatio = DEFAULT_CONTAINER_RATIO;
|
171
176
|
private static isCreated = false;
|
172
177
|
|
173
|
-
public version = "0.3.
|
178
|
+
public version = "0.3.12";
|
174
179
|
|
175
180
|
public appListeners?: AppListeners;
|
176
181
|
|
@@ -225,6 +230,7 @@ export class WindowManager extends InvisiblePlugin<WindowMangerAttributes> {
|
|
225
230
|
let overwriteStyles: string | undefined;
|
226
231
|
let cursor: boolean | undefined;
|
227
232
|
let disableCameraTransform = false;
|
233
|
+
let prefersColorScheme: TeleBoxColorScheme | undefined = "light";
|
228
234
|
if ("room" in params) {
|
229
235
|
room = params.room;
|
230
236
|
container = params.container;
|
@@ -238,6 +244,7 @@ export class WindowManager extends InvisiblePlugin<WindowMangerAttributes> {
|
|
238
244
|
overwriteStyles = params.overwriteStyles;
|
239
245
|
cursor = params.cursor;
|
240
246
|
disableCameraTransform = Boolean(params?.disableCameraTransform);
|
247
|
+
prefersColorScheme = params.prefersColorScheme;
|
241
248
|
} else {
|
242
249
|
room = params;
|
243
250
|
containerSizeRatio = options?.containerSizeRatio;
|
@@ -303,6 +310,7 @@ export class WindowManager extends InvisiblePlugin<WindowMangerAttributes> {
|
|
303
310
|
manager.appManager = new AppManager(manager, {
|
304
311
|
collectorContainer: collectorContainer,
|
305
312
|
collectorStyles: collectorStyles,
|
313
|
+
prefersColorScheme: prefersColorScheme,
|
306
314
|
});
|
307
315
|
manager.observePlaygroundSize(playground, sizer, wrapper);
|
308
316
|
if (cursor) {
|
@@ -509,6 +517,14 @@ export class WindowManager extends InvisiblePlugin<WindowMangerAttributes> {
|
|
509
517
|
}
|
510
518
|
}
|
511
519
|
|
520
|
+
public get cameraState(): CameraState {
|
521
|
+
if (this.appManager) {
|
522
|
+
return this.appManager.mainViewProxy.cameraState;
|
523
|
+
} else {
|
524
|
+
throw new AppManagerNotInitError();
|
525
|
+
}
|
526
|
+
}
|
527
|
+
|
512
528
|
public get apps(): Apps | undefined {
|
513
529
|
return this.appManager?.store.apps();
|
514
530
|
}
|
@@ -521,6 +537,18 @@ export class WindowManager extends InvisiblePlugin<WindowMangerAttributes> {
|
|
521
537
|
}
|
522
538
|
}
|
523
539
|
|
540
|
+
public get darkMode(): boolean {
|
541
|
+
return Boolean(this.appManager?.boxManager.darkMode);
|
542
|
+
}
|
543
|
+
|
544
|
+
public get prefersColorScheme(): TeleBoxColorScheme {
|
545
|
+
if (this.appManager) {
|
546
|
+
return this.appManager.boxManager.prefersColorScheme;
|
547
|
+
} else {
|
548
|
+
throw new AppManagerNotInitError();
|
549
|
+
}
|
550
|
+
}
|
551
|
+
|
524
552
|
/**
|
525
553
|
* 查询所有的 App
|
526
554
|
*/
|
@@ -620,6 +648,10 @@ export class WindowManager extends InvisiblePlugin<WindowMangerAttributes> {
|
|
620
648
|
}
|
621
649
|
}
|
622
650
|
|
651
|
+
public setPrefersColorScheme(scheme: TeleBoxColorScheme): void {
|
652
|
+
this.appManager?.boxManager.setPrefersColorScheme(scheme);
|
653
|
+
}
|
654
|
+
|
623
655
|
private isDynamicPPT(scenes: SceneDefinition[]) {
|
624
656
|
const sceneSrc = scenes[0]?.ppt?.src;
|
625
657
|
return sceneSrc?.startsWith("pptx://");
|