@ngutil/floating 0.0.64 → 0.0.65
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/esm2022/floating/floating.service.mjs +1 -1
- package/esm2022/floating/traits/animation.mjs +2 -2
- package/esm2022/floating/traits/index.mjs +1 -3
- package/esm2022/floating/traits/modal.mjs +2 -2
- package/esm2022/floating/traits/position.mjs +50 -50
- package/esm2022/layer/container-ref.mjs +2 -1
- package/fesm2022/ngutil-floating.mjs +53 -151
- package/fesm2022/ngutil-floating.mjs.map +1 -1
- package/floating/floating.service.d.ts +2 -2
- package/floating/traits/index.d.ts +0 -2
- package/floating/traits/modal.d.ts +2 -2
- package/floating/traits/position.d.ts +23 -50
- package/package.json +4 -4
- package/esm2022/floating/traits/dim-contraint.mjs +0 -66
- package/esm2022/floating/traits/position-calc.mjs +0 -39
- package/floating/traits/dim-contraint.d.ts +0 -25
- package/floating/traits/position-calc.d.ts +0 -28
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { combineLatest, distinctUntilChanged, map, Observable, takeUntil, tap } from "rxjs";
|
|
2
|
-
import { clamp } from "lodash";
|
|
3
|
-
import { isElementInput } from "@ngutil/common";
|
|
4
|
-
import { DimensionWatcher } from "@ngutil/style";
|
|
5
|
-
const DIM_MAP = {
|
|
6
|
-
maxWidth: { computedRef: "max", dimension: "width" },
|
|
7
|
-
maxHeight: { computedRef: "max", dimension: "height" },
|
|
8
|
-
minWidth: { computedRef: "min", dimension: "width" },
|
|
9
|
-
minHeight: { computedRef: "min", dimension: "height" }
|
|
10
|
-
};
|
|
11
|
-
export class DimensionConstraintTrait {
|
|
12
|
-
#map;
|
|
13
|
-
constructor(name, value) {
|
|
14
|
-
this.value = value;
|
|
15
|
-
this.name = name;
|
|
16
|
-
this.#map = DIM_MAP[name];
|
|
17
|
-
}
|
|
18
|
-
connect(floatingRef) {
|
|
19
|
-
return new Observable((dst) => {
|
|
20
|
-
if (isElementInput(this.value)) {
|
|
21
|
-
const watcher = floatingRef.container.injector.get(DimensionWatcher);
|
|
22
|
-
const refDim = watcher.watch(this.value, "border-box").pipe(map(value => value[this.#map.dimension]));
|
|
23
|
-
return combineLatest({
|
|
24
|
-
refDim: refDim,
|
|
25
|
-
position: floatingRef.watchTrait("position")
|
|
26
|
-
}).subscribe(({ refDim, position }) => {
|
|
27
|
-
const floating = position.computed?.content;
|
|
28
|
-
if (!floating) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
dst.next(clamp(refDim, floating.min[this.#map.dimension] || 0, floating.max[this.#map.dimension] || Infinity));
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
return floatingRef.watchTrait("position").subscribe(position => {
|
|
36
|
-
const floating = position.computed?.content;
|
|
37
|
-
if (!floating) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
if (isNaN(this.value)) {
|
|
41
|
-
dst.next(floating[this.#map.computedRef][this.#map.dimension]);
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
dst.next(clamp(this.value, floating.min[this.#map.dimension] || 0, floating.max[this.#map.dimension] || Infinity));
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
}).pipe(takeUntil(floatingRef.state.onExecute("disposing")), distinctUntilChanged(), tap(value => {
|
|
49
|
-
const floatingEl = floatingRef.container.nativeElement;
|
|
50
|
-
floatingEl.style[this.name] = `${value}px`;
|
|
51
|
-
}));
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
export function maxWidth(value) {
|
|
55
|
-
return new DimensionConstraintTrait("maxWidth", value);
|
|
56
|
-
}
|
|
57
|
-
export function maxHeight(value) {
|
|
58
|
-
return new DimensionConstraintTrait("maxHeight", value);
|
|
59
|
-
}
|
|
60
|
-
export function minWidth(value) {
|
|
61
|
-
return new DimensionConstraintTrait("minWidth", value);
|
|
62
|
-
}
|
|
63
|
-
export function minHeight(value) {
|
|
64
|
-
return new DimensionConstraintTrait("minHeight", value);
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltLWNvbnRyYWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Zsb2F0aW5nL3NyYy9mbG9hdGluZy90cmFpdHMvZGltLWNvbnRyYWludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQWMsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUV2RyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRTlCLE9BQU8sRUFBZ0IsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDN0QsT0FBTyxFQUFhLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBYTNELE1BQU0sT0FBTyxHQUFtQztJQUM1QyxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUU7SUFDcEQsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFO0lBQ3RELFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRTtJQUNwRCxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUU7Q0FDekQsQ0FBQTtBQUVELE1BQU0sT0FBTyx3QkFBd0I7SUFFeEIsSUFBSSxDQUFhO0lBQzFCLFlBQ0ksSUFBMEIsRUFDakIsS0FBK0I7UUFBL0IsVUFBSyxHQUFMLEtBQUssQ0FBMEI7UUFFeEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFjLENBQUE7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxXQUE2QjtRQUNqQyxPQUFPLElBQUksVUFBVSxDQUFD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QUE7QUFDMUQsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBK0I7SUFDckQsT0FBTyxJQUFJLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUMzRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUErQjtJQUNwRCxPQUFPLElBQUksd0JBQXdCLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQzFELENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQStCO0lBQ3JELE9BQU8sSUFBSSx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUsIFN1YnNjcmliZXIsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBjbGFtcCB9IGZyb20gXCJsb2Rhc2hcIlxuXG5pbXBvcnQgeyBFbGVtZW50SW5wdXQsIGlzRWxlbWVudElucHV0IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcbmltcG9ydCB7IERpbWVuc2lvbiwgRGltZW5zaW9uV2F0Y2hlciB9IGZyb20gXCJAbmd1dGlsL3N0eWxlXCJcblxuaW1wb3J0IHsgRmxvYXRpbmdSZWYgfSBmcm9tIFwiLi4vZmxvYXRpbmctcmVmXCJcbmltcG9ydCB7IEZsb2F0aW5nVHJhaXQgfSBmcm9tIFwiLi9fYmFzZVwiXG5pbXBvcnQgdHlwZSB7IEZsb2F0aW5nUG9zaXRpb24gfSBmcm9tIFwiLi9wb3NpdGlvblwiXG5cbmV4cG9ydCB0eXBlIERpbWVuc2lvbkNvbnN0cmFpbnRJbnB1dCA9IEVsZW1lbnRJbnB1dCB8IG51bWJlclxuXG5pbnRlcmZhY2UgRGltTWFwRW50cnkge1xuICAgIGNvbXB1dGVkUmVmOiBcIm1pblwiIHwgXCJtYXhcIlxuICAgIGRpbWVuc2lvbjoga2V5b2YgRGltZW5zaW9uXG59XG5cbmNvbnN0IERJTV9NQVA6IHsgW2tleTogc3RyaW5nXTogRGltTWFwRW50cnkgfSA9IHtcbiAgICBtYXhXaWR0aDogeyBjb21wdXRlZFJlZjogXCJtYXhcIiwgZGltZW5zaW9uOiBcIndpZHRoXCIgfSxcbiAgICBtYXhIZWlnaHQ6IHsgY29tcHV0ZWRSZWY6IFwibWF4XCIsIGRpbWVuc2lvbjogXCJoZWlnaHRcIiB9LFxuICAgIG1pbldpZHRoOiB7IGNvbXB1dGVkUmVmOiBcIm1pblwiLCBkaW1lbnNpb246IFwid2lkdGhcIiB9LFxuICAgIG1pbkhlaWdodDogeyBjb21wdXRlZFJlZjogXCJtaW5cIiwgZGltZW5zaW9uOiBcImhlaWdodFwiIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpbWVuc2lvbkNvbnN0cmFpbnRUcmFpdCBpbXBsZW1lbnRzIEZsb2F0aW5nVHJhaXQ8bnVtYmVyPiB7XG4gICAgcmVhZG9ubHkgbmFtZTogc3RyaW5nXG4gICAgcmVhZG9ubHkgI21hcDogRGltTWFwRW50cnlcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgbmFtZToga2V5b2YgdHlwZW9mIERJTV9NQVAsXG4gICAgICAgIHJlYWRvbmx5IHZhbHVlOiBEaW1lbnNpb25Db25zdHJhaW50SW5wdXRcbiAgICApIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZSBhcyBzdHJpbmdcbiAgICAgICAgdGhpcy4jbWFwID0gRElNX01BUFtuYW1lXVxuICAgIH1cblxuICAgIGNvbm5lY3QoZmxvYXRpbmdSZWY6IEZsb2F0aW5nUmVmPGFueT4pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKGRzdDogU3Vic2NyaWJlcjxudW1iZXI+KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNFbGVtZW50SW5wdXQodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB3YXRjaGVyID0gZmxvYXRpbmdSZWYuY29udGFpbmVyLmluamVjdG9yLmdldChEaW1lbnNpb25XYXRjaGVyKVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZkRpbSA9IHdhdGNoZXIud2F0Y2godGhpcy52YWx1ZSwgXCJib3JkZXItYm94XCIpLnBpcGUobWFwKHZhbHVlID0+IHZhbHVlW3RoaXMuI21hcC5kaW1lbnNpb25dKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdCh7XG4gICAgICAgICAgICAgICAgICAgIHJlZkRpbTogcmVmRGltLFxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogZmxvYXRpbmdSZWYud2F0Y2hUcmFpdDxGbG9hdGluZ1Bvc2l0aW9uPihcInBvc2l0aW9uXCIpXG4gICAgICAgICAgICAgICAgfSkuc3Vic2NyaWJlKCh7IHJlZkRpbSwgcG9zaXRpb24gfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdGluZyA9IHBvc2l0aW9uLmNvbXB1dGVkPy5jb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmxvYXRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGRzdC5uZXh0KFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhbXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmRGltLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nLm1pblt0aGlzLiNtYXAuZGltZW5zaW9uXSB8fCAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nLm1heFt0aGlzLiNtYXAuZGltZW5zaW9uXSB8fCBJbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0aW5nUmVmLndhdGNoVHJhaXQ8RmxvYXRpbmdQb3NpdGlvbj4oXCJwb3NpdGlvblwiKS5zdWJzY3JpYmUocG9zaXRpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdGluZyA9IHBvc2l0aW9uLmNvbXB1dGVkPy5jb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmxvYXRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc05hTih0aGlzLnZhbHVlIGFzIG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdC5uZXh0KGZsb2F0aW5nW3RoaXMuI21hcC5jb21wdXRlZFJlZl1bdGhpcy4jbWFwLmRpbWVuc2lvbl0pXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkc3QubmV4dChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFtcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSBhcyBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nIS5taW5bdGhpcy4jbWFwLmRpbWVuc2lvbl0gfHwgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmchLm1heFt0aGlzLiNtYXAuZGltZW5zaW9uXSB8fCBJbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwoZmxvYXRpbmdSZWYuc3RhdGUub25FeGVjdXRlKFwiZGlzcG9zaW5nXCIpKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICB0YXAodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0aW5nRWwgPSBmbG9hdGluZ1JlZi5jb250YWluZXIubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgIGZsb2F0aW5nRWwuc3R5bGVbdGhpcy5uYW1lIGFzIGFueV0gPSBgJHt2YWx1ZX1weGBcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXhXaWR0aCh2YWx1ZTogRGltZW5zaW9uQ29uc3RyYWludElucHV0KSB7XG4gICAgcmV0dXJuIG5ldyBEaW1lbnNpb25Db25zdHJhaW50VHJhaXQoXCJtYXhXaWR0aFwiLCB2YWx1ZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1heEhlaWdodCh2YWx1ZTogRGltZW5zaW9uQ29uc3RyYWludElucHV0KSB7XG4gICAgcmV0dXJuIG5ldyBEaW1lbnNpb25Db25zdHJhaW50VHJhaXQoXCJtYXhIZWlnaHRcIiwgdmFsdWUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5XaWR0aCh2YWx1ZTogRGltZW5zaW9uQ29uc3RyYWludElucHV0KSB7XG4gICAgcmV0dXJuIG5ldyBEaW1lbnNpb25Db25zdHJhaW50VHJhaXQoXCJtaW5XaWR0aFwiLCB2YWx1ZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pbkhlaWdodCh2YWx1ZTogRGltZW5zaW9uQ29uc3RyYWludElucHV0KSB7XG4gICAgcmV0dXJuIG5ldyBEaW1lbnNpb25Db25zdHJhaW50VHJhaXQoXCJtaW5IZWlnaHRcIiwgdmFsdWUpXG59XG4iXX0=
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { alignmentNormalize, rectContract, rectExpand, rectMoveOrigin, rectOrigin } from "@ngutil/style";
|
|
2
|
-
export function computePosition({ floating, anchor, placement, options }) {
|
|
3
|
-
if (options.anchor.margin) {
|
|
4
|
-
anchor = rectExpand(anchor, options.anchor.margin);
|
|
5
|
-
}
|
|
6
|
-
const anchorPoint = rectOrigin(anchor, options.anchor.align);
|
|
7
|
-
let contentRect = rectMoveOrigin(floating, options.content.align, anchorPoint);
|
|
8
|
-
if (options.content.margin) {
|
|
9
|
-
contentRect = rectContract(contentRect, options.content.margin);
|
|
10
|
-
}
|
|
11
|
-
if (options.placement.padding) {
|
|
12
|
-
placement = rectContract(placement, options.placement.padding);
|
|
13
|
-
}
|
|
14
|
-
return {
|
|
15
|
-
content: {
|
|
16
|
-
...addTLRB(contentRect, placement),
|
|
17
|
-
align: alignmentNormalize(options.content.align),
|
|
18
|
-
connect: anchorPoint,
|
|
19
|
-
max: { width: placement.width - contentRect.x, height: placement.height - contentRect.y },
|
|
20
|
-
min: { width: 0, height: 0 }
|
|
21
|
-
},
|
|
22
|
-
anchor: {
|
|
23
|
-
...addTLRB(anchor, placement),
|
|
24
|
-
align: alignmentNormalize(options.anchor.align),
|
|
25
|
-
connect: anchorPoint
|
|
26
|
-
},
|
|
27
|
-
placement: addTLRB(placement, placement)
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
function addTLRB(rect, container) {
|
|
31
|
-
return {
|
|
32
|
-
...rect,
|
|
33
|
-
top: rect.y,
|
|
34
|
-
left: rect.x,
|
|
35
|
-
right: container.width - (rect.x + rect.width),
|
|
36
|
-
bottom: container.height - (rect.y + rect.height)
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24tY2FsYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Zsb2F0aW5nL3NyYy9mbG9hdGluZy90cmFpdHMvcG9zaXRpb24tY2FsYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsa0JBQWtCLEVBSWxCLFlBQVksRUFDWixVQUFVLEVBQ1YsY0FBYyxFQUNkLFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQTtBQTRDdEIsTUFBTSxVQUFVLGVBQWUsQ0FBQyxFQUM1QixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxPQUFPLEVBQ1k7SUFDbkIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdEQsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUU1RCxJQUFJLFdBQVcsR0FBRyxjQUFjLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQzlFLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QixXQUFXLEdBQUcsWUFBWSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUIsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsT0FBTztRQUNILE9BQU8sRUFBRTtZQUNMLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUM7WUFDbEMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ2hELE9BQU8sRUFBRSxXQUFXO1lBQ3BCLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFBRTtZQUN6RixHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7U0FDL0I7UUFDRCxNQUFNLEVBQUU7WUFDSixHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO1lBQzdCLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUMvQyxPQUFPLEVBQUUsV0FBVztTQUN2QjtRQUNELFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztLQUMzQyxDQUFBO0FBQ0wsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFDLElBQVUsRUFBRSxTQUFlO0lBQ3hDLE9BQU87UUFDSCxHQUFHLElBQUk7UUFDUCxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDWixLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM5QyxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwRCxDQUFBO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWxpZ25tZW50LFxuICAgIGFsaWdubWVudE5vcm1hbGl6ZSxcbiAgICBEaW1lbnNpb24sXG4gICAgUG9zaXRpb24sXG4gICAgUmVjdCxcbiAgICByZWN0Q29udHJhY3QsXG4gICAgcmVjdEV4cGFuZCxcbiAgICByZWN0TW92ZU9yaWdpbixcbiAgICByZWN0T3JpZ2luXG59IGZyb20gXCJAbmd1dGlsL3N0eWxlXCJcblxuaW1wb3J0IHR5cGUgeyBGbG9hdGluZ1Bvc2l0aW9uT3B0aW9uc05vcm1hbGl6ZWQgfSBmcm9tIFwiLi9wb3NpdGlvblwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZVBvc2l0aW9uSW5wdXQge1xuICAgIGZsb2F0aW5nOiBEaW1lbnNpb25cbiAgICBhbmNob3I6IFJlY3RcbiAgICBwbGFjZW1lbnQ6IFJlY3RcbiAgICBvcHRpb25zOiBGbG9hdGluZ1Bvc2l0aW9uT3B0aW9uc05vcm1hbGl6ZWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZFJlY3QgZXh0ZW5kcyBSZWN0IHtcbiAgICB0b3A6IG51bWJlclxuICAgIGxlZnQ6IG51bWJlclxuICAgIHJpZ2h0OiBudW1iZXJcbiAgICBib3R0b206IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkQWxpZ25tZW50IGV4dGVuZHMgQ29tcHV0ZWRSZWN0IHtcbiAgICBhbGlnbjogQWxpZ25tZW50XG4gICAgY29ubmVjdDogUG9zaXRpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZENvbnRlbnQgZXh0ZW5kcyBDb21wdXRlZEFsaWdubWVudCB7XG4gICAgbWluOiBEaW1lbnNpb25cbiAgICBtYXg6IERpbWVuc2lvblxufVxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkQWxpZ25tZW50IHtcbi8vICAgICBhbGlnbjogQWxpZ25tZW50XG4vLyAgICAgcG9zdGlvbjogUG9zaXRpb25cbi8vIH1cblxuLy8gZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZE9yaWdpbiB7XG4vLyAgICAgY29udGVudDogQ29tcHV0ZWRBbGlnbm1lbnRcbi8vICAgICBhbmNob3I6IENvbXB1dGVkQWxpZ25tZW50XG4vLyB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRQb3NpdG9uIHtcbiAgICBjb250ZW50OiBDb21wdXRlZENvbnRlbnRcbiAgICBhbmNob3I6IENvbXB1dGVkQWxpZ25tZW50XG4gICAgcGxhY2VtZW50OiBDb21wdXRlZFJlY3Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVQb3NpdGlvbih7XG4gICAgZmxvYXRpbmcsXG4gICAgYW5jaG9yLFxuICAgIHBsYWNlbWVudCxcbiAgICBvcHRpb25zXG59OiBDb21wdXRlUG9zaXRpb25JbnB1dCk6IENvbXB1dGVkUG9zaXRvbiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKG9wdGlvbnMuYW5jaG9yLm1hcmdpbikge1xuICAgICAgICBhbmNob3IgPSByZWN0RXhwYW5kKGFuY2hvciwgb3B0aW9ucy5hbmNob3IubWFyZ2luKVxuICAgIH1cbiAgICBjb25zdCBhbmNob3JQb2ludCA9IHJlY3RPcmlnaW4oYW5jaG9yLCBvcHRpb25zLmFuY2hvci5hbGlnbilcblxuICAgIGxldCBjb250ZW50UmVjdCA9IHJlY3RNb3ZlT3JpZ2luKGZsb2F0aW5nLCBvcHRpb25zLmNvbnRlbnQuYWxpZ24sIGFuY2hvclBvaW50KVxuICAgIGlmIChvcHRpb25zLmNvbnRlbnQubWFyZ2luKSB7XG4gICAgICAgIGNvbnRlbnRSZWN0ID0gcmVjdENvbnRyYWN0KGNvbnRlbnRSZWN0LCBvcHRpb25zLmNvbnRlbnQubWFyZ2luKVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnBsYWNlbWVudC5wYWRkaW5nKSB7XG4gICAgICAgIHBsYWNlbWVudCA9IHJlY3RDb250cmFjdChwbGFjZW1lbnQsIG9wdGlvbnMucGxhY2VtZW50LnBhZGRpbmcpXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgICAgLi4uYWRkVExSQihjb250ZW50UmVjdCwgcGxhY2VtZW50KSxcbiAgICAgICAgICAgIGFsaWduOiBhbGlnbm1lbnROb3JtYWxpemUob3B0aW9ucy5jb250ZW50LmFsaWduKSxcbiAgICAgICAgICAgIGNvbm5lY3Q6IGFuY2hvclBvaW50LFxuICAgICAgICAgICAgbWF4OiB7IHdpZHRoOiBwbGFjZW1lbnQud2lkdGggLSBjb250ZW50UmVjdC54LCBoZWlnaHQ6IHBsYWNlbWVudC5oZWlnaHQgLSBjb250ZW50UmVjdC55IH0sXG4gICAgICAgICAgICBtaW46IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9XG4gICAgICAgIH0sXG4gICAgICAgIGFuY2hvcjoge1xuICAgICAgICAgICAgLi4uYWRkVExSQihhbmNob3IsIHBsYWNlbWVudCksXG4gICAgICAgICAgICBhbGlnbjogYWxpZ25tZW50Tm9ybWFsaXplKG9wdGlvbnMuYW5jaG9yLmFsaWduKSxcbiAgICAgICAgICAgIGNvbm5lY3Q6IGFuY2hvclBvaW50XG4gICAgICAgIH0sXG4gICAgICAgIHBsYWNlbWVudDogYWRkVExSQihwbGFjZW1lbnQsIHBsYWNlbWVudClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFkZFRMUkIocmVjdDogUmVjdCwgY29udGFpbmVyOiBSZWN0KTogQ29tcHV0ZWRSZWN0IHtcbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5yZWN0LFxuICAgICAgICB0b3A6IHJlY3QueSxcbiAgICAgICAgbGVmdDogcmVjdC54LFxuICAgICAgICByaWdodDogY29udGFpbmVyLndpZHRoIC0gKHJlY3QueCArIHJlY3Qud2lkdGgpLFxuICAgICAgICBib3R0b206IGNvbnRhaW5lci5oZWlnaHQgLSAocmVjdC55ICsgcmVjdC5oZWlnaHQpXG4gICAgfVxufVxuIl19
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Observable } from "rxjs";
|
|
2
|
-
import { ElementInput } from "@ngutil/common";
|
|
3
|
-
import { Dimension } from "@ngutil/style";
|
|
4
|
-
import { FloatingRef } from "../floating-ref";
|
|
5
|
-
import { FloatingTrait } from "./_base";
|
|
6
|
-
export type DimensionConstraintInput = ElementInput | number;
|
|
7
|
-
interface DimMapEntry {
|
|
8
|
-
computedRef: "min" | "max";
|
|
9
|
-
dimension: keyof Dimension;
|
|
10
|
-
}
|
|
11
|
-
declare const DIM_MAP: {
|
|
12
|
-
[key: string]: DimMapEntry;
|
|
13
|
-
};
|
|
14
|
-
export declare class DimensionConstraintTrait implements FloatingTrait<number> {
|
|
15
|
-
#private;
|
|
16
|
-
readonly value: DimensionConstraintInput;
|
|
17
|
-
readonly name: string;
|
|
18
|
-
constructor(name: keyof typeof DIM_MAP, value: DimensionConstraintInput);
|
|
19
|
-
connect(floatingRef: FloatingRef<any>): Observable<number>;
|
|
20
|
-
}
|
|
21
|
-
export declare function maxWidth(value: DimensionConstraintInput): DimensionConstraintTrait;
|
|
22
|
-
export declare function maxHeight(value: DimensionConstraintInput): DimensionConstraintTrait;
|
|
23
|
-
export declare function minWidth(value: DimensionConstraintInput): DimensionConstraintTrait;
|
|
24
|
-
export declare function minHeight(value: DimensionConstraintInput): DimensionConstraintTrait;
|
|
25
|
-
export {};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Alignment, Dimension, Position, Rect } from "@ngutil/style";
|
|
2
|
-
import type { FloatingPositionOptionsNormalized } from "./position";
|
|
3
|
-
export interface ComputePositionInput {
|
|
4
|
-
floating: Dimension;
|
|
5
|
-
anchor: Rect;
|
|
6
|
-
placement: Rect;
|
|
7
|
-
options: FloatingPositionOptionsNormalized;
|
|
8
|
-
}
|
|
9
|
-
export interface ComputedRect extends Rect {
|
|
10
|
-
top: number;
|
|
11
|
-
left: number;
|
|
12
|
-
right: number;
|
|
13
|
-
bottom: number;
|
|
14
|
-
}
|
|
15
|
-
export interface ComputedAlignment extends ComputedRect {
|
|
16
|
-
align: Alignment;
|
|
17
|
-
connect: Position;
|
|
18
|
-
}
|
|
19
|
-
export interface ComputedContent extends ComputedAlignment {
|
|
20
|
-
min: Dimension;
|
|
21
|
-
max: Dimension;
|
|
22
|
-
}
|
|
23
|
-
export interface ComputedPositon {
|
|
24
|
-
content: ComputedContent;
|
|
25
|
-
anchor: ComputedAlignment;
|
|
26
|
-
placement: ComputedRect;
|
|
27
|
-
}
|
|
28
|
-
export declare function computePosition({ floating, anchor, placement, options }: ComputePositionInput): ComputedPositon | undefined;
|