@fangzhongya/page 0.0.31 → 0.0.32

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 (107) hide show
  1. package/dist/_virtual/browser-detector.cjs +4 -0
  2. package/dist/_virtual/browser-detector.js +4 -0
  3. package/dist/_virtual/collection-utils.cjs +4 -0
  4. package/dist/_virtual/collection-utils.js +4 -0
  5. package/dist/_virtual/element-resize-detector.cjs +7 -0
  6. package/dist/_virtual/element-resize-detector.js +7 -0
  7. package/dist/_virtual/utils.cjs +4 -0
  8. package/dist/_virtual/utils.js +4 -0
  9. package/dist/components/design/design-grids2.cjs +15 -7
  10. package/dist/components/design/design-grids2.js +17 -9
  11. package/dist/components/design/design-operate2.cjs +2 -6
  12. package/dist/components/design/design-operate2.js +2 -6
  13. package/dist/components/design/design-resizable2.cjs +8 -3
  14. package/dist/components/design/design-resizable2.js +9 -4
  15. package/dist/components/design/grids/components/GridItem.cjs +5 -0
  16. package/dist/components/design/grids/components/GridItem.css +60 -0
  17. package/dist/components/design/grids/components/GridItem.js +5 -0
  18. package/dist/components/design/grids/components/GridItem2.cjs +502 -0
  19. package/dist/components/design/grids/components/GridItem2.js +502 -0
  20. package/dist/components/design/grids/components/GridLayout.cjs +5 -0
  21. package/dist/components/design/grids/components/GridLayout.css +5 -0
  22. package/dist/components/design/grids/components/GridLayout.js +5 -0
  23. package/dist/components/design/grids/components/GridLayout2.cjs +432 -0
  24. package/dist/components/design/grids/components/GridLayout2.js +432 -0
  25. package/dist/components/design/grids/composables/useGridProvider.cjs +13 -0
  26. package/dist/components/design/grids/composables/useGridProvider.d.ts +1 -0
  27. package/dist/components/design/grids/composables/useGridProvider.js +13 -0
  28. package/dist/components/design/grids/constants.cjs +8 -0
  29. package/dist/components/design/grids/constants.d.ts +5 -0
  30. package/dist/components/design/grids/constants.js +8 -0
  31. package/dist/components/design/grids/helpers/DOM.cjs +15 -0
  32. package/dist/components/design/grids/helpers/DOM.d.ts +2 -0
  33. package/dist/components/design/grids/helpers/DOM.js +15 -0
  34. package/dist/components/design/grids/helpers/draggableUtils.cjs +17 -0
  35. package/dist/components/design/grids/helpers/draggableUtils.d.ts +12 -0
  36. package/dist/components/design/grids/helpers/draggableUtils.js +17 -0
  37. package/dist/components/design/grids/helpers/responsiveUtils.cjs +43 -0
  38. package/dist/components/design/grids/helpers/responsiveUtils.d.ts +5 -0
  39. package/dist/components/design/grids/helpers/responsiveUtils.js +43 -0
  40. package/dist/components/design/grids/helpers/utils.cjs +222 -0
  41. package/dist/components/design/grids/helpers/utils.d.ts +24 -0
  42. package/dist/components/design/grids/helpers/utils.js +222 -0
  43. package/dist/components/design/grids/types/components.d.ts +20 -0
  44. package/dist/components/design/grids/types/grid-item.d.ts +45 -0
  45. package/dist/components/design/grids/types/grid-layout.d.ts +48 -0
  46. package/dist/components/design/grids/types/helpers.cjs +10 -0
  47. package/dist/components/design/grids/types/helpers.d.ts +33 -0
  48. package/dist/components/design/grids/types/helpers.js +10 -0
  49. package/dist/components/design/grids/types/index.d.ts +4 -0
  50. package/dist/components/design/{resizable2.cjs → resizable/resizable2.cjs} +21 -20
  51. package/dist/components/design/{resizable2.js → resizable/resizable2.js} +21 -20
  52. package/dist/components/index.css +33 -85
  53. package/dist/components/index2.cjs +22 -13
  54. package/dist/components/index2.js +23 -14
  55. package/dist/components/set/util.cjs +4 -2
  56. package/dist/components/set/util.d.ts +1 -0
  57. package/dist/components/set/util.js +4 -2
  58. package/dist/components/top/index2.cjs +47 -21
  59. package/dist/components/top/index2.js +53 -27
  60. package/dist/config/basics.cjs +2 -2
  61. package/dist/config/basics.js +2 -2
  62. package/dist/css/style.css +1361 -0
  63. package/dist/css/style2.css +5 -0
  64. package/dist/css/style3.css +3 -0
  65. package/dist/css/style4.css +117 -0
  66. package/dist/css/style5.css +5 -0
  67. package/dist/css/style6.css +60 -0
  68. package/dist/effect/design.cjs +1 -3
  69. package/dist/effect/design.js +1 -3
  70. package/dist/expand/{chunk-DSW4WFHO.cjs → chunk-QFRDDTJR.cjs} +1 -1
  71. package/dist/expand/{chunk-JTAMOZ6S.js → chunk-WMN3TQLR.js} +1 -1
  72. package/dist/expand/components.cjs +3 -3
  73. package/dist/expand/components.js +1 -1
  74. package/dist/expand/config.cjs +2 -2
  75. package/dist/expand/config.js +1 -1
  76. package/dist/index.css +1554 -0
  77. package/dist/node_modules/.pnpm/batch-processor@1.0.0/node_modules/batch-processor/src/batch-processor.cjs +121 -0
  78. package/dist/node_modules/.pnpm/batch-processor@1.0.0/node_modules/batch-processor/src/batch-processor.js +121 -0
  79. package/dist/node_modules/.pnpm/batch-processor@1.0.0/node_modules/batch-processor/src/utils.cjs +22 -0
  80. package/dist/node_modules/.pnpm/batch-processor@1.0.0/node_modules/batch-processor/src/utils.js +22 -0
  81. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/browser-detector.cjs +37 -0
  82. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/browser-detector.js +37 -0
  83. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/collection-utils.cjs +22 -0
  84. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/collection-utils.js +22 -0
  85. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/detection-strategy/object.cjs +165 -0
  86. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/detection-strategy/object.js +165 -0
  87. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/detection-strategy/scroll.cjs +493 -0
  88. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/detection-strategy/scroll.js +493 -0
  89. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/element-resize-detector.cjs +241 -0
  90. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/element-resize-detector.js +241 -0
  91. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/element-utils.cjs +34 -0
  92. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/element-utils.js +34 -0
  93. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/id-generator.cjs +21 -0
  94. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/id-generator.js +21 -0
  95. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/id-handler.cjs +36 -0
  96. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/id-handler.js +36 -0
  97. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/listener-handler.cjs +51 -0
  98. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/listener-handler.js +51 -0
  99. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/reporter.cjs +39 -0
  100. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/reporter.js +39 -0
  101. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/state-handler.cjs +28 -0
  102. package/dist/node_modules/.pnpm/element-resize-detector@1.2.4/node_modules/element-resize-detector/src/state-handler.js +28 -0
  103. package/package.json +6 -4
  104. package/dist/node_modules/.pnpm/@derpierre65_vue3-dragable-_7ae65b0afcc3e3050cfdea0ae383bda4/node_modules/@derpierre65/vue3-dragable-grid-layout/dist/vue3-drr-grid-layout.cjs +0 -5963
  105. package/dist/node_modules/.pnpm/@derpierre65_vue3-dragable-_7ae65b0afcc3e3050cfdea0ae383bda4/node_modules/@derpierre65/vue3-dragable-grid-layout/dist/vue3-drr-grid-layout.js +0 -5963
  106. /package/dist/components/design/{resizable.cjs → resizable/resizable.cjs} +0 -0
  107. /package/dist/components/design/{resizable.js → resizable/resizable.js} +0 -0
@@ -0,0 +1,493 @@
1
+ import "../../../../../../../_virtual/_commonjsHelpers.js";
2
+ import { __require as requireCollectionUtils } from "../collection-utils.js";
3
+ var scroll;
4
+ var hasRequiredScroll;
5
+ function requireScroll() {
6
+ if (hasRequiredScroll) return scroll;
7
+ hasRequiredScroll = 1;
8
+ "use strict";
9
+ var forEach = requireCollectionUtils().forEach;
10
+ scroll = function(options) {
11
+ options = options || {};
12
+ var reporter = options.reporter;
13
+ var batchProcessor = options.batchProcessor;
14
+ var getState = options.stateHandler.getState;
15
+ var hasState = options.stateHandler.hasState;
16
+ var idHandler = options.idHandler;
17
+ if (!batchProcessor) {
18
+ throw new Error("Missing required dependency: batchProcessor");
19
+ }
20
+ if (!reporter) {
21
+ throw new Error("Missing required dependency: reporter.");
22
+ }
23
+ var scrollbarSizes = getScrollbarSizes();
24
+ var styleId = "erd_scroll_detection_scrollbar_style";
25
+ var detectionContainerClass = "erd_scroll_detection_container";
26
+ function initDocument(targetDocument) {
27
+ injectScrollStyle(targetDocument, styleId, detectionContainerClass);
28
+ }
29
+ initDocument(window.document);
30
+ function buildCssTextString(rules) {
31
+ var seperator = options.important ? " !important; " : "; ";
32
+ return (rules.join(seperator) + seperator).trim();
33
+ }
34
+ function getScrollbarSizes() {
35
+ var width = 500;
36
+ var height = 500;
37
+ var child = document.createElement("div");
38
+ child.style.cssText = buildCssTextString(["position: absolute", "width: " + width * 2 + "px", "height: " + height * 2 + "px", "visibility: hidden", "margin: 0", "padding: 0"]);
39
+ var container = document.createElement("div");
40
+ container.style.cssText = buildCssTextString(["position: absolute", "width: " + width + "px", "height: " + height + "px", "overflow: scroll", "visibility: none", "top: " + -width * 3 + "px", "left: " + -height * 3 + "px", "visibility: hidden", "margin: 0", "padding: 0"]);
41
+ container.appendChild(child);
42
+ document.body.insertBefore(container, document.body.firstChild);
43
+ var widthSize = width - container.clientWidth;
44
+ var heightSize = height - container.clientHeight;
45
+ document.body.removeChild(container);
46
+ return {
47
+ width: widthSize,
48
+ height: heightSize
49
+ };
50
+ }
51
+ function injectScrollStyle(targetDocument, styleId2, containerClass) {
52
+ function injectStyle(style2, method) {
53
+ method = method || function(element) {
54
+ targetDocument.head.appendChild(element);
55
+ };
56
+ var styleElement = targetDocument.createElement("style");
57
+ styleElement.innerHTML = style2;
58
+ styleElement.id = styleId2;
59
+ method(styleElement);
60
+ return styleElement;
61
+ }
62
+ if (!targetDocument.getElementById(styleId2)) {
63
+ var containerAnimationClass = containerClass + "_animation";
64
+ var containerAnimationActiveClass = containerClass + "_animation_active";
65
+ var style = "/* Created by the element-resize-detector library. */\n";
66
+ style += "." + containerClass + " > div::-webkit-scrollbar { " + buildCssTextString(["display: none"]) + " }\n\n";
67
+ style += "." + containerAnimationActiveClass + " { " + buildCssTextString(["-webkit-animation-duration: 0.1s", "animation-duration: 0.1s", "-webkit-animation-name: " + containerAnimationClass, "animation-name: " + containerAnimationClass]) + " }\n";
68
+ style += "@-webkit-keyframes " + containerAnimationClass + " { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\n";
69
+ style += "@keyframes " + containerAnimationClass + " { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }";
70
+ injectStyle(style);
71
+ }
72
+ }
73
+ function addAnimationClass(element) {
74
+ element.className += " " + detectionContainerClass + "_animation_active";
75
+ }
76
+ function addEvent(el, name, cb) {
77
+ if (el.addEventListener) {
78
+ el.addEventListener(name, cb);
79
+ } else if (el.attachEvent) {
80
+ el.attachEvent("on" + name, cb);
81
+ } else {
82
+ return reporter.error("[scroll] Don't know how to add event listeners.");
83
+ }
84
+ }
85
+ function removeEvent(el, name, cb) {
86
+ if (el.removeEventListener) {
87
+ el.removeEventListener(name, cb);
88
+ } else if (el.detachEvent) {
89
+ el.detachEvent("on" + name, cb);
90
+ } else {
91
+ return reporter.error("[scroll] Don't know how to remove event listeners.");
92
+ }
93
+ }
94
+ function getExpandElement(element) {
95
+ return getState(element).container.childNodes[0].childNodes[0].childNodes[0];
96
+ }
97
+ function getShrinkElement(element) {
98
+ return getState(element).container.childNodes[0].childNodes[0].childNodes[1];
99
+ }
100
+ function addListener(element, listener) {
101
+ var listeners = getState(element).listeners;
102
+ if (!listeners.push) {
103
+ throw new Error("Cannot add listener to an element that is not detectable.");
104
+ }
105
+ getState(element).listeners.push(listener);
106
+ }
107
+ function makeDetectable(options2, element, callback) {
108
+ if (!callback) {
109
+ callback = element;
110
+ element = options2;
111
+ options2 = null;
112
+ }
113
+ options2 = options2 || {};
114
+ function debug() {
115
+ if (options2.debug) {
116
+ var args = Array.prototype.slice.call(arguments);
117
+ args.unshift(idHandler.get(element), "Scroll: ");
118
+ if (reporter.log.apply) {
119
+ reporter.log.apply(null, args);
120
+ } else {
121
+ for (var i = 0; i < args.length; i++) {
122
+ reporter.log(args[i]);
123
+ }
124
+ }
125
+ }
126
+ }
127
+ function isDetached(element2) {
128
+ function isInDocument(element3) {
129
+ var isInShadowRoot = element3.getRootNode && element3.getRootNode().contains(element3);
130
+ return element3 === element3.ownerDocument.body || element3.ownerDocument.body.contains(element3) || isInShadowRoot;
131
+ }
132
+ if (!isInDocument(element2)) {
133
+ return true;
134
+ }
135
+ if (window.getComputedStyle(element2) === null) {
136
+ return true;
137
+ }
138
+ return false;
139
+ }
140
+ function isUnrendered(element2) {
141
+ var container = getState(element2).container.childNodes[0];
142
+ var style = window.getComputedStyle(container);
143
+ return !style.width || style.width.indexOf("px") === -1;
144
+ }
145
+ function getStyle() {
146
+ var elementStyle = window.getComputedStyle(element);
147
+ var style = {};
148
+ style.position = elementStyle.position;
149
+ style.width = element.offsetWidth;
150
+ style.height = element.offsetHeight;
151
+ style.top = elementStyle.top;
152
+ style.right = elementStyle.right;
153
+ style.bottom = elementStyle.bottom;
154
+ style.left = elementStyle.left;
155
+ style.widthCSS = elementStyle.width;
156
+ style.heightCSS = elementStyle.height;
157
+ return style;
158
+ }
159
+ function storeStartSize() {
160
+ var style = getStyle();
161
+ getState(element).startSize = {
162
+ width: style.width,
163
+ height: style.height
164
+ };
165
+ debug("Element start size", getState(element).startSize);
166
+ }
167
+ function initListeners() {
168
+ getState(element).listeners = [];
169
+ }
170
+ function storeStyle() {
171
+ debug("storeStyle invoked.");
172
+ if (!getState(element)) {
173
+ debug("Aborting because element has been uninstalled");
174
+ return;
175
+ }
176
+ var style = getStyle();
177
+ getState(element).style = style;
178
+ }
179
+ function storeCurrentSize(element2, width, height) {
180
+ getState(element2).lastWidth = width;
181
+ getState(element2).lastHeight = height;
182
+ }
183
+ function getExpandChildElement(element2) {
184
+ return getExpandElement(element2).childNodes[0];
185
+ }
186
+ function getWidthOffset() {
187
+ return 2 * scrollbarSizes.width + 1;
188
+ }
189
+ function getHeightOffset() {
190
+ return 2 * scrollbarSizes.height + 1;
191
+ }
192
+ function getExpandWidth(width) {
193
+ return width + 10 + getWidthOffset();
194
+ }
195
+ function getExpandHeight(height) {
196
+ return height + 10 + getHeightOffset();
197
+ }
198
+ function getShrinkWidth(width) {
199
+ return width * 2 + getWidthOffset();
200
+ }
201
+ function getShrinkHeight(height) {
202
+ return height * 2 + getHeightOffset();
203
+ }
204
+ function positionScrollbars(element2, width, height) {
205
+ var expand = getExpandElement(element2);
206
+ var shrink = getShrinkElement(element2);
207
+ var expandWidth = getExpandWidth(width);
208
+ var expandHeight = getExpandHeight(height);
209
+ var shrinkWidth = getShrinkWidth(width);
210
+ var shrinkHeight = getShrinkHeight(height);
211
+ expand.scrollLeft = expandWidth;
212
+ expand.scrollTop = expandHeight;
213
+ shrink.scrollLeft = shrinkWidth;
214
+ shrink.scrollTop = shrinkHeight;
215
+ }
216
+ function injectContainerElement() {
217
+ var container = getState(element).container;
218
+ if (!container) {
219
+ container = document.createElement("div");
220
+ container.className = detectionContainerClass;
221
+ container.style.cssText = buildCssTextString(["visibility: hidden", "display: inline", "width: 0px", "height: 0px", "z-index: -1", "overflow: hidden", "margin: 0", "padding: 0"]);
222
+ getState(element).container = container;
223
+ addAnimationClass(container);
224
+ element.appendChild(container);
225
+ var onAnimationStart = function() {
226
+ getState(element).onRendered && getState(element).onRendered();
227
+ };
228
+ addEvent(container, "animationstart", onAnimationStart);
229
+ getState(element).onAnimationStart = onAnimationStart;
230
+ }
231
+ return container;
232
+ }
233
+ function injectScrollElements() {
234
+ function alterPositionStyles() {
235
+ var style = getState(element).style;
236
+ if (style.position === "static") {
237
+ element.style.setProperty("position", "relative", options2.important ? "important" : "");
238
+ var removeRelativeStyles = function(reporter2, element2, style2, property) {
239
+ function getNumericalValue(value2) {
240
+ return value2.replace(/[^-\d\.]/g, "");
241
+ }
242
+ var value = style2[property];
243
+ if (value !== "auto" && getNumericalValue(value) !== "0") {
244
+ reporter2.warn("An element that is positioned static has style." + property + "=" + value + " which is ignored due to the static positioning. The element will need to be positioned relative, so the style." + property + " will be set to 0. Element: ", element2);
245
+ element2.style[property] = 0;
246
+ }
247
+ };
248
+ removeRelativeStyles(reporter, element, style, "top");
249
+ removeRelativeStyles(reporter, element, style, "right");
250
+ removeRelativeStyles(reporter, element, style, "bottom");
251
+ removeRelativeStyles(reporter, element, style, "left");
252
+ }
253
+ }
254
+ function getLeftTopBottomRightCssText(left, top, bottom, right) {
255
+ left = !left ? "0" : left + "px";
256
+ top = !top ? "0" : top + "px";
257
+ bottom = !bottom ? "0" : bottom + "px";
258
+ right = !right ? "0" : right + "px";
259
+ return ["left: " + left, "top: " + top, "right: " + right, "bottom: " + bottom];
260
+ }
261
+ debug("Injecting elements");
262
+ if (!getState(element)) {
263
+ debug("Aborting because element has been uninstalled");
264
+ return;
265
+ }
266
+ alterPositionStyles();
267
+ var rootContainer = getState(element).container;
268
+ if (!rootContainer) {
269
+ rootContainer = injectContainerElement();
270
+ }
271
+ var scrollbarWidth = scrollbarSizes.width;
272
+ var scrollbarHeight = scrollbarSizes.height;
273
+ var containerContainerStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: hidden", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%", "left: 0px", "top: 0px"]);
274
+ var containerStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: hidden", "z-index: -1", "visibility: hidden"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));
275
+ var expandStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: scroll", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%"]);
276
+ var shrinkStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: scroll", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%"]);
277
+ var expandChildStyle = buildCssTextString(["position: absolute", "left: 0", "top: 0"]);
278
+ var shrinkChildStyle = buildCssTextString(["position: absolute", "width: 200%", "height: 200%"]);
279
+ var containerContainer = document.createElement("div");
280
+ var container = document.createElement("div");
281
+ var expand = document.createElement("div");
282
+ var expandChild = document.createElement("div");
283
+ var shrink = document.createElement("div");
284
+ var shrinkChild = document.createElement("div");
285
+ containerContainer.dir = "ltr";
286
+ containerContainer.style.cssText = containerContainerStyle;
287
+ containerContainer.className = detectionContainerClass;
288
+ container.className = detectionContainerClass;
289
+ container.style.cssText = containerStyle;
290
+ expand.style.cssText = expandStyle;
291
+ expandChild.style.cssText = expandChildStyle;
292
+ shrink.style.cssText = shrinkStyle;
293
+ shrinkChild.style.cssText = shrinkChildStyle;
294
+ expand.appendChild(expandChild);
295
+ shrink.appendChild(shrinkChild);
296
+ container.appendChild(expand);
297
+ container.appendChild(shrink);
298
+ containerContainer.appendChild(container);
299
+ rootContainer.appendChild(containerContainer);
300
+ function onExpandScroll() {
301
+ var state = getState(element);
302
+ if (state && state.onExpand) {
303
+ state.onExpand();
304
+ } else {
305
+ debug("Aborting expand scroll handler: element has been uninstalled");
306
+ }
307
+ }
308
+ function onShrinkScroll() {
309
+ var state = getState(element);
310
+ if (state && state.onShrink) {
311
+ state.onShrink();
312
+ } else {
313
+ debug("Aborting shrink scroll handler: element has been uninstalled");
314
+ }
315
+ }
316
+ addEvent(expand, "scroll", onExpandScroll);
317
+ addEvent(shrink, "scroll", onShrinkScroll);
318
+ getState(element).onExpandScroll = onExpandScroll;
319
+ getState(element).onShrinkScroll = onShrinkScroll;
320
+ }
321
+ function registerListenersAndPositionElements() {
322
+ function updateChildSizes(element2, width, height) {
323
+ var expandChild = getExpandChildElement(element2);
324
+ var expandWidth = getExpandWidth(width);
325
+ var expandHeight = getExpandHeight(height);
326
+ expandChild.style.setProperty("width", expandWidth + "px", options2.important ? "important" : "");
327
+ expandChild.style.setProperty("height", expandHeight + "px", options2.important ? "important" : "");
328
+ }
329
+ function updateDetectorElements(done) {
330
+ var width = element.offsetWidth;
331
+ var height = element.offsetHeight;
332
+ var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;
333
+ debug("Storing current size", width, height);
334
+ storeCurrentSize(element, width, height);
335
+ batchProcessor.add(0, function performUpdateChildSizes() {
336
+ if (!sizeChanged) {
337
+ return;
338
+ }
339
+ if (!getState(element)) {
340
+ debug("Aborting because element has been uninstalled");
341
+ return;
342
+ }
343
+ if (!areElementsInjected()) {
344
+ debug("Aborting because element container has not been initialized");
345
+ return;
346
+ }
347
+ if (options2.debug) {
348
+ var w = element.offsetWidth;
349
+ var h = element.offsetHeight;
350
+ if (w !== width || h !== height) {
351
+ reporter.warn(idHandler.get(element), "Scroll: Size changed before updating detector elements.");
352
+ }
353
+ }
354
+ updateChildSizes(element, width, height);
355
+ });
356
+ batchProcessor.add(1, function updateScrollbars() {
357
+ if (!getState(element)) {
358
+ debug("Aborting because element has been uninstalled");
359
+ return;
360
+ }
361
+ if (!areElementsInjected()) {
362
+ debug("Aborting because element container has not been initialized");
363
+ return;
364
+ }
365
+ positionScrollbars(element, width, height);
366
+ });
367
+ if (sizeChanged && done) {
368
+ batchProcessor.add(2, function() {
369
+ if (!getState(element)) {
370
+ debug("Aborting because element has been uninstalled");
371
+ return;
372
+ }
373
+ if (!areElementsInjected()) {
374
+ debug("Aborting because element container has not been initialized");
375
+ return;
376
+ }
377
+ done();
378
+ });
379
+ }
380
+ }
381
+ function areElementsInjected() {
382
+ return !!getState(element).container;
383
+ }
384
+ function notifyListenersIfNeeded() {
385
+ function isFirstNotify() {
386
+ return getState(element).lastNotifiedWidth === void 0;
387
+ }
388
+ debug("notifyListenersIfNeeded invoked");
389
+ var state = getState(element);
390
+ if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {
391
+ return debug("Not notifying: Size is the same as the start size, and there has been no notification yet.");
392
+ }
393
+ if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {
394
+ return debug("Not notifying: Size already notified");
395
+ }
396
+ debug("Current size not notified, notifying...");
397
+ state.lastNotifiedWidth = state.lastWidth;
398
+ state.lastNotifiedHeight = state.lastHeight;
399
+ forEach(getState(element).listeners, function(listener) {
400
+ listener(element);
401
+ });
402
+ }
403
+ function handleRender() {
404
+ debug("startanimation triggered.");
405
+ if (isUnrendered(element)) {
406
+ debug("Ignoring since element is still unrendered...");
407
+ return;
408
+ }
409
+ debug("Element rendered.");
410
+ var expand = getExpandElement(element);
411
+ var shrink = getShrinkElement(element);
412
+ if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {
413
+ debug("Scrollbars out of sync. Updating detector elements...");
414
+ updateDetectorElements(notifyListenersIfNeeded);
415
+ }
416
+ }
417
+ function handleScroll() {
418
+ debug("Scroll detected.");
419
+ if (isUnrendered(element)) {
420
+ debug("Scroll event fired while unrendered. Ignoring...");
421
+ return;
422
+ }
423
+ updateDetectorElements(notifyListenersIfNeeded);
424
+ }
425
+ debug("registerListenersAndPositionElements invoked.");
426
+ if (!getState(element)) {
427
+ debug("Aborting because element has been uninstalled");
428
+ return;
429
+ }
430
+ getState(element).onRendered = handleRender;
431
+ getState(element).onExpand = handleScroll;
432
+ getState(element).onShrink = handleScroll;
433
+ var style = getState(element).style;
434
+ updateChildSizes(element, style.width, style.height);
435
+ }
436
+ function finalizeDomMutation() {
437
+ debug("finalizeDomMutation invoked.");
438
+ if (!getState(element)) {
439
+ debug("Aborting because element has been uninstalled");
440
+ return;
441
+ }
442
+ var style = getState(element).style;
443
+ storeCurrentSize(element, style.width, style.height);
444
+ positionScrollbars(element, style.width, style.height);
445
+ }
446
+ function ready() {
447
+ callback(element);
448
+ }
449
+ function install() {
450
+ debug("Installing...");
451
+ initListeners();
452
+ storeStartSize();
453
+ batchProcessor.add(0, storeStyle);
454
+ batchProcessor.add(1, injectScrollElements);
455
+ batchProcessor.add(2, registerListenersAndPositionElements);
456
+ batchProcessor.add(3, finalizeDomMutation);
457
+ batchProcessor.add(4, ready);
458
+ }
459
+ debug("Making detectable...");
460
+ if (isDetached(element)) {
461
+ debug("Element is detached");
462
+ injectContainerElement();
463
+ debug("Waiting until element is attached...");
464
+ getState(element).onRendered = function() {
465
+ debug("Element is now attached");
466
+ install();
467
+ };
468
+ } else {
469
+ install();
470
+ }
471
+ }
472
+ function uninstall(element) {
473
+ var state = getState(element);
474
+ if (!state) {
475
+ return;
476
+ }
477
+ state.onExpandScroll && removeEvent(getExpandElement(element), "scroll", state.onExpandScroll);
478
+ state.onShrinkScroll && removeEvent(getShrinkElement(element), "scroll", state.onShrinkScroll);
479
+ state.onAnimationStart && removeEvent(state.container, "animationstart", state.onAnimationStart);
480
+ state.container && element.removeChild(state.container);
481
+ }
482
+ return {
483
+ makeDetectable,
484
+ addListener,
485
+ uninstall,
486
+ initDocument
487
+ };
488
+ };
489
+ return scroll;
490
+ }
491
+ export {
492
+ requireScroll as __require
493
+ };