@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.
- package/CHANGELOG.md +23 -0
- package/dist/.tsbuildinfobuild +1 -1
- package/dist/Boot.js +1 -1
- package/dist/Boot.js.map +1 -1
- package/dist/UI5Element.d.ts +3 -5
- package/dist/UI5Element.js +7 -9
- package/dist/UI5Element.js.map +1 -1
- package/dist/custom-elements-internal.json +15 -0
- package/dist/custom-elements.json +15 -0
- package/dist/features/F6Navigation.d.ts +3 -3
- package/dist/features/F6Navigation.js +22 -6
- package/dist/features/F6Navigation.js.map +1 -1
- package/dist/generated/VersionInfo.js +3 -3
- package/dist/generated/VersionInfo.js.map +1 -1
- package/dist/prod/Boot.js +1 -1
- package/dist/prod/Boot.js.map +2 -2
- package/dist/prod/UI5Element.js +1 -1
- package/dist/prod/UI5Element.js.map +2 -2
- package/dist/prod/features/F6Navigation.js +1 -1
- package/dist/prod/features/F6Navigation.js.map +3 -3
- package/dist/prod/generated/VersionInfo.js +1 -1
- package/dist/prod/generated/VersionInfo.js.map +1 -1
- package/dist/prod/util/SelectionAssistant.js +2 -0
- package/dist/prod/util/SelectionAssistant.js.map +7 -0
- package/dist/prod/util/dragAndDrop/findClosestPosition.js +1 -1
- package/dist/prod/util/dragAndDrop/findClosestPosition.js.map +3 -3
- package/dist/util/SelectionAssistant.d.ts +12 -0
- package/dist/util/SelectionAssistant.js +79 -0
- package/dist/util/SelectionAssistant.js.map +1 -0
- package/dist/util/dragAndDrop/findClosestPosition.d.ts +4 -4
- package/dist/util/dragAndDrop/findClosestPosition.js +28 -13
- package/dist/util/dragAndDrop/findClosestPosition.js.map +1 -1
- package/dist/util/getClassCopy.d.ts +7 -16
- 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
|
|
7
|
+
declare const findClosestPositionsByKey: (elements: Array<HTMLElement>, element: HTMLElement, e: KeyboardEvent) => {
|
|
8
8
|
element: HTMLElement;
|
|
9
|
-
placement: MovePlacement
|
|
10
|
-
};
|
|
11
|
-
export { findClosestPosition,
|
|
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
|
|
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
|
-
|
|
74
|
-
|
|
83
|
+
elements.forEach(el => {
|
|
84
|
+
positions.push({
|
|
85
|
+
element: el,
|
|
86
|
+
placement: MovePlacement.Before,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
75
89
|
break;
|
|
76
90
|
case "End":
|
|
77
|
-
|
|
78
|
-
|
|
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,
|
|
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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
|
|
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").
|
|
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").
|
|
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").
|
|
43
|
-
|
|
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").
|
|
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.
|
|
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.
|
|
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": "
|
|
66
|
+
"gitHead": "0b5a320e502e0b83a5e7dc45898e1115dce13b81"
|
|
67
67
|
}
|