feffery_utils_components 0.2.0-rc23 → 0.2.0-rc25

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.
Files changed (165) hide show
  1. package/DESCRIPTION +1 -1
  2. package/MANIFEST.in +3 -8
  3. package/NAMESPACE +50 -49
  4. package/Project.toml +1 -1
  5. package/README.md +1 -1
  6. package/feffery_utils_components/FefferyDiv.py +12 -3
  7. package/feffery_utils_components/FefferyEventSource.py +11 -3
  8. package/feffery_utils_components/FefferyMotion.py +9 -3
  9. package/feffery_utils_components/FefferyNetwork.py +69 -0
  10. package/feffery_utils_components/__init__.py +1 -2
  11. package/feffery_utils_components/_imports_.py +100 -98
  12. package/feffery_utils_components/alias.py +2 -0
  13. package/feffery_utils_components/async-feffery_animated_3d_background_p5.js +3 -1
  14. package/feffery_utils_components/async-feffery_animated_3d_background_p5.js.map +1 -0
  15. package/feffery_utils_components/async-feffery_animated_3d_background_three.js +3 -1
  16. package/feffery_utils_components/async-feffery_animated_3d_background_three.js.map +1 -0
  17. package/feffery_utils_components/async-feffery_animated_image.js +4 -1
  18. package/feffery_utils_components/async-feffery_animated_image.js.map +1 -0
  19. package/feffery_utils_components/async-feffery_aplayer.js +3 -1
  20. package/feffery_utils_components/async-feffery_aplayer.js.map +1 -0
  21. package/feffery_utils_components/async-feffery_auto_animate.js +3 -1
  22. package/feffery_utils_components/async-feffery_auto_animate.js.map +1 -0
  23. package/feffery_utils_components/async-feffery_auto_fit.js +3 -10
  24. package/feffery_utils_components/async-feffery_auto_fit.js.map +1 -0
  25. package/feffery_utils_components/async-feffery_burger.js +3 -1
  26. package/feffery_utils_components/async-feffery_burger.js.map +1 -0
  27. package/feffery_utils_components/async-feffery_captcha.js +3 -1
  28. package/feffery_utils_components/async-feffery_captcha.js.map +1 -0
  29. package/feffery_utils_components/async-feffery_color_pickers.js +4 -1
  30. package/feffery_utils_components/async-feffery_color_pickers.js.map +1 -0
  31. package/feffery_utils_components/async-feffery_dom2image.js +4 -4
  32. package/feffery_utils_components/async-feffery_dom2image.js.map +1 -0
  33. package/feffery_utils_components/async-feffery_dplayer.js +4 -1
  34. package/feffery_utils_components/async-feffery_dplayer.js.map +1 -0
  35. package/feffery_utils_components/async-feffery_emoji_picker.js +4 -1
  36. package/feffery_utils_components/async-feffery_emoji_picker.js.map +1 -0
  37. package/feffery_utils_components/async-feffery_excel_preview.js +4 -1
  38. package/feffery_utils_components/async-feffery_excel_preview.js.map +1 -0
  39. package/feffery_utils_components/async-feffery_extra_spinner.js +4 -1
  40. package/feffery_utils_components/async-feffery_extra_spinner.js.map +1 -0
  41. package/feffery_utils_components/async-feffery_fancy_button.js +3 -1
  42. package/feffery_utils_components/async-feffery_fancy_button.js.map +1 -0
  43. package/feffery_utils_components/async-feffery_grid.js +3 -1
  44. package/feffery_utils_components/async-feffery_grid.js.map +1 -0
  45. package/feffery_utils_components/async-feffery_http_requests.js +4 -1
  46. package/feffery_utils_components/async-feffery_http_requests.js.map +1 -0
  47. package/feffery_utils_components/async-feffery_image_cropper.js +4 -1
  48. package/feffery_utils_components/async-feffery_image_cropper.js.map +1 -0
  49. package/feffery_utils_components/async-feffery_json_viewer.js +3 -1
  50. package/feffery_utils_components/async-feffery_json_viewer.js.map +1 -0
  51. package/feffery_utils_components/async-feffery_local_large_storage.js +4 -1
  52. package/feffery_utils_components/async-feffery_local_large_storage.js.map +1 -0
  53. package/feffery_utils_components/async-feffery_markdown_editor.js +3 -3
  54. package/feffery_utils_components/async-feffery_markdown_editor.js.map +1 -0
  55. package/feffery_utils_components/async-feffery_motion.js +3 -1
  56. package/feffery_utils_components/async-feffery_motion.js.map +1 -0
  57. package/feffery_utils_components/async-feffery_music_player.js +4 -1
  58. package/feffery_utils_components/async-feffery_music_player.js.map +1 -0
  59. package/feffery_utils_components/async-feffery_photo_sphere_viewer.js +4 -1
  60. package/feffery_utils_components/async-feffery_photo_sphere_viewer.js.LICENSE.txt +5 -5
  61. package/feffery_utils_components/async-feffery_photo_sphere_viewer.js.map +1 -0
  62. package/feffery_utils_components/async-feffery_resizable.js +3 -1
  63. package/feffery_utils_components/async-feffery_resizable.js.map +1 -0
  64. package/feffery_utils_components/async-feffery_rich_text_editor.js +4 -4
  65. package/feffery_utils_components/async-feffery_rich_text_editor.js.map +1 -0
  66. package/feffery_utils_components/async-feffery_rnd.js +3 -1
  67. package/feffery_utils_components/async-feffery_rnd.js.map +1 -0
  68. package/feffery_utils_components/async-feffery_seamless_scroll.js +3 -1
  69. package/feffery_utils_components/async-feffery_seamless_scroll.js.map +1 -0
  70. package/feffery_utils_components/async-feffery_shortcut_panel.js +32 -29
  71. package/feffery_utils_components/async-feffery_shortcut_panel.js.map +1 -0
  72. package/feffery_utils_components/async-feffery_slider_captcha.js +4 -1
  73. package/feffery_utils_components/async-feffery_slider_captcha.js.map +1 -0
  74. package/feffery_utils_components/async-feffery_sortable.js +3 -1
  75. package/feffery_utils_components/async-feffery_sortable.js.map +1 -0
  76. package/feffery_utils_components/async-feffery_vditor.js +4 -1
  77. package/feffery_utils_components/async-feffery_vditor.js.LICENSE.txt +26 -0
  78. package/feffery_utils_components/async-feffery_vditor.js.map +1 -0
  79. package/feffery_utils_components/async-feffery_word_preview.js +4 -1
  80. package/feffery_utils_components/async-feffery_word_preview.js.map +1 -0
  81. package/feffery_utils_components/async-fuc-shared.js +4 -135
  82. package/feffery_utils_components/async-fuc-shared.js.map +1 -0
  83. package/feffery_utils_components/feffery_utils_components.min.js +27 -30
  84. package/feffery_utils_components/feffery_utils_components.min.js.LICENSE.txt +0 -8
  85. package/feffery_utils_components/feffery_utils_components.min.js.map +1 -0
  86. package/feffery_utils_components/metadata.json +11388 -11129
  87. package/feffery_utils_components/package-info.json +2 -2
  88. package/package.json +2 -2
  89. package/setup.py +7 -5
  90. package/src/lib/components/animations/FefferyMotion.react.js +12 -0
  91. package/src/lib/components/{FefferyEventSource.react.js → communication/FefferyEventSource.react.js} +21 -1
  92. package/src/lib/components/{FefferyHttpRequests.react.js → communication/FefferyHttpRequests.react.js} +1 -1
  93. package/src/lib/components/{FefferyDiv.react.js → container/FefferyDiv.react.js} +115 -56
  94. package/src/lib/components/{FefferyHighlightWords.react.js → container/FefferyHighlightWords.react.js} +0 -1
  95. package/src/lib/components/{FefferyPortal.react.js → container/FefferyPortal.react.js} +0 -1
  96. package/src/lib/components/{FefferySticky.react.js → container/FefferySticky.react.js} +0 -1
  97. package/src/lib/components/{FefferyJsonViewer.react.js → dataDisplay/FefferyJsonViewer.react.js} +1 -1
  98. package/src/lib/components/{FefferyQRCode.react.js → dataDisplay/FefferyQRCode.react.js} +1 -1
  99. package/src/lib/components/{FefferySeamlessScroll.react.js → dataDisplay/FefferySeamlessScroll.react.js} +1 -1
  100. package/src/lib/components/{FefferyEmojiPicker.react.js → dataInput/FefferyEmojiPicker.react.js} +3 -3
  101. package/src/lib/components/{FefferyImagePaste.react.js → dataInput/FefferyImagePaste.react.js} +1 -1
  102. package/src/lib/components/{sortable → draggable}/FefferySortable.react.js +1 -1
  103. package/src/lib/components/{officePreview → filePreview}/FefferyExcelPreview.react.js +1 -1
  104. package/src/lib/components/{officePreview → filePreview}/FefferyWordPreview.react.js +1 -1
  105. package/src/lib/components/{FefferyBurger.react.js → general/FefferyBurger.react.js} +1 -1
  106. package/src/lib/components/{FefferyFancyButton.react.js → general/FefferyFancyButton.react.js} +1 -1
  107. package/src/lib/components/{FefferyAnimatedImage.react.js → images/FefferyAnimatedImage.react.js} +1 -1
  108. package/src/lib/components/{FefferyDom2Image.react.js → images/FefferyDom2Image.react.js} +1 -1
  109. package/src/lib/components/{FefferyPhotoSphereViewer.react.js → images/FefferyPhotoSphereViewer.react.js} +1 -1
  110. package/src/lib/components/listeners/FefferyNetwork.react.js +112 -0
  111. package/src/lib/components/{FefferyExtraSpinner.react.js → loadingAnimations/FefferyExtraSpinner.react.js} +1 -1
  112. package/src/lib/components/{FefferyTopProgress.react.js → loadingAnimations/FefferyTopProgress.react.js} +1 -1
  113. package/src/lib/components/{FefferyGuide.react.js → other/FefferyGuide.react.js} +1 -2
  114. package/src/lib/components/{FefferyShortcutPanel.react.js → other/FefferyShortcutPanel.react.js} +1 -1
  115. package/src/lib/components/{FefferyCaptcha.react.js → verification/FefferyCaptcha.react.js} +1 -1
  116. package/src/lib/components/{FefferySliderCaptcha.react.js → verification/FefferySliderCaptcha.react.js} +1 -1
  117. package/src/lib/fragments/animations/FefferyMotion.react.js +30 -23
  118. package/src/lib/fragments/{FefferyHttpRequests.react.js → communication/FefferyHttpRequests.react.js} +1 -1
  119. package/src/lib/fragments/{FefferyJsonViewer.react.js → dataDisplay/FefferyJsonViewer.react.js} +3 -3
  120. package/src/lib/fragments/{FefferySeamlessScroll.react.js → dataDisplay/FefferySeamlessScroll.react.js} +4 -4
  121. package/src/lib/fragments/{FefferyEmojiPicker.react.js → dataInput/FefferyEmojiPicker.react.js} +1 -1
  122. package/src/lib/fragments/draggable/FefferyGrid.react.js +1 -1
  123. package/src/lib/fragments/{sortable → draggable}/FefferySortable.react.js +1 -1
  124. package/src/lib/fragments/editor/FefferyMarkdownEditor.react.js +1 -1
  125. package/src/lib/fragments/{officePreview → filePreview}/FefferyExcelPreview.react.js +1 -1
  126. package/src/lib/fragments/{officePreview → filePreview}/FefferyWordPreview.react.js +1 -1
  127. package/src/lib/fragments/{FefferyBurger.react.js → general/FefferyBurger.react.js} +1 -1
  128. package/src/lib/fragments/{FefferyFancyButton.react.js → general/FefferyFancyButton.react.js} +2 -2
  129. package/src/lib/fragments/{FefferyAnimatedImage.react.js → images/FefferyAnimatedImage.react.js} +1 -1
  130. package/src/lib/fragments/{FefferyDom2Image.react.js → images/FefferyDom2Image.react.js} +1 -1
  131. package/src/lib/fragments/{FefferyPhotoSphereViewer.react.js → images/FefferyPhotoSphereViewer.react.js} +1 -1
  132. package/src/lib/fragments/{FefferyExtraSpinner.react.js → loadingAnimations/FefferyExtraSpinner.react.js} +1 -1
  133. package/src/lib/fragments/{FefferyShortcutPanel.react.js → other/FefferyShortcutPanel.react.js} +2 -2
  134. package/src/lib/fragments/{FefferyCaptcha.react.js → verification/FefferyCaptcha.react.js} +1 -1
  135. package/src/lib/fragments/{FefferySliderCaptcha.react.js → verification/FefferySliderCaptcha.react.js} +1 -1
  136. package/src/lib/index.js +246 -195
  137. package/tests/MotionTest/app.py +50 -0
  138. package/usage.py +30 -10
  139. package/webpack.config.js +3 -11
  140. /package/src/lib/components/{messenger → communication}/FefferyIframeMessenger.react.js +0 -0
  141. /package/src/lib/components/{messenger → communication}/FefferyTabMessenger.react.js +0 -0
  142. /package/src/lib/components/{FefferyWebSocket.react.js → communication/FefferyWebSocket.react.js} +0 -0
  143. /package/src/lib/components/{FefferyScrollbars.react.js → container/FefferyScrollbars.react.js} +0 -0
  144. /package/src/lib/components/{FefferyShadowDom.react.js → container/FefferyShadowDom.react.js} +0 -0
  145. /package/src/lib/components/{FefferyCompareSlider.react.js → dataDisplay/FefferyCompareSlider.react.js} +0 -0
  146. /package/src/lib/components/{FefferyCountUp.react.js → dataDisplay/FefferyCountUp.react.js} +0 -0
  147. /package/src/lib/components/{FefferyRawHTML.react.js → dataDisplay/FefferyRawHTML.react.js} +0 -0
  148. /package/src/lib/components/{FefferyFancyMessage.js → feedback/FefferyFancyMessage.js} +0 -0
  149. /package/src/lib/components/{FefferyFancyNotification.js → feedback/FefferyFancyNotification.js} +0 -0
  150. /package/src/lib/components/{FefferyCountDown.react.js → other/FefferyCountDown.react.js} +0 -0
  151. /package/src/lib/components/{FefferyExecuteJs.react.js → other/FefferyExecuteJs.react.js} +0 -0
  152. /package/src/lib/components/{FefferyTimeout.react.js → other/FefferyTimeout.react.js} +0 -0
  153. /package/src/lib/components/{FefferyFullscreen.react.js → pageControl/FefferyFullscreen.react.js} +0 -0
  154. /package/src/lib/components/{FefferyReload.react.js → pageControl/FefferyReload.react.js} +0 -0
  155. /package/src/lib/components/{FefferyScroll.react.js → pageControl/FefferyScroll.react.js} +0 -0
  156. /package/src/lib/components/{FefferySetFavicon.react.js → pageControl/FefferySetFavicon.react.js} +0 -0
  157. /package/src/lib/components/{FefferySetTitle.react.js → pageControl/FefferySetTitle.react.js} +0 -0
  158. /package/src/lib/components/{store → performance}/FefferyDebounceProp.react.js +0 -0
  159. /package/src/lib/components/{FefferyLazyLoad.react.js → performance/FefferyLazyLoad.react.js} +0 -0
  160. /package/src/lib/components/{store → performance}/FefferyThrottleProp.react.js +0 -0
  161. /package/src/lib/components/{FefferyVirtualList.react.js → performance/FefferyVirtualList.react.js} +0 -0
  162. /package/src/lib/components/{FefferyExternalCss.react.js → staticResourceControl/FefferyExternalCss.react.js} +0 -0
  163. /package/src/lib/components/{FefferyExternalJs.react.js → staticResourceControl/FefferyExternalJs.react.js} +0 -0
  164. /package/src/lib/components/{FefferyCssVar.react.js → styleControl/FefferyCssVar.react.js} +0 -0
  165. /package/src/lib/components/{FefferyStyle.react.js → styleControl/FefferyStyle.react.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "feffery_utils_components",
3
- "version": "0.2.0-rc23",
3
+ "version": "0.2.0-rc25",
4
4
  "description": "Build more utility components for Plotly Dash.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -134,7 +134,7 @@
134
134
  "react": "^16.8.6",
135
135
  "react-docgen": "^5.4.3",
136
136
  "react-dom": "^16.8.6",
137
- "sass": "^1.57.1",
137
+ "sass": "1.77.6",
138
138
  "sass-loader": "^10.0.0",
139
139
  "style-loader": "^0.23.1",
140
140
  "styled-jsx": "^3.4.7",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "feffery_utils_components",
3
- "version": "0.2.0-rc23",
3
+ "version": "0.2.0-rc25",
4
4
  "description": "Build more utility components for Plotly Dash.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -134,7 +134,7 @@
134
134
  "react": "^16.8.6",
135
135
  "react-docgen": "^5.4.3",
136
136
  "react-dom": "^16.8.6",
137
- "sass": "^1.57.1",
137
+ "sass": "1.77.6",
138
138
  "sass-loader": "^10.0.0",
139
139
  "style-loader": "^0.23.1",
140
140
  "styled-jsx": "^3.4.7",
package/setup.py CHANGED
@@ -1,5 +1,5 @@
1
+ import io
1
2
  import json
2
- import os
3
3
  from setuptools import setup
4
4
 
5
5
 
@@ -11,21 +11,23 @@ package_name = package["name"].replace(" ", "_").replace("-", "_")
11
11
  setup(
12
12
  name=package_name,
13
13
  version=package["version"],
14
- author=package['author'],
15
14
  author_email=package['email'],
15
+ homepage='https://github.com/CNFeffery/feffery-utils-components',
16
+ author=package['author'],
16
17
  packages=[package_name],
17
18
  include_package_data=True,
18
19
  package_data={
19
- 'feffery_antd_components': ['*']
20
+ 'feffery_utils_components': ['*']
20
21
  },
21
22
  license=package['license'],
22
23
  description=package.get('description', package_name),
24
+ long_description=io.open("README.md", encoding="utf-8").read(),
25
+ long_description_content_type="text/markdown",
23
26
  install_requires=[
24
- 'dash>=2.10.2, !=2.16.0'
27
+ 'dash>=2.17.1'
25
28
  ],
26
29
  classifiers=[
27
30
  'Framework :: Dash',
28
31
  ],
29
- homepage='https://github.com/CNFeffery/feffery-utils-components',
30
32
  url='https://github.com/CNFeffery/feffery-utils-components'
31
33
  )
@@ -183,6 +183,17 @@ FefferyMotion.propTypes = {
183
183
  */
184
184
  variants: PropTypes.objectOf(PropTypes.object),
185
185
 
186
+ /**
187
+ * 监听当前组件的`animate`目标动画过程是否已完成
188
+ */
189
+ animated: PropTypes.bool,
190
+
191
+ /**
192
+ * 是否在动画完成后销毁当前组件
193
+ * 默认值:`false`
194
+ */
195
+ destroyWhenAnimated: PropTypes.bool,
196
+
186
197
  loading_state: PropTypes.shape({
187
198
  /**
188
199
  * Determines if the component is loading or not
@@ -207,6 +218,7 @@ FefferyMotion.propTypes = {
207
218
 
208
219
  // 设置默认参数
209
220
  FefferyMotion.defaultProps = {
221
+ destroyWhenAnimated: false
210
222
  }
211
223
 
212
224
  export default FefferyMotion;
@@ -16,7 +16,7 @@ const FefferyEventSource = (props) => {
16
16
  loading_state
17
17
  } = props;
18
18
 
19
- const { status: _status, data: _data, event: _event, close, open } = useEventSource(
19
+ const { status: _status, data: _data, event: _event, close, open, error: _error } = useEventSource(
20
20
  url,
21
21
  events,
22
22
  {
@@ -52,6 +52,16 @@ const FefferyEventSource = (props) => {
52
52
  }
53
53
  }, [operation])
54
54
 
55
+ useEffect(() => {
56
+ if (_error) {
57
+ setProps({
58
+ errorEvent: {
59
+ timestamp: Date.now()
60
+ }
61
+ })
62
+ }
63
+ }, [_error])
64
+
55
65
  return <></>;
56
66
  }
57
67
 
@@ -120,6 +130,16 @@ FefferyEventSource.propTypes = {
120
130
  */
121
131
  operation: PropTypes.oneOf(['open', 'close']),
122
132
 
133
+ /**
134
+ * 监听最新的异常错误事件
135
+ */
136
+ errorEvent: PropTypes.shape({
137
+ /**
138
+ * 错误事件时间戳
139
+ */
140
+ timestamp: PropTypes.number
141
+ }),
142
+
123
143
  /**
124
144
  * Dash-assigned callback that should be called to report property changes
125
145
  * to Dash, to make them available for callbacks.
@@ -1,7 +1,7 @@
1
1
  import React, { Suspense } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- const LazyFefferyHttpRequests = React.lazy(() => import(/* webpackChunkName: "feffery_http_requests" */ '../fragments/FefferyHttpRequests.react'));
4
+ const LazyFefferyHttpRequests = React.lazy(() => import(/* webpackChunkName: "feffery_http_requests" */ '../../fragments/communication/FefferyHttpRequests.react'));
5
5
 
6
6
  /**
7
7
  * http请求组件FefferyHttpRequests
@@ -1,10 +1,12 @@
1
+ // react核心
1
2
  import React, { useEffect, useRef } from 'react';
2
- import useCss from '../hooks/useCss'
3
- import { isString, isNull } from 'lodash';
4
3
  import PropTypes from 'prop-types';
4
+ // 辅助库
5
+ import { isString, isNull, isEqual } from 'lodash';
5
6
  import { useElementBounding, useFocus } from '@reactuses/core';
6
7
  import { useSize, useRequest, useHover, useClickAway } from 'ahooks';
7
- import './styles.css'
8
+ // 自定义hooks
9
+ import useCss from '../../hooks/useCss'
8
10
 
9
11
  // 定义兼容虚拟className的阴影效果、滚动条样式字典
10
12
  const shadowVirtualClassName = new Map(
@@ -79,13 +81,13 @@ const scrollbarVirtualClassName = new Map(
79
81
  * 进阶div容器组件FefferyDiv
80
82
  */
81
83
  const FefferyDiv = (props) => {
82
- // 取得必要属性或参数
83
84
  let {
84
85
  id,
85
86
  key,
86
87
  children,
87
88
  style,
88
89
  className,
90
+ enableEvents,
89
91
  mouseEnterCount,
90
92
  mouseLeaveCount,
91
93
  nClicks,
@@ -111,10 +113,10 @@ const FefferyDiv = (props) => {
111
113
  } = props;
112
114
 
113
115
  const ref = useRef(null);
114
- const size = useSize(ref);
115
- const _bounding = useElementBounding(ref);
116
- const _isHovering = useHover(ref);
117
- const [_focus, setFocus] = useFocus(ref)
116
+ const size = useSize(enableEvents?.includes('size') ? ref : null);
117
+ const _bounding = useElementBounding(enableEvents?.includes('position') ? ref : null);
118
+ const _isHovering = useHover(enableEvents?.includes('hover') ? ref : null);
119
+ const [_focus, setFocus] = useFocus(enableEvents?.includes('focus') ? ref : null);
118
120
 
119
121
  useEffect(() => {
120
122
  setProps({
@@ -188,7 +190,7 @@ const FefferyDiv = (props) => {
188
190
  }, [_isHovering])
189
191
 
190
192
  // 监听元素外点击事件
191
- if (enableClickAway) {
193
+ if (enableClickAway || enableEvents?.includes('clickaway')) {
192
194
  useClickAway(() => {
193
195
  setProps({ clickAwayCount: clickAwayCount + 1 })
194
196
  }, ref);
@@ -282,53 +284,81 @@ const FefferyDiv = (props) => {
282
284
  (className ? useCss(className) : undefined)
283
285
  }
284
286
  ref={ref}
285
- onClick={(e) => {
286
- setProps({
287
- nClicks: nClicks + 1,
288
- clickEvent: {
289
- pageX: e.pageX,
290
- pageY: e.pageY,
291
- clientX: e.clientX,
292
- clientY: e.clientY,
293
- screenX: e.screenX,
294
- screenY: e.screenY,
295
- timestamp: Date.now()
296
- }
297
- })
298
- }}
299
- onDoubleClick={(e) => {
300
- setProps({
301
- nDoubleClicks: nDoubleClicks + 1,
302
- doubleClickEvent: {
303
- pageX: e.pageX,
304
- pageY: e.pageY,
305
- clientX: e.clientX,
306
- clientY: e.clientY,
307
- screenX: e.screenX,
308
- screenY: e.screenY,
309
- timestamp: Date.now()
310
- }
311
- })
312
- }}
313
- onContextMenu={(e) => {
314
- if (enableListenContextMenu) {
315
- e.preventDefault()
316
- setProps({
317
- contextMenuEvent: {
318
- pageX: e.pageX,
319
- pageY: e.pageY,
320
- clientX: e.clientX,
321
- clientY: e.clientY,
322
- screenX: e.screenX,
323
- screenY: e.screenY,
324
- timestamp: Date.now()
325
- }
326
- })
327
- }
328
- }}
329
- onMouseEnter={() => setProps({ mouseEnterCount: mouseEnterCount + 1 })}
330
- onMouseLeave={() => setProps({ mouseLeaveCount: mouseLeaveCount + 1 })}
331
- tabIndex={enableFocus ? 0 : undefined}
287
+ onClick={
288
+ enableEvents?.includes('click') ?
289
+ (e) => {
290
+ setProps({
291
+ nClicks: nClicks + 1,
292
+ clickEvent: {
293
+ pageX: e.pageX,
294
+ pageY: e.pageY,
295
+ clientX: e.clientX,
296
+ clientY: e.clientY,
297
+ screenX: e.screenX,
298
+ screenY: e.screenY,
299
+ timestamp: Date.now()
300
+ }
301
+ })
302
+ } :
303
+ undefined
304
+ }
305
+ onDoubleClick={
306
+ enableEvents?.includes('dbclick') ?
307
+ (e) => {
308
+ setProps({
309
+ nDoubleClicks: nDoubleClicks + 1,
310
+ doubleClickEvent: {
311
+ pageX: e.pageX,
312
+ pageY: e.pageY,
313
+ clientX: e.clientX,
314
+ clientY: e.clientY,
315
+ screenX: e.screenX,
316
+ screenY: e.screenY,
317
+ timestamp: Date.now()
318
+ }
319
+ })
320
+ } :
321
+ undefined
322
+ }
323
+ onContextMenu={
324
+ enableListenContextMenu || enableEvents?.includes('contextmenu') ?
325
+ (e) => {
326
+ e.preventDefault()
327
+ setProps({
328
+ contextMenuEvent: {
329
+ pageX: e.pageX,
330
+ pageY: e.pageY,
331
+ clientX: e.clientX,
332
+ clientY: e.clientY,
333
+ screenX: e.screenX,
334
+ screenY: e.screenY,
335
+ timestamp: Date.now()
336
+ }
337
+ })
338
+ } :
339
+ undefined
340
+ }
341
+ onMouseEnter={
342
+ enableEvents?.includes('mouseenter') ?
343
+ () => setProps({ mouseEnterCount: mouseEnterCount + 1 }) :
344
+ undefined
345
+ }
346
+ onMouseLeave={
347
+ enableEvents?.includes('mouseleave') ?
348
+ () => setProps({ mouseLeaveCount: mouseLeaveCount + 1 }) :
349
+ undefined
350
+ }
351
+ onTouchStart={
352
+ enableEvents?.includes('touch') ?
353
+ () => setProps({ isTouching: true }) :
354
+ undefined
355
+ }
356
+ onTouchEnd={
357
+ enableEvents?.includes('touch') ?
358
+ () => setProps({ isTouching: false }) :
359
+ undefined
360
+ }
361
+ tabIndex={enableFocus || enableEvents?.includes('focus') ? 0 : undefined}
332
362
  data-dash-is-loading={
333
363
  (loading_state && loading_state.is_loading) || undefined
334
364
  } >
@@ -366,6 +396,29 @@ FefferyDiv.propTypes = {
366
396
  PropTypes.object
367
397
  ]),
368
398
 
399
+ /**
400
+ * 控制要开启的事件监听类型数组,可选项有`'click'`(单击事件)、`'dbclick'`(双击事件)、`'size'`(尺寸变化事件)、
401
+ * `'mouseenter'`(鼠标移入事件),`'mouseleave'`(鼠标移出事件)、`'contextmenu'`(鼠标右键点击事件)、
402
+ * `'hover'`(鼠标悬停事件)、`'touch'`(移动端触碰事件)、`'clickaway'`(元素外点击事件)、`'position'`(左上角坐标位置变化事件)、
403
+ * `'focus'`(聚焦状态切换事件)
404
+ * 默认值:`['click', 'dbclick']`
405
+ */
406
+ enableEvents: PropTypes.arrayOf(
407
+ PropTypes.oneOf([
408
+ 'click',
409
+ 'dbclick',
410
+ 'size',
411
+ 'mouseenter',
412
+ 'mouseleave',
413
+ 'contextmenu',
414
+ 'hover',
415
+ 'touch',
416
+ 'clickaway',
417
+ 'position',
418
+ 'focus'
419
+ ])
420
+ ),
421
+
369
422
  /**
370
423
  * 监听容器像素宽度变化
371
424
  */
@@ -514,6 +567,11 @@ FefferyDiv.propTypes = {
514
567
  */
515
568
  isHovering: PropTypes.bool,
516
569
 
570
+ /**
571
+ * 针对移动端场景,监听当前元素是否触碰中
572
+ */
573
+ isTouching: PropTypes.bool,
574
+
517
575
  /**
518
576
  * 设置是否启用元素外点击事件监听,当页面中有大量FefferyDiv元素时,建议不要开启此特性,会导致明显的性能问题
519
577
  * 默认为false
@@ -644,6 +702,7 @@ FefferyDiv.propTypes = {
644
702
 
645
703
  // 设置默认参数
646
704
  FefferyDiv.defaultProps = {
705
+ enableEvents: ['click', 'dbclick'],
647
706
  mouseEnterCount: 0,
648
707
  mouseLeaveCount: 0,
649
708
  nClicks: 0,
@@ -1,6 +1,5 @@
1
1
  import Highlighter from "react-highlight-words";
2
2
  import PropTypes from 'prop-types';
3
- import './styles.css';
4
3
 
5
4
  // 定义关键词高亮组件FefferyHighlightWords,文档参考:https://github.com/bvaughn/react-highlight-words#readme
6
5
  const FefferyHighlightWords = (props) => {
@@ -1,4 +1,3 @@
1
- import { useEffect } from 'react';
2
1
  import { createPortal } from 'react-dom';
3
2
  import PropTypes from 'prop-types';
4
3
 
@@ -31,7 +31,6 @@ const FefferySticky = (props) => {
31
31
  </ Sticky>;
32
32
  }
33
33
 
34
-
35
34
  // 定义参数或属性
36
35
  FefferySticky.propTypes = {
37
36
  /**
@@ -1,7 +1,7 @@
1
1
  import React, { Suspense } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- const LazyFefferyJsonViewer = React.lazy(() => import(/* webpackChunkName: "feffery_json_viewer" */ '../fragments/FefferyJsonViewer.react'));
4
+ const LazyFefferyJsonViewer = React.lazy(() => import(/* webpackChunkName: "feffery_json_viewer" */ '../../fragments/dataDisplay/FefferyJsonViewer.react'));
5
5
 
6
6
  const FefferyJsonViewer = (props) => {
7
7
  return (
@@ -1,4 +1,4 @@
1
- import React, { useEffect } from 'react';
1
+ import React from 'react';
2
2
  import { QRCodeSVG, QRCodeCanvas } from 'qrcode.react';
3
3
  import PropTypes from 'prop-types';
4
4
 
@@ -1,7 +1,7 @@
1
1
  import { Suspense } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- const LazyFefferySeamlessScroll = React.lazy(() => import(/* webpackChunkName: "feffery_seamless_scroll" */ '../fragments/FefferySeamlessScroll.react'));
4
+ const LazyFefferySeamlessScroll = React.lazy(() => import(/* webpackChunkName: "feffery_seamless_scroll" */ '../../fragments/dataDisplay/FefferySeamlessScroll.react'));
5
5
 
6
6
  const FefferySeamlessScroll = (props) => {
7
7
  return (
@@ -1,7 +1,7 @@
1
1
  import React, { Suspense } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- const LazyFefferyEmojiPicker = React.lazy(() => import(/* webpackChunkName: "feffery_emoji_picker" */ '../fragments/FefferyEmojiPicker.react'));
4
+ const LazyFefferyEmojiPicker = React.lazy(() => import(/* webpackChunkName: "feffery_emoji_picker" */ '../../fragments/dataInput/FefferyEmojiPicker.react'));
5
5
 
6
6
  const FefferyEmojiPicker = (props) => {
7
7
  return (
@@ -85,7 +85,7 @@ FefferyEmojiPicker.propTypes = {
85
85
  /**
86
86
  * 设置是否显示搜索框,默认为true
87
87
  */
88
- customCategoryIcons : PropTypes.shape({
88
+ customCategoryIcons: PropTypes.shape({
89
89
  /**
90
90
  * 自定义emoji分组的图标
91
91
  */
@@ -338,7 +338,7 @@ FefferyEmojiPicker.defaultProps = {
338
338
  navPosition: 'top',
339
339
  noResultsEmoji: 'cry',
340
340
  previewPosition: 'bottom',
341
- searchPosition:'sticky',
341
+ searchPosition: 'sticky',
342
342
  set: 'native',
343
343
  skin: 1,
344
344
  skinTonePosition: 'preview',
@@ -1,6 +1,6 @@
1
1
  import React, { useCallback } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { Gluejar } from '../utils/gluejar'
3
+ import { Gluejar } from '../../utils/gluejar/dist'
4
4
 
5
5
  const urlToBase64 = (url) => {
6
6
  return new Promise((resolve, reject) => {
@@ -1,7 +1,7 @@
1
1
  import React, { Suspense } from "react";
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- const LazyFefferySortable = React.lazy(() => import(/* webpackChunkName: "feffery_sortable" */ '../../fragments/sortable/FefferySortable.react'));
4
+ const LazyFefferySortable = React.lazy(() => import(/* webpackChunkName: "feffery_sortable" */ '../../fragments/draggable/FefferySortable.react'));
5
5
 
6
6
  const FefferySortable = (props) => {
7
7
  return (
@@ -1,7 +1,7 @@
1
1
  import React, { Suspense } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- const LazyFefferyExcelPreview = React.lazy(() => import(/* webpackChunkName: "feffery_excel_preview" */ '../../fragments/officePreview/FefferyExcelPreview.react'));
4
+ const LazyFefferyExcelPreview = React.lazy(() => import(/* webpackChunkName: "feffery_excel_preview" */ '../../fragments/filePreview/FefferyExcelPreview.react'));
5
5
 
6
6
  const FefferyExcelPreview = (props) => {
7
7
  return (
@@ -1,7 +1,7 @@
1
1
  import React, { Suspense } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- const LazyFefferyWordPreview = React.lazy(() => import(/* webpackChunkName: "feffery_word_preview" */ '../../fragments/officePreview/FefferyWordPreview.react'));
4
+ const LazyFefferyWordPreview = React.lazy(() => import(/* webpackChunkName: "feffery_word_preview" */ '../../fragments/filePreview/FefferyWordPreview.react'));
5
5
 
6
6
  const FefferyWordPreview = (props) => {
7
7
  return (
@@ -1,7 +1,7 @@
1
1
  import React, { Suspense } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- const LazyFefferyBurger = React.lazy(() => import(/* webpackChunkName: "feffery_burger" */ '../fragments/FefferyBurger.react'));
4
+ const LazyFefferyBurger = React.lazy(() => import(/* webpackChunkName: "feffery_burger" */ '../../fragments/general/FefferyBurger.react'));
5
5
 
6
6
  /**
7
7
  * 动态菜单图标组件FefferyBurger
@@ -1,7 +1,7 @@
1
1
  import React, { Suspense } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- const LazyFefferyFancyButton = React.lazy(() => import(/* webpackChunkName: "feffery_fancy_button" */ '../fragments/FefferyFancyButton.react'));
4
+ const LazyFefferyFancyButton = React.lazy(() => import(/* webpackChunkName: "feffery_fancy_button" */ '../../fragments/general/FefferyFancyButton.react'));
5
5
 
6
6
  const FefferyFancyButton = (props) => {
7
7
  return (
@@ -1,7 +1,7 @@
1
1
  import React, { Suspense } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- const LazyFefferyAnimatedImage = React.lazy(() => import(/* webpackChunkName: "feffery_animated_image" */ '../fragments/FefferyAnimatedImage.react'));
4
+ const LazyFefferyAnimatedImage = React.lazy(() => import(/* webpackChunkName: "feffery_animated_image" */ '../../fragments/images/FefferyAnimatedImage.react'));
5
5
 
6
6
  const FefferyAnimatedImage = (props) => {
7
7
  return (
@@ -1,7 +1,7 @@
1
1
  import React, { Suspense } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- const LazyFefferyDom2Image = React.lazy(() => import(/* webpackChunkName: "feffery_dom2image" */ '../fragments/FefferyDom2Image.react'));
4
+ const LazyFefferyDom2Image = React.lazy(() => import(/* webpackChunkName: "feffery_dom2image" */ '../../fragments/images/FefferyDom2Image.react'));
5
5
 
6
6
  const FefferyDom2Image = (props) => {
7
7
  return (
@@ -1,7 +1,7 @@
1
1
  import { Suspense } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- const LazyFefferyPhotoSphereViewer = React.lazy(() => import(/* webpackChunkName: "feffery_photo_sphere_viewer" */ '../fragments/FefferyPhotoSphereViewer.react'));
4
+ const LazyFefferyPhotoSphereViewer = React.lazy(() => import(/* webpackChunkName: "feffery_photo_sphere_viewer" */ '../../fragments/images/FefferyPhotoSphereViewer.react'));
5
5
 
6
6
  const FefferyPhotoSphereViewer = (props) => {
7
7
  return (
@@ -0,0 +1,112 @@
1
+ import { useEffect } from 'react';
2
+ import { useNetwork } from 'ahooks';
3
+ import PropTypes from 'prop-types';
4
+
5
+ /**
6
+ * 网络状态信息监听组件FefferyNetwork
7
+ */
8
+ const FefferyNetwork = (props) => {
9
+ const {
10
+ id,
11
+ key,
12
+ online,
13
+ since,
14
+ rtt,
15
+ type,
16
+ downlink,
17
+ downlinkMax,
18
+ saveData,
19
+ effectiveType,
20
+ setProps,
21
+ loading_state
22
+ } = props;
23
+
24
+ const networkState = useNetwork();
25
+
26
+ useEffect(() => {
27
+ setProps({
28
+ ...JSON.parse(JSON.stringify(networkState))
29
+ });
30
+ }, [networkState]);
31
+
32
+ return <></>;
33
+ }
34
+
35
+ FefferyNetwork.propTypes = {
36
+ /**
37
+ * 组件id
38
+ */
39
+ id: PropTypes.string,
40
+
41
+ /**
42
+ * 强制刷新用key值
43
+ */
44
+ key: PropTypes.string,
45
+
46
+ /**
47
+ * 网络是否为在线
48
+ */
49
+ online: PropTypes.bool,
50
+
51
+ /**
52
+ * `online`最后改变时间
53
+ */
54
+ since: PropTypes.string,
55
+
56
+ /**
57
+ * 当前连接下评估的往返时延
58
+ */
59
+ rtt: PropTypes.number,
60
+
61
+ /**
62
+ * 设备使用与所述网络进行通信的连接的类型,可选项有'bluetooth'、'cellular'、'ethernet'、'none'、'wifi'、'wimax'、'other'、'unknown'
63
+ */
64
+ type: PropTypes.oneOf(['bluetooth', 'cellular', 'ethernet', 'none', 'wifi', 'wimax', 'other', 'unknown']),
65
+
66
+ /**
67
+ * 有效带宽估算(单位:兆比特/秒)
68
+ */
69
+ downlink: PropTypes.number,
70
+
71
+ /**
72
+ * 最大下行速度(单位:兆比特/秒)
73
+ */
74
+ downlinkMax: PropTypes.number,
75
+
76
+ /**
77
+ * 用户代理是否设置了减少数据使用的选项
78
+ */
79
+ saveData: PropTypes.bool,
80
+
81
+ /**
82
+ * 网络连接的类型,可选的值有'slow-2g'、'2g'、'3g'、'4g'
83
+ */
84
+ effectiveType: PropTypes.oneOf(['slow-2g', '2g', '3g', '4g']),
85
+
86
+ /**
87
+ * Dash-assigned callback that should be called to report property changes
88
+ * to Dash, to make them available for callbacks.
89
+ */
90
+ setProps: PropTypes.func,
91
+
92
+ loading_state: PropTypes.shape({
93
+ /**
94
+ * Determines if the component is loading or not
95
+ */
96
+ is_loading: PropTypes.bool,
97
+ /**
98
+ * Holds which property is loading
99
+ */
100
+ prop_name: PropTypes.string,
101
+ /**
102
+ * Holds the name of the component that is loading
103
+ */
104
+ component_name: PropTypes.string
105
+ })
106
+ };
107
+
108
+ // 设置默认参数
109
+ FefferyNetwork.defaultProps = {
110
+ }
111
+
112
+ export default FefferyNetwork;