@foldkit/ui 0.162.0 → 0.163.0-canary.085c0174a32b
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/dist/anchor/anchor.d.ts +33 -7
- package/dist/anchor/anchor.d.ts.map +1 -1
- package/dist/anchor/anchor.js +102 -15
- package/dist/anchor/public.d.ts +1 -1
- package/dist/anchor/public.d.ts.map +1 -1
- package/dist/anchor/public.js +1 -1
- package/dist/animation/index.d.ts +3 -0
- package/dist/animation/index.d.ts.map +1 -1
- package/dist/animation/schema.d.ts +13 -4
- package/dist/animation/schema.d.ts.map +1 -1
- package/dist/animation/schema.js +8 -4
- package/dist/animation/update.d.ts +15 -5
- package/dist/animation/update.d.ts.map +1 -1
- package/dist/animation/update.js +59 -27
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/index.js +27 -19
- package/dist/checkbox/index.d.ts +1 -1
- package/dist/checkbox/index.js +1 -1
- package/dist/combobox/multi.d.ts +5 -0
- package/dist/combobox/multi.d.ts.map +1 -1
- package/dist/combobox/multi.js +2 -2
- package/dist/combobox/shared.d.ts +19 -7
- package/dist/combobox/shared.d.ts.map +1 -1
- package/dist/combobox/shared.js +28 -28
- package/dist/combobox/single.d.ts +5 -0
- package/dist/combobox/single.d.ts.map +1 -1
- package/dist/combobox/single.js +4 -4
- package/dist/datePicker/index.d.ts +13 -2
- package/dist/datePicker/index.d.ts.map +1 -1
- package/dist/datePicker/index.js +10 -10
- package/dist/dialog/index.d.ts +13 -2
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/index.js +28 -14
- package/dist/disclosure/index.d.ts +2 -2
- package/dist/disclosure/index.js +1 -1
- package/dist/dragAndDrop/index.js +14 -14
- package/dist/fileDrop/index.d.ts.map +1 -1
- package/dist/fileDrop/index.js +7 -5
- package/dist/hoverIntent/hoverIntent.d.ts.map +1 -1
- package/dist/hoverIntent/hoverIntent.js +16 -16
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/internal/accessibleName.d.ts +9 -0
- package/dist/internal/accessibleName.d.ts.map +1 -0
- package/dist/internal/accessibleName.js +12 -0
- package/dist/internal/range.d.ts +7 -0
- package/dist/internal/range.d.ts.map +1 -0
- package/dist/internal/range.js +12 -0
- package/dist/listbox/multi.d.ts +5 -0
- package/dist/listbox/multi.d.ts.map +1 -1
- package/dist/listbox/shared.d.ts +15 -4
- package/dist/listbox/shared.d.ts.map +1 -1
- package/dist/listbox/shared.js +32 -29
- package/dist/listbox/single.d.ts +5 -0
- package/dist/listbox/single.d.ts.map +1 -1
- package/dist/menu/index.d.ts +16 -4
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/menu/index.js +35 -28
- package/dist/meter/index.d.ts +26 -0
- package/dist/meter/index.d.ts.map +1 -0
- package/dist/meter/index.js +67 -0
- package/dist/meter/public.d.ts +3 -0
- package/dist/meter/public.d.ts.map +1 -0
- package/dist/meter/public.js +1 -0
- package/dist/popover/index.d.ts +20 -4
- package/dist/popover/index.d.ts.map +1 -1
- package/dist/popover/index.js +20 -18
- package/dist/progress/index.d.ts +24 -0
- package/dist/progress/index.d.ts.map +1 -0
- package/dist/progress/index.js +85 -0
- package/dist/progress/public.d.ts +3 -0
- package/dist/progress/public.d.ts.map +1 -0
- package/dist/progress/public.js +1 -0
- package/dist/radioGroup/index.d.ts.map +1 -1
- package/dist/radioGroup/index.js +5 -3
- package/dist/slider/index.d.ts +61 -28
- package/dist/slider/index.d.ts.map +1 -1
- package/dist/slider/index.js +163 -87
- package/dist/slider/public.d.ts +1 -1
- package/dist/slider/public.d.ts.map +1 -1
- package/dist/slider/public.js +1 -1
- package/dist/switch/index.d.ts +1 -1
- package/dist/switch/index.js +1 -1
- package/dist/tabs/index.d.ts.map +1 -1
- package/dist/tabs/index.js +5 -3
- package/dist/test/apps/disabledButton.d.ts +12 -4
- package/dist/test/apps/disabledButton.d.ts.map +1 -1
- package/dist/test/apps/disabledButton.js +3 -3
- package/dist/toast/index.d.ts +869 -45
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toast/index.js +77 -17
- package/dist/toast/public.d.ts +2 -2
- package/dist/toast/public.d.ts.map +1 -1
- package/dist/toast/public.js +1 -1
- package/dist/toast/schema.d.ts +160 -6
- package/dist/toast/schema.d.ts.map +1 -1
- package/dist/toast/schema.js +69 -2
- package/dist/toast/swipeTarget.d.ts +5 -0
- package/dist/toast/swipeTarget.d.ts.map +1 -0
- package/dist/toast/swipeTarget.js +18 -0
- package/dist/toast/test.d.ts +7 -1
- package/dist/toast/test.d.ts.map +1 -1
- package/dist/toast/test.js +37 -3
- package/dist/toast/update.d.ts +768 -7
- package/dist/toast/update.d.ts.map +1 -1
- package/dist/toast/update.js +283 -68
- package/dist/tooltip/tooltip.d.ts +7 -7
- package/dist/tooltip/tooltip.d.ts.map +1 -1
- package/dist/tooltip/tooltip.js +14 -12
- package/dist/virtualList/index.d.ts.map +1 -1
- package/dist/virtualList/index.js +8 -6
- package/package.json +9 -9
package/dist/anchor/anchor.d.ts
CHANGED
|
@@ -27,14 +27,40 @@ export declare const AnchorConfig: Schema.Struct<{
|
|
|
27
27
|
readonly isPlacementLocked: Schema.optional<Schema.Boolean>;
|
|
28
28
|
}>;
|
|
29
29
|
export type AnchorConfig = typeof AnchorConfig.Type;
|
|
30
|
-
/** Relocates an element into
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* removes
|
|
35
|
-
*
|
|
36
|
-
*
|
|
30
|
+
/** Relocates an element into a portal root and returns a cleanup function
|
|
31
|
+
* that removes it again. Inside a `<dialog>`, the portal root is a div
|
|
32
|
+
* appended to that dialog, so the element stays above the dialog's content
|
|
33
|
+
* and interactive while a modal dialog makes everything outside it inert.
|
|
34
|
+
* The cleanup removes that div once it is empty. Otherwise the portal root
|
|
35
|
+
* is the shared `foldkit-portal-root` div within the element's containing
|
|
36
|
+
* root: the shadow root when mounted inside one, otherwise `document.body`.
|
|
37
|
+
* Either way the element escapes the clipping and stacking contexts of the
|
|
38
|
+
* ancestors it leaves, and keeps its root's scoped styles. Use
|
|
39
|
+
* `portalBackdrop` for a click-outside backdrop. Designed to be called from
|
|
40
|
+
* inside an `OnMount` action: the consumer wraps the call in `Effect.sync`
|
|
41
|
+
* and stashes the returned cleanup in the `Mount` result. */
|
|
37
42
|
export declare const portalToContainingRoot: (element: Element) => (() => void);
|
|
43
|
+
/** Relocates a click-outside backdrop and returns a cleanup function that
|
|
44
|
+
* removes it again. Outside a `<dialog>`, it does what
|
|
45
|
+
* `portalToContainingRoot` does. Inside a `<dialog>`, the backdrop moves to
|
|
46
|
+
* directly before the element it was rendered in, which is the component
|
|
47
|
+
* wrapper that holds the trigger. The backdrop then covers the dialog's
|
|
48
|
+
* content, and the wrapper stays above it, so a click on a Combobox input
|
|
49
|
+
* reaches the input while a click anywhere else in the dialog reaches the
|
|
50
|
+
* backdrop. The wrapper must be positioned, for example `position:
|
|
51
|
+
* relative`, which is also what keeps it above a backdrop in the containing
|
|
52
|
+
* root. While the backdrop is there, it is a sibling of the wrapper, so
|
|
53
|
+
* sibling-based selectors such as `:first-child` or Tailwind's `divide-y`
|
|
54
|
+
* count it. Some CSS on an ancestor between the wrapper and the dialog
|
|
55
|
+
* confines the backdrop to that ancestor: anything that makes the ancestor
|
|
56
|
+
* the containing block for fixed-position elements, for example
|
|
57
|
+
* `transform`, `scale`, `filter`, `backdrop-filter`, or `container-type`.
|
|
58
|
+
* A click outside that ancestor then leaves the overlay open, and if it
|
|
59
|
+
* also lands outside the dialog panel, it closes the whole dialog. A
|
|
60
|
+
* backdrop rendered directly in the dialog goes into the dialog's portal
|
|
61
|
+
* root instead. Designed to be called from inside an `OnMount` action,
|
|
62
|
+
* like `portalToContainingRoot`. */
|
|
63
|
+
export declare const portalBackdrop: (element: Element) => (() => void);
|
|
38
64
|
/** Config for `anchorSetup`.
|
|
39
65
|
*
|
|
40
66
|
* - `buttonId`: id of the trigger to position against, resolved through the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../src/anchor/anchor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,MAAM,EAAgB,MAAM,QAAQ,CAAA;AAatE;mFACmF;AACnF,eAAO,MAAM,SAAS,0KAapB,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAE7C;+DAC+D;AAC/D,eAAO,MAAM,OAAO;;;;;IAQlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC,oGAAoG;AACpG,eAAO,MAAM,YAAY;;;;;;;;;;;;EAOvB,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../src/anchor/anchor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,MAAM,EAAgB,MAAM,QAAQ,CAAA;AAatE;mFACmF;AACnF,eAAO,MAAM,SAAS,0KAapB,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAE7C;+DAC+D;AAC/D,eAAO,MAAM,OAAO;;;;;IAQlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC,oGAAoG;AACpG,eAAO,MAAM,YAAY;;;;;;;;;;;;EAOvB,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;AAwEnD;;;;;;;;;;;8DAW8D;AAC9D,eAAO,MAAM,sBAAsB,YAAa,OAAO,KAAG,CAAC,MAAM,IAAI,CAsBpE,CAAA;AAWD;;;;;;;;;;;;;;;;;;;qCAmBqC;AACrC,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,CAAC,MAAM,IAAI,CAczD,CAAA;AAUJ;;;;;;;;;;;;;;;;;;;;;0BAqB0B;AAC1B,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,YAAY,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAC,CAAA;AAsBF;;;;;;;;;;;;;;;;;;;;;;;gFAuBgF;AAChF,eAAO,MAAM,WAAW,YACb,OAAO,UACR,WAAW,KAClB,CAAC,MAAM,IAAI,CAkQb,CAAA"}
|
package/dist/anchor/anchor.js
CHANGED
|
@@ -38,7 +38,8 @@ export const AnchorConfig = Schema.Struct({
|
|
|
38
38
|
isPlacementLocked: Schema.optional(Schema.Boolean),
|
|
39
39
|
});
|
|
40
40
|
const PORTAL_ROOT_ID = 'foldkit-portal-root';
|
|
41
|
-
const
|
|
41
|
+
const DIALOG_PORTAL_ROOT_ATTRIBUTE = 'data-foldkit-portal-root';
|
|
42
|
+
const getOrCreateContainingRootPortalRoot = (element) => {
|
|
42
43
|
// NOTE: portal into the element's containing root, the shadow root when the
|
|
43
44
|
// app is mounted inside one (e.g. the DevTools overlay) or `document.body`
|
|
44
45
|
// otherwise, so the panel keeps that root's scoped styles while still
|
|
@@ -50,7 +51,7 @@ const getOrCreatePortalRoot = (element) => {
|
|
|
50
51
|
const parent = inShadow ? root : document.body;
|
|
51
52
|
const existing = owner.getElementById(PORTAL_ROOT_ID);
|
|
52
53
|
if (existing) {
|
|
53
|
-
return __foldkitBrandViewResult((existing), "@foldkit/ui/anchor/anchor.js#
|
|
54
|
+
return __foldkitBrandViewResult((existing), "@foldkit/ui/anchor/anchor.js#getOrCreateContainingRootPortalRoot");
|
|
54
55
|
}
|
|
55
56
|
const portalRoot = document.createElement('div');
|
|
56
57
|
portalRoot.id = PORTAL_ROOT_ID;
|
|
@@ -61,17 +62,48 @@ const getOrCreatePortalRoot = (element) => {
|
|
|
61
62
|
// breaking click-outside detection. Prepending makes wrappers paint
|
|
62
63
|
// above the backdrop, while panels (z-10) still win via step 9.
|
|
63
64
|
parent.prepend(portalRoot);
|
|
64
|
-
return __foldkitBrandViewResult((portalRoot), "@foldkit/ui/anchor/anchor.js#
|
|
65
|
+
return __foldkitBrandViewResult((portalRoot), "@foldkit/ui/anchor/anchor.js#getOrCreateContainingRootPortalRoot");
|
|
65
66
|
};
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
const getOrCreateDialogPortalRoot = (dialog) => {
|
|
68
|
+
const existing = dialog.querySelector(`:scope > [${DIALOG_PORTAL_ROOT_ATTRIBUTE}]`);
|
|
69
|
+
if (existing instanceof HTMLElement) {
|
|
70
|
+
return __foldkitBrandViewResult((existing), "@foldkit/ui/anchor/anchor.js#getOrCreateDialogPortalRoot");
|
|
71
|
+
}
|
|
72
|
+
const portalRoot = document.createElement('div');
|
|
73
|
+
portalRoot.setAttribute(DIALOG_PORTAL_ROOT_ATTRIBUTE, '');
|
|
74
|
+
// NOTE: appended, unlike the containing root's portal root. A dialog's
|
|
75
|
+
// content is usually one positioned panel, and an element prepended before
|
|
76
|
+
// it paints under that panel unless it has its own z-index. Backdrops do not
|
|
77
|
+
// come here: `portalBackdrop` places them next to their wrapper instead.
|
|
78
|
+
dialog.append(portalRoot);
|
|
79
|
+
return __foldkitBrandViewResult((portalRoot), "@foldkit/ui/anchor/anchor.js#getOrCreateDialogPortalRoot");
|
|
80
|
+
};
|
|
81
|
+
const isDialogPortalRoot = (element) => __foldkitBrandViewResult((element.hasAttribute(DIALOG_PORTAL_ROOT_ATTRIBUTE)), "@foldkit/ui/anchor/anchor.js#isDialogPortalRoot");
|
|
82
|
+
// NOTE: a dialog is its own stacking level (`Dom.showDialog` gives it a
|
|
83
|
+
// near-maximal z-index, `showModal()` puts it in the top layer) and the only
|
|
84
|
+
// subtree a modal dialog leaves interactive. An element portaled out of it is
|
|
85
|
+
// painted behind the dialog and made inert, so an element inside a dialog is
|
|
86
|
+
// portaled into that dialog instead. `closest` must be read here, before the
|
|
87
|
+
// element is relocated out of the mounting tree.
|
|
88
|
+
const getOrCreatePortalRoot = (element) => __foldkitBrandViewResult((Option.match(Option.fromNullishOr(element.closest('dialog')), {
|
|
89
|
+
onNone: () => __foldkitBrandViewResult((getOrCreateContainingRootPortalRoot(element)), "@foldkit/ui/anchor/anchor.js#onNone"),
|
|
90
|
+
onSome: getOrCreateDialogPortalRoot,
|
|
91
|
+
})), "@foldkit/ui/anchor/anchor.js#getOrCreatePortalRoot");
|
|
92
|
+
/** Relocates an element into a portal root and returns a cleanup function
|
|
93
|
+
* that removes it again. Inside a `<dialog>`, the portal root is a div
|
|
94
|
+
* appended to that dialog, so the element stays above the dialog's content
|
|
95
|
+
* and interactive while a modal dialog makes everything outside it inert.
|
|
96
|
+
* The cleanup removes that div once it is empty. Otherwise the portal root
|
|
97
|
+
* is the shared `foldkit-portal-root` div within the element's containing
|
|
98
|
+
* root: the shadow root when mounted inside one, otherwise `document.body`.
|
|
99
|
+
* Either way the element escapes the clipping and stacking contexts of the
|
|
100
|
+
* ancestors it leaves, and keeps its root's scoped styles. Use
|
|
101
|
+
* `portalBackdrop` for a click-outside backdrop. Designed to be called from
|
|
102
|
+
* inside an `OnMount` action: the consumer wraps the call in `Effect.sync`
|
|
103
|
+
* and stashes the returned cleanup in the `Mount` result. */
|
|
73
104
|
export const portalToContainingRoot = (element) => {
|
|
74
|
-
getOrCreatePortalRoot(element)
|
|
105
|
+
const portalRoot = getOrCreatePortalRoot(element);
|
|
106
|
+
portalRoot.appendChild(element);
|
|
75
107
|
return __foldkitBrandViewResult((() => {
|
|
76
108
|
try {
|
|
77
109
|
element.remove();
|
|
@@ -81,8 +113,54 @@ export const portalToContainingRoot = (element) => {
|
|
|
81
113
|
// so the remove() call can throw on a node that's already been removed.
|
|
82
114
|
// Swallow the error.
|
|
83
115
|
}
|
|
116
|
+
// NOTE: a dialog's children are usually rendered only while it is open,
|
|
117
|
+
// so after a close an empty portal root would be the dialog's only child,
|
|
118
|
+
// and on the next open the dialog's content would be inserted after it.
|
|
119
|
+
// Removing it lets the next element portaled into this dialog append a
|
|
120
|
+
// fresh root after the content.
|
|
121
|
+
if (isDialogPortalRoot(portalRoot) && !portalRoot.hasChildNodes()) {
|
|
122
|
+
portalRoot.remove();
|
|
123
|
+
}
|
|
84
124
|
}), "@foldkit/ui/anchor/anchor.js#portalToContainingRoot");
|
|
85
125
|
};
|
|
126
|
+
const findWrapperInsideDialog = (element) => {
|
|
127
|
+
const dialog = element.closest('dialog');
|
|
128
|
+
return __foldkitBrandViewResult((pipe(Option.fromNullishOr(element.parentElement), Option.filter(parent => __foldkitBrandViewResult((dialog !== null && parent !== dialog), "@foldkit/ui/anchor/anchor.js#anonymous~2")))), "@foldkit/ui/anchor/anchor.js#findWrapperInsideDialog");
|
|
129
|
+
};
|
|
130
|
+
/** Relocates a click-outside backdrop and returns a cleanup function that
|
|
131
|
+
* removes it again. Outside a `<dialog>`, it does what
|
|
132
|
+
* `portalToContainingRoot` does. Inside a `<dialog>`, the backdrop moves to
|
|
133
|
+
* directly before the element it was rendered in, which is the component
|
|
134
|
+
* wrapper that holds the trigger. The backdrop then covers the dialog's
|
|
135
|
+
* content, and the wrapper stays above it, so a click on a Combobox input
|
|
136
|
+
* reaches the input while a click anywhere else in the dialog reaches the
|
|
137
|
+
* backdrop. The wrapper must be positioned, for example `position:
|
|
138
|
+
* relative`, which is also what keeps it above a backdrop in the containing
|
|
139
|
+
* root. While the backdrop is there, it is a sibling of the wrapper, so
|
|
140
|
+
* sibling-based selectors such as `:first-child` or Tailwind's `divide-y`
|
|
141
|
+
* count it. Some CSS on an ancestor between the wrapper and the dialog
|
|
142
|
+
* confines the backdrop to that ancestor: anything that makes the ancestor
|
|
143
|
+
* the containing block for fixed-position elements, for example
|
|
144
|
+
* `transform`, `scale`, `filter`, `backdrop-filter`, or `container-type`.
|
|
145
|
+
* A click outside that ancestor then leaves the overlay open, and if it
|
|
146
|
+
* also lands outside the dialog panel, it closes the whole dialog. A
|
|
147
|
+
* backdrop rendered directly in the dialog goes into the dialog's portal
|
|
148
|
+
* root instead. Designed to be called from inside an `OnMount` action,
|
|
149
|
+
* like `portalToContainingRoot`. */
|
|
150
|
+
export const portalBackdrop = (element) => __foldkitBrandViewResult((Option.match(findWrapperInsideDialog(element), {
|
|
151
|
+
onNone: () => __foldkitBrandViewResult((portalToContainingRoot(element)), "@foldkit/ui/anchor/anchor.js#onNone~2"),
|
|
152
|
+
onSome: wrapper => {
|
|
153
|
+
// NOTE: positioned elements without a z-index paint in tree order, and
|
|
154
|
+
// every non-positioned element paints before them. Placed directly
|
|
155
|
+
// before the positioned wrapper, the backdrop paints over the dialog
|
|
156
|
+
// panel and its content but under the wrapper and the trigger inside it.
|
|
157
|
+
// The dialog portal root cannot give both: appended, the backdrop would
|
|
158
|
+
// cover the trigger too, and prepended, the dialog panel would cover the
|
|
159
|
+
// backdrop. `closest` and `parentElement` must be read before the move.
|
|
160
|
+
wrapper.before(element);
|
|
161
|
+
return __foldkitBrandViewResult((() => __foldkitBrandViewResult((element.remove()), "@foldkit/ui/anchor/anchor.js#anonymous~3")), "@foldkit/ui/anchor/anchor.js#onSome");
|
|
162
|
+
},
|
|
163
|
+
})), "@foldkit/ui/anchor/anchor.js#portalBackdrop");
|
|
86
164
|
const isInsideFixedContainer = (element) => __foldkitBrandViewResult((element !== null &&
|
|
87
165
|
(getComputedStyle(element).position === 'fixed' ||
|
|
88
166
|
isInsideFixedContainer(element.parentElement))), "@foldkit/ui/anchor/anchor.js#isInsideFixedContainer");
|
|
@@ -136,8 +214,17 @@ export const anchorSetup = (element, config) => {
|
|
|
136
214
|
const root = element.getRootNode();
|
|
137
215
|
const inShadow = root instanceof ShadowRoot;
|
|
138
216
|
const owner = inShadow ? root : document;
|
|
217
|
+
if (!(element instanceof HTMLElement)) {
|
|
218
|
+
console.error('[@foldkit/ui] anchorSetup requires an HTML panel. The panel will not be positioned.');
|
|
219
|
+
return __foldkitBrandViewResult((Function.constVoid), "@foldkit/ui/anchor/anchor.js#anchorSetup");
|
|
220
|
+
}
|
|
139
221
|
const button = owner.getElementById(config.buttonId);
|
|
140
|
-
if (
|
|
222
|
+
if (button === null) {
|
|
223
|
+
console.error(`[@foldkit/ui] anchorSetup could not find a trigger with id "${config.buttonId}". The panel will not be positioned.`);
|
|
224
|
+
return __foldkitBrandViewResult((Function.constVoid), "@foldkit/ui/anchor/anchor.js#anchorSetup");
|
|
225
|
+
}
|
|
226
|
+
if (!(button instanceof HTMLElement)) {
|
|
227
|
+
console.error(`[@foldkit/ui] anchorSetup requires an HTML trigger with id "${config.buttonId}". The panel will not be positioned.`);
|
|
141
228
|
return __foldkitBrandViewResult((Function.constVoid), "@foldkit/ui/anchor/anchor.js#anchorSetup");
|
|
142
229
|
}
|
|
143
230
|
const isPortal = config.anchor.portal ?? true;
|
|
@@ -163,12 +250,12 @@ export const anchorSetup = (element, config) => {
|
|
|
163
250
|
// inside the panel. The candidate is not narrowed to `HTMLElement`, since
|
|
164
251
|
// Floating UI's `arrow` takes any `Element` and a triangle arrow is usually
|
|
165
252
|
// an `<svg>`.
|
|
166
|
-
const maybeArrowElement = pipe(Option.fromNullishOr(config.arrowId), Option.flatMapNullishOr(arrowId => __foldkitBrandViewResult((owner.getElementById(arrowId)), "@foldkit/ui/anchor/anchor.js#anonymous~
|
|
253
|
+
const maybeArrowElement = pipe(Option.fromNullishOr(config.arrowId), Option.flatMapNullishOr(arrowId => __foldkitBrandViewResult((owner.getElementById(arrowId)), "@foldkit/ui/anchor/anchor.js#anonymous~4")), Option.filter(candidate => __foldkitBrandViewResult((element.contains(candidate)), "@foldkit/ui/anchor/anchor.js#anonymous~5")));
|
|
167
254
|
const arrowMiddleware = Option.match(maybeArrowElement, {
|
|
168
|
-
onNone: () => __foldkitBrandViewResult(([]), "@foldkit/ui/anchor/anchor.js#onNone"),
|
|
255
|
+
onNone: () => __foldkitBrandViewResult(([]), "@foldkit/ui/anchor/anchor.js#onNone~3"),
|
|
169
256
|
onSome: arrowElement => __foldkitBrandViewResult(([
|
|
170
257
|
arrow({ element: arrowElement, padding: config.arrowPadding ?? 0 }),
|
|
171
|
-
]), "@foldkit/ui/anchor/anchor.js#onSome"),
|
|
258
|
+
]), "@foldkit/ui/anchor/anchor.js#onSome~2"),
|
|
172
259
|
});
|
|
173
260
|
const { placement, gap, offset: crossAxis, padding, isPlacementLocked, } = config.anchor;
|
|
174
261
|
const shouldInterceptTab = config.interceptTab ?? true;
|
package/dist/anchor/public.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { anchorSetup, portalToContainingRoot, AnchorConfig, Placement, Padding, } from './index.js';
|
|
1
|
+
export { anchorSetup, portalBackdrop, portalToContainingRoot, AnchorConfig, Placement, Padding, } from './index.js';
|
|
2
2
|
export type { SetupConfig } from './index.js';
|
|
3
3
|
//# sourceMappingURL=public.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/anchor/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,OAAO,GACR,MAAM,YAAY,CAAA;AAEnB,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/anchor/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,OAAO,GACR,MAAM,YAAY,CAAA;AAEnB,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/anchor/public.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { anchorSetup, portalToContainingRoot, AnchorConfig, Placement, Padding, } from './index.js';
|
|
1
|
+
export { anchorSetup, portalBackdrop, portalToContainingRoot, AnchorConfig, Placement, Padding, } from './index.js';
|
|
@@ -28,10 +28,13 @@ export declare const view: import("foldkit/submodel").View<{
|
|
|
28
28
|
readonly id: string;
|
|
29
29
|
readonly isShowing: boolean;
|
|
30
30
|
readonly transitionState: "EnterAnimating" | "EnterStart" | "Idle" | "LeaveAnimating" | "LeaveStart";
|
|
31
|
+
readonly transitionGeneration: number;
|
|
31
32
|
}, {
|
|
32
33
|
readonly _tag: "CompletedWaitForPaint";
|
|
34
|
+
readonly generation: number;
|
|
33
35
|
} | {
|
|
34
36
|
readonly _tag: "EndedAnimation";
|
|
37
|
+
readonly generation: number;
|
|
35
38
|
} | {
|
|
36
39
|
readonly _tag: "Hid";
|
|
37
40
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/animation/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAGjE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,mBAAmB,EACnB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,MAAM,EACP,MAAM,aAAa,CAAA;AAEpB,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,CAAA;AAE5D,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,mBAAmB,EACnB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,MAAM,GACP,CAAA;AAID,qFAAqF;AACrF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,OAAO,EAAE,IAAI,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IACtC;;2EAEuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAC,CAAA;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/animation/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAGjE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,mBAAmB,EACnB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,MAAM,EACP,MAAM,aAAa,CAAA;AAEpB,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,CAAA;AAE5D,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,mBAAmB,EACnB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,MAAM,GACP,CAAA;AAID,qFAAqF;AACrF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,OAAO,EAAE,IAAI,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IACtC;;2EAEuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAC,CAAA;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;aAnBN,IAAI;gBACD,MAAM;iBACL,aAAa,CAAC,cAAc,CAAC;cAChC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC;IACtC;;2EAEuE;kBACzD,OAAO;GA2GtB,CAAA"}
|
|
@@ -2,25 +2,34 @@ import { Schema } from 'effect';
|
|
|
2
2
|
/** Schema for the animation lifecycle state, tracking enter/leave phases. */
|
|
3
3
|
export declare const TransitionState: Schema.Literals<readonly ["Idle", "EnterStart", "EnterAnimating", "LeaveStart", "LeaveAnimating"]>;
|
|
4
4
|
export type TransitionState = typeof TransitionState.Type;
|
|
5
|
-
/** Schema for
|
|
5
|
+
/** Schema for Animation state, including the transition generation used to reject
|
|
6
|
+
* stale Command results. */
|
|
6
7
|
export declare const Model: Schema.Struct<{
|
|
7
8
|
readonly id: Schema.String;
|
|
8
9
|
readonly isShowing: Schema.Boolean;
|
|
9
10
|
readonly transitionState: Schema.Literals<readonly ["Idle", "EnterStart", "EnterAnimating", "LeaveStart", "LeaveAnimating"]>;
|
|
11
|
+
readonly transitionGeneration: Schema.Number;
|
|
10
12
|
}>;
|
|
11
13
|
export type Model = typeof Model.Type;
|
|
12
14
|
/** Union of all messages the animation component can produce. */
|
|
13
15
|
export declare const Message: import("foldkit/message").MessageUnion<{
|
|
14
16
|
readonly Showed: {};
|
|
15
17
|
readonly Hid: {};
|
|
16
|
-
readonly CompletedWaitForPaint: {
|
|
17
|
-
|
|
18
|
+
readonly CompletedWaitForPaint: {
|
|
19
|
+
generation: Schema.Number;
|
|
20
|
+
};
|
|
21
|
+
readonly EndedAnimation: {
|
|
22
|
+
generation: Schema.Number;
|
|
23
|
+
};
|
|
18
24
|
}>;
|
|
19
25
|
export type Message = typeof Message.Type;
|
|
20
26
|
export type Showed = typeof Message.Showed.Type;
|
|
21
27
|
export type Hid = typeof Message.Hid.Type;
|
|
28
|
+
/** Union of the facts Animation reports to its parent. */
|
|
22
29
|
export declare const OutMessage: import("foldkit/message").MessageUnion<{
|
|
23
|
-
readonly StartedLeaveAnimating: {
|
|
30
|
+
readonly StartedLeaveAnimating: {
|
|
31
|
+
generation: Schema.Number;
|
|
32
|
+
};
|
|
24
33
|
readonly TransitionedOut: {};
|
|
25
34
|
}>;
|
|
26
35
|
export type OutMessage = typeof OutMessage.Type;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/animation/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAK/B,6EAA6E;AAC7E,eAAO,MAAM,eAAe,oGAM1B,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAIzD
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/animation/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAK/B,6EAA6E;AAC7E,eAAO,MAAM,eAAe,oGAM1B,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAIzD;6BAC6B;AAC7B,eAAO,MAAM,KAAK;;;;;EAKhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,iEAAiE;AACjE,eAAO,MAAM,OAAO;;;;QAGO,UAAU;;;QACjB,UAAU;;EAC5B,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC,MAAM,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAA;AAC/C,MAAM,MAAM,GAAG,GAAG,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAA;AAIzC,0DAA0D;AAC1D,eAAO,MAAM,UAAU;;QACI,UAAU;;;EAEnC,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAI/C,iEAAiE;AACjE,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAC,CAAA;AAEF,4EAA4E;AAC5E,eAAO,MAAM,IAAI,WAAY,UAAU,KAAG,KAKxC,CAAA"}
|
package/dist/animation/schema.js
CHANGED
|
@@ -11,23 +11,26 @@ export const TransitionState = Schema.Literals([
|
|
|
11
11
|
'LeaveAnimating',
|
|
12
12
|
]);
|
|
13
13
|
// MODEL
|
|
14
|
-
/** Schema for
|
|
14
|
+
/** Schema for Animation state, including the transition generation used to reject
|
|
15
|
+
* stale Command results. */
|
|
15
16
|
export const Model = Schema.Struct({
|
|
16
17
|
id: Schema.String,
|
|
17
18
|
isShowing: Schema.Boolean,
|
|
18
19
|
transitionState: TransitionState,
|
|
20
|
+
transitionGeneration: Schema.Number,
|
|
19
21
|
});
|
|
20
22
|
// MESSAGE
|
|
21
23
|
/** Union of all messages the animation component can produce. */
|
|
22
24
|
export const Message = defineMessageUnion({
|
|
23
25
|
Showed: {},
|
|
24
26
|
Hid: {},
|
|
25
|
-
CompletedWaitForPaint: {},
|
|
26
|
-
EndedAnimation: {},
|
|
27
|
+
CompletedWaitForPaint: { generation: Schema.Number },
|
|
28
|
+
EndedAnimation: { generation: Schema.Number },
|
|
27
29
|
});
|
|
28
30
|
// OUT MESSAGE
|
|
31
|
+
/** Union of the facts Animation reports to its parent. */
|
|
29
32
|
export const OutMessage = defineMessageUnion({
|
|
30
|
-
StartedLeaveAnimating: {},
|
|
33
|
+
StartedLeaveAnimating: { generation: Schema.Number },
|
|
31
34
|
TransitionedOut: {},
|
|
32
35
|
});
|
|
33
36
|
/** Creates an initial animation model from a config. Defaults to hidden. */
|
|
@@ -35,4 +38,5 @@ export const init = (config) => (__foldkitBrandViewResult(({
|
|
|
35
38
|
id: config.id,
|
|
36
39
|
isShowing: config.isShowing ?? false,
|
|
37
40
|
transitionState: 'Idle',
|
|
41
|
+
transitionGeneration: 0,
|
|
38
42
|
}), "@foldkit/ui/animation/schema.js#init"));
|
|
@@ -3,20 +3,28 @@ import { type Update } from 'foldkit';
|
|
|
3
3
|
import * as Command from 'foldkit/command';
|
|
4
4
|
import { type Hid, Message, type Model, OutMessage, type Showed } from './schema.js';
|
|
5
5
|
type UpdateReturn = Update.ReturnWithOutMessage<Model, Message, OutMessage>;
|
|
6
|
-
/** Waits for paint via double-rAF
|
|
7
|
-
|
|
6
|
+
/** Waits for paint via double-rAF, then reports the transition generation that
|
|
7
|
+
* scheduled the wait. */
|
|
8
|
+
export declare const WaitForPaint: Command.CommandDefinitionWithArgs<"WaitForPaint", {
|
|
9
|
+
generation: Schema.Number;
|
|
10
|
+
}, Effect.Effect<{
|
|
8
11
|
readonly _tag: "CompletedWaitForPaint";
|
|
12
|
+
readonly generation: number;
|
|
9
13
|
}, never, never>>;
|
|
10
|
-
/** Waits for all CSS animations on the element to
|
|
14
|
+
/** Waits for all CSS transitions and keyframe animations on the element to
|
|
15
|
+
* settle, then reports the transition generation that scheduled the wait. */
|
|
11
16
|
export declare const WaitForAnimationSettled: Command.CommandDefinitionWithArgs<"WaitForAnimationSettled", {
|
|
12
17
|
id: Schema.String;
|
|
18
|
+
generation: Schema.Number;
|
|
13
19
|
}, Effect.Effect<{
|
|
14
20
|
readonly _tag: "EndedAnimation";
|
|
21
|
+
readonly generation: number;
|
|
15
22
|
}, never, never>>;
|
|
16
23
|
/** Processes an Animation Message and returns the next Model, optional
|
|
17
24
|
* Commands, and an optional OutMessage. `Showed` and `Hid` start a transition
|
|
18
25
|
* but cannot finish one, so direct calls with either Message return a plain
|
|
19
|
-
* update result.
|
|
26
|
+
* update result. Results from an earlier transition generation leave the Model
|
|
27
|
+
* unchanged. */
|
|
20
28
|
export declare function update(model: Model, message: Showed | Hid): Update.Return<Model, Message>;
|
|
21
29
|
export declare function update(model: Model, message: Message): UpdateReturn;
|
|
22
30
|
/** Programmatically starts the enter lifecycle. */
|
|
@@ -25,7 +33,9 @@ export declare const show: (model: Model) => Update.Return<Model, Message>;
|
|
|
25
33
|
export declare const hide: (model: Model) => Update.Return<Model, Message>;
|
|
26
34
|
/** Toggles the animation between its shown and hidden states. */
|
|
27
35
|
export declare const toggle: (model: Model) => Update.Return<Model, Message>;
|
|
28
|
-
/** Creates the standard leave
|
|
36
|
+
/** Creates the standard leave Command for the Model's current transition. Use
|
|
37
|
+
* this when handling `StartedLeaveAnimating` unless the component needs its
|
|
38
|
+
* own settlement strategy. */
|
|
29
39
|
export declare const defaultLeaveCommand: (model: Model) => Command.Command<Message>;
|
|
30
40
|
export {};
|
|
31
41
|
//# sourceMappingURL=update.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/animation/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/animation/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,MAAM,EAAE,MAAM,QAAQ,CAAA;AACtD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAM1C,OAAO,EACL,KAAK,GAAG,EACR,OAAO,EACP,KAAK,KAAK,EACV,UAAU,EACV,KAAK,MAAM,EACZ,MAAM,aAAa,CAAA;AAMpB,KAAK,YAAY,GAAG,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;AAG3E;0BAC0B;AAC1B,eAAO,MAAM,YAAY;;;;;iBAOvB,CAAA;AACF;8EAC8E;AAC9E,eAAO,MAAM,uBAAuB;;;;;;iBAUnC,CAAA;AAED;;;;iBAIiB;AACjB,wBAAgB,MAAM,CACpB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,GAAG,GAAG,GACpB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAChC,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,YAAY,CAAA;AA+FpE,mDAAmD;AACnD,eAAO,MAAM,IAAI,UAAW,KAAK,KAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAC/B,CAAA;AAEjC,mDAAmD;AACnD,eAAO,MAAM,IAAI,UAAW,KAAK,KAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAClC,CAAA;AAE9B,iEAAiE;AACjE,eAAO,MAAM,MAAM,UAAW,KAAK,KAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAMjE,CAAA;AAED;;+BAE+B;AAC/B,eAAO,MAAM,mBAAmB,UAAW,KAAK,KAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAItE,CAAA"}
|
package/dist/animation/update.js
CHANGED
|
@@ -1,38 +1,42 @@
|
|
|
1
1
|
import { brandViewResult as __foldkitBrandViewResult } from 'foldkit/brand'
|
|
2
|
-
import { Effect, Match, Schema } from 'effect';
|
|
2
|
+
import { Effect, Match, Number, Schema } from 'effect';
|
|
3
3
|
import * as Command from 'foldkit/command';
|
|
4
4
|
import * as Dom from 'foldkit/dom';
|
|
5
5
|
import * as Render from 'foldkit/render';
|
|
6
|
-
import {
|
|
6
|
+
import { modifyFields } from 'foldkit/struct';
|
|
7
7
|
import { idSelector } from '../internal/selectors.js';
|
|
8
8
|
import { Message, OutMessage, } from './schema.js';
|
|
9
9
|
// UPDATE
|
|
10
10
|
const elementSelector = (id) => __foldkitBrandViewResult((idSelector(id)), "@foldkit/ui/animation/update.js#elementSelector");
|
|
11
11
|
const withUpdateReturn = Match.withReturnType();
|
|
12
|
-
/** Waits for paint via double-rAF
|
|
12
|
+
/** Waits for paint via double-rAF, then reports the transition generation that
|
|
13
|
+
* scheduled the wait. */
|
|
13
14
|
export const WaitForPaint = Command.define('WaitForPaint', {
|
|
15
|
+
args: { generation: Schema.Number },
|
|
14
16
|
messages: [Message.CompletedWaitForPaint],
|
|
15
|
-
execute: Render.afterPaint.pipe(Effect.as(Message.CompletedWaitForPaint())),
|
|
17
|
+
execute: ({ generation }) => __foldkitBrandViewResult((Render.afterPaint.pipe(Effect.as(Message.CompletedWaitForPaint({ generation })))), "@foldkit/ui/animation/update.js#execute"),
|
|
16
18
|
});
|
|
17
|
-
/** Waits for all CSS animations on the element to
|
|
19
|
+
/** Waits for all CSS transitions and keyframe animations on the element to
|
|
20
|
+
* settle, then reports the transition generation that scheduled the wait. */
|
|
18
21
|
export const WaitForAnimationSettled = Command.define('WaitForAnimationSettled', {
|
|
19
|
-
args: { id: Schema.String },
|
|
22
|
+
args: { id: Schema.String, generation: Schema.Number },
|
|
20
23
|
messages: [Message.EndedAnimation],
|
|
21
|
-
execute: ({ id }) => __foldkitBrandViewResult((Dom.waitForAnimationSettled(elementSelector(id)).pipe(Effect.as(Message.EndedAnimation()))), "@foldkit/ui/animation/update.js#execute"),
|
|
24
|
+
execute: ({ id, generation }) => __foldkitBrandViewResult((Dom.waitForAnimationSettled(elementSelector(id)).pipe(Effect.as(Message.EndedAnimation({ generation })))), "@foldkit/ui/animation/update.js#execute~2"),
|
|
22
25
|
});
|
|
23
26
|
export function update(model, message) {
|
|
24
|
-
const maybeNextFrame = WaitForPaint();
|
|
25
27
|
return __foldkitBrandViewResult((Message.match(message, {
|
|
26
28
|
Showed: () => {
|
|
27
29
|
if (model.isShowing) {
|
|
28
30
|
return __foldkitBrandViewResult(({ model }), "@foldkit/ui/animation/update.js#Showed");
|
|
29
31
|
}
|
|
32
|
+
const nextTransitionGeneration = Number.increment(model.transitionGeneration);
|
|
30
33
|
return __foldkitBrandViewResult(({
|
|
31
|
-
model:
|
|
34
|
+
model: modifyFields(model, {
|
|
32
35
|
isShowing: () => __foldkitBrandViewResult((true), "@foldkit/ui/animation/update.js#isShowing"),
|
|
33
36
|
transitionState: () => __foldkitBrandViewResult(('EnterStart'), "@foldkit/ui/animation/update.js#transitionState"),
|
|
37
|
+
transitionGeneration: () => __foldkitBrandViewResult((nextTransitionGeneration), "@foldkit/ui/animation/update.js#transitionGeneration"),
|
|
34
38
|
}),
|
|
35
|
-
commands: [
|
|
39
|
+
commands: [WaitForPaint({ generation: nextTransitionGeneration })],
|
|
36
40
|
}), "@foldkit/ui/animation/update.js#Showed");
|
|
37
41
|
},
|
|
38
42
|
Hid: () => {
|
|
@@ -41,27 +45,50 @@ export function update(model, message) {
|
|
|
41
45
|
if (isLeaving || !model.isShowing) {
|
|
42
46
|
return __foldkitBrandViewResult(({ model }), "@foldkit/ui/animation/update.js#Hid");
|
|
43
47
|
}
|
|
48
|
+
const nextTransitionGeneration = Number.increment(model.transitionGeneration);
|
|
44
49
|
return __foldkitBrandViewResult(({
|
|
45
|
-
model:
|
|
50
|
+
model: modifyFields(model, {
|
|
46
51
|
isShowing: () => __foldkitBrandViewResult((false), "@foldkit/ui/animation/update.js#isShowing~2"),
|
|
47
52
|
transitionState: () => __foldkitBrandViewResult(('LeaveStart'), "@foldkit/ui/animation/update.js#transitionState~2"),
|
|
53
|
+
transitionGeneration: () => __foldkitBrandViewResult((nextTransitionGeneration), "@foldkit/ui/animation/update.js#transitionGeneration~2"),
|
|
48
54
|
}),
|
|
49
|
-
commands: [
|
|
55
|
+
commands: [WaitForPaint({ generation: nextTransitionGeneration })],
|
|
50
56
|
}), "@foldkit/ui/animation/update.js#Hid");
|
|
51
57
|
},
|
|
52
|
-
CompletedWaitForPaint: (
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
58
|
+
CompletedWaitForPaint: ({ generation }) => {
|
|
59
|
+
if (generation !== model.transitionGeneration) {
|
|
60
|
+
return __foldkitBrandViewResult(({ model }), "@foldkit/ui/animation/update.js#CompletedWaitForPaint");
|
|
61
|
+
}
|
|
62
|
+
return __foldkitBrandViewResult((Match.value(model.transitionState).pipe(withUpdateReturn, Match.when('EnterStart', () => (__foldkitBrandViewResult(({
|
|
63
|
+
model: modifyFields(model, {
|
|
64
|
+
transitionState: () => __foldkitBrandViewResult(('EnterAnimating'), "@foldkit/ui/animation/update.js#transitionState~3"),
|
|
65
|
+
}),
|
|
66
|
+
commands: [
|
|
67
|
+
WaitForAnimationSettled({
|
|
68
|
+
id: model.id,
|
|
69
|
+
generation: model.transitionGeneration,
|
|
70
|
+
}),
|
|
71
|
+
],
|
|
72
|
+
}), "@foldkit/ui/animation/update.js#anonymous"))), Match.when('LeaveStart', () => (__foldkitBrandViewResult(({
|
|
73
|
+
model: modifyFields(model, {
|
|
74
|
+
transitionState: () => __foldkitBrandViewResult(('LeaveAnimating'), "@foldkit/ui/animation/update.js#transitionState~4"),
|
|
75
|
+
}),
|
|
76
|
+
outMessage: OutMessage.StartedLeaveAnimating({
|
|
77
|
+
generation: model.transitionGeneration,
|
|
78
|
+
}),
|
|
79
|
+
}), "@foldkit/ui/animation/update.js#anonymous~2"))), Match.orElse(() => (__foldkitBrandViewResult(({ model }), "@foldkit/ui/animation/update.js#anonymous~3"))))), "@foldkit/ui/animation/update.js#CompletedWaitForPaint");
|
|
80
|
+
},
|
|
81
|
+
EndedAnimation: ({ generation }) => {
|
|
82
|
+
if (generation !== model.transitionGeneration) {
|
|
83
|
+
return __foldkitBrandViewResult(({ model }), "@foldkit/ui/animation/update.js#EndedAnimation");
|
|
84
|
+
}
|
|
85
|
+
return __foldkitBrandViewResult((Match.value(model.transitionState).pipe(withUpdateReturn, Match.when('EnterAnimating', () => (__foldkitBrandViewResult(({
|
|
86
|
+
model: modifyFields(model, { transitionState: () => __foldkitBrandViewResult(('Idle'), "@foldkit/ui/animation/update.js#transitionState~5") }),
|
|
87
|
+
}), "@foldkit/ui/animation/update.js#anonymous~4"))), Match.when('LeaveAnimating', () => (__foldkitBrandViewResult(({
|
|
88
|
+
model: modifyFields(model, { transitionState: () => __foldkitBrandViewResult(('Idle'), "@foldkit/ui/animation/update.js#transitionState~6") }),
|
|
89
|
+
outMessage: OutMessage.TransitionedOut(),
|
|
90
|
+
}), "@foldkit/ui/animation/update.js#anonymous~5"))), Match.orElse(() => (__foldkitBrandViewResult(({ model }), "@foldkit/ui/animation/update.js#anonymous~6"))))), "@foldkit/ui/animation/update.js#EndedAnimation");
|
|
91
|
+
},
|
|
65
92
|
})), "@foldkit/ui/animation/update.js#update");
|
|
66
93
|
}
|
|
67
94
|
/** Programmatically starts the enter lifecycle. */
|
|
@@ -77,5 +104,10 @@ export const toggle = (model) => {
|
|
|
77
104
|
return __foldkitBrandViewResult((show(model)), "@foldkit/ui/animation/update.js#toggle");
|
|
78
105
|
}
|
|
79
106
|
};
|
|
80
|
-
/** Creates the standard leave
|
|
81
|
-
|
|
107
|
+
/** Creates the standard leave Command for the Model's current transition. Use
|
|
108
|
+
* this when handling `StartedLeaveAnimating` unless the component needs its
|
|
109
|
+
* own settlement strategy. */
|
|
110
|
+
export const defaultLeaveCommand = (model) => __foldkitBrandViewResult((WaitForAnimationSettled({
|
|
111
|
+
id: model.id,
|
|
112
|
+
generation: model.transitionGeneration,
|
|
113
|
+
})), "@foldkit/ui/animation/update.js#defaultLeaveCommand");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/calendar/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/calendar/index.ts"],"names":[],"mappings":"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"}
|