@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.
@@ -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;