summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/node/node_modules/lit-html/directives/guard.d.ts
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/node/node_modules/lit-html/directives/guard.d.ts')
-rw-r--r--chromium/third_party/node/node_modules/lit-html/directives/guard.d.ts60
1 files changed, 60 insertions, 0 deletions
diff --git a/chromium/third_party/node/node_modules/lit-html/directives/guard.d.ts b/chromium/third_party/node/node_modules/lit-html/directives/guard.d.ts
new file mode 100644
index 00000000000..d571cbcfc76
--- /dev/null
+++ b/chromium/third_party/node/node_modules/lit-html/directives/guard.d.ts
@@ -0,0 +1,60 @@
+/**
+ * @license
+ * Copyright 2018 Google LLC
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+import { Part } from '../lit-html.js';
+import { Directive, DirectiveParameters } from '../directive.js';
+declare class GuardDirective extends Directive {
+ private _previousValue;
+ render(_value: unknown, f: () => unknown): unknown;
+ update(_part: Part, [value, f]: DirectiveParameters<this>): unknown;
+}
+/**
+ * Prevents re-render of a template function until a single value or an array of
+ * values changes.
+ *
+ * Values are checked against previous values with strict equality (`===`), and
+ * so the check won't detect nested property changes inside objects or arrays.
+ * Arrays values have each item checked against the previous value at the same
+ * index with strict equality. Nested arrays are also checked only by strict
+ * equality.
+ *
+ * Example:
+ *
+ * ```js
+ * html`
+ * <div>
+ * ${guard([user.id, company.id], () => html`...`)}
+ * </div>
+ * `
+ * ```
+ *
+ * In this case, the template only rerenders if either `user.id` or `company.id`
+ * changes.
+ *
+ * guard() is useful with immutable data patterns, by preventing expensive work
+ * until data updates.
+ *
+ * Example:
+ *
+ * ```js
+ * html`
+ * <div>
+ * ${guard([immutableItems], () => immutableItems.map(i => html`${i}`))}
+ * </div>
+ * `
+ * ```
+ *
+ * In this case, items are mapped over only when the array reference changes.
+ *
+ * @param value the value to check before re-rendering
+ * @param f the template function
+ */
+export declare const guard: (_value: unknown, f: () => unknown) => import("../directive.js").DirectiveResult<typeof GuardDirective>;
+/**
+ * The type of the class that powers this directive. Necessary for naming the
+ * directive's return type.
+ */
+export type { GuardDirective };
+//# sourceMappingURL=guard.d.ts.map \ No newline at end of file