@wenbin_wb/dsh-bridge 2.10.12 → 2.10.14
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 +46 -1
- package/client/client.js +477 -61
- package/client/index.js +231 -49
- package/client/mobile-styles.js +303 -13
- package/client/picker-yield.js +77 -0
- package/lib/cloudflared-manager.mjs +458 -17
- package/lib/feishu/lark-bundled.mjs +230 -76
- package/lib/index.js +4 -1
- package/package.json +4 -4
package/client/client.js
CHANGED
|
@@ -51,6 +51,55 @@ var MOBILE_STYLES_CSS = `
|
|
|
51
51
|
--dsh-mobile-safe-bottom: env(safe-area-inset-bottom, 0px);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
/* \u6302\u5728 <body> \u4E0B\u3001\u81EA\u5E26\u906E\u7F69\u7684\u300C\u6A21\u6001\u6839\u300D\u5FC5\u987B\u80FD\u76D6\u5728\u8BBE\u7F6E\u5F39\u7A97\u4E4B\u4E0A\u3002
|
|
55
|
+
\u2014\u2014 \u8FD9\u662F\u672C\u63D2\u4EF6\u62AC\u9AD8\u8BBE\u7F6E\u5F39\u7A97\u5C42\u53E0\u540E\u5FC5\u987B\u81EA\u5DF1\u8865\u4E0A\u7684\u4E00\u73AF\uFF08\u8C01\u62AC\u7684\u8C01\u8D1F\u8D23\uFF09\u3002
|
|
56
|
+
|
|
57
|
+
\u6545\u969C\u73B0\u8C61\uFF1A\u63D2\u4EF6\u5E02\u573A\u8BBE\u7F6E\u9875\u70B9\u300C\u5B89\u88C5\u300D\u6CA1\u6709\u4EFB\u4F55\u53CD\u5E94\u3002
|
|
58
|
+
\u6839\u56E0\u94FE\uFF1A
|
|
59
|
+
1) \u672C\u63D2\u4EF6\u628A\u8BBE\u7F6E\u5F39\u7A97\u62AC\u5230 z-index:10002\uFF08\u89C1\u4E0B\u9762 @media \u5757\uFF09\uFF0C\u4EE5\u4FBF\u76D6\u4F4F\u81EA\u5DF1\u6E32\u67D3\u7684
|
|
60
|
+
\u79FB\u52A8\u7AEF\u9876\u680F(9998)/\u62BD\u5C49\u906E\u7F69(9999)\uFF1B
|
|
61
|
+
2) \u63D2\u4EF6\u5E02\u573A\uFF08dshmarket 1.44.0\uFF09\u7684\u5B89\u88C5\u786E\u8BA4\u6846\u662F\u6302\u5728 <body> \u4E0B\u7684
|
|
62
|
+
div._root_w1urq_2\uFF0Cposition:fixed\uFF0C\u4F46\u53EA\u6709 z-index:1000\uFF1B
|
|
63
|
+
3) \u8BE5\u6D6E\u5C42\u5185\u90E8\u7684\u5BF9\u8BDD\u6846 div._dialog_w1urq_22 \u867D\u7136\u5E26 role="dialog"\u3001\u88AB\u4E0B\u9762\u7684
|
|
64
|
+
10005 \u89C4\u5219\u62AC\u8D77\u6765\u4E86\uFF0C**\u4F46 z-index \u65E0\u6CD5\u9003\u51FA\u7956\u5148\u7684\u5C42\u53E0\u4E0A\u4E0B\u6587** \u2014\u2014 \u5916\u5C42\u6A21\u6001\u6839
|
|
65
|
+
\u53EA\u6709 1000\uFF0C\u6574\u68F5\u5B50\u6811\uFF08\u8FDE\u540C\u90A3\u4E2A 10005\uFF09\u4E00\u8D77\u88AB\u8BBE\u7F6E\u5F39\u7A97(10002)\u76D6\u6B7B\uFF1B
|
|
66
|
+
4) \u7ED3\u679C\uFF1A\u7AD6\u5C4F\u70B9\u5B89\u88C5\u5B8C\u5168\u770B\u4E0D\u5230\u6D6E\u5C42\uFF08\u8BBE\u7F6E\u5F39\u7A97\u7684\u906E\u7F69\u5728 elementFromPoint \u4E0A\u547D\u4E2D\uFF09\uFF1B
|
|
67
|
+
\u6A2A\u5C4F\uFF08\u5BBD\u5EA6 > 767 \u65F6\u672C\u63D2\u4EF6\u6837\u5F0F\u4E0D\u751F\u6548\uFF0C\u8BBE\u7F6E\u5F39\u7A97\u56DE\u843D\u6210\u5BBF\u4E3B\u7684 1000\uFF09\u6D6E\u5C42\u867D\u51FA\u73B0\uFF0C
|
|
68
|
+
\u5374\u4E0E\u9875\u9762\u5185\u5BB9\u4E92\u76F8\u7A7F\u900F\u3001\u663E\u793A\u4E0D\u5B8C\u6574\u3002
|
|
69
|
+
|
|
70
|
+
\u9009\u62E9\u5668\u523B\u610F\u4E0D\u786C\u7F16\u7801\u4EFB\u4F55\u7B2C\u4E09\u65B9\u7C7B\u540D/\u54C8\u5E0C\uFF0C\u53EA\u8BA4\u6A21\u6001\u6839\u7684\u4E24\u4E2A**\u7ED3\u6784\u7279\u5F81**\uFF1A
|
|
71
|
+
\u300Cbody \u7684\u76F4\u63A5\u5B50\u7EA7\u300D+\u300C\u81EA\u5E26\u906E\u7F69\u5B50\u5143\u7D20\uFF08\u6216\u6709 role=dialog \u5B50\u5143\u7D20\uFF09\u300D\u3002
|
|
72
|
+
\u5B9E\u6D4B\u5728\u6253\u5F00\u8BBE\u7F6E\u524D/\u540E/\u70B9\u5B89\u88C5\u540E\u4E09\u4E2A\u9636\u6BB5\uFF0C\u672C\u9875\u9762\u4E0A\u8BE5\u9009\u62E9\u5668**\u53EA\u547D\u4E2D\u5E02\u573A\u90A3\u4E00\u4E2A\u6D6E\u5C42**\uFF0C
|
|
73
|
+
\u65E0\u8BEF\u4F24\uFF1B\u672C\u63D2\u4EF6\u81EA\u5DF1\u7684 #dsh-remote-workspace-modal \u6709 ID \u89C4\u5219(100000)\uFF0C\u4F18\u5148\u7EA7\u66F4\u9AD8\uFF0C
|
|
74
|
+
\u4E0D\u53D7\u5F71\u54CD\u3002\u4EC5\u5728\u8BBE\u7F6E\u5F39\u7A97\u6253\u5F00\u65F6\u751F\u6548\uFF08body:has(...)\uFF09\uFF0C\u628A\u5F71\u54CD\u9762\u538B\u5230\u6700\u5C0F\u3002
|
|
75
|
+
|
|
76
|
+
\u3010\u5DF2\u77E5\u8FB9\u754C\u3011\u5224\u636E\u53EA\u770B\u7ED3\u6784\uFF0C\u65E0\u6CD5\u533A\u5206\u300C\u771F\u6A21\u6001\u300D\u4E0E\u300C\u6070\u597D\u957F\u6210\u8FD9\u6837\u3001\u4E14\u4E0D\u53EF\u5173\u95ED\u7684\u5168\u5C4F
|
|
77
|
+
\u906E\u7F69\u300D\u3002\u82E5\u67D0\u4E2A\u63D2\u4EF6\u5F80 <body> \u4E0B\u6302\u4E00\u4E2A\u5E26 mask \u5B50\u5143\u7D20\u7684\u5168\u5C4F\u5C42\uFF0C\u5B83\u4E5F\u4F1A\u88AB\u62AC\u5230\u8BBE\u7F6E
|
|
78
|
+
\u5F39\u7A97\u4E4B\u4E0A\u5E76\u76D6\u4F4F\u8BBE\u7F6E\u9875\u3002\u8FD9\u662F\u300C\u6A21\u6001\u5C31\u8BE5\u76D6\u5728\u8BBE\u7F6E\u5F39\u7A97\u4E4B\u4E0A\u300D\u7684\u65E2\u5B9A\u53D6\u820D\uFF1A\u5B81\u53EF\u8BA9\u771F\u6A21\u6001
|
|
79
|
+
\u53EF\u89C1\uFF0C\u4E5F\u4E0D\u63A5\u53D7"\u5F39\u4E86\u5374\u70B9\u4E0D\u5230"\u3002\u72EC\u7ACB\u9A8C\u6536\u5DF2\u5B9E\u6D4B\u8BE5\u6784\u9020\u4F1A\u547D\u4E2D\uFF1B\u82E5\u5C06\u6765\u771F\u8E29\u5230\uFF0C
|
|
80
|
+
\u5E94\u6539\u4E3A\u6309\u300C\u8BE5\u6D6E\u5C42\u662F\u5426\u53EF\u5173\u95ED\u300D\u8FDB\u4E00\u6B65\u6536\u7A84\uFF0C\u800C\u4E0D\u662F\u56DE\u9000\u8FD9\u6761\u89C4\u5219\u3002 */
|
|
81
|
+
body:has(div[class*="VOzbGW_overlay"]) > div:has(> div[class*="mask"], > div[role="dialog"]) {
|
|
82
|
+
z-index: 10050 !important;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* \u540C\u4E0A\u573A\u666F\u7684\u7B2C\u4E8C\u4E2A\u72EC\u7ACB\u95EE\u9898\uFF1A\u7B2C\u4E09\u65B9\u6A21\u6001\u5BF9\u8BDD\u6846\u300C\u6BD4\u89C6\u53E3\u8FD8\u9AD8\u300D\u3002
|
|
86
|
+
\u63D2\u4EF6\u5E02\u573A\u7684\u5B89\u88C5\u786E\u8BA4\u6846\u662F\u56FA\u5B9A 584px \u9AD8 + overflow-y:hidden\uFF0C\u5728\u77EE\u89C6\u53E3\uFF08\u6A2A\u5C4F\u624B\u673A
|
|
87
|
+
320\u2013430px \u9AD8\uFF0C\u4EE5\u53CA 320\xD7480 \u8FD9\u7C7B\u5C0F\u5C4F\uFF09\u91CC\u88AB\u5C45\u4E2D\u6491\u5F00 \u2192 \u4E0A\u4E0B\u540C\u65F6\u88AB\u5207\u6389\uFF0C\u5E95\u90E8
|
|
88
|
+
\u300CCancel / Confirm install\u300D\u843D\u5230\u89C6\u53E3\u4E4B\u5916\uFF0C\u7528\u6237\u70B9\u4E0D\u5230\u3001\u6D41\u7A0B\u8D70\u4E0D\u4E0B\u53BB
|
|
89
|
+
\uFF08\u5B9E\u6D4B 667\xD7375 \u65F6\u5BF9\u8BDD\u6846 rect y=-116 h=608\u3001\u6309\u94AE y=432\uFF1B844\xD7390 \u540C\u6837\uFF09\u3002
|
|
90
|
+
|
|
91
|
+
\u4FEE\u6CD5\u662F\u8BA9\u6A21\u6001\u5BF9\u8BDD\u6846\u4E0D\u8D85\u8FC7\u89C6\u53E3\u5E76\u5141\u8BB8\u5185\u90E8\u6EDA\u52A8\u3002\u8FD9\u6761\u662F**\u81EA\u9650\u6027**\u7684\uFF1A
|
|
92
|
+
max-height \u53EA\u5728\u300C\u89C6\u53E3\u6BD4\u5BF9\u8BDD\u6846\u77EE\u300D\u65F6\u624D\u8D77\u4F5C\u7528 \u2014\u2014 375\xD7667 / 390\xD7844 \u7B49\u6B63\u5E38\u7AD6\u5C4F\u4E0B
|
|
93
|
+
100dvh-16px(=651/828) > 584\uFF0C\u58F0\u660E\u4E0D\u4EA7\u751F\u4EFB\u4F55\u89C6\u89C9\u53D8\u5316\u3002
|
|
94
|
+
vh \u4E0E dvh \u5404\u5199\u4E00\u904D\uFF1A\u4E0D\u652F\u6301 dvh \u7684\u73AF\u5883\u9000\u56DE vh\uFF1B\u4E24\u6761\u90FD\u5931\u6548\u4E5F\u53EA\u662F\u4FDD\u6301\u539F\u6837\u3002 */
|
|
95
|
+
body:has(div[class*="VOzbGW_overlay"]) > div:has(> div[role="dialog"]) > div[role="dialog"] {
|
|
96
|
+
/* \u7559 32px \u800C\u4E0D\u662F 16px\uFF1A\u8BE5\u5BF9\u8BDD\u6846\u662F content-box + 24px \u7EB5\u5411\u5185\u8FB9\u8DDD\uFF0C
|
|
97
|
+
\u6309\u5185\u5BB9\u76D2\u7B97\u7684 max-height \u4F1A\u518D\u591A\u51FA\u5185\u8FB9\u8DDD\u7684\u8FB9\u6846\u76D2\u9AD8\u5EA6\uFF0C16px \u65F6\u4ECD\u6EA2\u51FA 4px\u3002 */
|
|
98
|
+
max-height: calc(100vh - 32px) !important;
|
|
99
|
+
max-height: calc(100dvh - 32px) !important;
|
|
100
|
+
overflow-y: auto !important;
|
|
101
|
+
}
|
|
102
|
+
|
|
54
103
|
/* \u65AD\u70B9\u4E0E\u5BBF\u4E3B\u5224\u636E\u5BF9\u9F50\uFF1A\u5BBF\u4E3B\u7528 viewportWidth < 768 \u51B3\u5B9A\u53F3\u4FA7\u680F\u81EA\u52A8\u5168\u5C4F
|
|
55
104
|
\uFF08dsh-client-ui-sidebar-right/lib/client.js\uFF09\uFF0C\u6545\u79FB\u52A8\u7AEF\u6837\u5F0F\u53D6 <=767px\uFF0C
|
|
56
105
|
768px \u8D77\u5F7B\u5E95\u4EA4\u8FD8\u684C\u9762\u5E03\u5C40\uFF0C\u907F\u514D"\u6865\u6E32\u67D3\u9876\u680F\u3001\u5BBF\u4E3B\u5374\u672A\u5168\u5C4F"\u7684\u9519\u4F4D\u3002 */
|
|
@@ -695,56 +744,91 @@ var MOBILE_STYLES_CSS = `
|
|
|
695
744
|
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.25) !important;
|
|
696
745
|
background: var(--dsw-alias-bg-layer-1, #ffffff) !important;
|
|
697
746
|
}
|
|
747
|
+
/* 6.1 481\u2013767px\uFF1A\u4FDD\u7559\u5DE6\u4FA7\u56FE\u6807\u8F68\u9053\u3002
|
|
748
|
+
78px \u8F68\u9053\u628A "Agent presets"/"Plugin Market" \u6324\u5230\u4E24\u4FA7\u53EA\u5269 ~5px\u3001\u6807\u7B7E\u88AB\u538B\u5230
|
|
749
|
+
10.5px \u4E14 word-break:break-all \u4F1A\u4ECE\u8BCD\u4E2D\u95F4\u65AD\u5B57\uFF0C\u6545\u653E\u5BBD\u5230 88px / 11.5px\uFF0C
|
|
750
|
+
\u5E76\u6539\u7528 overflow-wrap \u515C\u5E95\uFF08\u6B63\u5E38\u5355\u8BCD\u4E0D\u518D\u88AB\u62C6\uFF09\u3002 */
|
|
698
751
|
nav[class*="VOzbGW_nav"] {
|
|
699
|
-
width:
|
|
700
|
-
min-width:
|
|
701
|
-
max-width:
|
|
702
|
-
padding: 10px
|
|
752
|
+
width: 88px !important;
|
|
753
|
+
min-width: 88px !important;
|
|
754
|
+
max-width: 88px !important;
|
|
755
|
+
padding: 10px 6px !important;
|
|
703
756
|
box-sizing: border-box !important;
|
|
704
757
|
border-right: 1px solid var(--dsw-alias-border-l2, #e5e7eb) !important;
|
|
705
758
|
display: flex !important;
|
|
706
759
|
flex-direction: column !important;
|
|
707
760
|
gap: 6px !important;
|
|
708
761
|
overflow-y: auto !important;
|
|
762
|
+
overscroll-behavior: contain !important;
|
|
709
763
|
}
|
|
710
764
|
nav[class*="VOzbGW_nav"] button[class*="VOzbGW_navCell"],
|
|
711
765
|
button[class*="VOzbGW_navCell"] {
|
|
712
|
-
padding:
|
|
766
|
+
padding: 7px 2px !important;
|
|
713
767
|
display: flex !important;
|
|
714
768
|
flex-direction: column !important;
|
|
715
769
|
align-items: center !important;
|
|
716
770
|
justify-content: center !important;
|
|
717
771
|
text-align: center !important;
|
|
718
772
|
height: auto !important;
|
|
719
|
-
min-height:
|
|
720
|
-
|
|
773
|
+
min-height: 46px !important;
|
|
774
|
+
/* flex:none\uFF1A\u5355\u5143\u683C\u4E0D\u5F97\u88AB\u538B\u7F29\uFF0C\u5426\u5219\u77EE\u89C6\u53E3\u4E0B\u672B\u9879\u4F1A\u8D34\u7740\u8F68\u9053\u4E0B\u6CBF\u88AB\u5207\u6389 */
|
|
775
|
+
flex: 0 0 auto !important;
|
|
776
|
+
gap: 3px !important;
|
|
721
777
|
border-radius: 10px !important;
|
|
722
778
|
}
|
|
723
779
|
span[class*="VOzbGW_navLabel"] {
|
|
724
|
-
font-size:
|
|
725
|
-
line-height: 1.
|
|
780
|
+
font-size: 11.5px !important;
|
|
781
|
+
line-height: 1.25 !important;
|
|
726
782
|
white-space: normal !important;
|
|
727
|
-
word-break:
|
|
783
|
+
word-break: normal !important;
|
|
784
|
+
overflow-wrap: anywhere !important;
|
|
728
785
|
text-align: center !important;
|
|
729
786
|
}
|
|
787
|
+
|
|
788
|
+
/* \u77EE\u89C6\u53E3\uFF08\u6A2A\u5C4F\u624B\u673A\uFF09\uFF1A\u538B\u7F29\u8F68\u9053\u5355\u5143\u683C\uFF0C\u4FDD\u8BC1 6 \u4E2A\u5206\u7C7B\u5168\u90E8\u843D\u5728\u9762\u677F\u5185\uFF0C
|
|
789
|
+
\u800C\u4E0D\u662F\u9760 nav \u81EA\u8EAB\u7684 overflow-y \u6EDA\u52A8\u628A\u672B\u9879\u85CF\u8D77\u6765\uFF08\u5F53\u524D\u65E0\u4EFB\u4F55\u53EF\u6EDA\u52A8\u63D0\u793A\uFF09\u3002 */
|
|
790
|
+
@media (max-height: 500px) {
|
|
791
|
+
nav[class*="VOzbGW_nav"] {
|
|
792
|
+
padding: 8px 6px !important;
|
|
793
|
+
gap: 4px !important;
|
|
794
|
+
}
|
|
795
|
+
nav[class*="VOzbGW_nav"] button[class*="VOzbGW_navCell"],
|
|
796
|
+
button[class*="VOzbGW_navCell"] {
|
|
797
|
+
min-height: 40px !important;
|
|
798
|
+
padding: 4px 2px !important;
|
|
799
|
+
}
|
|
800
|
+
div[class*="VOzbGW_navTitle"] {
|
|
801
|
+
font-size: 13px !important;
|
|
802
|
+
line-height: 1.3 !important;
|
|
803
|
+
padding: 0 4px !important;
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
|
|
730
807
|
div[class*="VOzbGW_content"] {
|
|
731
808
|
flex: 1 1 auto !important;
|
|
732
809
|
min-width: 0 !important;
|
|
733
|
-
width: calc(100% -
|
|
734
|
-
max-width: calc(100% -
|
|
810
|
+
width: calc(100% - 88px) !important;
|
|
811
|
+
max-width: calc(100% - 88px) !important;
|
|
735
812
|
display: flex !important;
|
|
736
813
|
flex-direction: column !important;
|
|
737
814
|
overflow: hidden !important;
|
|
738
815
|
}
|
|
816
|
+
/* overflow-x \u5FC5\u987B\u662F auto \u800C\u4E0D\u662F hidden\uFF1A\u5BBF\u4E3B\u539F\u6837\u5F0F\u53EA\u5199\u4E86 overflow-y:auto\uFF0C
|
|
817
|
+
\u6309 CSS Overflow \u89C4\u8303 overflow-x \u4F1A\u8BA1\u7B97\u4E3A auto\uFF08\u53EF\u6A2A\u6ED1\uFF09\u3002\u6B64\u524D\u63D2\u4EF6\u5F3A\u5236
|
|
818
|
+
hidden\uFF0C\u628A\u300C\u53EF\u6EDA\u52A8\u300D\u964D\u7EA7\u6210\u300C\u9759\u9ED8\u88C1\u5207\u300D\u2014\u2014\u6EA2\u51FA\u5185\u5BB9\u65E2\u770B\u4E0D\u5230\u4E5F\u6ED1\u4E0D\u51FA\u6765
|
|
819
|
+
\uFF08\u5B9E\u6D4B 375px \u4E0B\u88C1\u6389 42px\uFF0CPlugin Market \u7684 Installed/Advanced \u4E24\u4E2A Tab
|
|
820
|
+
\u76F4\u63A5\u4E0D\u53EF\u8FBE\uFF09\u3002\u8FD9\u91CC\u6062\u590D\u5BBF\u4E3B\u9ED8\u8BA4\uFF0C\u4FDD\u8BC1\u4EFB\u4F55\u7B2C\u4E09\u65B9\u8BBE\u7F6E\u8282\u7684\u5185\u5BB9\u81F3\u5C11\u53EF\u8FBE\u3002 */
|
|
739
821
|
div[class*="VOzbGW_options"] {
|
|
740
822
|
flex: 1 1 auto !important;
|
|
741
823
|
width: 100% !important;
|
|
742
824
|
max-width: 100% !important;
|
|
825
|
+
min-width: 0 !important;
|
|
743
826
|
box-sizing: border-box !important;
|
|
744
827
|
padding: 0 14px 20px !important;
|
|
745
|
-
overflow-x:
|
|
828
|
+
overflow-x: auto !important;
|
|
746
829
|
overflow-y: auto !important;
|
|
747
830
|
-webkit-overflow-scrolling: touch !important;
|
|
831
|
+
overscroll-behavior: contain !important;
|
|
748
832
|
}
|
|
749
833
|
|
|
750
834
|
/* \u8BBE\u7F6E\u4E2D\u5FC3\u9009\u9879\u884C\u624B\u673A\u81EA\u9002\u5E94\uFF08\u5782\u76F4\u6D41\u5F0F\uFF0C\u9632\u6587\u5B57\u5355\u5B57\u6298\u884C\uFF09 */
|
|
@@ -754,12 +838,15 @@ var MOBILE_STYLES_CSS = `
|
|
|
754
838
|
align-items: stretch !important;
|
|
755
839
|
gap: 8px !important;
|
|
756
840
|
width: 100% !important;
|
|
841
|
+
/* min-width:0\uFF1A\u8BA9 flex \u5B50\u9879\u53EF\u4EE5\u771F\u6B63\u6536\u7F29\uFF0C\u800C\u4E0D\u662F\u628A\u7236\u5BB9\u5668\u9876\u5BBD\u540E\u6EA2\u51FA */
|
|
842
|
+
min-width: 0 !important;
|
|
757
843
|
padding: 12px 0 !important;
|
|
758
844
|
box-sizing: border-box !important;
|
|
759
845
|
}
|
|
760
846
|
div[class*="VOzbGW_options"] div[class*="_rowText"] {
|
|
761
847
|
width: 100% !important;
|
|
762
848
|
max-width: 100% !important;
|
|
849
|
+
min-width: 0 !important;
|
|
763
850
|
}
|
|
764
851
|
div[class*="VOzbGW_options"] button[class*="_selector"],
|
|
765
852
|
div[class*="VOzbGW_options"] select,
|
|
@@ -827,6 +914,209 @@ var MOBILE_STYLES_CSS = `
|
|
|
827
914
|
}
|
|
828
915
|
}
|
|
829
916
|
|
|
917
|
+
/* 6.2 <=480px \u624B\u673A\u7AD6\u5C4F\uFF1A\u8BBE\u7F6E\u4E2D\u5FC3\u6539\u4E3A\u300C\u4E24\u7EA7\u94BB\u53D6\u300D\u3002
|
|
918
|
+
\u4FA7\u8FB9\u8F68\u9053\u5728 375px \u5C4F\u4E0A\u8981\u5403\u6389 88px\uFF0821% \u5BBD\u5EA6\uFF09\uFF0C\u5185\u5BB9\u5217\u53EA\u5269 277px\uFF0C\u7B2C\u4E09\u65B9\u8BBE\u7F6E\u8282
|
|
919
|
+
\uFF08Plugin Market \u7684 Tab \u6761\u9700 470px\uFF09\u5FC5\u7136\u6EA2\u51FA\u3002\u6539\u4E3A\uFF1A\u5206\u7C7B\u5217\u8868\u9875 \u2194 \u5185\u5BB9\u8BE6\u60C5\u9875\uFF0C
|
|
920
|
+
\u5185\u5BB9\u72EC\u5360\u6574\u5BBD\uFF08375px \u4E0B\u7531 277px \u63D0\u5347\u5230 355px\uFF0C+28%\uFF09\uFF0C\u6807\u7B7E\u56DE\u5230 15px\u3001\u89E6\u63A7\u884C 52px\u3002
|
|
921
|
+
|
|
922
|
+
\u3010\u6574\u5757\u7531 html[data-dshbr-drilldown="ready"] \u95E8\u63A7\u3011
|
|
923
|
+
\u672C\u5757\u9ED8\u8BA4\u628A\u5185\u5BB9\u533A\uFF08options\uFF09\u9690\u85CF\u3001\u53EA\u663E\u793A\u5206\u7C7B\u5217\u8868\uFF1B\u80FD\u4E0D\u80FD\u4ECE\u5217\u8868\u8D70\u8FDB\u5185\u5BB9\uFF0C\u5B8C\u5168
|
|
924
|
+
\u53D6\u51B3\u4E8E client/index.js \u7684\u70B9\u51FB\u76D1\u542C\u5668\u3002\u6240\u4EE5\u672C\u5757\u4E0D\u80FD\u4EE5\u300CJS \u4E00\u5B9A\u5728\u300D\u4E3A\u65E0\u6761\u4EF6\u524D\u63D0\uFF1A
|
|
925
|
+
\u5F00\u5173\u6CA1\u6253\u5F00\u65F6\u672C\u5757\u6574\u4F53\u60F0\u6027\uFF0C<=480px \u9000\u56DE 767 \u5757\u7684 88px \u56FE\u6807\u8F68\u9053\uFF08\u7A84\uFF0C\u4F46\u5206\u7C7B\u4E0E
|
|
926
|
+
\u5185\u5BB9\u90FD\u5B8C\u6574\u53EF\u8FBE\uFF09\uFF0C\u4E0D\u4F1A\u51FA\u73B0\u300C\u5185\u5BB9\u88AB\u85CF\u4E86\u3001\u53C8\u6CA1\u4EBA\u80FD\u628A\u7528\u6237\u5E26\u8FDB\u53BB\u300D\u7684\u6B7B\u5217\u8868\u3002
|
|
927
|
+
|
|
928
|
+
\u5F00\u5173\u4F55\u65F6\u6253\u5F00\uFF08client/index.js \u7684 setupSettingsDrilldown\uFF09\uFF1A
|
|
929
|
+
- \u8BE5\u51FD\u6570\u662F apply() \u7684\u7B2C\u4E00\u6761\u8BED\u53E5\uFF0C\u65E9\u4E8E\u6CE8\u5165\u672C CSS \u7684 injectMobileStyles()\uFF1B
|
|
930
|
+
- \u53EA\u6709 document.addEventListener('click', \u2026) \u6210\u529F\u8FD4\u56DE\u540E\u624D\u6253\u4E0A ready\u3002
|
|
931
|
+
\u56E0\u6B64\u300C\u672C CSS \u5DF2\u751F\u6548\u3001\u800C\u70B9\u51FB\u76D1\u542C\u5668\u6CA1\u88C5\u4E0A\u300D\u5728\u53EF\u6267\u884C\u8DEF\u5F84\u4E0A\u4E0D\u53EF\u8FBE\uFF1B\u5373\u4F7F\u5C06\u6765\u6709\u4EBA\u628A
|
|
932
|
+
\u8BE5\u8C03\u7528\u632A\u5230\u4F1A\u629B\u5F02\u5E38\u7684\u521D\u59CB\u5316\u4E4B\u540E\uFF0C\u5F00\u5173\u672A\u5F00\u4E5F\u53EA\u662F\u9000\u56DE\u8F68\u9053\u5E03\u5C40\u3002
|
|
933
|
+
|
|
934
|
+
\u660E\u786E\u672A\u8986\u76D6\uFF1A\u65E0\u6CD5\u5728\u811A\u672C\u5185\u63A2\u6D4B\u300CaddEventListener \u88AB\u73AF\u5883\u9759\u9ED8\u4E22\u5F03\u300D\u8FD9\u7C7B\u5F02\u5E38 \u2014\u2014
|
|
935
|
+
\u8981\u505A\u8FD9\u79CD\u81EA\u68C0\u5C31\u5FC5\u987B\u5728 document \u4E0A\u6D3E\u53D1\u5408\u6210 click\uFF0C\u800C\u5BBF\u4E3B\u4E0E\u7B2C\u4E09\u65B9\u63D2\u4EF6\u5408\u8BA1\u6709 6 \u4E2A
|
|
936
|
+
document \u7EA7 click \u76D1\u542C\uFF08\u53E6\u6709\u591A\u7EC4 mousedown/pointerdown\uFF09\u4F1A\u88AB\u8BEF\u89E6\u53D1\uFF0C\u5F97\u4E0D\u507F\u5931\u3002
|
|
937
|
+
\u63D2\u4EF6 JS \u5B8C\u5168\u4E0D\u6267\u884C\u65F6\u672C CSS \u4E5F\u4E0D\u4F1A\u6CE8\u5165\uFF0C\u540C\u6837\u4E0D\u4F1A\u85CF\u5185\u5BB9\u3002
|
|
938
|
+
|
|
939
|
+
\u5F00\u5173\u653E\u5728 <html> \u800C\u975E panel\uFF1A\u76D1\u542C\u5668\u5FC5\u987B\u5728\u5F39\u7A97\u51FA\u73B0\u4E4B\u524D\u5C31\u88C5\u597D\uFF0C\u90A3\u65F6 panel \u8FD8\u4E0D\u5B58\u5728\u3002
|
|
940
|
+
|
|
941
|
+
panel \u4E0A\u7684 data-dshbr-settings-view \u53EA\u8868\u8FBE\u300C\u5217\u8868\u9875 / \u8BE6\u60C5\u9875\u300D\uFF1A
|
|
942
|
+
- \u65E0\u8BE5\u5C5E\u6027\uFF08\u542B\u5F00\u5173\u521A\u6253\u5F00\u7684\u9996\u5E27\uFF09\u2192 \u5206\u7C7B\u5217\u8868\u9875
|
|
943
|
+
- "detail" \u2192 \u5185\u5BB9\u8BE6\u60C5\u9875 */
|
|
944
|
+
@media (max-width: 480px) {
|
|
945
|
+
/* \u9762\u677F\u7531 767 \u5757\u7684\u6A2A\u5411\u8F68\u9053\u5E03\u5C40\uFF08row\uFF09\u6539\u4E3A\u7EB5\u5411\uFF1A\u5217\u8868\u9875/\u8BE6\u60C5\u9875\u90FD\u662F\u4E0A\u4E0B\u7ED3\u6784\u3002
|
|
946
|
+
\u6F0F\u6389\u8FD9\u4E00\u6761\u4F1A\u8BA9 nav \u4E0E content \u5E76\u6392\u62A2\u5BBD\u5EA6\uFF0C\u5206\u7C7B\u5217\u8868\u88AB\u538B\u6210 0 \u5BBD\uFF08\u5B9E\u6D4B options
|
|
947
|
+
\u53EA\u5269 24px\uFF09\uFF0C\u662F\u672C\u65B9\u6848\u6700\u5BB9\u6613\u6F0F\u7684\u5173\u952E\u4E00\u6B65\u3002 */
|
|
948
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_panel"] {
|
|
949
|
+
flex-direction: column !important;
|
|
950
|
+
/* \u2715 \u8981\u7EDD\u5BF9\u5B9A\u4F4D\u5230\u9762\u677F\u53F3\u4E0A\u89D2\uFF0C\u5FC5\u987B\u6709\u5B9A\u4F4D\u7956\u5148 */
|
|
951
|
+
position: relative !important;
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
/* \u5173\u95ED\u6309\u94AE\u9489\u5728\u9762\u677F\u53F3\u4E0A\u89D2\uFF0C\u4E0E\u6807\u9898/\u8FD4\u56DE\u884C\u540C\u5904\u7B2C\u4E00\u884C \u2014\u2014 \u8FD9\u662F\u5F39\u7A97\u7684\u5E38\u89C4\u7EA6\u5B9A\u3002
|
|
955
|
+
\u4E4B\u6240\u4EE5\u8981\u7EDD\u5BF9\u5B9A\u4F4D\uFF1A\u5BBF\u4E3B DOM \u91CC \u2715 \u5C5E\u4E8E content>header\uFF0C\u800C\u6807\u9898\u5C5E\u4E8E nav\uFF0C\u4E8C\u8005\u662F
|
|
956
|
+
\u4E24\u68F5\u5B50\u6811\u3002\u6B64\u524D\u9760 order:-1 \u628A content \u63D0\u5230 nav \u4E4B\u524D\uFF0C\u7ED3\u679C \u2715 \u843D\u5728\u6807\u9898\u4E0A\u9762\u4E00\u884C\uFF1B
|
|
957
|
+
\u8BE6\u60C5\u9875\u53CD\u8FC7\u6765\uFF0C\u2715 \u843D\u5230\u8FD4\u56DE\u884C\u4E0B\u9762\u4E00\u884C\u3002\u7EDD\u5BF9\u5B9A\u4F4D\u662F\u552F\u4E00\u80FD\u5728\u4E0D\u6CE8\u5165 DOM \u7684\u524D\u63D0\u4E0B
|
|
958
|
+
\u628A\u4E24\u8005\u62C9\u56DE\u540C\u4E00\u884C\u7684\u529E\u6CD5\u3002 */
|
|
959
|
+
html[data-dshbr-drilldown="ready"] button[class*="VOzbGW_close"] {
|
|
960
|
+
position: absolute !important;
|
|
961
|
+
top: 9px !important;
|
|
962
|
+
right: 9px !important;
|
|
963
|
+
width: 32px !important;
|
|
964
|
+
height: 32px !important;
|
|
965
|
+
z-index: 5 !important;
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
/* \u5206\u7C7B\u5217\u8868\u9875\uFF1A\u5185\u5BB9\u533A\u53EA\u5269 header\uFF08\u5BBF\u4E3B/\u7B2C\u4E09\u65B9 action \u69FD\uFF09\uFF0C\u4E0B\u6C89\u4E3A\u5E95\u90E8\u52A8\u4F5C\u680F\u3002
|
|
969
|
+
\u4E0D\u518D\u7528 order:-1 \u2014\u2014 \u6807\u9898\u56DE\u5230 DOM \u987A\u5E8F\u7684\u7B2C\u4E00\u884C\uFF0C\u987A\u5E26\u8BA9\u7126\u70B9\u987A\u5E8F\u4E0E\u89C6\u89C9\u987A\u5E8F\u4E00\u81F4\u3002 */
|
|
970
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_panel"]:not([data-dshbr-settings-view="detail"]) > div[class*="VOzbGW_content"] {
|
|
971
|
+
flex: 0 0 auto !important;
|
|
972
|
+
width: 100% !important;
|
|
973
|
+
max-width: 100% !important;
|
|
974
|
+
border-top: 1px solid var(--dsw-alias-border-l2, #e5e7eb) !important;
|
|
975
|
+
}
|
|
976
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_panel"]:not([data-dshbr-settings-view="detail"]) div[class*="VOzbGW_options"] {
|
|
977
|
+
display: none !important;
|
|
978
|
+
}
|
|
979
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_panel"]:not([data-dshbr-settings-view="detail"]) > nav[class*="VOzbGW_nav"] {
|
|
980
|
+
flex: 1 1 auto !important;
|
|
981
|
+
min-height: 0 !important;
|
|
982
|
+
overflow-y: auto !important;
|
|
983
|
+
overscroll-behavior: contain !important;
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
/* \u8BE6\u60C5\u9875\uFF1A\u6298\u53E0\u5BFC\u822A\u4E3A\u300C\u2039 \u6807\u9898\u300D\u4E00\u884C\uFF0C\u5145\u5F53\u8FD4\u56DE\u5165\u53E3 */
|
|
987
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_panel"][data-dshbr-settings-view="detail"] div[class*="VOzbGW_navList"] {
|
|
988
|
+
display: none !important;
|
|
989
|
+
}
|
|
990
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_panel"][data-dshbr-settings-view="detail"] > nav[class*="VOzbGW_nav"] {
|
|
991
|
+
flex: 0 0 auto !important;
|
|
992
|
+
overflow: visible !important;
|
|
993
|
+
cursor: pointer !important;
|
|
994
|
+
}
|
|
995
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_panel"][data-dshbr-settings-view="detail"] > nav[class*="VOzbGW_nav"]:active {
|
|
996
|
+
background: var(--dsw-alias-interactive-bg-hover, rgba(0, 0, 0, 0.05)) !important;
|
|
997
|
+
}
|
|
998
|
+
/* \u8BE6\u60C5\u9875\u4E5F\u628A\u52A8\u4F5C\u680F\u6C89\u5230\u5E95\u90E8\uFF0C\u4E0E\u5217\u8868\u9875\u4FDD\u6301\u4E00\u81F4\u3002
|
|
999
|
+
\u7528 flex order \u4EA4\u6362 header/options \u7684\u89C6\u89C9\u4F4D\u7F6E\uFF1Aoptions \u4ECD\u662F\u90A3\u4E2A overflow:auto
|
|
1000
|
+
\u7684\u6EDA\u52A8\u5BB9\u5668\uFF0C\u6EDA\u52A8\u8BED\u4E49\u4E0D\u53D8\uFF08\u4E0D\u7528 column-reverse\uFF0C\u907F\u514D\u6EDA\u52A8\u539F\u70B9\u7FFB\u8F6C\uFF09\u3002 */
|
|
1001
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_panel"][data-dshbr-settings-view="detail"] div[class*="VOzbGW_header"] {
|
|
1002
|
+
order: 2 !important;
|
|
1003
|
+
border-top: 1px solid var(--dsw-alias-border-l2, #e5e7eb) !important;
|
|
1004
|
+
}
|
|
1005
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_panel"][data-dshbr-settings-view="detail"] div[class*="VOzbGW_options"] {
|
|
1006
|
+
order: 1 !important;
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
/* \u8F68\u9053\u5728\u7A84\u5C4F\u6539\u6210\u6574\u5BBD\u5217\u8868\u5BB9\u5668 */
|
|
1010
|
+
html[data-dshbr-drilldown="ready"] nav[class*="VOzbGW_nav"] {
|
|
1011
|
+
width: 100% !important;
|
|
1012
|
+
min-width: 0 !important;
|
|
1013
|
+
max-width: 100% !important;
|
|
1014
|
+
padding: 10px 12px 12px !important;
|
|
1015
|
+
gap: 4px !important;
|
|
1016
|
+
border-right: none !important;
|
|
1017
|
+
border-bottom: none !important;
|
|
1018
|
+
}
|
|
1019
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_navTitle"] {
|
|
1020
|
+
font-size: 17px !important;
|
|
1021
|
+
line-height: 1.3 !important;
|
|
1022
|
+
/* \u4E0D\u53EF\u6298\u884C\u7684\u8D85\u957F token\uFF08\u65E0\u7A7A\u683C\u957F\u4E32\uFF09\u4F1A\u6574\u5757\u6EA2\u51FA\u3001\u628A\u6587\u5B57\u9876\u5230 \u2715 \u4E0B\u9762\u3002
|
|
1023
|
+
\u72EC\u7ACB\u9A8C\u6536\u5B9E\u6D4B 81 \u5B57\u7B26\u65E0\u7A7A\u683C\u6807\u9898\u65F6\u6587\u5B57\u53F3\u7AEF 823px\u3001\u4E0E \u2715 \u4EA4\u53E0 707px\xB2\u3002
|
|
1024
|
+
overflow-wrap: anywhere \u8BA9\u8FD9\u79CD token \u4E5F\u80FD\u65AD\u884C \u2014\u2014 \u7559\u767D\u53EA\u7BA1\u76D2\u5185\uFF0C\u7BA1\u4E0D\u4F4F\u6EA2\u51FA\u3002 */
|
|
1025
|
+
overflow-wrap: anywhere !important;
|
|
1026
|
+
/* \u53F3\u4FA7 52px \u7ED9\u7EDD\u5BF9\u5B9A\u4F4D\u7684 \u2715 \u8BA9\u4F4D\uFF08\u7D27\u90BB\u89C4\u5219\u91CC\u7684\u58F0\u660E\u4F1A\u88AB\u540E\u7F6E\u540C\u540D\u89C4\u5219\u8986\u76D6\uFF0C
|
|
1027
|
+
\u6240\u4EE5\u7559\u767D\u5FC5\u987B\u5199\u5728\u8FD9\u4E00\u6761\u4E0A\uFF0C\u4E0D\u80FD\u53EA\u5199\u5728\u524D\u9762\u90A3\u6761\uFF09 */
|
|
1028
|
+
padding: 0 52px 4px 4px !important;
|
|
1029
|
+
}
|
|
1030
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_navList"] {
|
|
1031
|
+
flex-direction: column !important;
|
|
1032
|
+
gap: 2px !important;
|
|
1033
|
+
width: 100% !important;
|
|
1034
|
+
min-width: 0 !important;
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
/* \u5217\u8868\u884C\uFF1A\u56FE\u6807\u5DE6\u3001\u6587\u5B57\u53F3\u3001\u884C\u5C3E \u203A \u6307\u793A */
|
|
1038
|
+
html[data-dshbr-drilldown="ready"] nav[class*="VOzbGW_nav"] button[class*="VOzbGW_navCell"],
|
|
1039
|
+
html[data-dshbr-drilldown="ready"] button[class*="VOzbGW_navCell"] {
|
|
1040
|
+
flex-direction: row !important;
|
|
1041
|
+
justify-content: flex-start !important;
|
|
1042
|
+
align-items: center !important;
|
|
1043
|
+
text-align: left !important;
|
|
1044
|
+
width: 100% !important;
|
|
1045
|
+
min-height: 52px !important;
|
|
1046
|
+
padding: 12px 14px !important;
|
|
1047
|
+
gap: 12px !important;
|
|
1048
|
+
border-radius: 12px !important;
|
|
1049
|
+
}
|
|
1050
|
+
html[data-dshbr-drilldown="ready"] nav[class*="VOzbGW_nav"] button[class*="VOzbGW_navCell"]::after {
|
|
1051
|
+
content: '' !important;
|
|
1052
|
+
width: 7px !important;
|
|
1053
|
+
height: 7px !important;
|
|
1054
|
+
margin-left: auto !important;
|
|
1055
|
+
flex: none !important;
|
|
1056
|
+
border-right: 1.7px solid var(--dsw-alias-label-tertiary, #9ca3af) !important;
|
|
1057
|
+
border-bottom: 1.7px solid var(--dsw-alias-label-tertiary, #9ca3af) !important;
|
|
1058
|
+
transform: rotate(-45deg) !important;
|
|
1059
|
+
}
|
|
1060
|
+
html[data-dshbr-drilldown="ready"] nav[class*="VOzbGW_nav"] button[class*="VOzbGW_navCell"] svg {
|
|
1061
|
+
width: 20px !important;
|
|
1062
|
+
height: 20px !important;
|
|
1063
|
+
}
|
|
1064
|
+
html[data-dshbr-drilldown="ready"] span[class*="VOzbGW_navLabel"] {
|
|
1065
|
+
font-size: 15px !important;
|
|
1066
|
+
line-height: 1.35 !important;
|
|
1067
|
+
white-space: normal !important;
|
|
1068
|
+
word-break: normal !important;
|
|
1069
|
+
text-align: left !important;
|
|
1070
|
+
flex: 0 1 auto !important;
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
/* \u8BE6\u60C5\u9875\u8FD4\u56DE\u884C\uFF1A\u2039 \u7BAD\u5934 + \u6807\u9898 */
|
|
1074
|
+
/* \u8BE6\u60C5\u9875\u8FD4\u56DE\u884C\uFF1A\u2039 \u7BAD\u5934 + \u6807\u9898\u3002\u53F3\u4FA7\u540C\u6837\u8981\u7559 52px \u7ED9 \u2715 \u2014\u2014
|
|
1075
|
+
\u672C\u6761\u6BD4\u57FA\u7C7B\u591A\u4E00\u4E2A\u5C5E\u6027\u9009\u62E9\u5668\u3001\u7279\u5F02\u6027\u66F4\u9AD8\uFF0C\u4F1A**\u6574\u4F53\u8986\u76D6**\u57FA\u7C7B\u7684 padding\uFF0C
|
|
1076
|
+
\u6240\u4EE5\u7559\u767D\u5FC5\u987B\u5728\u8FD9\u91CC\u518D\u5199\u4E00\u904D\uFF08\u6F0F\u5199\u65F6\u57FA\u7C7B\u7684 52px \u4F1A\u88AB\u8FD9\u6761\u7684 4px \u9876\u6389\uFF0C
|
|
1077
|
+
\u957F\u6807\u9898\u4F1A\u94BB\u5230 \u2715 \u4E0B\u9762\uFF1B\u72EC\u7ACB\u9A8C\u6536\u5B9E\u6D4B\u6CE8\u5165 61 \u5B57\u7B26\u6807\u9898\u540E\u4EA4\u53E0 608/707 px\xB2\uFF09\u3002 */
|
|
1078
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_panel"][data-dshbr-settings-view="detail"] div[class*="VOzbGW_navTitle"] {
|
|
1079
|
+
display: flex !important;
|
|
1080
|
+
align-items: center !important;
|
|
1081
|
+
overflow-wrap: anywhere !important;
|
|
1082
|
+
padding: 2px 52px 2px 4px !important;
|
|
1083
|
+
}
|
|
1084
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_panel"][data-dshbr-settings-view="detail"] div[class*="VOzbGW_navTitle"]::before {
|
|
1085
|
+
content: '' !important;
|
|
1086
|
+
width: 8px !important;
|
|
1087
|
+
height: 8px !important;
|
|
1088
|
+
margin: 0 10px 0 6px !important;
|
|
1089
|
+
flex: none !important;
|
|
1090
|
+
border-left: 2px solid var(--dsw-alias-label-primary, #111827) !important;
|
|
1091
|
+
border-bottom: 2px solid var(--dsw-alias-label-primary, #111827) !important;
|
|
1092
|
+
transform: rotate(45deg) !important;
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
/* content/header \u5FC5\u987B\u662F static \u2014\u2014 \u2715 \u662F\u7EDD\u5BF9\u5B9A\u4F4D\u7684\uFF0C\u5B83\u7684\u5305\u542B\u5757\u53D6\u51B3\u4E8E\u6700\u8FD1\u7684**\u5B9A\u4F4D\u7956\u5148**\u3002
|
|
1096
|
+
\u672C\u6765\u8FD9\u4E2A\u7956\u5148\u5C31\u662F panel\uFF08\u5BBF\u4E3B\u81EA\u5E26 position:relative\uFF09\uFF1B\u4F46\u4E00\u65E6 content \u6216 header \u88AB
|
|
1097
|
+
\u4EFB\u4F55\u6765\u6E90\uFF08\u672C\u5757\u3001\u5BBF\u4E3B\u5176\u5B83\u89C4\u5219\u3001\u7B2C\u4E09\u65B9\u63D2\u4EF6\uFF09\u8BBE\u6210 relative/absolute\uFF0C\u5305\u542B\u5757\u5C31\u4F1A\u4E0B\u79FB\uFF0C
|
|
1098
|
+
\u2715 \u4F1A\u4ECE\u9762\u677F\u53F3\u4E0A\u89D2\u8DD1\u5230\u5185\u5BB9\u533A\u91CC\u53BB\u3002\u72EC\u7ACB\u9A8C\u6536\u5B9E\u6D4B\uFF1A\u7ED9 content \u52A0 position:relative \u540E
|
|
1099
|
+
\u2715 \u7684 relTop \u7531 9 \u53D8\u6210 579\u3001\u5E76\u4E0E\u5E95\u90E8\u52A8\u4F5C\u680F\u91CD\u53E0 837 px\xB2\u3002 */
|
|
1100
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_content"] {
|
|
1101
|
+
position: static !important;
|
|
1102
|
+
width: 100% !important;
|
|
1103
|
+
max-width: 100% !important;
|
|
1104
|
+
flex: 1 1 auto !important;
|
|
1105
|
+
}
|
|
1106
|
+
/* header \u4E0D\u518D\u5F53\u9876\u680F\u7528\uFF1A\u5B83\u73B0\u5728\u53EA\u627F\u8F7D action \u69FD\uFF0C\u9AD8\u5EA6\u968F\u5185\u5BB9\uFF08\u53EF\u80FD\u662F\u5BBF\u4E3B\u7684\u4E00\u4E2A
|
|
1107
|
+
\u6309\u94AE\uFF0C\u4E5F\u53EF\u80FD\u662F\u591A\u4E2A\u63D2\u4EF6\u6CE8\u5165\u7684\u591A\u884C\u6309\u94AE\uFF09\uFF0C\u9760 flex \u81EA\u7136\u6491\u5F00\uFF0C\u4E0D\u8BBE\u56FA\u5B9A\u9AD8\u5EA6\u3002 */
|
|
1108
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_header"] {
|
|
1109
|
+
position: static !important;
|
|
1110
|
+
height: auto !important;
|
|
1111
|
+
padding: 8px 10px !important;
|
|
1112
|
+
align-items: center !important;
|
|
1113
|
+
justify-content: flex-end !important;
|
|
1114
|
+
}
|
|
1115
|
+
html[data-dshbr-drilldown="ready"] div[class*="VOzbGW_options"] {
|
|
1116
|
+
padding: 0 12px 16px !important;
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
|
|
830
1120
|
/* \u8FDC\u7A0B\u5DE5\u4F5C\u533A\u9009\u62E9\u5F39\u7A97\u79FB\u52A8\u7AEF/\u684C\u9762\u7AEF\u81EA\u9002\u5E94\u6837\u5F0F */
|
|
831
1121
|
#dsh-remote-workspace-modal {
|
|
832
1122
|
position: fixed !important;
|
|
@@ -1067,6 +1357,21 @@ async function unlockAdmin(rpcCall, password) {
|
|
|
1067
1357
|
}
|
|
1068
1358
|
}
|
|
1069
1359
|
|
|
1360
|
+
// client/picker-yield.js
|
|
1361
|
+
var OFFICIAL_WORKSPACE_SEAT = "uiWorkspace";
|
|
1362
|
+
function hasOfficialDirectoryPicker(ctx) {
|
|
1363
|
+
try {
|
|
1364
|
+
if (typeof ctx?.get !== "function") return false;
|
|
1365
|
+
const seat = ctx.get(OFFICIAL_WORKSPACE_SEAT);
|
|
1366
|
+
return typeof seat?.pickDirectory === "function";
|
|
1367
|
+
} catch {
|
|
1368
|
+
return false;
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
function shouldYieldToOfficialPicker(facts) {
|
|
1372
|
+
return Boolean(facts?.local) && Boolean(facts?.officialPicker);
|
|
1373
|
+
}
|
|
1374
|
+
|
|
1070
1375
|
// lib/bridge-rpc-constants.js
|
|
1071
1376
|
var BRIDGE_RPC_CHANNEL = "/dsh-bridge";
|
|
1072
1377
|
var BRIDGE_ENDPOINTS = {
|
|
@@ -1217,6 +1522,12 @@ if (typeof window !== "undefined") {
|
|
|
1217
1522
|
var RESOURCE_URL_COMPAT = installResourceUrlCompat();
|
|
1218
1523
|
if (typeof window !== "undefined") window.__dshResourceUrlCompat = RESOURCE_URL_COMPAT;
|
|
1219
1524
|
var MOBILE_MAX_WIDTH = 767;
|
|
1525
|
+
var SETTINGS_DRILLDOWN_MAX_WIDTH = 480;
|
|
1526
|
+
var DRILLDOWN_GATE_ATTR = "data-dshbr-drilldown";
|
|
1527
|
+
var DRILLDOWN_GATE_READY = "ready";
|
|
1528
|
+
var DRILLDOWN_GATE_FLAG = "dshBrDrilldownGate";
|
|
1529
|
+
var SETTINGS_VIEW_ATTR = "data-dshbr-settings-view";
|
|
1530
|
+
var SETTINGS_VIEW_DETAIL = "detail";
|
|
1220
1531
|
function isLocalEnvironment() {
|
|
1221
1532
|
if (typeof window === "undefined") return true;
|
|
1222
1533
|
const host = window.location.hostname || "";
|
|
@@ -4080,9 +4391,13 @@ function VersionBanner({ rpcCall }) {
|
|
|
4080
4391
|
gap: 8
|
|
4081
4392
|
}
|
|
4082
4393
|
},
|
|
4394
|
+
// 左组:版本徽标 + DSH 版本 + 检查更新。
|
|
4395
|
+
// flexWrap + minWidth:0 是必需的:此前只写 display:flex,左组既不能收缩也不能换行,
|
|
4396
|
+
// 会把整行顶到 305px;手机设置页内容列只有 277px,溢出部分被
|
|
4397
|
+
// overflow-x:hidden 静默裁掉(「检查更新」按钮被切一半)。
|
|
4083
4398
|
React.createElement(
|
|
4084
4399
|
"div",
|
|
4085
|
-
{ style: { display: "flex", alignItems: "center", gap: 8 } },
|
|
4400
|
+
{ style: { display: "flex", alignItems: "center", gap: 8, flexWrap: "wrap", minWidth: 0 } },
|
|
4086
4401
|
// 版本状态徽标
|
|
4087
4402
|
React.createElement(
|
|
4088
4403
|
"span",
|
|
@@ -4138,7 +4453,11 @@ function VersionBanner({ rpcCall }) {
|
|
|
4138
4453
|
padding: "0 8px",
|
|
4139
4454
|
fontSize: 11,
|
|
4140
4455
|
opacity: loading ? 0.5 : 1,
|
|
4141
|
-
gap: 4
|
|
4456
|
+
gap: 4,
|
|
4457
|
+
// 按钮是 inline-flex,文字会成为匿名 flex 项;被挤窄时会把「检查更新」
|
|
4458
|
+
// 折成两行。nowrap + flexShrink:0 保证它整体换行(由父级 flexWrap 负责)。
|
|
4459
|
+
whiteSpace: "nowrap",
|
|
4460
|
+
flexShrink: 0
|
|
4142
4461
|
},
|
|
4143
4462
|
onClick: check,
|
|
4144
4463
|
disabled: loading || upgrading || restarting,
|
|
@@ -4430,9 +4749,49 @@ var TABS = [
|
|
|
4430
4749
|
{ id: "ops", label: "\u8FD0\u7EF4\u76D1\u63A7", icon: Icons.ops }
|
|
4431
4750
|
];
|
|
4432
4751
|
function TabBar({ active, onChange, dots }) {
|
|
4752
|
+
const scrollRef = React.useRef(null);
|
|
4753
|
+
const [edges, setEdges] = React.useState({ left: false, right: false });
|
|
4754
|
+
React.useEffect(() => {
|
|
4755
|
+
const el = scrollRef.current;
|
|
4756
|
+
if (!el) return void 0;
|
|
4757
|
+
const update = () => {
|
|
4758
|
+
const max = el.scrollWidth - el.clientWidth;
|
|
4759
|
+
const left = el.scrollLeft > 1;
|
|
4760
|
+
const right = max > 1 && el.scrollLeft < max - 1;
|
|
4761
|
+
setEdges((prev) => prev.left === left && prev.right === right ? prev : { left, right });
|
|
4762
|
+
};
|
|
4763
|
+
update();
|
|
4764
|
+
el.addEventListener("scroll", update, { passive: true });
|
|
4765
|
+
let observer = null;
|
|
4766
|
+
if (typeof ResizeObserver === "function") {
|
|
4767
|
+
observer = new ResizeObserver(update);
|
|
4768
|
+
observer.observe(el);
|
|
4769
|
+
}
|
|
4770
|
+
return () => {
|
|
4771
|
+
el.removeEventListener("scroll", update);
|
|
4772
|
+
if (observer) observer.disconnect();
|
|
4773
|
+
};
|
|
4774
|
+
}, []);
|
|
4775
|
+
React.useEffect(() => {
|
|
4776
|
+
const el = scrollRef.current;
|
|
4777
|
+
if (!el) return;
|
|
4778
|
+
const target = el.querySelector('[data-dsh-tab-active="true"]');
|
|
4779
|
+
if (!target) return;
|
|
4780
|
+
const elRect = el.getBoundingClientRect();
|
|
4781
|
+
const tabRect = target.getBoundingClientRect();
|
|
4782
|
+
if (tabRect.left < elRect.left) el.scrollLeft -= elRect.left - tabRect.left + 8;
|
|
4783
|
+
else if (tabRect.right > elRect.right) el.scrollLeft += tabRect.right - elRect.right + 8;
|
|
4784
|
+
}, [active]);
|
|
4785
|
+
const maskStops = [];
|
|
4786
|
+
if (edges.left) maskStops.push("transparent 0px", "#000 20px");
|
|
4787
|
+
else maskStops.push("#000 0px");
|
|
4788
|
+
if (edges.right) maskStops.push("#000 calc(100% - 20px)", "transparent 100%");
|
|
4789
|
+
else maskStops.push("#000 100%");
|
|
4790
|
+
const maskImage = `linear-gradient(to right, ${maskStops.join(", ")})`;
|
|
4433
4791
|
return React.createElement(
|
|
4434
4792
|
"div",
|
|
4435
4793
|
{
|
|
4794
|
+
ref: scrollRef,
|
|
4436
4795
|
className: "dsh-tabbar-container",
|
|
4437
4796
|
style: {
|
|
4438
4797
|
display: "flex",
|
|
@@ -4444,7 +4803,9 @@ function TabBar({ active, onChange, dots }) {
|
|
|
4444
4803
|
maxWidth: "100%",
|
|
4445
4804
|
flexWrap: "nowrap",
|
|
4446
4805
|
scrollbarWidth: "none",
|
|
4447
|
-
msOverflowStyle: "none"
|
|
4806
|
+
msOverflowStyle: "none",
|
|
4807
|
+
WebkitMaskImage: maskImage,
|
|
4808
|
+
maskImage
|
|
4448
4809
|
}
|
|
4449
4810
|
},
|
|
4450
4811
|
TABS.map(({ id, label, icon: TabIcon }) => {
|
|
@@ -4454,6 +4815,7 @@ function TabBar({ active, onChange, dots }) {
|
|
|
4454
4815
|
"button",
|
|
4455
4816
|
{
|
|
4456
4817
|
key: id,
|
|
4818
|
+
"data-dsh-tab-active": isActive ? "true" : void 0,
|
|
4457
4819
|
onClick: () => onChange(id),
|
|
4458
4820
|
style: {
|
|
4459
4821
|
font: "inherit",
|
|
@@ -5289,6 +5651,53 @@ function injectMobileStyles() {
|
|
|
5289
5651
|
style.textContent = MOBILE_STYLES_CSS;
|
|
5290
5652
|
document.head.appendChild(style);
|
|
5291
5653
|
}
|
|
5654
|
+
function setupSettingsDrilldown() {
|
|
5655
|
+
if (typeof document === "undefined" || typeof window === "undefined") return;
|
|
5656
|
+
const root = document.documentElement;
|
|
5657
|
+
if (root.dataset[DRILLDOWN_GATE_FLAG] === "1") return;
|
|
5658
|
+
root.dataset[DRILLDOWN_GATE_FLAG] = "1";
|
|
5659
|
+
if (typeof window.matchMedia !== "function") return;
|
|
5660
|
+
let narrowQuery;
|
|
5661
|
+
try {
|
|
5662
|
+
narrowQuery = window.matchMedia(`(max-width: ${SETTINGS_DRILLDOWN_MAX_WIDTH}px)`);
|
|
5663
|
+
} catch {
|
|
5664
|
+
return;
|
|
5665
|
+
}
|
|
5666
|
+
if (!narrowQuery) return;
|
|
5667
|
+
const isNarrow = () => narrowQuery.matches === true;
|
|
5668
|
+
const onDocumentClick = (event) => {
|
|
5669
|
+
if (!isNarrow()) return;
|
|
5670
|
+
const target = event.target;
|
|
5671
|
+
if (!target || typeof target.closest !== "function") return;
|
|
5672
|
+
const panel = target.closest('div[class*="VOzbGW_panel"]');
|
|
5673
|
+
if (!panel) return;
|
|
5674
|
+
const nav = panel.querySelector('nav[class*="VOzbGW_nav"]');
|
|
5675
|
+
if (!nav || !nav.contains(target)) return;
|
|
5676
|
+
if (target.closest('button[class*="VOzbGW_navCell"]')) {
|
|
5677
|
+
panel.setAttribute(SETTINGS_VIEW_ATTR, SETTINGS_VIEW_DETAIL);
|
|
5678
|
+
if (nav.scrollTop) nav.scrollTop = 0;
|
|
5679
|
+
return;
|
|
5680
|
+
}
|
|
5681
|
+
if (panel.getAttribute(SETTINGS_VIEW_ATTR) === SETTINGS_VIEW_DETAIL) {
|
|
5682
|
+
panel.removeAttribute(SETTINGS_VIEW_ATTR);
|
|
5683
|
+
}
|
|
5684
|
+
};
|
|
5685
|
+
const syncGate = () => {
|
|
5686
|
+
if (narrowQuery.matches === true) root.setAttribute(DRILLDOWN_GATE_ATTR, DRILLDOWN_GATE_READY);
|
|
5687
|
+
else root.removeAttribute(DRILLDOWN_GATE_ATTR);
|
|
5688
|
+
};
|
|
5689
|
+
try {
|
|
5690
|
+
document.addEventListener("click", onDocumentClick, false);
|
|
5691
|
+
} catch {
|
|
5692
|
+
return;
|
|
5693
|
+
}
|
|
5694
|
+
try {
|
|
5695
|
+
if (typeof narrowQuery.addEventListener === "function") narrowQuery.addEventListener("change", syncGate);
|
|
5696
|
+
else if (typeof narrowQuery.addListener === "function") narrowQuery.addListener(syncGate);
|
|
5697
|
+
} catch {
|
|
5698
|
+
}
|
|
5699
|
+
syncGate();
|
|
5700
|
+
}
|
|
5292
5701
|
function setupMobileExperience(rpcCall, ctx) {
|
|
5293
5702
|
if (typeof document === "undefined" || typeof window === "undefined") return;
|
|
5294
5703
|
injectMobileStyles();
|
|
@@ -5941,60 +6350,63 @@ function showRemoteWorkspaceDialog(rpcCall, onWorkspaceAdded, clientCtx, onPicke
|
|
|
5941
6350
|
async function switchToWorkspace(wsId, wsPath) {
|
|
5942
6351
|
if (isSubmitting) return;
|
|
5943
6352
|
isSubmitting = true;
|
|
5944
|
-
|
|
5945
|
-
|
|
5946
|
-
|
|
5947
|
-
|
|
5948
|
-
|
|
5949
|
-
|
|
5950
|
-
|
|
5951
|
-
|
|
5952
|
-
|
|
5953
|
-
let switched = false;
|
|
5954
|
-
if (clientCtx?.workspaces?.startSession && wsId) {
|
|
5955
|
-
try {
|
|
5956
|
-
clientCtx.workspaces.startSession(wsId);
|
|
5957
|
-
switched = true;
|
|
5958
|
-
} catch (e) {
|
|
5959
|
-
console.warn("[dsh-bridge] startSession failed:", e);
|
|
6353
|
+
try {
|
|
6354
|
+
statusMessage = `\u6B63\u5728\u5207\u6362\u5DE5\u4F5C\u533A\u2026`;
|
|
6355
|
+
isErrorMessage = false;
|
|
6356
|
+
render();
|
|
6357
|
+
if (typeof onPicked === "function" && wsPath) {
|
|
6358
|
+
try {
|
|
6359
|
+
onPicked(wsPath);
|
|
6360
|
+
} catch (e) {
|
|
6361
|
+
}
|
|
5960
6362
|
}
|
|
5961
|
-
|
|
5962
|
-
|
|
5963
|
-
|
|
5964
|
-
|
|
5965
|
-
|
|
5966
|
-
|
|
5967
|
-
|
|
5968
|
-
switched = true;
|
|
5969
|
-
}
|
|
6363
|
+
let switched = false;
|
|
6364
|
+
if (clientCtx?.workspaces?.startSession && wsId) {
|
|
6365
|
+
try {
|
|
6366
|
+
clientCtx.workspaces.startSession(wsId);
|
|
6367
|
+
switched = true;
|
|
6368
|
+
} catch (e) {
|
|
6369
|
+
console.warn("[dsh-bridge] startSession failed:", e);
|
|
5970
6370
|
}
|
|
5971
|
-
|
|
5972
|
-
|
|
5973
|
-
|
|
5974
|
-
if (
|
|
5975
|
-
|
|
5976
|
-
|
|
6371
|
+
}
|
|
6372
|
+
if (!switched && wsPath) {
|
|
6373
|
+
try {
|
|
6374
|
+
if (clientCtx?.workspaces?.create) {
|
|
6375
|
+
const ws = await clientCtx.workspaces.create({ path: wsPath });
|
|
6376
|
+
if (ws?.workspaceId && clientCtx?.workspaces?.startSession) {
|
|
6377
|
+
clientCtx.workspaces.startSession(ws.workspaceId);
|
|
5977
6378
|
switched = true;
|
|
5978
|
-
} catch (e) {
|
|
5979
6379
|
}
|
|
5980
6380
|
}
|
|
5981
|
-
if (!switched
|
|
5982
|
-
|
|
5983
|
-
|
|
5984
|
-
|
|
5985
|
-
|
|
6381
|
+
if (!switched) {
|
|
6382
|
+
const raw = await authRpc(BRIDGE_ENDPOINTS.addRemoteWorkspace, { path: wsPath });
|
|
6383
|
+
const res = raw?.value || raw;
|
|
6384
|
+
if (res?.workspaceId && clientCtx?.workspaces?.startSession) {
|
|
6385
|
+
try {
|
|
6386
|
+
clientCtx.workspaces.startSession(res.workspaceId);
|
|
6387
|
+
switched = true;
|
|
6388
|
+
} catch (e) {
|
|
6389
|
+
}
|
|
6390
|
+
}
|
|
6391
|
+
if (!switched && res?.sessionId && clientCtx?.sessions?.open) {
|
|
6392
|
+
try {
|
|
6393
|
+
clientCtx.sessions.open(res.sessionId);
|
|
6394
|
+
} catch (e) {
|
|
6395
|
+
}
|
|
5986
6396
|
}
|
|
5987
6397
|
}
|
|
6398
|
+
} catch (e) {
|
|
5988
6399
|
}
|
|
5989
|
-
} catch (e) {
|
|
5990
6400
|
}
|
|
6401
|
+
statusMessage = `\u2713 \u5DF2\u5207\u6362\u81F3\u5DE5\u4F5C\u533A\uFF01`;
|
|
6402
|
+
render();
|
|
6403
|
+
setTimeout(() => {
|
|
6404
|
+
closeModal();
|
|
6405
|
+
document.body.classList.remove("dsh-drawer-open");
|
|
6406
|
+
}, 400);
|
|
6407
|
+
} finally {
|
|
6408
|
+
isSubmitting = false;
|
|
5991
6409
|
}
|
|
5992
|
-
statusMessage = `\u2713 \u5DF2\u5207\u6362\u81F3\u5DE5\u4F5C\u533A\uFF01`;
|
|
5993
|
-
render();
|
|
5994
|
-
setTimeout(() => {
|
|
5995
|
-
closeModal();
|
|
5996
|
-
document.body.classList.remove("dsh-drawer-open");
|
|
5997
|
-
}, 400);
|
|
5998
6410
|
}
|
|
5999
6411
|
async function loadDirectory(targetPath) {
|
|
6000
6412
|
if (isSubmitting) return;
|
|
@@ -6089,7 +6501,6 @@ function showRemoteWorkspaceDialog(rpcCall, onWorkspaceAdded, clientCtx, onPicke
|
|
|
6089
6501
|
if (!switched && clientCtx?.sessions?.open && res.sessionId) {
|
|
6090
6502
|
try {
|
|
6091
6503
|
clientCtx.sessions.open(res.sessionId);
|
|
6092
|
-
switched = true;
|
|
6093
6504
|
} catch (e) {
|
|
6094
6505
|
console.warn("[dsh-bridge] sessions.open failed:", e);
|
|
6095
6506
|
}
|
|
@@ -6379,6 +6790,7 @@ function setupComposerCollapse() {
|
|
|
6379
6790
|
}
|
|
6380
6791
|
function apply(ctx) {
|
|
6381
6792
|
window.__dshClientCtx = ctx;
|
|
6793
|
+
setupSettingsDrilldown();
|
|
6382
6794
|
const rpcCall = (endpoint, payload, signal) => ctx.connection.rpc.call(BRIDGE_RPC_CHANNEL, endpoint, payload, signal);
|
|
6383
6795
|
window.__dshOpenRemoteWorkspaceModal = (onAdded, onPickDirect, onCancel) => showRemoteWorkspaceDialog(rpcCall, onAdded, ctx, onPickDirect, onCancel);
|
|
6384
6796
|
setupIosKeyboardAdapter();
|
|
@@ -6388,6 +6800,10 @@ function apply(ctx) {
|
|
|
6388
6800
|
ctx.slots.inject(
|
|
6389
6801
|
"conversation.hero.workspace.directoryFlow",
|
|
6390
6802
|
() => ctx.slots.inject("sidebar.workspaces.directoryFlow", function* () {
|
|
6803
|
+
if (shouldYieldToOfficialPicker({
|
|
6804
|
+
local: isLocalEnvironment(),
|
|
6805
|
+
officialPicker: hasOfficialDirectoryPicker(ctx)
|
|
6806
|
+
})) return;
|
|
6391
6807
|
yield ctx.slots.register(
|
|
6392
6808
|
{
|
|
6393
6809
|
name: "conversation.hero.workspace.directoryFlow",
|