pixuireactcomponents 1.4.5 → 1.4.7

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixuireactcomponents",
3
- "version": "1.4.5",
3
+ "version": "1.4.7",
4
4
  "description": "pixui react components",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -4,4 +4,6 @@ export declare const LoadChecker: (props: {
4
4
  rootClass?: string | undefined;
5
5
  timeoutPeriod?: number | undefined;
6
6
  onLoad?: Function | undefined;
7
+ enableCompLog?: boolean | undefined;
8
+ onlyHttp?: boolean | undefined;
7
9
  }) => h.JSX.Element;
@@ -10,57 +10,95 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
10
10
  import h from 'lib/dom';
11
11
  import { useEffect, useRef, useState } from 'preact/hooks';
12
12
  export var LoadChecker = function (props) {
13
- var children = props.children, _a = props.rootClass, rootClass = _a === void 0 ? '' : _a, _b = props.timeoutPeriod, timeoutPeriod = _b === void 0 ? 500 : _b, onLoad = props.onLoad;
14
- var _c = useState(false), loaded = _c[0], setLoaded = _c[1];
15
- var _d = useState(0), total = _d[0], setTotal = _d[1];
16
- var _e = useState([]), loadedElements = _e[0], setLoadedElements = _e[1];
13
+ var children = props.children, _a = props.rootClass, rootClass = _a === void 0 ? '' : _a, _b = props.timeoutPeriod, timeoutPeriod = _b === void 0 ? 500 : _b, onLoad = props.onLoad, _c = props.enableCompLog, enableCompLog = _c === void 0 ? false : _c, _d = props.onlyHttp, onlyHttp = _d === void 0 ? false : _d;
14
+ var _e = useState(false), loaded = _e[0], setLoaded = _e[1];
15
+ var _f = useState(false), collectFinish = _f[0], setCollectFinish = _f[1];
16
+ var _g = useState([]), loadedElements = _g[0], setLoadedElements = _g[1];
17
+ var _h = useState([]), collectSrcs = _h[0], setCollectSrcs = _h[1];
18
+ var _j = useState(new Date().getTime()), timeStamp = _j[0], setTimeStamp = _j[1];
17
19
  var ref = useRef(null);
20
+ var myLog = function () {
21
+ var args = [];
22
+ for (var _i = 0; _i < arguments.length; _i++) {
23
+ args[_i] = arguments[_i];
24
+ }
25
+ if (enableCompLog) {
26
+ console.log.apply(console, __spreadArray(['LoadChecker: '], args, false));
27
+ }
28
+ };
18
29
  //0.5s后直接显示
19
30
  useEffect(function () {
20
31
  var timer = setTimeout(function () {
21
32
  setLoaded(true);
33
+ myLog(timeoutPeriod, 's timeout, direct show');
22
34
  }, timeoutPeriod);
23
35
  var node = ref.current;
24
36
  if (!node) {
25
37
  setLoaded(true);
38
+ myLog('no root node, direct show');
26
39
  return;
27
40
  }
28
- setTotal(getLoadCount(node, 0));
41
+ getLoadCount(node);
42
+ setCollectFinish(true);
29
43
  return function () {
30
44
  clearTimeout(timer);
31
45
  };
32
46
  }, []);
33
- var getLoadCount = function (node, preCount) {
47
+ useEffect(function () {
48
+ if (!collectFinish)
49
+ return;
50
+ myLog('elementsLoadedCount:', loadedElements.length, 'collectSrcs:', collectSrcs.length);
51
+ myLog('loadedElements:', loadedElements, collectSrcs);
52
+ if (collectSrcs.length == 0 || loadedElements.length >= collectSrcs.length) {
53
+ myLog('all loaded, srcs:', JSON.stringify(collectSrcs, null, 2));
54
+ myLog('all loaded, timeStamp:', new Date().getTime() - timeStamp);
55
+ setLoaded(true);
56
+ onLoad && onLoad();
57
+ }
58
+ }, [loadedElements, collectFinish]);
59
+ var getLoadCount = function (node) {
34
60
  if (!node)
35
- return preCount;
36
- var temp = 0;
61
+ return;
37
62
  if (node.tagName.toLowerCase() === 'img' || (node.style && node.style.backgroundImage)) {
38
- temp++;
39
- // console.log(node.id);
63
+ // node.id = 'img_' + cnt++;
64
+ setCollectSrcs(function (prevRecords) {
65
+ var src = getEleSrc(node);
66
+ if (src == '' || prevRecords.includes(src)) {
67
+ return prevRecords;
68
+ }
69
+ else {
70
+ return __spreadArray(__spreadArray([], prevRecords, true), [src], false);
71
+ }
72
+ });
40
73
  node.addEventListener('load', handleLoad);
41
74
  }
42
75
  node.childNodes &&
43
76
  node.childNodes.forEach(function (child) {
44
- temp += getLoadCount(child, temp);
77
+ getLoadCount(child);
45
78
  });
46
- return temp;
79
+ return;
47
80
  };
48
- useEffect(function () {
49
- if (loaded && onLoad) {
50
- onLoad();
81
+ var getEleSrc = function (node) {
82
+ if (node.tagName.toLowerCase() === 'img' || (node.style && node.style.backgroundImage)) {
83
+ var src = node.src || node.style.backgroundImage || '';
84
+ if (src.startsWith('url(')) {
85
+ src = src.substring(4, src.length - 1);
86
+ }
87
+ if (onlyHttp && (!src.startsWith('http') || src.startsWith('http://localhost'))) {
88
+ return '';
89
+ }
90
+ return src;
51
91
  }
52
- }, [loaded]);
92
+ return '';
93
+ };
53
94
  var handleLoad = function (event) {
54
95
  setLoadedElements(function (prevElements) {
55
- if (prevElements.includes(event.target)) {
96
+ var src = getEleSrc(event.target);
97
+ if (src == '' || prevElements.includes(src)) {
56
98
  return prevElements;
57
99
  }
58
100
  else {
59
- var newElements = __spreadArray(__spreadArray([], prevElements, true), [event.target], false);
60
- if (newElements.length >= total) {
61
- setLoaded(true);
62
- }
63
- return newElements;
101
+ return __spreadArray(__spreadArray([], prevElements, true), [src], false);
64
102
  }
65
103
  });
66
104
  };