@ui5/webcomponents-base 2.3.0-rc.0 → 2.3.0-rc.2

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 (34) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/.tsbuildinfobuild +1 -1
  3. package/dist/Boot.js +1 -1
  4. package/dist/Boot.js.map +1 -1
  5. package/dist/UI5Element.d.ts +3 -5
  6. package/dist/UI5Element.js +7 -9
  7. package/dist/UI5Element.js.map +1 -1
  8. package/dist/custom-elements-internal.json +15 -0
  9. package/dist/custom-elements.json +15 -0
  10. package/dist/features/F6Navigation.d.ts +3 -3
  11. package/dist/features/F6Navigation.js +22 -6
  12. package/dist/features/F6Navigation.js.map +1 -1
  13. package/dist/generated/VersionInfo.js +3 -3
  14. package/dist/generated/VersionInfo.js.map +1 -1
  15. package/dist/prod/Boot.js +1 -1
  16. package/dist/prod/Boot.js.map +2 -2
  17. package/dist/prod/UI5Element.js +1 -1
  18. package/dist/prod/UI5Element.js.map +2 -2
  19. package/dist/prod/features/F6Navigation.js +1 -1
  20. package/dist/prod/features/F6Navigation.js.map +3 -3
  21. package/dist/prod/generated/VersionInfo.js +1 -1
  22. package/dist/prod/generated/VersionInfo.js.map +1 -1
  23. package/dist/prod/util/SelectionAssistant.js +2 -0
  24. package/dist/prod/util/SelectionAssistant.js.map +7 -0
  25. package/dist/prod/util/dragAndDrop/findClosestPosition.js +1 -1
  26. package/dist/prod/util/dragAndDrop/findClosestPosition.js.map +3 -3
  27. package/dist/util/SelectionAssistant.d.ts +12 -0
  28. package/dist/util/SelectionAssistant.js +79 -0
  29. package/dist/util/SelectionAssistant.js.map +1 -0
  30. package/dist/util/dragAndDrop/findClosestPosition.d.ts +4 -4
  31. package/dist/util/dragAndDrop/findClosestPosition.js +28 -13
  32. package/dist/util/dragAndDrop/findClosestPosition.js.map +1 -1
  33. package/dist/util/getClassCopy.d.ts +7 -16
  34. package/package.json +3 -3
@@ -0,0 +1,79 @@
1
+ import getEffectiveScrollbarStyle from "../util/getEffectiveScrollbarStyle.js";
2
+ const copyAndApplyStyles = (element, copiedElement) => {
3
+ const computedStyles = getComputedStyle(element);
4
+ for (let i = 0; i < computedStyles.length; i++) {
5
+ const propertyName = computedStyles[i];
6
+ copiedElement.style.setProperty(propertyName, computedStyles.getPropertyValue(propertyName));
7
+ }
8
+ element.tagName === "INPUT" && setInputSpecificStyles(copiedElement);
9
+ copiedElement.style.position = "absolute";
10
+ copiedElement.style.left = `${element.getBoundingClientRect().left}px`;
11
+ copiedElement.style.top = `${element.getBoundingClientRect().top}px`;
12
+ setUnInteractableStyles(copiedElement);
13
+ document.body.appendChild(copiedElement);
14
+ };
15
+ const setUnInteractableStyles = (element) => {
16
+ element.style.position = "absolute";
17
+ element.style.userSelect = "none";
18
+ element.style.pointerEvents = "none";
19
+ element.style.zIndex = "-1";
20
+ element.style.opacity = "0";
21
+ };
22
+ const setInputSpecificStyles = (element) => {
23
+ element.style.whiteSpace = "nowrap";
24
+ element.style.overflowX = "auto";
25
+ element.style.overflowY = "hidden";
26
+ };
27
+ const applyScrollStylings = () => {
28
+ const sheet = new CSSStyleSheet();
29
+ const styles = getEffectiveScrollbarStyle();
30
+ sheet.replaceSync(styles);
31
+ document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];
32
+ };
33
+ const createCopy = () => {
34
+ const copiedElement = document.createElement("div");
35
+ copiedElement.id = "ui5-selection-mirror";
36
+ copiedElement.contentEditable = "true";
37
+ applyScrollStylings();
38
+ document.body.appendChild(copiedElement);
39
+ };
40
+ const applyScrollPosition = (element, copiedElement) => {
41
+ copiedElement.scrollTop = element.scrollTop;
42
+ copiedElement.scrollLeft = element.scrollLeft;
43
+ };
44
+ const getSelectionCoordinates = (element, mirror) => {
45
+ const { selectionStart, selectionEnd } = element;
46
+ const selectedText = element.value.slice(selectionStart, element.selectionEnd);
47
+ const range = document.createRange();
48
+ range.setStart(mirror.firstChild, selectionEnd - 1);
49
+ range.setEnd(mirror.firstChild, selectionEnd);
50
+ applyScrollPosition(element, mirror);
51
+ const rangeRect = range.getBoundingClientRect();
52
+ const rectObject = {
53
+ x: rangeRect.x,
54
+ y: rangeRect.y,
55
+ width: rangeRect.width,
56
+ height: rangeRect.height,
57
+ top: rangeRect.top,
58
+ right: rangeRect.right,
59
+ bottom: rangeRect.bottom,
60
+ left: rangeRect.left,
61
+ };
62
+ document.body.removeChild(mirror);
63
+ return { ...rectObject, selectedText };
64
+ };
65
+ const getElementSelection = (element) => {
66
+ const innerElement = element.shadowRoot.querySelector("textarea")
67
+ || element.shadowRoot.querySelector("input");
68
+ if (!document.getElementById("ui5-selection-mirror")) {
69
+ createCopy();
70
+ }
71
+ const copiedElement = document.getElementById("ui5-selection-mirror");
72
+ copiedElement.textContent = innerElement.value;
73
+ if (innerElement) {
74
+ copyAndApplyStyles(innerElement, copiedElement);
75
+ }
76
+ return getSelectionCoordinates(innerElement, copiedElement);
77
+ };
78
+ export default getElementSelection;
79
+ //# sourceMappingURL=SelectionAssistant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectionAssistant.js","sourceRoot":"","sources":["../../src/util/SelectionAssistant.ts"],"names":[],"mappings":"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","sourcesContent":["import getEffectiveScrollbarStyle from \"../util/getEffectiveScrollbarStyle.js\";\n\nconst copyAndApplyStyles = (element: HTMLElement, copiedElement: HTMLElement) => {\n\tconst computedStyles = getComputedStyle(element);\n\n\tfor (let i = 0; i < computedStyles.length; i++) {\n\t\tconst propertyName = computedStyles[i];\n\t\tcopiedElement.style.setProperty(propertyName, computedStyles.getPropertyValue(propertyName));\n\t}\n\n\telement.tagName === \"INPUT\" && setInputSpecificStyles(copiedElement);\n\n\tcopiedElement.style.position = \"absolute\";\n\tcopiedElement.style.left = `${element.getBoundingClientRect().left}px`;\n\tcopiedElement.style.top = `${element.getBoundingClientRect().top}px`;\n\n\tsetUnInteractableStyles(copiedElement);\n\n\tdocument.body.appendChild(copiedElement);\n};\n\nconst setUnInteractableStyles = (element: HTMLElement) => {\n\telement.style.position = \"absolute\";\n\telement.style.userSelect = \"none\";\n\telement.style.pointerEvents = \"none\";\n\telement.style.zIndex = \"-1\";\n\telement.style.opacity = \"0\";\n};\n\nconst setInputSpecificStyles = (element: HTMLElement) => {\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflowX = \"auto\";\n\telement.style.overflowY = \"hidden\";\n};\n\nconst applyScrollStylings = () => {\n\tconst sheet = new CSSStyleSheet();\n\tconst styles = getEffectiveScrollbarStyle();\n\n\tsheet.replaceSync(styles);\n\n\tdocument.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];\n};\n\nconst createCopy = () => {\n\tconst copiedElement = document.createElement(\"div\");\n\n\tcopiedElement.id = \"ui5-selection-mirror\";\n\tcopiedElement.contentEditable = \"true\";\n\n\tapplyScrollStylings();\n\n\tdocument.body.appendChild(copiedElement);\n};\n\nconst applyScrollPosition = (element: HTMLElement, copiedElement: HTMLElement) => {\n\tcopiedElement.scrollTop = element.scrollTop;\n\tcopiedElement.scrollLeft = element.scrollLeft;\n};\n\nconst getSelectionCoordinates = (element: HTMLInputElement | HTMLTextAreaElement, mirror: HTMLDivElement) => {\n\tconst { selectionStart, selectionEnd } = element;\n\tconst selectedText = element.value.slice(\n\t\tselectionStart!,\n\t\telement.selectionEnd!,\n\t);\n\tconst range = document.createRange();\n\n\trange.setStart(mirror.firstChild!, selectionEnd! - 1);\n\trange.setEnd(mirror.firstChild!, selectionEnd!);\n\n\tapplyScrollPosition(element, mirror);\n\n\tconst rangeRect = range.getBoundingClientRect();\n\tconst rectObject = {\n\t\tx: rangeRect.x,\n\t\ty: rangeRect.y,\n\t\twidth: rangeRect.width,\n\t\theight: rangeRect.height,\n\t\ttop: rangeRect.top,\n\t\tright: rangeRect.right,\n\t\tbottom: rangeRect.bottom,\n\t\tleft: rangeRect.left,\n\t};\n\n\tdocument.body.removeChild(mirror);\n\n\treturn { ...rectObject, selectedText };\n};\n\nconst getElementSelection = (element: HTMLElement) => {\n\tconst innerElement = element.shadowRoot!.querySelector(\"textarea\")\n\t\t|| element.shadowRoot!.querySelector(\"input\");\n\n\tif (!document.getElementById(\"ui5-selection-mirror\")) {\n\t\tcreateCopy();\n\t}\n\n\tconst copiedElement = document.getElementById(\n\t\t\"ui5-selection-mirror\",\n\t)!;\n\n\tcopiedElement.textContent = innerElement!.value;\n\n\tif (innerElement) {\n\t\tcopyAndApplyStyles(innerElement, copiedElement)!;\n\t}\n\n\treturn getSelectionCoordinates(innerElement!, copiedElement as HTMLDivElement);\n};\n\nexport default getElementSelection;\n"]}
@@ -4,8 +4,8 @@ declare const findClosestPosition: (elements: Array<HTMLElement>, point: number,
4
4
  element: HTMLElement;
5
5
  placements: MovePlacement[];
6
6
  } | null;
7
- declare const findClosestPositionByKey: (elements: Array<HTMLElement>, element: HTMLElement, e: KeyboardEvent) => {
7
+ declare const findClosestPositionsByKey: (elements: Array<HTMLElement>, element: HTMLElement, e: KeyboardEvent) => {
8
8
  element: HTMLElement;
9
- placement: MovePlacement | undefined;
10
- };
11
- export { findClosestPosition, findClosestPositionByKey, };
9
+ placement: MovePlacement;
10
+ }[];
11
+ export { findClosestPosition, findClosestPositionsByKey, };
@@ -55,33 +55,48 @@ const findClosestPosition = (elements, point, layoutOrientation) => {
55
55
  placements,
56
56
  };
57
57
  };
58
- const findClosestPositionByKey = (elements, element, e) => {
59
- let placement;
58
+ const findClosestPositionsByKey = (elements, element, e) => {
60
59
  let index = elements.indexOf(element);
60
+ const positions = [];
61
61
  switch (e.key) {
62
62
  case "ArrowLeft":
63
63
  case "ArrowUp":
64
- placement = MovePlacement.Before;
65
64
  index--;
65
+ if (index >= 0) {
66
+ positions.push({
67
+ element: elements[index],
68
+ placement: MovePlacement.Before,
69
+ });
70
+ }
66
71
  break;
67
72
  case "ArrowRight":
68
73
  case "ArrowDown":
69
- placement = MovePlacement.After;
70
74
  index++;
75
+ if (index < elements.length) {
76
+ positions.push({
77
+ element: elements[index],
78
+ placement: MovePlacement.After,
79
+ });
80
+ }
71
81
  break;
72
82
  case "Home":
73
- placement = MovePlacement.Before;
74
- index = 0;
83
+ elements.forEach(el => {
84
+ positions.push({
85
+ element: el,
86
+ placement: MovePlacement.Before,
87
+ });
88
+ });
75
89
  break;
76
90
  case "End":
77
- placement = MovePlacement.After;
78
- index = elements.length - 1;
91
+ elements.reverse().forEach(el => {
92
+ positions.push({
93
+ element: el,
94
+ placement: MovePlacement.After,
95
+ });
96
+ });
79
97
  break;
80
98
  }
81
- return {
82
- element: elements[index],
83
- placement,
84
- };
99
+ return positions;
85
100
  };
86
- export { findClosestPosition, findClosestPositionByKey, };
101
+ export { findClosestPosition, findClosestPositionsByKey, };
87
102
  //# sourceMappingURL=findClosestPosition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findClosestPosition.js","sourceRoot":"","sources":["../../../src/util/dragAndDrop/findClosestPosition.ts"],"names":[],"mappings":"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","sourcesContent":["import MovePlacement from \"../../types/MovePlacement.js\";\nimport Orientation from \"../../types/Orientation.js\";\n\nconst closestPlacement = (point: number, beforePoint: number, centerPoint: number, afterPoint: number) => {\n\tconst distToBeforePoint = Math.abs(point - beforePoint);\n\tconst distToCenterPoint = Math.abs(point - centerPoint);\n\tconst distToAfterPoint = Math.abs(point - afterPoint);\n\tconst closestPoint = Math.min(\n\t\tdistToBeforePoint,\n\t\tdistToCenterPoint,\n\t\tdistToAfterPoint,\n\t);\n\tlet placements: Array<MovePlacement> = [];\n\n\tswitch (closestPoint) {\n\tcase distToBeforePoint:\n\t\tplacements = [MovePlacement.Before];\n\t\tbreak;\n\tcase distToCenterPoint:\n\t\tplacements = [MovePlacement.On, distToBeforePoint < distToAfterPoint ? MovePlacement.Before : MovePlacement.After];\n\t\tbreak;\n\tcase distToAfterPoint:\n\t\tplacements = [MovePlacement.After];\n\t\tbreak;\n\t}\n\n\treturn placements;\n};\n\nconst findClosestPosition = (elements: Array<HTMLElement>, point: number, layoutOrientation: Orientation) => {\n\tlet shortestDist = Number.POSITIVE_INFINITY;\n\tlet closestElement: HTMLElement | null = null;\n\n\t// determine which element is most closest to the point\n\tfor (let i = 0; i < elements.length; i++) {\n\t\tconst el = elements[i];\n\t\tconst {\n\t\t\tleft, width, top, height,\n\t\t} = el.getBoundingClientRect();\n\n\t\tlet elemCenter;\n\t\tif (layoutOrientation === Orientation.Vertical) {\n\t\t\telemCenter = top + height / 2;\n\t\t} else { // Horizontal\n\t\t\telemCenter = left + width / 2;\n\t\t}\n\n\t\tconst distanceToCenter = Math.abs(point - elemCenter);\n\n\t\tif (distanceToCenter < shortestDist) {\n\t\t\tshortestDist = distanceToCenter;\n\t\t\tclosestElement = el;\n\t\t}\n\t}\n\n\tif (!closestElement) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\twidth, height, left, right, top, bottom,\n\t} = closestElement.getBoundingClientRect();\n\tlet placements;\n\n\tif (layoutOrientation === Orientation.Vertical) {\n\t\tplacements = closestPlacement(point, top, top + height / 2, bottom);\n\t} else { // Horizontal\n\t\tplacements = closestPlacement(point, left, left + width / 2, right);\n\t}\n\n\treturn {\n\t\telement: closestElement,\n\t\tplacements,\n\t};\n};\n\nconst findClosestPositionByKey = (elements: Array<HTMLElement>, element: HTMLElement, e: KeyboardEvent) => {\n\tlet placement;\n\tlet index = elements.indexOf(element);\n\n\tswitch (e.key) {\n\tcase \"ArrowLeft\":\n\tcase \"ArrowUp\":\n\t\tplacement = MovePlacement.Before;\n\t\tindex--;\n\t\tbreak;\n\tcase \"ArrowRight\":\n\tcase \"ArrowDown\":\n\t\tplacement = MovePlacement.After;\n\t\tindex++;\n\t\tbreak;\n\tcase \"Home\":\n\t\tplacement = MovePlacement.Before;\n\t\tindex = 0;\n\t\tbreak;\n\tcase \"End\":\n\t\tplacement = MovePlacement.After;\n\t\tindex = elements.length - 1;\n\t\tbreak;\n\t}\n\n\treturn {\n\t\telement: elements[index],\n\t\tplacement,\n\t};\n};\n\nexport {\n\tfindClosestPosition,\n\tfindClosestPositionByKey,\n};\n"]}
1
+ {"version":3,"file":"findClosestPosition.js","sourceRoot":"","sources":["../../../src/util/dragAndDrop/findClosestPosition.ts"],"names":[],"mappings":"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","sourcesContent":["import MovePlacement from \"../../types/MovePlacement.js\";\nimport Orientation from \"../../types/Orientation.js\";\n\nconst closestPlacement = (point: number, beforePoint: number, centerPoint: number, afterPoint: number) => {\n\tconst distToBeforePoint = Math.abs(point - beforePoint);\n\tconst distToCenterPoint = Math.abs(point - centerPoint);\n\tconst distToAfterPoint = Math.abs(point - afterPoint);\n\tconst closestPoint = Math.min(\n\t\tdistToBeforePoint,\n\t\tdistToCenterPoint,\n\t\tdistToAfterPoint,\n\t);\n\tlet placements: Array<MovePlacement> = [];\n\n\tswitch (closestPoint) {\n\tcase distToBeforePoint:\n\t\tplacements = [MovePlacement.Before];\n\t\tbreak;\n\tcase distToCenterPoint:\n\t\tplacements = [MovePlacement.On, distToBeforePoint < distToAfterPoint ? MovePlacement.Before : MovePlacement.After];\n\t\tbreak;\n\tcase distToAfterPoint:\n\t\tplacements = [MovePlacement.After];\n\t\tbreak;\n\t}\n\n\treturn placements;\n};\n\nconst findClosestPosition = (elements: Array<HTMLElement>, point: number, layoutOrientation: Orientation) => {\n\tlet shortestDist = Number.POSITIVE_INFINITY;\n\tlet closestElement: HTMLElement | null = null;\n\n\t// determine which element is most closest to the point\n\tfor (let i = 0; i < elements.length; i++) {\n\t\tconst el = elements[i];\n\t\tconst {\n\t\t\tleft, width, top, height,\n\t\t} = el.getBoundingClientRect();\n\n\t\tlet elemCenter;\n\t\tif (layoutOrientation === Orientation.Vertical) {\n\t\t\telemCenter = top + height / 2;\n\t\t} else { // Horizontal\n\t\t\telemCenter = left + width / 2;\n\t\t}\n\n\t\tconst distanceToCenter = Math.abs(point - elemCenter);\n\n\t\tif (distanceToCenter < shortestDist) {\n\t\t\tshortestDist = distanceToCenter;\n\t\t\tclosestElement = el;\n\t\t}\n\t}\n\n\tif (!closestElement) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\twidth, height, left, right, top, bottom,\n\t} = closestElement.getBoundingClientRect();\n\tlet placements;\n\n\tif (layoutOrientation === Orientation.Vertical) {\n\t\tplacements = closestPlacement(point, top, top + height / 2, bottom);\n\t} else { // Horizontal\n\t\tplacements = closestPlacement(point, left, left + width / 2, right);\n\t}\n\n\treturn {\n\t\telement: closestElement,\n\t\tplacements,\n\t};\n};\n\nconst findClosestPositionsByKey = (elements: Array<HTMLElement>, element: HTMLElement, e: KeyboardEvent) => {\n\tlet index = elements.indexOf(element);\n\tconst positions = [];\n\n\tswitch (e.key) {\n\tcase \"ArrowLeft\":\n\tcase \"ArrowUp\":\n\t\tindex--;\n\t\tif (index >= 0) {\n\t\t\tpositions.push({\n\t\t\t\telement: elements[index],\n\t\t\t\tplacement: MovePlacement.Before,\n\t\t\t});\n\t\t}\n\t\tbreak;\n\tcase \"ArrowRight\":\n\tcase \"ArrowDown\":\n\t\tindex++;\n\t\tif (index < elements.length) {\n\t\t\tpositions.push({\n\t\t\t\telement: elements[index],\n\t\t\t\tplacement: MovePlacement.After,\n\t\t\t});\n\t\t}\n\t\tbreak;\n\tcase \"Home\":\n\t\telements.forEach(el => {\n\t\t\tpositions.push({\n\t\t\t\telement: el,\n\t\t\t\tplacement: MovePlacement.Before,\n\t\t\t});\n\t\t});\n\t\tbreak;\n\tcase \"End\":\n\t\telements.reverse().forEach(el => {\n\t\t\tpositions.push({\n\t\t\t\telement: el,\n\t\t\t\tplacement: MovePlacement.After,\n\t\t\t});\n\t\t});\n\t\tbreak;\n\t}\n\n\treturn positions;\n};\n\nexport {\n\tfindClosestPosition,\n\tfindClosestPositionsByKey,\n};\n"]}
@@ -4,15 +4,11 @@ declare const getClassCopy: (klass: typeof UI5Element, constructorCallback: () =
4
4
  __id?: string | undefined;
5
5
  _suppressInvalidation: boolean;
6
6
  _changedState: import("../UI5Element.js").ChangeInfo[];
7
- _invalidationEventProvider: import("../EventProvider.js").default<import("../UI5Element.js").ChangeInfo & {
8
- target: UI5Element;
9
- }, void>;
7
+ _invalidationEventProvider: import("../EventProvider.js").default<import("../UI5Element.js").InvalidationInfo, void>;
10
8
  _componentStateFinalizedEventProvider: import("../EventProvider.js").default<void, void>;
11
9
  _inDOM: boolean;
12
10
  _fullyConnected: boolean;
13
- _childChangeListeners: Map<string, (param: import("../UI5Element.js").ChangeInfo & {
14
- target: UI5Element;
15
- }) => void>;
11
+ _childChangeListeners: Map<string, (param: import("../UI5Element.js").InvalidationInfo) => void>;
16
12
  _slotsAssignedNodes: WeakMap<HTMLSlotElement, Node[]>;
17
13
  _slotChangeListeners: Map<string, (this: HTMLSlotElement, ev: Event) => void>;
18
14
  _domRefReadyPromise: Promise<void> & {
@@ -39,19 +35,13 @@ declare const getClassCopy: (klass: typeof UI5Element, constructorCallback: () =
39
35
  _processChildren(): Promise<void>;
40
36
  _updateSlots(): Promise<void>;
41
37
  _clearSlot(slotName: string, slotData: import("../UI5ElementMetadata.js").Slot): void;
42
- attachInvalidate(callback: (param: import("../UI5Element.js").ChangeInfo & {
43
- target: UI5Element;
44
- }) => void): void;
45
- detachInvalidate(callback: (param: import("../UI5Element.js").ChangeInfo & {
46
- target: UI5Element;
47
- }) => void): void;
38
+ attachInvalidate(callback: (param: import("../UI5Element.js").InvalidationInfo) => void): void;
39
+ detachInvalidate(callback: (param: import("../UI5Element.js").InvalidationInfo) => void): void;
48
40
  _onChildChange(slotName: string, childChangeInfo: import("../UI5Element.js").ChangeInfo): void;
49
41
  attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
50
42
  formAssociatedCallback(): void;
51
43
  _updateAttribute(name: string, newValue: import("../UI5ElementMetadata.js").PropertyValue): void;
52
- _getChildChangeListener(slotName: string): (param: import("../UI5Element.js").ChangeInfo & {
53
- target: UI5Element;
54
- }) => void;
44
+ _getChildChangeListener(slotName: string): (param: import("../UI5Element.js").InvalidationInfo) => void;
55
45
  _getSlotChangeListener(slotName: string): (this: HTMLSlotElement, ev: Event) => void;
56
46
  _attachSlotChange(slot: HTMLSlotElement, slotName: string, invalidateOnChildChange: boolean): void;
57
47
  _detachSlotChange(child: HTMLSlotElement, slotName: string): void;
@@ -417,8 +407,9 @@ declare const getClassCopy: (klass: typeof UI5Element, constructorCallback: () =
417
407
  readonly dependencies: (typeof UI5Element)[];
418
408
  cacheUniqueDependencies(this: typeof UI5Element): void;
419
409
  getUniqueDependencies(this: typeof UI5Element): (typeof UI5Element)[];
420
- whenDependenciesDefined(): Promise<(typeof UI5Element)[]>;
421
410
  onDefine(): Promise<void>;
411
+ asyncFinished: boolean;
412
+ definePromise: Promise<[void, void]> | undefined;
422
413
  define(): Promise<typeof UI5Element>;
423
414
  getMetadata(): import("../UI5ElementMetadata.js").default;
424
415
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ui5/webcomponents-base",
3
- "version": "2.3.0-rc.0",
3
+ "version": "2.3.0-rc.2",
4
4
  "description": "UI5 Web Components: webcomponents.base",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -52,7 +52,7 @@
52
52
  },
53
53
  "devDependencies": {
54
54
  "@openui5/sap.ui.core": "1.120.17",
55
- "@ui5/webcomponents-tools": "2.3.0-rc.0",
55
+ "@ui5/webcomponents-tools": "2.3.0-rc.2",
56
56
  "chromedriver": "^127.0.3",
57
57
  "clean-css": "^5.2.2",
58
58
  "copy-and-watch": "^0.1.5",
@@ -63,5 +63,5 @@
63
63
  "resolve": "^1.20.0",
64
64
  "touch": "^3.1.0"
65
65
  },
66
- "gitHead": "5403403ad15199aa0ab5fef3af2458c87ded99ce"
66
+ "gitHead": "0b5a320e502e0b83a5e7dc45898e1115dce13b81"
67
67
  }