feffery_utils_components 0.2.0-rc19 → 0.2.0-rc20
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/DESCRIPTION +1 -1
- package/NAMESPACE +3 -0
- package/Project.toml +2 -2
- package/README.md +1 -1
- package/feffery_utils_components/FefferyEventListener.py +65 -0
- package/feffery_utils_components/FefferyListenElementSize.py +59 -0
- package/feffery_utils_components/FefferyListenHover.py +56 -0
- package/feffery_utils_components/FefferyListenScroll.py +40 -5
- package/feffery_utils_components/_imports_.py +6 -0
- package/feffery_utils_components/alias.py +20 -8
- package/feffery_utils_components/async-feffery_animated_3d_background_p5.js +1 -1
- package/feffery_utils_components/async-feffery_animated_3d_background_three.js +1 -1
- package/feffery_utils_components/async-feffery_animated_image.js +1 -1
- package/feffery_utils_components/async-feffery_aplayer.js +1 -1
- package/feffery_utils_components/async-feffery_auto_animate.js +1 -1
- package/feffery_utils_components/async-feffery_auto_fit.js +2 -2
- package/feffery_utils_components/async-feffery_burger.js +1 -1
- package/feffery_utils_components/async-feffery_captcha.js +1 -1
- package/feffery_utils_components/async-feffery_color_pickers.js +1 -1
- package/feffery_utils_components/async-feffery_dom2image.js +1 -1
- package/feffery_utils_components/async-feffery_dplayer.js +1 -1
- package/feffery_utils_components/async-feffery_emoji_picker.js +1 -1
- package/feffery_utils_components/async-feffery_excel_preview.js +1 -1
- package/feffery_utils_components/async-feffery_extra_spinner.js +1 -1
- package/feffery_utils_components/async-feffery_fancy_button.js +1 -1
- package/feffery_utils_components/async-feffery_grid.js +1 -1
- package/feffery_utils_components/async-feffery_http_requests.js +1 -1
- package/feffery_utils_components/async-feffery_image_cropper.js +1 -1
- package/feffery_utils_components/async-feffery_json_viewer.js +1 -1
- package/feffery_utils_components/async-feffery_local_large_storage.js +1 -1
- package/feffery_utils_components/async-feffery_markdown_editor.js +2 -2
- package/feffery_utils_components/async-feffery_motion.js +1 -1
- package/feffery_utils_components/async-feffery_music_player.js +1 -1
- package/feffery_utils_components/async-feffery_photo_sphere_viewer.js +1 -1
- package/feffery_utils_components/async-feffery_resizable.js +1 -1
- package/feffery_utils_components/async-feffery_rich_text_editor.js +2 -2
- package/feffery_utils_components/async-feffery_rnd.js +1 -1
- package/feffery_utils_components/async-feffery_seamless_scroll.js +1 -1
- package/feffery_utils_components/async-feffery_shortcut_panel.js +1 -1
- package/feffery_utils_components/async-feffery_slider_captcha.js +1 -1
- package/feffery_utils_components/async-feffery_sortable.js +1 -1
- package/feffery_utils_components/async-feffery_vditor.js +1 -1
- package/feffery_utils_components/async-feffery_word_preview.js +1 -1
- package/feffery_utils_components/async-fuc-shared.js +3 -3
- package/feffery_utils_components/feffery_utils_components.min.js +7 -7
- package/feffery_utils_components/metadata.json +302 -1
- package/feffery_utils_components/package-info.json +1 -1
- package/package.json +1 -1
- package/src/lib/components/FefferyEventSource.react.js +2 -0
- package/src/lib/components/listeners/FefferyEventListener.react.js +97 -0
- package/src/lib/components/listeners/FefferyListenElementSize.react.js +86 -0
- package/src/lib/components/listeners/FefferyListenHover.js +75 -0
- package/src/lib/components/listeners/FefferyListenScroll.react.js +91 -10
- package/src/lib/index.js +7 -1
- package/usage.py +17 -29
|
@@ -1,35 +1,67 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
|
-
import { useScroll } from '
|
|
2
|
+
import { useScroll } from '@reactuses/core';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* 滚动条监听组件FefferyListenScroll
|
|
7
|
+
*/
|
|
6
8
|
const FefferyListenScroll = (props) => {
|
|
7
9
|
let {
|
|
8
10
|
target,
|
|
11
|
+
throttle,
|
|
12
|
+
idle,
|
|
13
|
+
offset,
|
|
9
14
|
setProps,
|
|
10
15
|
loading_state
|
|
11
16
|
} = props;
|
|
12
17
|
|
|
13
|
-
const
|
|
18
|
+
const [x, y, _isScrolling, _arrivedState, _directions] = useScroll(
|
|
19
|
+
() => target ? document.getElementById(target) : document,
|
|
20
|
+
{
|
|
21
|
+
throttle,
|
|
22
|
+
idle,
|
|
23
|
+
offset
|
|
24
|
+
}
|
|
25
|
+
);
|
|
14
26
|
|
|
15
27
|
useEffect(() => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
28
|
+
setProps({
|
|
29
|
+
position: { left: x, top: y }
|
|
30
|
+
})
|
|
31
|
+
}, [x, y])
|
|
32
|
+
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
setProps({
|
|
35
|
+
isScrolling: _isScrolling
|
|
36
|
+
})
|
|
37
|
+
}, [_isScrolling])
|
|
38
|
+
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
setProps({
|
|
41
|
+
arrivedState: _arrivedState
|
|
42
|
+
})
|
|
43
|
+
}, [_arrivedState])
|
|
44
|
+
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
setProps({
|
|
47
|
+
directions: _directions
|
|
48
|
+
})
|
|
49
|
+
}, [_directions])
|
|
22
50
|
|
|
23
51
|
return <></>;
|
|
24
52
|
}
|
|
25
53
|
|
|
26
|
-
// 定义参数或属性
|
|
27
54
|
FefferyListenScroll.propTypes = {
|
|
28
55
|
/**
|
|
29
56
|
* 组件id
|
|
30
57
|
*/
|
|
31
58
|
id: PropTypes.string,
|
|
32
59
|
|
|
60
|
+
/**
|
|
61
|
+
* 强制刷新用key值
|
|
62
|
+
*/
|
|
63
|
+
key: PropTypes.string,
|
|
64
|
+
|
|
33
65
|
/**
|
|
34
66
|
* 设置滚动条监听目标元素id,默认为整个页面
|
|
35
67
|
*/
|
|
@@ -40,6 +72,55 @@ FefferyListenScroll.propTypes = {
|
|
|
40
72
|
*/
|
|
41
73
|
position: PropTypes.object,
|
|
42
74
|
|
|
75
|
+
/**
|
|
76
|
+
* 监听目标滚动条是否正在滚动中
|
|
77
|
+
*/
|
|
78
|
+
isScrolling: PropTypes.bool,
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* 监听目标滚动条的到达边界状态
|
|
82
|
+
*/
|
|
83
|
+
arrivedState: PropTypes.object,
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* 监听目标滚动条的滚动方向
|
|
87
|
+
*/
|
|
88
|
+
directions: PropTypes.object,
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* 滚动事件监听节流时长,单位:毫秒
|
|
92
|
+
* 默认:`0`
|
|
93
|
+
*/
|
|
94
|
+
throttle: PropTypes.number,
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* 滚动结束行为的检查时长,单位:毫秒,当`throttle>0`时,检查时长将为`throttle+idle`
|
|
98
|
+
* 默认:`0`
|
|
99
|
+
*/
|
|
100
|
+
idle: PropTypes.number,
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* 针对各个方向的到达边界状态,设置像素阈值
|
|
104
|
+
*/
|
|
105
|
+
offset: PropTypes.shape({
|
|
106
|
+
/**
|
|
107
|
+
* 上顶端到达边界像素阈值
|
|
108
|
+
*/
|
|
109
|
+
top: PropTypes.number,
|
|
110
|
+
/**
|
|
111
|
+
* 下底部到达边界像素阈值
|
|
112
|
+
*/
|
|
113
|
+
bottom: PropTypes.number,
|
|
114
|
+
/**
|
|
115
|
+
* 左侧到达边界像素阈值
|
|
116
|
+
*/
|
|
117
|
+
left: PropTypes.number,
|
|
118
|
+
/**
|
|
119
|
+
* 右侧到达边界像素阈值
|
|
120
|
+
*/
|
|
121
|
+
right: PropTypes.number
|
|
122
|
+
}),
|
|
123
|
+
|
|
43
124
|
/**
|
|
44
125
|
* Dash-assigned callback that should be called to report property changes
|
|
45
126
|
* to Dash, to make them available for callbacks.
|
package/src/lib/index.js
CHANGED
|
@@ -110,6 +110,9 @@ import FefferyVditor from "./components/editor/FefferyVditor.react.js";
|
|
|
110
110
|
import FefferyHttpRequests from "./components/FefferyHttpRequests.react.js";
|
|
111
111
|
import FefferyBurger from './components/FefferyBurger.react';
|
|
112
112
|
import FefferyEventSource from "./components/FefferyEventSource.react.js";
|
|
113
|
+
import FefferyEventListener from "./components/listeners/FefferyEventListener.react.js";
|
|
114
|
+
import FefferyListenHover from "./components/listeners/FefferyListenHover.js";
|
|
115
|
+
import FefferyListenElementSize from "./components/listeners/FefferyListenElementSize.react.js";
|
|
113
116
|
import './components/styles.css';
|
|
114
117
|
|
|
115
118
|
// 自定义sessionStorage事件监听
|
|
@@ -244,5 +247,8 @@ export {
|
|
|
244
247
|
FefferyVditor,
|
|
245
248
|
FefferyHttpRequests,
|
|
246
249
|
FefferyBurger,
|
|
247
|
-
FefferyEventSource
|
|
250
|
+
FefferyEventSource,
|
|
251
|
+
FefferyEventListener,
|
|
252
|
+
FefferyListenHover,
|
|
253
|
+
FefferyListenElementSize
|
|
248
254
|
};
|
package/usage.py
CHANGED
|
@@ -1,45 +1,33 @@
|
|
|
1
1
|
import dash
|
|
2
|
-
import time
|
|
3
|
-
import random
|
|
4
2
|
from dash import html
|
|
5
|
-
from urllib.parse import unquote
|
|
6
3
|
import feffery_utils_components as fuc
|
|
7
|
-
from
|
|
8
|
-
from dash.dependencies import Input, Output, State
|
|
4
|
+
from dash.dependencies import Input, Output
|
|
9
5
|
|
|
10
6
|
app = dash.Dash(__name__)
|
|
11
7
|
|
|
12
|
-
|
|
13
|
-
@app.server.route('/stream-chat')
|
|
14
|
-
def chatgpt():
|
|
15
|
-
question = request.args.get('question', '')
|
|
16
|
-
question = unquote(question).strip()
|
|
17
|
-
|
|
18
|
-
def stream():
|
|
19
|
-
for s in '测试问题回复结果' + '巴拉' * 1000:
|
|
20
|
-
time.sleep(random.uniform(0.05, 0.25))
|
|
21
|
-
yield 'data: %s\n\n' % s
|
|
22
|
-
|
|
23
|
-
return Response(stream(), mimetype='text/event-stream')
|
|
24
|
-
|
|
25
|
-
|
|
26
8
|
app.layout = html.Div(
|
|
27
9
|
[
|
|
28
|
-
|
|
29
|
-
id='
|
|
30
|
-
|
|
31
|
-
|
|
10
|
+
html.Div(
|
|
11
|
+
id='target-element',
|
|
12
|
+
style={
|
|
13
|
+
'width': '20vw',
|
|
14
|
+
'height': '20vh',
|
|
15
|
+
'border': '1px solid black',
|
|
16
|
+
},
|
|
17
|
+
),
|
|
18
|
+
fuc.FefferyListenElementSize(
|
|
19
|
+
id='listen-element-size-demo',
|
|
20
|
+
target='target-element',
|
|
32
21
|
),
|
|
33
|
-
html.Div('', id='sse-demo-output'),
|
|
34
22
|
],
|
|
35
|
-
style={'padding': 50},
|
|
23
|
+
style={'padding': 50, 'height': 99999, 'width': 99999},
|
|
36
24
|
)
|
|
37
25
|
|
|
38
26
|
app.clientside_callback(
|
|
39
|
-
"""(
|
|
40
|
-
Output('
|
|
41
|
-
Input('
|
|
42
|
-
|
|
27
|
+
"""(width, height) => `width: ${width}px; height: ${height}px`""",
|
|
28
|
+
Output('target-element', 'children'),
|
|
29
|
+
Input('listen-element-size-demo', 'width'),
|
|
30
|
+
Input('listen-element-size-demo', 'height'),
|
|
43
31
|
)
|
|
44
32
|
|
|
45
33
|
if __name__ == '__main__':
|