@netless/window-manager 0.3.17-canary.2 → 0.4.0-canary.1
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/CHANGELOG.md +16 -0
- package/README.md +4 -43
- package/dist/AppContext.d.ts +3 -2
- package/dist/AppListener.d.ts +2 -1
- package/dist/AppManager.d.ts +10 -7
- package/dist/AppProxy.d.ts +3 -0
- package/dist/AttributesDelegate.d.ts +19 -11
- package/dist/Base/index.d.ts +1 -2
- package/dist/BoxManager.d.ts +23 -7
- package/dist/Cursor/index.d.ts +2 -1
- package/dist/MainView.d.ts +1 -0
- package/dist/ReconnectRefresher.d.ts +6 -3
- package/dist/Utils/RoomHacker.d.ts +2 -2
- package/dist/Utils/error.d.ts +3 -0
- package/dist/constants.d.ts +2 -1
- package/dist/index.d.ts +13 -16
- 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/docs/api.md +17 -0
- package/docs/migrate.md +42 -0
- package/package.json +3 -2
- package/src/AppContext.ts +2 -2
- package/src/AppListener.ts +14 -3
- package/src/AppManager.ts +87 -69
- package/src/AppProxy.ts +36 -17
- package/src/AttributesDelegate.ts +76 -49
- package/src/Base/Context.ts +2 -2
- package/src/Base/index.ts +2 -2
- package/src/BoxManager.ts +93 -35
- package/src/Cursor/Cursor.ts +12 -5
- package/src/Cursor/index.ts +15 -8
- package/src/MainView.ts +11 -3
- package/src/ReconnectRefresher.ts +17 -10
- package/src/Utils/RoomHacker.ts +5 -5
- package/src/Utils/error.ts +6 -1
- package/src/constants.ts +1 -0
- package/src/index.ts +115 -103
- package/src/style.css +1 -1
- package/src/viewManager.ts +2 -2
- package/yarn-error.log +0 -4285
package/dist/style.css
CHANGED
@@ -1 +1 @@
|
|
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}
|
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: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}
|
package/docs/api.md
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
- [静态方法](#static-methods)
|
5
5
|
- [`mount`](#mount)
|
6
6
|
- [`register`](#register)
|
7
|
+
- [`setContainer`](#set-container)
|
8
|
+
- [`setCollectorContainer`](#set-collector-container)
|
7
9
|
- [实例方法](#instance-methods)
|
8
10
|
- [`addApp`](#addApp)
|
9
11
|
- [`closeApp`](#closeApp)
|
@@ -63,6 +65,21 @@ WindowManager.register({
|
|
63
65
|
})
|
64
66
|
```
|
65
67
|
|
68
|
+
<h3 id="set-container">setContainer</h3>
|
69
|
+
|
70
|
+
> 设置白板挂载容器
|
71
|
+
|
72
|
+
```typescript
|
73
|
+
WindowManager.setContainer(document.getElementById("container"));
|
74
|
+
```
|
75
|
+
|
76
|
+
<h3 id="set-container">setCollectorContainer</h3>
|
77
|
+
|
78
|
+
> 设置 `Collector` 挂载的容器
|
79
|
+
|
80
|
+
```typescript
|
81
|
+
WindowManager.setCollectorContainer(document.getElementById("collector-container"));
|
82
|
+
```
|
66
83
|
|
67
84
|
<h2 id="instance-methods">实例方法</h2>
|
68
85
|
|
package/docs/migrate.md
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
|
2
|
+
### 注意事项
|
3
|
+
|
4
|
+
多窗口模式必须开启白板的 `useMultiViews` 和 `useMobXState` 选项
|
5
|
+
|
6
|
+
会造成原本以下 `room` 上的一些方法和 `state` 失效
|
7
|
+
|
8
|
+
`方法`
|
9
|
+
|
10
|
+
- `room.bindHtmlElement()` 用 `WindowManager.mount()` 代替
|
11
|
+
- `room.scalePptToFit()` 暂无代替,不再推荐调用 `scalePptToFit`
|
12
|
+
- `room.setScenePath()` 用 `manager.setMainViewScenePath()` 代替
|
13
|
+
- `room.setSceneIndex()` 用 `manager.setMainViewSceneIndex()` 代替
|
14
|
+
|
15
|
+
> 为了方便使用 `manager` 替换了 `room` 上的一些方法可以直接对 `mainView` 生效
|
16
|
+
|
17
|
+
- `room.disableCameraTransform`
|
18
|
+
- `room.moveCamera`
|
19
|
+
- `room.moveCameraToContain`
|
20
|
+
- `room.convertToPointInWorld`
|
21
|
+
- `room.setCameraBound`
|
22
|
+
|
23
|
+
`camera`
|
24
|
+
|
25
|
+
- `room.state.cameraState` 用 `manager.mainView.camera` 和 `manager.mainView.size` 代替
|
26
|
+
|
27
|
+
想要监听主白板 `camera` 的变化, 请使用如下方式代替
|
28
|
+
|
29
|
+
```javascript
|
30
|
+
manager.mainView.callbacks.on("onCameraUpdated", camera => {
|
31
|
+
console.log(camera);
|
32
|
+
});
|
33
|
+
```
|
34
|
+
|
35
|
+
监听主白板 `size` 变化
|
36
|
+
|
37
|
+
```javascript
|
38
|
+
manager.mainView.callbacks.on("onSizeUpdated", size => {
|
39
|
+
console.log(size);
|
40
|
+
});
|
41
|
+
```
|
42
|
+
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@netless/window-manager",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.4.0-canary.1",
|
4
4
|
"description": "",
|
5
5
|
"main": "dist/index.es.js",
|
6
6
|
"module": "dist/index.es.js",
|
@@ -24,10 +24,11 @@
|
|
24
24
|
"@juggle/resize-observer": "^3.3.1",
|
25
25
|
"@netless/app-docs-viewer": "0.1.26",
|
26
26
|
"@netless/app-media-player": "0.1.0-beta.5",
|
27
|
-
"@netless/telebox-insider": "
|
27
|
+
"@netless/telebox-insider": "0.2.17",
|
28
28
|
"emittery": "^0.9.2",
|
29
29
|
"lodash": "^4.17.21",
|
30
30
|
"p-retry": "^4.6.1",
|
31
|
+
"side-effect-manager": "^0.1.5",
|
31
32
|
"uuid": "^7.0.3",
|
32
33
|
"video.js": ">=7"
|
33
34
|
},
|
package/src/AppContext.ts
CHANGED
@@ -29,19 +29,19 @@ export class AppContext<TAttrs extends Record<string, any>, AppOptions = any> {
|
|
29
29
|
listenDisposed,
|
30
30
|
unlistenDisposed
|
31
31
|
};
|
32
|
-
|
32
|
+
|
33
33
|
private store = this.manager.store;
|
34
34
|
public readonly isAddApp: boolean;
|
35
35
|
public readonly isReplay = this.manager.isReplay;
|
36
36
|
|
37
37
|
constructor(
|
38
38
|
private manager: AppManager,
|
39
|
+
private boxManager: BoxManager,
|
39
40
|
public appId: string,
|
40
41
|
private appProxy: AppProxy,
|
41
42
|
private appOptions?: AppOptions | (() => AppOptions),
|
42
43
|
) {
|
43
44
|
this.emitter = appProxy.appEmitter;
|
44
|
-
this.boxManager = this.manager.boxManager;
|
45
45
|
this.isAddApp = appProxy.isAddApp;
|
46
46
|
}
|
47
47
|
|
package/src/AppListener.ts
CHANGED
@@ -7,10 +7,13 @@ import { setViewFocusScenePath } from './Utils/Common';
|
|
7
7
|
|
8
8
|
export class AppListeners {
|
9
9
|
private displayer = this.manager.displayer;
|
10
|
-
private boxManager = this.manager.boxManager;
|
11
10
|
|
12
11
|
constructor(private manager: AppManager) {}
|
13
12
|
|
13
|
+
private get boxManager() {
|
14
|
+
return this.manager.boxManager;
|
15
|
+
}
|
16
|
+
|
14
17
|
public addListeners() {
|
15
18
|
this.displayer.addMagixEventListener(MagixEventName, this.mainMagixEventListener);
|
16
19
|
}
|
@@ -43,6 +46,10 @@ export class AppListeners {
|
|
43
46
|
this.setMainViewScenePathHandler(data.payload);
|
44
47
|
break;
|
45
48
|
}
|
49
|
+
case Events.MoveCameraToContain: {
|
50
|
+
this.moveCameraToContainHandler(data.payload);
|
51
|
+
break;
|
52
|
+
}
|
46
53
|
default:
|
47
54
|
break;
|
48
55
|
}
|
@@ -50,11 +57,11 @@ export class AppListeners {
|
|
50
57
|
};
|
51
58
|
|
52
59
|
private appMoveHandler = (payload: any) => {
|
53
|
-
this.boxManager
|
60
|
+
this.boxManager?.moveBox(payload);
|
54
61
|
};
|
55
62
|
|
56
63
|
private appResizeHandler = (payload: any) => {
|
57
|
-
this.boxManager
|
64
|
+
this.boxManager?.resizeBox(Object.assign(payload, { skipUpdate: true }));
|
58
65
|
this.manager.room?.refreshViewSize();
|
59
66
|
};
|
60
67
|
|
@@ -69,4 +76,8 @@ export class AppListeners {
|
|
69
76
|
private setMainViewScenePathHandler = ({ nextScenePath }: { nextScenePath: string }) => {
|
70
77
|
setViewFocusScenePath(this.manager.mainView, nextScenePath);
|
71
78
|
}
|
79
|
+
|
80
|
+
private moveCameraToContainHandler = (payload: any) => {
|
81
|
+
this.manager.mainView.moveCameraToContain(payload);
|
82
|
+
}
|
72
83
|
}
|
package/src/AppManager.ts
CHANGED
@@ -1,22 +1,11 @@
|
|
1
1
|
import pRetry from "p-retry";
|
2
|
-
import {
|
3
|
-
|
4
|
-
AppStatus,
|
5
|
-
Events,
|
6
|
-
MagixEventName
|
7
|
-
} from "./constants";
|
2
|
+
import { sortBy } from "lodash";
|
3
|
+
import { AppAttributes, AppStatus, Events, MagixEventName } from "./constants";
|
8
4
|
import { AppListeners } from "./AppListener";
|
9
5
|
import { AppProxy } from "./AppProxy";
|
10
|
-
import {
|
11
|
-
import {
|
12
|
-
|
13
|
-
isPlayer,
|
14
|
-
isRoom,
|
15
|
-
ScenePathType,
|
16
|
-
ViewVisionMode
|
17
|
-
} from "white-web-sdk";
|
18
|
-
import { BoxManager } from "./BoxManager";
|
19
|
-
import { callbacks, emitter } from "./index";
|
6
|
+
import { store } from "./AttributesDelegate";
|
7
|
+
import { autorun, isPlayer, isRoom, ScenePathType, ViewVisionMode } from "white-web-sdk";
|
8
|
+
import { callbacks, emitter, WindowManager } from "./index";
|
20
9
|
import { CameraStore } from "./Utils/CameraStore";
|
21
10
|
import { genAppId, makeValidScenePath, setScenePath } from "./Utils/Common";
|
22
11
|
import { log } from "./Utils/log";
|
@@ -24,40 +13,40 @@ import { MainViewProxy } from "./MainView";
|
|
24
13
|
import { onObjectRemoved, safeListenPropsUpdated } from "./Utils/Reactive";
|
25
14
|
import { ReconnectRefresher } from "./ReconnectRefresher";
|
26
15
|
import { ViewManager } from "./ViewManager";
|
16
|
+
import type { BoxManager } from "./BoxManager";
|
27
17
|
import type { Displayer, DisplayerState, Room } from "white-web-sdk";
|
28
|
-
import type {
|
29
|
-
import type {
|
30
|
-
AddAppParams,
|
31
|
-
BaseInsertParams,
|
32
|
-
WindowManager,
|
33
|
-
TeleBoxRect,
|
34
|
-
EmitterEvent,
|
35
|
-
} from "./index";
|
18
|
+
import type { AddAppParams, BaseInsertParams, TeleBoxRect, EmitterEvent } from "./index";
|
36
19
|
export class AppManager {
|
37
20
|
public displayer: Displayer;
|
38
|
-
public boxManager: BoxManager;
|
39
21
|
public cameraStore: CameraStore;
|
40
22
|
public viewManager: ViewManager;
|
41
23
|
public appProxies: Map<string, AppProxy> = new Map();
|
42
24
|
public appStatus: Map<string, AppStatus> = new Map();
|
43
|
-
public store =
|
25
|
+
public store = store;
|
44
26
|
public mainViewProxy: MainViewProxy;
|
45
27
|
public refresher?: ReconnectRefresher;
|
46
28
|
public isReplay = this.windowManger.isReplay;
|
47
29
|
|
48
30
|
private appListeners: AppListeners;
|
31
|
+
public boxManager?: BoxManager;
|
49
32
|
|
50
|
-
constructor(public windowManger: WindowManager
|
33
|
+
constructor(public windowManger: WindowManager) {
|
51
34
|
this.displayer = windowManger.displayer;
|
35
|
+
this.store.setContext({
|
36
|
+
getAttributes: () => this.attributes,
|
37
|
+
safeSetAttributes: attributes => this.safeSetAttributes(attributes),
|
38
|
+
safeUpdateAttributes: (keys, val) => this.safeUpdateAttributes(keys, val),
|
39
|
+
});
|
52
40
|
this.cameraStore = new CameraStore();
|
53
41
|
this.mainViewProxy = new MainViewProxy(this);
|
54
42
|
this.viewManager = new ViewManager(this);
|
55
|
-
this.boxManager = new BoxManager(this, options);
|
56
43
|
this.appListeners = new AppListeners(this);
|
57
44
|
this.displayer.callbacks.on(this.eventName, this.displayerStateListener);
|
58
45
|
this.appListeners.addListeners();
|
59
46
|
|
60
|
-
this.refresher = new ReconnectRefresher(this.room,
|
47
|
+
this.refresher = new ReconnectRefresher(this.room, {
|
48
|
+
notifyReconnected: () => this.notifyReconnected(),
|
49
|
+
});
|
61
50
|
|
62
51
|
emitter.once("onCreated").then(() => this.onCreated());
|
63
52
|
|
@@ -74,12 +63,15 @@ export class AppManager {
|
|
74
63
|
|
75
64
|
private async onCreated() {
|
76
65
|
await this.attributesUpdateCallback(this.attributes.apps);
|
77
|
-
this.boxManager
|
66
|
+
this.boxManager?.updateManagerRect();
|
78
67
|
emitter.onAny(this.boxEventListener);
|
79
68
|
this.refresher?.add("apps", () => {
|
80
|
-
return safeListenPropsUpdated(
|
81
|
-
|
82
|
-
|
69
|
+
return safeListenPropsUpdated(
|
70
|
+
() => this.attributes.apps,
|
71
|
+
() => {
|
72
|
+
this.attributesUpdateCallback(this.attributes.apps);
|
73
|
+
}
|
74
|
+
);
|
83
75
|
});
|
84
76
|
this.refresher?.add("appsClose", () => {
|
85
77
|
return onObjectRemoved(this.attributes.apps, () => {
|
@@ -89,19 +81,19 @@ export class AppManager {
|
|
89
81
|
this.refresher?.add("maximized", () => {
|
90
82
|
return autorun(() => {
|
91
83
|
const maximized = this.attributes.maximized;
|
92
|
-
|
93
|
-
this.boxManager.setMaximized(Boolean(maximized));
|
94
|
-
}
|
84
|
+
this.boxManager?.setMaximized(Boolean(maximized));
|
95
85
|
});
|
96
86
|
});
|
97
87
|
this.refresher?.add("minimized", () => {
|
98
88
|
return autorun(() => {
|
99
89
|
const minimized = this.attributes.minimized;
|
100
|
-
if (this.boxManager
|
90
|
+
if (this.boxManager?.minimized !== minimized) {
|
101
91
|
if (minimized === true) {
|
102
|
-
this.boxManager
|
92
|
+
this.boxManager?.blurAllBox();
|
103
93
|
}
|
104
|
-
|
94
|
+
setTimeout(() => {
|
95
|
+
this.boxManager?.setMinimized(Boolean(minimized));
|
96
|
+
}, 0);
|
105
97
|
}
|
106
98
|
});
|
107
99
|
});
|
@@ -124,29 +116,39 @@ export class AppManager {
|
|
124
116
|
* @memberof WindowManager
|
125
117
|
*/
|
126
118
|
public async attributesUpdateCallback(apps: any) {
|
127
|
-
if (apps) {
|
128
|
-
|
119
|
+
if (apps && WindowManager.container) {
|
120
|
+
const appIds = Object.keys(apps);
|
121
|
+
const appsWithCreatedAt = appIds.map(appId => {
|
122
|
+
return {
|
123
|
+
id: appId,
|
124
|
+
createdAt: apps[appId].createdAt,
|
125
|
+
};
|
126
|
+
});
|
127
|
+
for (const { id } of sortBy(appsWithCreatedAt, "createdAt")) {
|
129
128
|
if (!this.appProxies.has(id) && !this.appStatus.has(id)) {
|
130
129
|
const app = apps[id];
|
131
130
|
|
132
|
-
pRetry(
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
131
|
+
pRetry(
|
132
|
+
async () => {
|
133
|
+
this.appStatus.set(id, AppStatus.StartCreate);
|
134
|
+
// 防御 appAttributes 有可能为 undefined 的情况,这里做一个重试
|
135
|
+
const appAttributes = this.attributes[id];
|
136
|
+
if (!appAttributes) {
|
137
|
+
throw new Error("appAttributes is undefined");
|
138
|
+
}
|
139
|
+
await this.baseInsertApp(
|
140
|
+
{
|
141
|
+
kind: app.kind,
|
142
|
+
options: app.options,
|
143
|
+
isDynamicPPT: app.isDynamicPPT,
|
144
|
+
},
|
145
|
+
id,
|
146
|
+
false
|
147
|
+
);
|
148
|
+
this.focusByAttributes(apps);
|
149
|
+
},
|
150
|
+
{ retries: 3 }
|
151
|
+
).catch(err => {
|
150
152
|
console.warn(`[WindowManager]: Insert App Error`, err);
|
151
153
|
this.appStatus.delete(id);
|
152
154
|
});
|
@@ -155,6 +157,22 @@ export class AppManager {
|
|
155
157
|
}
|
156
158
|
}
|
157
159
|
|
160
|
+
public refresh() {
|
161
|
+
this.attributesUpdateCallback(this.attributes.apps);
|
162
|
+
}
|
163
|
+
|
164
|
+
public setBoxManager(boxManager: BoxManager) {
|
165
|
+
this.boxManager = boxManager;
|
166
|
+
}
|
167
|
+
|
168
|
+
public resetMaximized() {
|
169
|
+
this.boxManager?.setMaximized(Boolean(this.store.getMaximized()));
|
170
|
+
}
|
171
|
+
|
172
|
+
public resetMinimized() {
|
173
|
+
this.boxManager?.setMinimized(Boolean(this.store.getMinimized()));
|
174
|
+
}
|
175
|
+
|
158
176
|
private onAppDelete = (apps: any) => {
|
159
177
|
const ids = Object.keys(apps);
|
160
178
|
this.appProxies.forEach((appProxy, id) => {
|
@@ -169,7 +187,7 @@ export class AppManager {
|
|
169
187
|
mainView.disableCameraTransform = disableCameraTransform;
|
170
188
|
mainView.divElement = divElement;
|
171
189
|
if (!mainView.focusScenePath) {
|
172
|
-
this.store.setMainViewFocusPath();
|
190
|
+
this.store.setMainViewFocusPath(mainView);
|
173
191
|
}
|
174
192
|
if (this.store.focus === undefined && mainView.mode !== ViewVisionMode.Writable) {
|
175
193
|
this.viewManager.switchMainViewToWriter();
|
@@ -192,7 +210,7 @@ export class AppManager {
|
|
192
210
|
const attrs = params.attributes ?? {};
|
193
211
|
this.safeUpdateAttributes([appId], attrs);
|
194
212
|
this.store.setupAppAttributes(params, appId, isDynamicPPT);
|
195
|
-
const needFocus = !this.boxManager
|
213
|
+
const needFocus = !this.boxManager?.minimized;
|
196
214
|
if (needFocus) {
|
197
215
|
this.store.setAppFocus(appId, true);
|
198
216
|
}
|
@@ -209,8 +227,8 @@ export class AppManager {
|
|
209
227
|
});
|
210
228
|
this.store.updateAppState(appProxy.id, AppAttributes.ZIndex, box.zIndex);
|
211
229
|
}
|
212
|
-
if (this.boxManager
|
213
|
-
this.boxManager
|
230
|
+
if (this.boxManager?.minimized) {
|
231
|
+
this.boxManager?.setMinimized(false, false);
|
214
232
|
}
|
215
233
|
}
|
216
234
|
|
@@ -268,9 +286,9 @@ export class AppManager {
|
|
268
286
|
const isManualWritable =
|
269
287
|
this.windowManger.readonly === undefined || this.windowManger.readonly === false;
|
270
288
|
if (this.windowManger.readonly === undefined) {
|
271
|
-
this.boxManager
|
289
|
+
this.boxManager?.setReadonly(isReadonly);
|
272
290
|
} else {
|
273
|
-
this.boxManager
|
291
|
+
this.boxManager?.setReadonly(!(isWritable && isManualWritable));
|
274
292
|
}
|
275
293
|
this.appProxies.forEach(appProxy => {
|
276
294
|
appProxy.emitAppIsWritableChange();
|
@@ -337,7 +355,7 @@ export class AppManager {
|
|
337
355
|
this.safeSetAttributes({ _mainScenePath: scenePath });
|
338
356
|
await this.viewManager.switchMainViewToWriter();
|
339
357
|
setScenePath(this.room, scenePath);
|
340
|
-
this.store.setMainViewFocusPath();
|
358
|
+
this.store.setMainViewFocusPath(this.mainView);
|
341
359
|
this.dispatchInternalEvent(Events.SetMainViewScenePath, { nextScenePath: scenePath });
|
342
360
|
}
|
343
361
|
|
@@ -348,7 +366,7 @@ export class AppManager {
|
|
348
366
|
this.room.setSceneIndex(index);
|
349
367
|
const nextScenePath = this.room.state.sceneState.scenePath;
|
350
368
|
this.store.setMainViewScenePath(nextScenePath);
|
351
|
-
this.store.setMainViewFocusPath();
|
369
|
+
this.store.setMainViewFocusPath(this.mainView);
|
352
370
|
this.dispatchInternalEvent(Events.SetMainViewScenePath, { nextScenePath });
|
353
371
|
}
|
354
372
|
}
|
@@ -407,7 +425,7 @@ export class AppManager {
|
|
407
425
|
};
|
408
426
|
|
409
427
|
public focusByAttributes(apps: any) {
|
410
|
-
if (apps && Object.keys(apps).length === this.boxManager
|
428
|
+
if (apps && Object.keys(apps).length === this.boxManager?.boxSize) {
|
411
429
|
const focusAppId = this.store.focus;
|
412
430
|
if (focusAppId) {
|
413
431
|
this.boxManager.focusBox({ appId: focusAppId });
|
@@ -448,7 +466,7 @@ export class AppManager {
|
|
448
466
|
});
|
449
467
|
}
|
450
468
|
this.viewManager.destroy();
|
451
|
-
this.boxManager
|
469
|
+
this.boxManager?.destroy();
|
452
470
|
this.refresher?.destroy();
|
453
471
|
this.mainViewProxy.destroy();
|
454
472
|
callbacks.clearListeners();
|