element-vir 26.12.0 → 26.12.1
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/declarative-element/custom-tag-name.js +1 -0
- package/dist/declarative-element/declarative-element-init.d.ts +56 -0
- package/dist/declarative-element/declarative-element-init.js +1 -0
- package/dist/declarative-element/declarative-element.d.ts +114 -0
- package/dist/declarative-element/declarative-element.js +36 -0
- package/dist/declarative-element/define-element.d.ts +41 -0
- package/dist/declarative-element/define-element.js +248 -0
- package/{src/declarative-element/definition-options.ts → dist/declarative-element/definition-options.d.ts} +2 -7
- package/dist/declarative-element/definition-options.js +9 -0
- package/dist/declarative-element/directives/assign.directive.d.ts +24 -0
- package/dist/declarative-element/directives/assign.directive.js +34 -0
- package/dist/declarative-element/directives/async-prop.d.ts +61 -0
- package/{src/declarative-element/directives/async-prop.ts → dist/declarative-element/directives/async-prop.js} +8 -42
- package/dist/declarative-element/directives/attributes.directive.d.ts +30 -0
- package/dist/declarative-element/directives/attributes.directive.js +35 -0
- package/dist/declarative-element/directives/create-attribute-directive.d.ts +28 -0
- package/dist/declarative-element/directives/create-attribute-directive.js +41 -0
- package/dist/declarative-element/directives/directive-helpers.d.ts +27 -0
- package/dist/declarative-element/directives/directive-helpers.js +37 -0
- package/dist/declarative-element/directives/listen-to-activate.d.ts +15 -0
- package/{src/declarative-element/directives/listen-to-activate.ts → dist/declarative-element/directives/listen-to-activate.js} +3 -8
- package/dist/declarative-element/directives/listen.directive.d.ts +92 -0
- package/dist/declarative-element/directives/listen.directive.js +48 -0
- package/dist/declarative-element/directives/mutate.directive.d.ts +38 -0
- package/dist/declarative-element/directives/mutate.directive.js +45 -0
- package/dist/declarative-element/directives/on-dom-created.directive.d.ts +44 -0
- package/dist/declarative-element/directives/on-dom-created.directive.js +51 -0
- package/dist/declarative-element/directives/on-dom-rendered.directive.d.ts +41 -0
- package/dist/declarative-element/directives/on-dom-rendered.directive.js +45 -0
- package/dist/declarative-element/directives/on-intersect.directive.d.ts +64 -0
- package/dist/declarative-element/directives/on-intersect.directive.js +89 -0
- package/dist/declarative-element/directives/on-resize.directive.d.ts +74 -0
- package/dist/declarative-element/directives/on-resize.directive.js +106 -0
- package/dist/declarative-element/directives/render-async.directive.d.ts +45 -0
- package/dist/declarative-element/directives/render-async.directive.js +33 -0
- package/dist/declarative-element/directives/render-if.directive.d.ts +32 -0
- package/{src/declarative-element/directives/render-if.directive.ts → dist/declarative-element/directives/render-if.directive.js} +3 -12
- package/dist/declarative-element/directives/test-id.directive.d.ts +52 -0
- package/{src/declarative-element/directives/test-id.directive.ts → dist/declarative-element/directives/test-id.directive.js} +2 -7
- package/dist/declarative-element/has-declarative-element-parent.d.ts +1 -0
- package/{src/declarative-element/has-declarative-element-parent.ts → dist/declarative-element/has-declarative-element-parent.js} +4 -7
- package/dist/declarative-element/is-declarative-element-definition.d.ts +17 -0
- package/{src/declarative-element/is-declarative-element-definition.ts → dist/declarative-element/is-declarative-element-definition.js} +11 -28
- package/dist/declarative-element/is-declarative-element.d.ts +15 -0
- package/{src/declarative-element/is-declarative-element.ts → dist/declarative-element/is-declarative-element.js} +5 -11
- package/dist/declarative-element/properties/assign-inputs.d.ts +1 -0
- package/dist/declarative-element/properties/assign-inputs.js +25 -0
- package/dist/declarative-element/properties/css-vars.d.ts +16 -0
- package/dist/declarative-element/properties/css-vars.js +1 -0
- package/dist/declarative-element/properties/element-events.d.ts +65 -0
- package/dist/declarative-element/properties/element-events.js +62 -0
- package/dist/declarative-element/properties/element-properties.js +1 -0
- package/dist/declarative-element/properties/host-classes.d.ts +36 -0
- package/dist/declarative-element/properties/host-classes.js +16 -0
- package/dist/declarative-element/properties/property-proxy.d.ts +22 -0
- package/{src/declarative-element/properties/property-proxy.ts → dist/declarative-element/properties/property-proxy.js} +21 -58
- package/dist/declarative-element/properties/string-names.d.ts +28 -0
- package/dist/declarative-element/properties/string-names.js +40 -0
- package/dist/declarative-element/properties/styles.d.ts +51 -0
- package/dist/declarative-element/properties/styles.js +41 -0
- package/dist/declarative-element/properties/tag-name.js +1 -0
- package/dist/declarative-element/render-callback.d.ts +56 -0
- package/dist/declarative-element/render-callback.js +27 -0
- package/dist/declarative-element/wrap-define-element.d.ts +36 -0
- package/dist/declarative-element/wrap-define-element.js +25 -0
- package/{src/index.ts → dist/index.d.ts} +0 -1
- package/dist/index.js +43 -0
- package/dist/lit-exports/all-lit-exports.js +2 -0
- package/{src/lit-exports/base-lit-exports.ts → dist/lit-exports/base-lit-exports.d.ts} +2 -10
- package/dist/lit-exports/base-lit-exports.js +24 -0
- package/{src/lit-exports/lit-repeat-fix.ts → dist/lit-exports/lit-repeat-fix.d.ts} +16 -45
- package/dist/lit-exports/lit-repeat-fix.js +37 -0
- package/dist/readme-examples/my-app.element.d.ts +1 -0
- package/{src/readme-examples/my-app.element.ts → dist/readme-examples/my-app.element.js} +4 -5
- package/dist/readme-examples/my-custom-action.event.d.ts +1 -0
- package/dist/readme-examples/my-custom-action.event.js +2 -0
- package/dist/readme-examples/my-custom-define.d.ts +4 -0
- package/{src/readme-examples/my-custom-define.ts → dist/readme-examples/my-custom-define.js} +4 -9
- package/dist/readme-examples/my-simple.element.d.ts +1 -0
- package/{src/readme-examples/my-simple.element.ts → dist/readme-examples/my-simple.element.js} +3 -4
- package/dist/readme-examples/my-with-assignment.element.d.ts +1 -0
- package/dist/readme-examples/my-with-assignment.element.js +15 -0
- package/dist/readme-examples/my-with-async-prop.element.d.ts +10 -0
- package/{src/readme-examples/my-with-async-prop.element.ts → dist/readme-examples/my-with-async-prop.element.js} +16 -24
- package/dist/readme-examples/my-with-cleanup-callback.element.d.ts +3 -0
- package/{src/readme-examples/my-with-cleanup-callback.element.ts → dist/readme-examples/my-with-cleanup-callback.element.js} +4 -5
- package/dist/readme-examples/my-with-css-vars.element.d.ts +1 -0
- package/{src/readme-examples/my-with-css-vars.element.ts → dist/readme-examples/my-with-css-vars.element.js} +4 -5
- package/dist/readme-examples/my-with-custom-events.element.d.ts +1 -0
- package/dist/readme-examples/my-with-custom-events.element.js +22 -0
- package/dist/readme-examples/my-with-event-listening.element.d.ts +3 -0
- package/{src/readme-examples/my-with-event-listening.element.ts → dist/readme-examples/my-with-event-listening.element.js} +9 -10
- package/dist/readme-examples/my-with-events.element.d.ts +4 -0
- package/dist/readme-examples/my-with-events.element.js +20 -0
- package/dist/readme-examples/my-with-host-class-definition.element.d.ts +3 -0
- package/{src/readme-examples/my-with-host-class-definition.element.ts → dist/readme-examples/my-with-host-class-definition.element.js} +6 -7
- package/dist/readme-examples/my-with-host-class-usage.element.d.ts +1 -0
- package/{src/readme-examples/my-with-host-class-usage.element.ts → dist/readme-examples/my-with-host-class-usage.element.js} +4 -5
- package/dist/readme-examples/my-with-inputs.element.d.ts +4 -0
- package/dist/readme-examples/my-with-inputs.element.js +9 -0
- package/dist/readme-examples/my-with-on-dom-created.element.d.ts +1 -0
- package/{src/readme-examples/my-with-on-dom-created.element.ts → dist/readme-examples/my-with-on-dom-created.element.js} +6 -7
- package/dist/readme-examples/my-with-on-resize.element.d.ts +1 -0
- package/dist/readme-examples/my-with-on-resize.element.js +18 -0
- package/dist/readme-examples/my-with-render-if.element.d.ts +3 -0
- package/dist/readme-examples/my-with-render-if.element.js +11 -0
- package/dist/readme-examples/my-with-styles-and-interpolated-selector.element.d.ts +1 -0
- package/{src/readme-examples/my-with-styles-and-interpolated-selector.element.ts → dist/readme-examples/my-with-styles-and-interpolated-selector.element.js} +5 -6
- package/dist/readme-examples/my-with-styles.element.d.ts +1 -0
- package/{src/readme-examples/my-with-styles.element.ts → dist/readme-examples/my-with-styles.element.js} +4 -5
- package/dist/readme-examples/my-with-update-state.element.d.ts +8 -0
- package/{src/readme-examples/my-with-update-state.element.ts → dist/readme-examples/my-with-update-state.element.js} +7 -8
- package/dist/readme-examples/require-declarative-element.d.ts +1 -0
- package/dist/readme-examples/require-declarative-element.js +2 -0
- package/dist/require-declarative-element.d.ts +14 -0
- package/{src/require-declarative-element.ts → dist/require-declarative-element.js} +0 -1
- package/{src/template-transforms/minimal-element-definition.ts → dist/template-transforms/minimal-element-definition.d.ts} +7 -19
- package/dist/template-transforms/minimal-element-definition.js +19 -0
- package/dist/template-transforms/nested-mapped-templates.d.ts +6 -0
- package/dist/template-transforms/nested-mapped-templates.js +96 -0
- package/{src/template-transforms/template-transform-type.ts → dist/template-transforms/template-transform-type.d.ts} +1 -3
- package/dist/template-transforms/template-transform-type.js +1 -0
- package/dist/template-transforms/transform-template.d.ts +14 -0
- package/{src/template-transforms/transform-template.ts → dist/template-transforms/transform-template.js} +22 -70
- package/dist/template-transforms/vir-css/css-transform.d.ts +4 -0
- package/dist/template-transforms/vir-css/css-transform.js +15 -0
- package/dist/template-transforms/vir-css/vir-css.d.ts +12 -0
- package/dist/template-transforms/vir-css/vir-css.js +21 -0
- package/dist/template-transforms/vir-html/html-interpolation.d.ts +42 -0
- package/dist/template-transforms/vir-html/html-interpolation.js +1 -0
- package/dist/template-transforms/vir-html/html-transform.d.ts +5 -0
- package/dist/template-transforms/vir-html/html-transform.js +96 -0
- package/dist/template-transforms/vir-html/tag-name-keys.d.ts +7 -0
- package/{src/template-transforms/vir-html/tag-name-keys.ts → dist/template-transforms/vir-html/tag-name-keys.js} +1 -1
- package/dist/template-transforms/vir-html/vir-html.d.ts +11 -0
- package/{src/template-transforms/vir-html/vir-html.ts → dist/template-transforms/vir-html/vir-html.js} +5 -13
- package/dist/typed-event/typed-event.d.ts +55 -0
- package/dist/typed-event/typed-event.js +50 -0
- package/dist/util/array.d.ts +5 -0
- package/{src/util/array.ts → dist/util/array.js} +5 -18
- package/{src/util/increment.ts → dist/util/increment.d.ts} +5 -24
- package/dist/util/increment.js +1 -0
- package/dist/util/lit-template.d.ts +9 -0
- package/{src/util/lit-template.ts → dist/util/lit-template.js} +10 -30
- package/dist/util/map-async-value.d.ts +7 -0
- package/{src/util/map-async-value.ts → dist/util/map-async-value.js} +10 -12
- package/dist/util/type.js +1 -0
- package/package.json +4 -4
- package/src/declarative-element/declarative-element-init.ts +0 -115
- package/src/declarative-element/declarative-element.ts +0 -372
- package/src/declarative-element/define-element.ts +0 -515
- package/src/declarative-element/directives/assign.directive.ts +0 -89
- package/src/declarative-element/directives/attributes.directive.ts +0 -63
- package/src/declarative-element/directives/create-attribute-directive.ts +0 -47
- package/src/declarative-element/directives/directive-helpers.ts +0 -67
- package/src/declarative-element/directives/listen.directive.ts +0 -206
- package/src/declarative-element/directives/mutate.directive.ts +0 -78
- package/src/declarative-element/directives/on-dom-created.directive.ts +0 -68
- package/src/declarative-element/directives/on-dom-rendered.directive.ts +0 -61
- package/src/declarative-element/directives/on-intersect.directive.ts +0 -139
- package/src/declarative-element/directives/on-resize.directive.ts +0 -142
- package/src/declarative-element/directives/render-async.directive.ts +0 -111
- package/src/declarative-element/properties/assign-inputs.ts +0 -30
- package/src/declarative-element/properties/css-vars.ts +0 -24
- package/src/declarative-element/properties/element-events.ts +0 -161
- package/src/declarative-element/properties/host-classes.ts +0 -63
- package/src/declarative-element/properties/string-names.ts +0 -83
- package/src/declarative-element/properties/styles.ts +0 -112
- package/src/declarative-element/render-callback.ts +0 -196
- package/src/declarative-element/wrap-define-element.ts +0 -127
- package/src/readme-examples/my-custom-action.event.ts +0 -3
- package/src/readme-examples/my-with-assignment.element.ts +0 -16
- package/src/readme-examples/my-with-custom-events.element.ts +0 -23
- package/src/readme-examples/my-with-events.element.ts +0 -23
- package/src/readme-examples/my-with-inputs.element.ts +0 -13
- package/src/readme-examples/my-with-on-resize.element.ts +0 -19
- package/src/readme-examples/my-with-render-if.element.ts +0 -15
- package/src/readme-examples/require-declarative-element.ts +0 -3
- package/src/template-transforms/nested-mapped-templates.ts +0 -157
- package/src/template-transforms/vir-css/css-transform.ts +0 -30
- package/src/template-transforms/vir-css/vir-css.ts +0 -30
- package/src/template-transforms/vir-html/html-interpolation.ts +0 -103
- package/src/template-transforms/vir-html/html-transform.ts +0 -149
- package/src/typed-event/typed-event.ts +0 -90
- /package/{src/declarative-element/custom-tag-name.ts → dist/declarative-element/custom-tag-name.d.ts} +0 -0
- /package/{src/declarative-element/properties/element-properties.ts → dist/declarative-element/properties/element-properties.d.ts} +0 -0
- /package/{src/declarative-element/properties/tag-name.ts → dist/declarative-element/properties/tag-name.d.ts} +0 -0
- /package/{src/lit-exports/all-lit-exports.ts → dist/lit-exports/all-lit-exports.d.ts} +0 -0
- /package/{src/util/type.ts → dist/util/type.d.ts} +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type MaybePromise } from '@augment-vir/common';
|
|
2
|
+
import { type PartInfo } from '../../lit-exports/all-lit-exports.js';
|
|
3
|
+
/**
|
|
4
|
+
* The callback / listener passed to {@link onDomCreated}. The `element` parameter is a reference to
|
|
5
|
+
* the DOM element that the directive was attached to.
|
|
6
|
+
*
|
|
7
|
+
* @category Internal
|
|
8
|
+
*/
|
|
9
|
+
export type OnDomCreatedCallback = (element: Element) => MaybePromise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* A directive that fires its listener only once, when the element that it's attached to is
|
|
12
|
+
* constructed. This is particularly useful for getting references to internal elements immediately
|
|
13
|
+
* after they've rendered.
|
|
14
|
+
*
|
|
15
|
+
* @category Directives
|
|
16
|
+
* @example
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* import {html, defineElement, onDomCreated} from 'element-vir';
|
|
20
|
+
*
|
|
21
|
+
* const MyElement = defineElement()({
|
|
22
|
+
* tagName: 'my-element',
|
|
23
|
+
* render() {
|
|
24
|
+
* return html`
|
|
25
|
+
* <div
|
|
26
|
+
* ${onDomCreated((element) => {
|
|
27
|
+
* console.log('created!', element);
|
|
28
|
+
* })}
|
|
29
|
+
* >
|
|
30
|
+
* Some div
|
|
31
|
+
* </div>
|
|
32
|
+
* `;
|
|
33
|
+
* },
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare const onDomCreated: (callback: OnDomCreatedCallback) => import("lit-html/directive.js").DirectiveResult<{
|
|
38
|
+
new (partInfo: PartInfo): {
|
|
39
|
+
element: Element | undefined;
|
|
40
|
+
update(partInfo: PartInfo, [callback]: [OnDomCreatedCallback]): undefined;
|
|
41
|
+
render(callback: OnDomCreatedCallback): undefined;
|
|
42
|
+
get _$isConnected(): boolean;
|
|
43
|
+
};
|
|
44
|
+
}>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { directive, Directive } from '../../lit-exports/all-lit-exports.js';
|
|
2
|
+
import { assertIsElementPartInfo } from './directive-helpers.js';
|
|
3
|
+
const directiveName = 'onDomCreated';
|
|
4
|
+
/**
|
|
5
|
+
* A directive that fires its listener only once, when the element that it's attached to is
|
|
6
|
+
* constructed. This is particularly useful for getting references to internal elements immediately
|
|
7
|
+
* after they've rendered.
|
|
8
|
+
*
|
|
9
|
+
* @category Directives
|
|
10
|
+
* @example
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* import {html, defineElement, onDomCreated} from 'element-vir';
|
|
14
|
+
*
|
|
15
|
+
* const MyElement = defineElement()({
|
|
16
|
+
* tagName: 'my-element',
|
|
17
|
+
* render() {
|
|
18
|
+
* return html`
|
|
19
|
+
* <div
|
|
20
|
+
* ${onDomCreated((element) => {
|
|
21
|
+
* console.log('created!', element);
|
|
22
|
+
* })}
|
|
23
|
+
* >
|
|
24
|
+
* Some div
|
|
25
|
+
* </div>
|
|
26
|
+
* `;
|
|
27
|
+
* },
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export const onDomCreated = directive(class extends Directive {
|
|
32
|
+
element;
|
|
33
|
+
constructor(partInfo) {
|
|
34
|
+
super(partInfo);
|
|
35
|
+
assertIsElementPartInfo(partInfo, directiveName);
|
|
36
|
+
}
|
|
37
|
+
update(partInfo, [callback]) {
|
|
38
|
+
assertIsElementPartInfo(partInfo, directiveName);
|
|
39
|
+
const newElement = partInfo.element;
|
|
40
|
+
if (newElement !== this.element) {
|
|
41
|
+
// use requestAnimationFrame here so it can fire property changes outside of a render loop
|
|
42
|
+
window.requestAnimationFrame(() => callback(newElement));
|
|
43
|
+
this.element = newElement;
|
|
44
|
+
}
|
|
45
|
+
return this.render(callback);
|
|
46
|
+
}
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
48
|
+
render(callback) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type MaybePromise } from '@augment-vir/common';
|
|
2
|
+
import { type PartInfo } from '../../lit-exports/all-lit-exports.js';
|
|
3
|
+
/**
|
|
4
|
+
* The callback / listener passed to {@link onDomRendered}. The `element` parameter is a reference to
|
|
5
|
+
* the DOM element that the directive was attached to.
|
|
6
|
+
*
|
|
7
|
+
* @category Internal
|
|
8
|
+
*/
|
|
9
|
+
export type OnDomRenderedCallback = (element: Element) => MaybePromise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* A directive that fires its listener each time the element that it's attached to is rendered.
|
|
12
|
+
*
|
|
13
|
+
* @category Directives
|
|
14
|
+
* @example
|
|
15
|
+
*
|
|
16
|
+
* ```ts
|
|
17
|
+
* import {html, defineElement, onDomRendered} from 'element-vir';
|
|
18
|
+
*
|
|
19
|
+
* const MyElement = defineElement()({
|
|
20
|
+
* tagName: 'my-element',
|
|
21
|
+
* render() {
|
|
22
|
+
* return html`
|
|
23
|
+
* <div
|
|
24
|
+
* ${onDomRendered((element) => {
|
|
25
|
+
* console.log('rendered!', element);
|
|
26
|
+
* })}
|
|
27
|
+
* >
|
|
28
|
+
* Some div
|
|
29
|
+
* </div>
|
|
30
|
+
* `;
|
|
31
|
+
* },
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare const onDomRendered: (callback: OnDomRenderedCallback) => import("lit-html/directive.js").DirectiveResult<{
|
|
36
|
+
new (partInfo: PartInfo): {
|
|
37
|
+
update(partInfo: PartInfo, [callback]: [OnDomRenderedCallback]): undefined;
|
|
38
|
+
render(callback: OnDomRenderedCallback): undefined;
|
|
39
|
+
get _$isConnected(): boolean;
|
|
40
|
+
};
|
|
41
|
+
}>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { directive, Directive } from '../../lit-exports/all-lit-exports.js';
|
|
2
|
+
import { assertIsElementPartInfo } from './directive-helpers.js';
|
|
3
|
+
const directiveName = 'onDomRendered';
|
|
4
|
+
/**
|
|
5
|
+
* A directive that fires its listener each time the element that it's attached to is rendered.
|
|
6
|
+
*
|
|
7
|
+
* @category Directives
|
|
8
|
+
* @example
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* import {html, defineElement, onDomRendered} from 'element-vir';
|
|
12
|
+
*
|
|
13
|
+
* const MyElement = defineElement()({
|
|
14
|
+
* tagName: 'my-element',
|
|
15
|
+
* render() {
|
|
16
|
+
* return html`
|
|
17
|
+
* <div
|
|
18
|
+
* ${onDomRendered((element) => {
|
|
19
|
+
* console.log('rendered!', element);
|
|
20
|
+
* })}
|
|
21
|
+
* >
|
|
22
|
+
* Some div
|
|
23
|
+
* </div>
|
|
24
|
+
* `;
|
|
25
|
+
* },
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export const onDomRendered = directive(class extends Directive {
|
|
30
|
+
constructor(partInfo) {
|
|
31
|
+
super(partInfo);
|
|
32
|
+
assertIsElementPartInfo(partInfo, directiveName);
|
|
33
|
+
}
|
|
34
|
+
update(partInfo, [callback]) {
|
|
35
|
+
assertIsElementPartInfo(partInfo, directiveName);
|
|
36
|
+
const element = partInfo.element;
|
|
37
|
+
// use `requestAnimationFrame` here so it can fire property changes outside of a render loop
|
|
38
|
+
window.requestAnimationFrame(() => callback(element));
|
|
39
|
+
return this.render(callback);
|
|
40
|
+
}
|
|
41
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
42
|
+
render(callback) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { type MaybePromise } from '@augment-vir/common';
|
|
2
|
+
import { type PartInfo } from '../../lit-exports/all-lit-exports.js';
|
|
3
|
+
/**
|
|
4
|
+
* Callback called by the {@link onIntersect} directive.
|
|
5
|
+
*
|
|
6
|
+
* @category Internal
|
|
7
|
+
*/
|
|
8
|
+
export type OnIntersectCallback = (params: {
|
|
9
|
+
entry: IntersectionObserverEntry;
|
|
10
|
+
allEntries: IntersectionObserverEntry[];
|
|
11
|
+
observer: IntersectionObserver;
|
|
12
|
+
element: Element;
|
|
13
|
+
}) => MaybePromise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Options used for the {@link onIntersect} directive.
|
|
16
|
+
*
|
|
17
|
+
* @category Internal
|
|
18
|
+
*/
|
|
19
|
+
export type OnIntersectOptions = IntersectionObserverInit;
|
|
20
|
+
/**
|
|
21
|
+
* A directive that fires its listener any time the element's configured "intersection" is crossed.
|
|
22
|
+
* This is commonly use for detecting when an element has scrolled into view. This uses the
|
|
23
|
+
* [built-in `IntersectionObserver`
|
|
24
|
+
* API](https://developer.mozilla.org/docs/Web/API/IntersectionObserver/IntersectionObserver), so it
|
|
25
|
+
* is very efficient.
|
|
26
|
+
*
|
|
27
|
+
* @category Directives
|
|
28
|
+
* @example
|
|
29
|
+
*
|
|
30
|
+
* ```ts
|
|
31
|
+
* import {html, defineElement, onIntersect} from 'element-vir';
|
|
32
|
+
*
|
|
33
|
+
* const MyElement = defineElement()({
|
|
34
|
+
* tagName: 'my-element',
|
|
35
|
+
* render() {
|
|
36
|
+
* return html`
|
|
37
|
+
* <div
|
|
38
|
+
* ${onIntersect({threshold: 1}, ({element, entry}) => {
|
|
39
|
+
* if (entry.isIntersecting) {
|
|
40
|
+
* console.log('is intersecting!');
|
|
41
|
+
* } else {
|
|
42
|
+
* console.log('is not intersecting');
|
|
43
|
+
* }
|
|
44
|
+
* })}
|
|
45
|
+
* >
|
|
46
|
+
* Some div
|
|
47
|
+
* </div>
|
|
48
|
+
* `;
|
|
49
|
+
* },
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare const onIntersect: (options: IntersectionObserverInit, callback: OnIntersectCallback) => import("lit-html/directive.js").DirectiveResult<{
|
|
54
|
+
new (partInfo: PartInfo): {
|
|
55
|
+
element: Element | undefined;
|
|
56
|
+
options: OnIntersectOptions | undefined;
|
|
57
|
+
intersectionObserver: undefined | IntersectionObserver;
|
|
58
|
+
callback: OnIntersectCallback | undefined;
|
|
59
|
+
fireCallback(entries: IntersectionObserverEntry[], observer: IntersectionObserver): void;
|
|
60
|
+
update(partInfo: PartInfo, [options, callback,]: [OnIntersectOptions, OnIntersectCallback]): undefined;
|
|
61
|
+
render(options: OnIntersectOptions, callback: OnIntersectCallback): undefined;
|
|
62
|
+
get _$isConnected(): boolean;
|
|
63
|
+
};
|
|
64
|
+
}>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { assert, assertWrap, check } from '@augment-vir/assert';
|
|
2
|
+
import { directive, Directive } from '../../lit-exports/all-lit-exports.js';
|
|
3
|
+
import { assertIsElementPartInfo } from './directive-helpers.js';
|
|
4
|
+
const directiveName = 'onIntersect';
|
|
5
|
+
/**
|
|
6
|
+
* A directive that fires its listener any time the element's configured "intersection" is crossed.
|
|
7
|
+
* This is commonly use for detecting when an element has scrolled into view. This uses the
|
|
8
|
+
* [built-in `IntersectionObserver`
|
|
9
|
+
* API](https://developer.mozilla.org/docs/Web/API/IntersectionObserver/IntersectionObserver), so it
|
|
10
|
+
* is very efficient.
|
|
11
|
+
*
|
|
12
|
+
* @category Directives
|
|
13
|
+
* @example
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* import {html, defineElement, onIntersect} from 'element-vir';
|
|
17
|
+
*
|
|
18
|
+
* const MyElement = defineElement()({
|
|
19
|
+
* tagName: 'my-element',
|
|
20
|
+
* render() {
|
|
21
|
+
* return html`
|
|
22
|
+
* <div
|
|
23
|
+
* ${onIntersect({threshold: 1}, ({element, entry}) => {
|
|
24
|
+
* if (entry.isIntersecting) {
|
|
25
|
+
* console.log('is intersecting!');
|
|
26
|
+
* } else {
|
|
27
|
+
* console.log('is not intersecting');
|
|
28
|
+
* }
|
|
29
|
+
* })}
|
|
30
|
+
* >
|
|
31
|
+
* Some div
|
|
32
|
+
* </div>
|
|
33
|
+
* `;
|
|
34
|
+
* },
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export const onIntersect = directive(class extends Directive {
|
|
39
|
+
element;
|
|
40
|
+
options;
|
|
41
|
+
intersectionObserver;
|
|
42
|
+
callback;
|
|
43
|
+
constructor(partInfo) {
|
|
44
|
+
super(partInfo);
|
|
45
|
+
assertIsElementPartInfo(partInfo, directiveName);
|
|
46
|
+
}
|
|
47
|
+
fireCallback(entries, observer) {
|
|
48
|
+
assert.isLengthAtLeast(entries, 1);
|
|
49
|
+
void this.callback?.({
|
|
50
|
+
element: assertWrap.isDefined(this.element),
|
|
51
|
+
allEntries: entries,
|
|
52
|
+
observer,
|
|
53
|
+
entry: entries[0],
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
update(partInfo, [options, callback,]) {
|
|
57
|
+
assertIsElementPartInfo(partInfo, directiveName);
|
|
58
|
+
this.callback = callback;
|
|
59
|
+
let needsObserving = false;
|
|
60
|
+
const newOptions = options;
|
|
61
|
+
const oldOptions = this.options;
|
|
62
|
+
if (!this.intersectionObserver ||
|
|
63
|
+
!oldOptions ||
|
|
64
|
+
!check.entriesEqual(newOptions, oldOptions)) {
|
|
65
|
+
this.options = options;
|
|
66
|
+
this.intersectionObserver?.disconnect();
|
|
67
|
+
this.intersectionObserver = new IntersectionObserver((entries, observer) => this.fireCallback(entries, observer), options);
|
|
68
|
+
needsObserving = true;
|
|
69
|
+
}
|
|
70
|
+
const newElement = partInfo.element;
|
|
71
|
+
const oldElement = this.element;
|
|
72
|
+
// if the element changes we need to observe the new one
|
|
73
|
+
if (newElement !== oldElement) {
|
|
74
|
+
this.element = newElement;
|
|
75
|
+
if (oldElement) {
|
|
76
|
+
this.intersectionObserver.unobserve(oldElement);
|
|
77
|
+
}
|
|
78
|
+
needsObserving = true;
|
|
79
|
+
}
|
|
80
|
+
if (needsObserving) {
|
|
81
|
+
this.intersectionObserver.observe(newElement);
|
|
82
|
+
}
|
|
83
|
+
return this.render(options, callback);
|
|
84
|
+
}
|
|
85
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
86
|
+
render(options, callback) {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { type MaybePromise } from '@augment-vir/common';
|
|
2
|
+
import { type PartInfo } from '../../lit-exports/all-lit-exports.js';
|
|
3
|
+
/**
|
|
4
|
+
* Callback called by the {@link onResize} directive.
|
|
5
|
+
*
|
|
6
|
+
* @category Internal
|
|
7
|
+
*/
|
|
8
|
+
export type OnResizeCallback = (size: Readonly<Pick<ResizeObserverEntry,
|
|
9
|
+
/** Only these two properties are supported in all major modern browsers */
|
|
10
|
+
'target' | 'contentRect'>>, element: Element) => MaybePromise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* A directive that fires its listener any time the element that it's attached to is resized. This
|
|
13
|
+
* uses the [built-in `ResizeObserver`
|
|
14
|
+
* API](https://developer.mozilla.org/docs/Web/API/ResizeObserver), so it is very efficient.
|
|
15
|
+
*
|
|
16
|
+
* @category Directives
|
|
17
|
+
* @example
|
|
18
|
+
*
|
|
19
|
+
* ```ts
|
|
20
|
+
* import {html, defineElement, onResize} from 'element-vir';
|
|
21
|
+
*
|
|
22
|
+
* const MyElement = defineElement()({
|
|
23
|
+
* tagName: 'my-element',
|
|
24
|
+
* render() {
|
|
25
|
+
* return html`
|
|
26
|
+
* <div
|
|
27
|
+
* ${onResize((size, element) => {
|
|
28
|
+
* console.log('resized!', element, size);
|
|
29
|
+
* })}
|
|
30
|
+
* >
|
|
31
|
+
* Some div
|
|
32
|
+
* </div>
|
|
33
|
+
* `;
|
|
34
|
+
* },
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare const onResize: (callback: OnResizeCallback) => import("lit-html/directive.js").DirectiveResult<{
|
|
39
|
+
new (partInfo: PartInfo): {
|
|
40
|
+
element: Element | undefined;
|
|
41
|
+
readonly resizeObserver: ResizeObserver;
|
|
42
|
+
callback: OnResizeCallback | undefined;
|
|
43
|
+
update(partInfo: PartInfo, [callback]: [OnResizeCallback]): undefined;
|
|
44
|
+
render(callback: OnResizeCallback): undefined;
|
|
45
|
+
get _$isConnected(): boolean;
|
|
46
|
+
};
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* A function that attaches a
|
|
50
|
+
* [`ResizeObserver`](https://developer.mozilla.org/docs/Web/API/ResizeObserver) to any given
|
|
51
|
+
* element, so it is very efficient.
|
|
52
|
+
*
|
|
53
|
+
* @category Directives
|
|
54
|
+
* @example
|
|
55
|
+
*
|
|
56
|
+
* ```ts
|
|
57
|
+
* import {html, defineElement, attachOnResize} from 'element-vir';
|
|
58
|
+
*
|
|
59
|
+
* const MyElement = defineElement()({
|
|
60
|
+
* tagName: 'my-element',
|
|
61
|
+
* render({host}) {
|
|
62
|
+
* attachOnResize(host, (size, element) => {
|
|
63
|
+
* console.log('resized!', element, size);
|
|
64
|
+
* });
|
|
65
|
+
*
|
|
66
|
+
* return '';
|
|
67
|
+
* },
|
|
68
|
+
* });
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare function attachOnResize(element: Element, callback: OnResizeCallback): {
|
|
72
|
+
resizeObserver: ResizeObserver;
|
|
73
|
+
element: Element;
|
|
74
|
+
};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { directive, Directive } from '../../lit-exports/all-lit-exports.js';
|
|
2
|
+
import { assertIsElementPartInfo } from './directive-helpers.js';
|
|
3
|
+
const directiveName = 'onResize';
|
|
4
|
+
/**
|
|
5
|
+
* A directive that fires its listener any time the element that it's attached to is resized. This
|
|
6
|
+
* uses the [built-in `ResizeObserver`
|
|
7
|
+
* API](https://developer.mozilla.org/docs/Web/API/ResizeObserver), so it is very efficient.
|
|
8
|
+
*
|
|
9
|
+
* @category Directives
|
|
10
|
+
* @example
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* import {html, defineElement, onResize} from 'element-vir';
|
|
14
|
+
*
|
|
15
|
+
* const MyElement = defineElement()({
|
|
16
|
+
* tagName: 'my-element',
|
|
17
|
+
* render() {
|
|
18
|
+
* return html`
|
|
19
|
+
* <div
|
|
20
|
+
* ${onResize((size, element) => {
|
|
21
|
+
* console.log('resized!', element, size);
|
|
22
|
+
* })}
|
|
23
|
+
* >
|
|
24
|
+
* Some div
|
|
25
|
+
* </div>
|
|
26
|
+
* `;
|
|
27
|
+
* },
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export const onResize = directive(class extends Directive {
|
|
32
|
+
element;
|
|
33
|
+
resizeObserver = new ResizeObserver((entries) => {
|
|
34
|
+
if (this.element && this.callback) {
|
|
35
|
+
handleOnResizeCallback(this.element, this.callback, entries);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
callback;
|
|
39
|
+
constructor(partInfo) {
|
|
40
|
+
super(partInfo);
|
|
41
|
+
assertIsElementPartInfo(partInfo, directiveName);
|
|
42
|
+
}
|
|
43
|
+
update(partInfo, [callback]) {
|
|
44
|
+
assertIsElementPartInfo(partInfo, directiveName);
|
|
45
|
+
this.callback = callback;
|
|
46
|
+
const newElement = partInfo.element;
|
|
47
|
+
const oldElement = this.element;
|
|
48
|
+
// if the element changes we need to observe the new one
|
|
49
|
+
if (newElement !== oldElement) {
|
|
50
|
+
this.element = newElement;
|
|
51
|
+
if (oldElement) {
|
|
52
|
+
this.resizeObserver.unobserve(oldElement);
|
|
53
|
+
}
|
|
54
|
+
this.resizeObserver.observe(newElement);
|
|
55
|
+
}
|
|
56
|
+
return this.render(callback);
|
|
57
|
+
}
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
59
|
+
render(callback) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
function handleOnResizeCallback(element, callback, entries) {
|
|
64
|
+
const resizeEntry = entries[0];
|
|
65
|
+
if (!resizeEntry) {
|
|
66
|
+
console.error(entries);
|
|
67
|
+
throw new Error(`Resize observation triggered but the first entry was empty.`);
|
|
68
|
+
}
|
|
69
|
+
void callback({
|
|
70
|
+
target: resizeEntry.target,
|
|
71
|
+
contentRect: resizeEntry.contentRect,
|
|
72
|
+
}, element);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* A function that attaches a
|
|
76
|
+
* [`ResizeObserver`](https://developer.mozilla.org/docs/Web/API/ResizeObserver) to any given
|
|
77
|
+
* element, so it is very efficient.
|
|
78
|
+
*
|
|
79
|
+
* @category Directives
|
|
80
|
+
* @example
|
|
81
|
+
*
|
|
82
|
+
* ```ts
|
|
83
|
+
* import {html, defineElement, attachOnResize} from 'element-vir';
|
|
84
|
+
*
|
|
85
|
+
* const MyElement = defineElement()({
|
|
86
|
+
* tagName: 'my-element',
|
|
87
|
+
* render({host}) {
|
|
88
|
+
* attachOnResize(host, (size, element) => {
|
|
89
|
+
* console.log('resized!', element, size);
|
|
90
|
+
* });
|
|
91
|
+
*
|
|
92
|
+
* return '';
|
|
93
|
+
* },
|
|
94
|
+
* });
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export function attachOnResize(element, callback) {
|
|
98
|
+
const resizeObserver = new ResizeObserver((entries) => {
|
|
99
|
+
handleOnResizeCallback(element, callback, entries);
|
|
100
|
+
});
|
|
101
|
+
resizeObserver.observe(element);
|
|
102
|
+
return {
|
|
103
|
+
resizeObserver,
|
|
104
|
+
element,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type AsyncProp } from './async-prop.js';
|
|
2
|
+
/**
|
|
3
|
+
* Given a {@link AsyncProp} instance, call and return the output of the `resolutionRender` parameter
|
|
4
|
+
* once the {@link AsyncProp} has been resolved, call and return the output of the `errorRender`
|
|
5
|
+
* parameter if the {@link AsyncProp} errored out, return the `fallback` parameter in all other
|
|
6
|
+
* cases.
|
|
7
|
+
*
|
|
8
|
+
* This is the overload for when `resolutionRender` and `errorRender` are both provided.
|
|
9
|
+
*
|
|
10
|
+
* @category Async
|
|
11
|
+
*/
|
|
12
|
+
export declare function renderAsync<T, FallbackResult, ResolutionRenderResult = never, ErrorRenderResult = never>(asyncProp: Pick<AsyncProp<T, any>, 'value'>, fallback: FallbackResult, resolutionRender: (resolved: Awaited<T>) => ResolutionRenderResult, errorRender: (error: Error) => ErrorRenderResult): FallbackResult | ResolutionRenderResult | ErrorRenderResult;
|
|
13
|
+
/**
|
|
14
|
+
* Given a {@link AsyncProp} instance, call and return the output of the `resolutionRender` parameter
|
|
15
|
+
* once the {@link AsyncProp} has been resolved, call and return the output of the `errorRender`
|
|
16
|
+
* parameter if the {@link AsyncProp} errored out, return the `fallback` parameter in all other
|
|
17
|
+
* cases.
|
|
18
|
+
*
|
|
19
|
+
* This is the overload for when `resolutionRender` is provided but `errorRender` is not.
|
|
20
|
+
*
|
|
21
|
+
* @category Async
|
|
22
|
+
*/
|
|
23
|
+
export declare function renderAsync<T, FallbackResult, ResolutionRenderResult = never>(asyncProp: Pick<AsyncProp<T, any>, 'value'>, fallback: FallbackResult, resolutionRender: (resolved: Awaited<T>) => ResolutionRenderResult, errorRender?: undefined): FallbackResult | ResolutionRenderResult | string;
|
|
24
|
+
/**
|
|
25
|
+
* Given a {@link AsyncProp} instance, call and return the output of the `resolutionRender` parameter
|
|
26
|
+
* once the {@link AsyncProp} has been resolved, call and return the output of the `errorRender`
|
|
27
|
+
* parameter if the {@link AsyncProp} errored out, return the `fallback` parameter in all other
|
|
28
|
+
* cases.
|
|
29
|
+
*
|
|
30
|
+
* This is the overload for when `resolutionRender` is not provided but `errorRender` is.
|
|
31
|
+
*
|
|
32
|
+
* @category Async
|
|
33
|
+
*/
|
|
34
|
+
export declare function renderAsync<T, FallbackResult, ErrorRenderResult = never>(asyncProp: Pick<AsyncProp<T, any>, 'value'>, fallback: FallbackResult, resolutionRender: undefined, errorRender: (error: Error) => ErrorRenderResult): FallbackResult | Awaited<T> | ErrorRenderResult;
|
|
35
|
+
/**
|
|
36
|
+
* Given a {@link AsyncProp} instance, call and return the output of the `resolutionRender` parameter
|
|
37
|
+
* once the {@link AsyncProp} has been resolved, call and return the output of the `errorRender`
|
|
38
|
+
* parameter if the {@link AsyncProp} errored out, return the `fallback` parameter in all other
|
|
39
|
+
* cases.
|
|
40
|
+
*
|
|
41
|
+
* This is the overload for when neither `resolutionRender` or `errorRender` are provided.
|
|
42
|
+
*
|
|
43
|
+
* @category Async
|
|
44
|
+
*/
|
|
45
|
+
export declare function renderAsync<T, FallbackResult>(asyncProp: Pick<AsyncProp<T, any>, 'value'>, fallback: FallbackResult, resolutionRender?: undefined, errorRender?: undefined): FallbackResult | Awaited<T> | string;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { check } from '@augment-vir/assert';
|
|
2
|
+
import { extractErrorMessage } from '@augment-vir/common';
|
|
3
|
+
/**
|
|
4
|
+
* Given a {@link AsyncProp} instance, call and return the output of the `resolutionRender` parameter
|
|
5
|
+
* once the {@link AsyncProp} has been resolved, call and return the output of the `errorRender`
|
|
6
|
+
* parameter if the {@link AsyncProp} errored out, return the `fallback` parameter in all other
|
|
7
|
+
* cases.
|
|
8
|
+
*
|
|
9
|
+
* This is the full function definition and implementation.
|
|
10
|
+
*
|
|
11
|
+
* @category Async
|
|
12
|
+
*/
|
|
13
|
+
export function renderAsync(asyncProp,
|
|
14
|
+
/** This value will be rendered if the async prop has not settled yet. */
|
|
15
|
+
fallback, resolutionRender, errorRender) {
|
|
16
|
+
const asyncPropValue = asyncProp.value;
|
|
17
|
+
if (asyncPropValue instanceof Error) {
|
|
18
|
+
const errorResult = errorRender
|
|
19
|
+
? errorRender(asyncPropValue)
|
|
20
|
+
: extractErrorMessage(asyncPropValue);
|
|
21
|
+
return errorResult;
|
|
22
|
+
}
|
|
23
|
+
else if (check.isPromiseLike(asyncPropValue)) {
|
|
24
|
+
const fallbackResult = fallback;
|
|
25
|
+
return fallbackResult;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const resolutionResult = resolutionRender
|
|
29
|
+
? resolutionRender(asyncPropValue)
|
|
30
|
+
: asyncPropValue;
|
|
31
|
+
return resolutionResult;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A directive that, given a condition, chooses between two inputs: `ifTrue` and `ifFalse`. If
|
|
3
|
+
* `ifFalse` is omitted (which is allowed), the false case defaults to `undefined`, which won't get
|
|
4
|
+
* rendered at all inside of an HTML template.
|
|
5
|
+
*
|
|
6
|
+
* @category Directives
|
|
7
|
+
* @example
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* import {html, defineElement, renderIf} from 'element-vir';
|
|
11
|
+
*
|
|
12
|
+
* const MyElement = defineElement()({
|
|
13
|
+
* tagName: 'my-element',
|
|
14
|
+
* render() {
|
|
15
|
+
* return html`
|
|
16
|
+
* <div>
|
|
17
|
+
* ${renderIf(
|
|
18
|
+
* Math.random() > 0.5,
|
|
19
|
+
* html`
|
|
20
|
+
* True!
|
|
21
|
+
* `,
|
|
22
|
+
* html`
|
|
23
|
+
* False!
|
|
24
|
+
* `,
|
|
25
|
+
* )}
|
|
26
|
+
* </div>
|
|
27
|
+
* `;
|
|
28
|
+
* },
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function renderIf<TrueCondition = unknown, FalseCondition = undefined>(condition: boolean, ifTrue: TrueCondition, ifFalse?: FalseCondition): TrueCondition | FalseCondition;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {when} from '../../lit-exports/all-lit-exports.js';
|
|
2
|
-
|
|
1
|
+
import { when } from '../../lit-exports/all-lit-exports.js';
|
|
3
2
|
/**
|
|
4
3
|
* A directive that, given a condition, chooses between two inputs: `ifTrue` and `ifFalse`. If
|
|
5
4
|
* `ifFalse` is omitted (which is allowed), the false case defaults to `undefined`, which won't get
|
|
@@ -31,14 +30,6 @@ import {when} from '../../lit-exports/all-lit-exports.js';
|
|
|
31
30
|
* });
|
|
32
31
|
* ```
|
|
33
32
|
*/
|
|
34
|
-
export function renderIf
|
|
35
|
-
condition
|
|
36
|
-
ifTrue: TrueCondition,
|
|
37
|
-
ifFalse?: FalseCondition,
|
|
38
|
-
): TrueCondition | FalseCondition {
|
|
39
|
-
return when(
|
|
40
|
-
condition,
|
|
41
|
-
() => ifTrue,
|
|
42
|
-
() => ifFalse,
|
|
43
|
-
) as TrueCondition | FalseCondition;
|
|
33
|
+
export function renderIf(condition, ifTrue, ifFalse) {
|
|
34
|
+
return when(condition, () => ifTrue, () => ifFalse);
|
|
44
35
|
}
|