@microsoft/fast-element 2.0.0-beta.1 → 2.0.0-beta.2
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/CHANGELOG.json +51 -0
- package/CHANGELOG.md +15 -1
- package/dist/dts/components/fast-definitions.d.ts +2 -0
- package/dist/dts/components/fast-element.d.ts +7 -1
- package/dist/dts/context.d.ts +157 -0
- package/dist/dts/metadata.d.ts +25 -0
- package/dist/dts/observation/arrays.d.ts +1 -1
- package/dist/dts/observation/behavior.d.ts +4 -4
- package/dist/dts/observation/observable.d.ts +43 -62
- package/dist/dts/templating/binding-signal.d.ts +38 -0
- package/dist/dts/templating/binding-two-way.d.ts +56 -0
- package/dist/dts/templating/binding.d.ts +0 -88
- package/dist/dts/templating/compiler.d.ts +1 -2
- package/dist/dts/templating/repeat.d.ts +3 -49
- package/dist/dts/templating/template.d.ts +10 -59
- package/dist/dts/templating/view.d.ts +9 -9
- package/dist/{tsdoc-metadata.json → dts/tsdoc-metadata.json} +0 -0
- package/dist/esm/components/fast-definitions.js +2 -0
- package/dist/esm/components/fast-element.js +10 -2
- package/dist/esm/context.js +159 -0
- package/dist/esm/metadata.js +60 -0
- package/dist/esm/observation/arrays.js +1 -1
- package/dist/esm/observation/observable.js +69 -17
- package/dist/esm/templating/binding-signal.js +84 -0
- package/dist/esm/templating/binding-two-way.js +76 -0
- package/dist/esm/templating/binding.js +1 -158
- package/dist/esm/templating/repeat.js +9 -1
- package/dist/esm/templating/template.js +1 -21
- package/dist/fast-element.api.json +5586 -7541
- package/dist/fast-element.d.ts +119 -329
- package/dist/fast-element.debug.js +92 -199
- package/dist/fast-element.debug.min.js +1 -1
- package/dist/fast-element.js +92 -199
- package/dist/fast-element.min.js +1 -1
- package/dist/fast-element.untrimmed.d.ts +120 -331
- package/docs/api-report.md +50 -156
- package/package.json +20 -4
|
@@ -687,75 +687,127 @@ const contextEvent = FAST.getById(3 /* KernelServiceId.contextEvent */, () => {
|
|
|
687
687
|
},
|
|
688
688
|
};
|
|
689
689
|
});
|
|
690
|
-
|
|
690
|
+
/**
|
|
691
|
+
* Provides additional contextual information available to behaviors and expressions.
|
|
692
|
+
* @public
|
|
693
|
+
*/
|
|
694
|
+
class ExecutionContext {
|
|
691
695
|
constructor(parentSource = null, parentContext = null) {
|
|
696
|
+
/**
|
|
697
|
+
* The index of the current item within a repeat context.
|
|
698
|
+
*/
|
|
692
699
|
this.index = 0;
|
|
700
|
+
/**
|
|
701
|
+
* The length of the current collection within a repeat context.
|
|
702
|
+
*/
|
|
693
703
|
this.length = 0;
|
|
694
704
|
this.parent = parentSource;
|
|
695
705
|
this.parentContext = parentContext;
|
|
696
706
|
}
|
|
707
|
+
/**
|
|
708
|
+
* The current event within an event handler.
|
|
709
|
+
*/
|
|
697
710
|
get event() {
|
|
698
711
|
return contextEvent.get();
|
|
699
712
|
}
|
|
713
|
+
/**
|
|
714
|
+
* Indicates whether the current item within a repeat context
|
|
715
|
+
* has an even index.
|
|
716
|
+
*/
|
|
700
717
|
get isEven() {
|
|
701
718
|
return this.index % 2 === 0;
|
|
702
719
|
}
|
|
720
|
+
/**
|
|
721
|
+
* Indicates whether the current item within a repeat context
|
|
722
|
+
* has an odd index.
|
|
723
|
+
*/
|
|
703
724
|
get isOdd() {
|
|
704
725
|
return this.index % 2 !== 0;
|
|
705
726
|
}
|
|
727
|
+
/**
|
|
728
|
+
* Indicates whether the current item within a repeat context
|
|
729
|
+
* is the first item in the collection.
|
|
730
|
+
*/
|
|
706
731
|
get isFirst() {
|
|
707
732
|
return this.index === 0;
|
|
708
733
|
}
|
|
734
|
+
/**
|
|
735
|
+
* Indicates whether the current item within a repeat context
|
|
736
|
+
* is somewhere in the middle of the collection.
|
|
737
|
+
*/
|
|
709
738
|
get isInMiddle() {
|
|
710
739
|
return !this.isFirst && !this.isLast;
|
|
711
740
|
}
|
|
741
|
+
/**
|
|
742
|
+
* Indicates whether the current item within a repeat context
|
|
743
|
+
* is the last item in the collection.
|
|
744
|
+
*/
|
|
712
745
|
get isLast() {
|
|
713
746
|
return this.index === this.length - 1;
|
|
714
747
|
}
|
|
748
|
+
/**
|
|
749
|
+
* Returns the typed event detail of a custom event.
|
|
750
|
+
*/
|
|
715
751
|
eventDetail() {
|
|
716
752
|
return this.event.detail;
|
|
717
753
|
}
|
|
754
|
+
/**
|
|
755
|
+
* Returns the typed event target of the event.
|
|
756
|
+
*/
|
|
718
757
|
eventTarget() {
|
|
719
758
|
return this.event.target;
|
|
720
759
|
}
|
|
760
|
+
/**
|
|
761
|
+
* Updates the position/size on a context associated with a list item.
|
|
762
|
+
* @param index - The new index of the item.
|
|
763
|
+
* @param length - The new length of the list.
|
|
764
|
+
*/
|
|
721
765
|
updatePosition(index, length) {
|
|
722
766
|
this.index = index;
|
|
723
767
|
this.length = length;
|
|
724
768
|
}
|
|
769
|
+
/**
|
|
770
|
+
* Creates a new execution context descendent from the current context.
|
|
771
|
+
* @param source - The source for the context if different than the parent.
|
|
772
|
+
* @returns A child execution context.
|
|
773
|
+
*/
|
|
725
774
|
createChildContext(parentSource) {
|
|
726
|
-
return new
|
|
775
|
+
return new ExecutionContext(parentSource, this);
|
|
727
776
|
}
|
|
777
|
+
/**
|
|
778
|
+
* Creates a new execution context descent suitable for use in list rendering.
|
|
779
|
+
* @param item - The list item to serve as the source.
|
|
780
|
+
* @param index - The index of the item in the list.
|
|
781
|
+
* @param length - The length of the list.
|
|
782
|
+
*/
|
|
728
783
|
createItemContext(index, length) {
|
|
729
784
|
const childContext = Object.create(this);
|
|
730
785
|
childContext.index = index;
|
|
731
786
|
childContext.length = length;
|
|
732
787
|
return childContext;
|
|
733
788
|
}
|
|
734
|
-
}
|
|
735
|
-
Observable.defineProperty(DefaultExecutionContext.prototype, "index");
|
|
736
|
-
Observable.defineProperty(DefaultExecutionContext.prototype, "length");
|
|
737
|
-
/**
|
|
738
|
-
* The common execution context APIs.
|
|
739
|
-
* @public
|
|
740
|
-
*/
|
|
741
|
-
const ExecutionContext = Object.freeze({
|
|
742
|
-
default: new DefaultExecutionContext(),
|
|
743
789
|
/**
|
|
744
790
|
* Sets the event for the current execution context.
|
|
745
791
|
* @param event - The event to set.
|
|
746
792
|
* @internal
|
|
747
793
|
*/
|
|
748
|
-
setEvent(event) {
|
|
794
|
+
static setEvent(event) {
|
|
749
795
|
contextEvent.set(event);
|
|
750
|
-
}
|
|
796
|
+
}
|
|
751
797
|
/**
|
|
752
798
|
* Creates a new root execution context.
|
|
753
799
|
* @returns A new execution context.
|
|
754
800
|
*/
|
|
755
|
-
create() {
|
|
756
|
-
return new
|
|
757
|
-
}
|
|
758
|
-
}
|
|
801
|
+
static create() {
|
|
802
|
+
return new ExecutionContext();
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
/**
|
|
806
|
+
* The default execution context.
|
|
807
|
+
*/
|
|
808
|
+
ExecutionContext.default = new ExecutionContext();
|
|
809
|
+
Observable.defineProperty(ExecutionContext.prototype, "index");
|
|
810
|
+
Observable.defineProperty(ExecutionContext.prototype, "length");
|
|
759
811
|
|
|
760
812
|
/**
|
|
761
813
|
* A splice map is a representation of how a previous array of items
|
|
@@ -1010,7 +1062,7 @@ const ArrayObserver = Object.freeze({
|
|
|
1010
1062
|
* @returns The length of the array.
|
|
1011
1063
|
* @public
|
|
1012
1064
|
*/
|
|
1013
|
-
function
|
|
1065
|
+
function lengthOf(array) {
|
|
1014
1066
|
if (!array) {
|
|
1015
1067
|
return 0;
|
|
1016
1068
|
}
|
|
@@ -1740,78 +1792,6 @@ class OneTimeBinding extends UpdateBinding {
|
|
|
1740
1792
|
this.updateTarget(targets[directive.nodeId], directive.targetAspect, directive.binding(source, context), source, context);
|
|
1741
1793
|
}
|
|
1742
1794
|
}
|
|
1743
|
-
const signals = Object.create(null);
|
|
1744
|
-
/**
|
|
1745
|
-
* A binding behavior for signal bindings.
|
|
1746
|
-
* @public
|
|
1747
|
-
*/
|
|
1748
|
-
class SignalBinding extends UpdateBinding {
|
|
1749
|
-
constructor() {
|
|
1750
|
-
super(...arguments);
|
|
1751
|
-
this.handlerProperty = `${this.directive.id}-h`;
|
|
1752
|
-
}
|
|
1753
|
-
/**
|
|
1754
|
-
* Bind this behavior to the source.
|
|
1755
|
-
* @param source - The source to bind to.
|
|
1756
|
-
* @param context - The execution context that the binding is operating within.
|
|
1757
|
-
* @param targets - The targets that behaviors in a view can attach to.
|
|
1758
|
-
*/
|
|
1759
|
-
bind(source, context, targets) {
|
|
1760
|
-
const directive = this.directive;
|
|
1761
|
-
const target = targets[directive.nodeId];
|
|
1762
|
-
const signal = this.getSignal(source, context);
|
|
1763
|
-
const handler = (target[this.handlerProperty] = () => {
|
|
1764
|
-
this.updateTarget(target, directive.targetAspect, directive.binding(source, context), source, context);
|
|
1765
|
-
});
|
|
1766
|
-
handler();
|
|
1767
|
-
const found = signals[signal];
|
|
1768
|
-
if (found) {
|
|
1769
|
-
Array.isArray(found)
|
|
1770
|
-
? found.push(handler)
|
|
1771
|
-
: (signals[signal] = [found, handler]);
|
|
1772
|
-
}
|
|
1773
|
-
else {
|
|
1774
|
-
signals[signal] = handler;
|
|
1775
|
-
}
|
|
1776
|
-
}
|
|
1777
|
-
/**
|
|
1778
|
-
* Unbinds this behavior from the source.
|
|
1779
|
-
* @param source - The source to unbind from.
|
|
1780
|
-
* @param context - The execution context that the binding is operating within.
|
|
1781
|
-
* @param targets - The targets that behaviors in a view can attach to.
|
|
1782
|
-
*/
|
|
1783
|
-
unbind(source, context, targets) {
|
|
1784
|
-
const signal = this.getSignal(source, context);
|
|
1785
|
-
const found = signals[signal];
|
|
1786
|
-
if (found && Array.isArray(found)) {
|
|
1787
|
-
const directive = this.directive;
|
|
1788
|
-
const target = targets[directive.nodeId];
|
|
1789
|
-
const handler = target[this.handlerProperty];
|
|
1790
|
-
const index = found.indexOf(handler);
|
|
1791
|
-
if (index !== -1) {
|
|
1792
|
-
found.splice(index, 1);
|
|
1793
|
-
}
|
|
1794
|
-
}
|
|
1795
|
-
else {
|
|
1796
|
-
signals[signal] = void 0;
|
|
1797
|
-
}
|
|
1798
|
-
}
|
|
1799
|
-
getSignal(source, context) {
|
|
1800
|
-
const options = this.directive.options;
|
|
1801
|
-
return isString(options) ? options : options(source, context);
|
|
1802
|
-
}
|
|
1803
|
-
/**
|
|
1804
|
-
* Sends the specified signal to signaled bindings.
|
|
1805
|
-
* @param signal - The signal to send.
|
|
1806
|
-
* @public
|
|
1807
|
-
*/
|
|
1808
|
-
static send(signal) {
|
|
1809
|
-
const found = signals[signal];
|
|
1810
|
-
if (found) {
|
|
1811
|
-
Array.isArray(found) ? found.forEach(x => x()) : found();
|
|
1812
|
-
}
|
|
1813
|
-
}
|
|
1814
|
-
}
|
|
1815
1795
|
/**
|
|
1816
1796
|
* A binding behavior for bindings that change.
|
|
1817
1797
|
* @public
|
|
@@ -1932,86 +1912,11 @@ class EventBinding {
|
|
|
1932
1912
|
}
|
|
1933
1913
|
}
|
|
1934
1914
|
}
|
|
1935
|
-
let twoWaySettings = {
|
|
1936
|
-
determineChangeEvent() {
|
|
1937
|
-
return "change";
|
|
1938
|
-
},
|
|
1939
|
-
};
|
|
1940
|
-
/**
|
|
1941
|
-
* A binding behavior for bindings that update in two directions.
|
|
1942
|
-
* @public
|
|
1943
|
-
*/
|
|
1944
|
-
class TwoWayBinding extends ChangeBinding {
|
|
1945
|
-
/**
|
|
1946
|
-
* Bind this behavior to the source.
|
|
1947
|
-
* @param source - The source to bind to.
|
|
1948
|
-
* @param context - The execution context that the binding is operating within.
|
|
1949
|
-
* @param targets - The targets that behaviors in a view can attach to.
|
|
1950
|
-
*/
|
|
1951
|
-
bind(source, context, targets) {
|
|
1952
|
-
var _a;
|
|
1953
|
-
super.bind(source, context, targets);
|
|
1954
|
-
const directive = this.directive;
|
|
1955
|
-
const target = targets[directive.nodeId];
|
|
1956
|
-
if (!this.changeEvent) {
|
|
1957
|
-
this.changeEvent =
|
|
1958
|
-
(_a = directive.options.changeEvent) !== null && _a !== void 0 ? _a : twoWaySettings.determineChangeEvent(directive, target);
|
|
1959
|
-
}
|
|
1960
|
-
target.addEventListener(this.changeEvent, this);
|
|
1961
|
-
}
|
|
1962
|
-
/**
|
|
1963
|
-
* Unbinds this behavior from the source.
|
|
1964
|
-
* @param source - The source to unbind from.
|
|
1965
|
-
* @param context - The execution context that the binding is operating within.
|
|
1966
|
-
* @param targets - The targets that behaviors in a view can attach to.
|
|
1967
|
-
*/
|
|
1968
|
-
unbind(source, context, targets) {
|
|
1969
|
-
super.unbind(source, context, targets);
|
|
1970
|
-
targets[this.directive.nodeId].removeEventListener(this.changeEvent, this);
|
|
1971
|
-
}
|
|
1972
|
-
/** @internal */
|
|
1973
|
-
handleEvent(event) {
|
|
1974
|
-
const directive = this.directive;
|
|
1975
|
-
const target = event.currentTarget;
|
|
1976
|
-
let value;
|
|
1977
|
-
switch (directive.aspectType) {
|
|
1978
|
-
case 1:
|
|
1979
|
-
value = target.getAttribute(directive.targetAspect);
|
|
1980
|
-
break;
|
|
1981
|
-
case 2:
|
|
1982
|
-
value = target.hasAttribute(directive.targetAspect);
|
|
1983
|
-
break;
|
|
1984
|
-
case 4:
|
|
1985
|
-
value = target.innerText;
|
|
1986
|
-
break;
|
|
1987
|
-
default:
|
|
1988
|
-
value = target[directive.targetAspect];
|
|
1989
|
-
break;
|
|
1990
|
-
}
|
|
1991
|
-
const observer = this.getObserver(target);
|
|
1992
|
-
const last = observer.last; // using internal API!!!
|
|
1993
|
-
last.propertySource[last.propertyName] = directive.options.fromView(value);
|
|
1994
|
-
}
|
|
1995
|
-
/**
|
|
1996
|
-
* Configures two-way binding.
|
|
1997
|
-
* @param settings - The settings to use for the two-way binding system.
|
|
1998
|
-
*/
|
|
1999
|
-
static configure(settings) {
|
|
2000
|
-
twoWaySettings = settings;
|
|
2001
|
-
}
|
|
2002
|
-
}
|
|
2003
1915
|
/**
|
|
2004
1916
|
* The default onChange binding configuration.
|
|
2005
1917
|
* @public
|
|
2006
1918
|
*/
|
|
2007
1919
|
const onChange = BindingConfig.define(BindingMode.define(ChangeBinding), {});
|
|
2008
|
-
/**
|
|
2009
|
-
* The default twoWay binding configuration.
|
|
2010
|
-
* @public
|
|
2011
|
-
*/
|
|
2012
|
-
const twoWay = BindingConfig.define(BindingMode.define(TwoWayBinding), {
|
|
2013
|
-
fromView: v => v,
|
|
2014
|
-
});
|
|
2015
1920
|
/**
|
|
2016
1921
|
* The default onTime binding configuration.
|
|
2017
1922
|
* @public
|
|
@@ -2019,16 +1924,6 @@ const twoWay = BindingConfig.define(BindingMode.define(TwoWayBinding), {
|
|
|
2019
1924
|
const oneTime = BindingConfig.define(BindingMode.define(OneTimeBinding), {
|
|
2020
1925
|
once: true,
|
|
2021
1926
|
});
|
|
2022
|
-
const signalMode = BindingMode.define(SignalBinding);
|
|
2023
|
-
/**
|
|
2024
|
-
* Creates a signal binding configuration with the supplied options.
|
|
2025
|
-
* @param options - The signal name or a binding to use to retrieve the signal name.
|
|
2026
|
-
* @returns A binding configuration.
|
|
2027
|
-
* @public
|
|
2028
|
-
*/
|
|
2029
|
-
const signal = (options) => {
|
|
2030
|
-
return { mode: signalMode, options };
|
|
2031
|
-
};
|
|
2032
1927
|
/**
|
|
2033
1928
|
* A directive that applies bindings.
|
|
2034
1929
|
* @public
|
|
@@ -2608,26 +2503,6 @@ function html(strings, ...values) {
|
|
|
2608
2503
|
}
|
|
2609
2504
|
return new ViewTemplate(html + strings[strings.length - 1], factories);
|
|
2610
2505
|
}
|
|
2611
|
-
/**
|
|
2612
|
-
* Transforms a template literal string into a ChildViewTemplate.
|
|
2613
|
-
* @param strings - The string fragments that are interpolated with the values.
|
|
2614
|
-
* @param values - The values that are interpolated with the string fragments.
|
|
2615
|
-
* @remarks
|
|
2616
|
-
* The html helper supports interpolation of strings, numbers, binding expressions,
|
|
2617
|
-
* other template instances, and Directive instances.
|
|
2618
|
-
* @public
|
|
2619
|
-
*/
|
|
2620
|
-
const child = html;
|
|
2621
|
-
/**
|
|
2622
|
-
* Transforms a template literal string into an ItemViewTemplate.
|
|
2623
|
-
* @param strings - The string fragments that are interpolated with the values.
|
|
2624
|
-
* @param values - The values that are interpolated with the string fragments.
|
|
2625
|
-
* @remarks
|
|
2626
|
-
* The html helper supports interpolation of strings, numbers, binding expressions,
|
|
2627
|
-
* other template instances, and Directive instances.
|
|
2628
|
-
* @public
|
|
2629
|
-
*/
|
|
2630
|
-
const item = html;
|
|
2631
2506
|
|
|
2632
2507
|
/**
|
|
2633
2508
|
* The runtime behavior for template references.
|
|
@@ -2826,7 +2701,7 @@ class RepeatBehavior {
|
|
|
2826
2701
|
let itemsLength = items.length;
|
|
2827
2702
|
let views = this.views;
|
|
2828
2703
|
let viewsLength = views.length;
|
|
2829
|
-
if (itemsLength === 0 || templateChanged) {
|
|
2704
|
+
if (itemsLength === 0 || templateChanged || !this.options.recycle) {
|
|
2830
2705
|
// all views need to be removed
|
|
2831
2706
|
HTMLView.disposeContiguousBatch(views);
|
|
2832
2707
|
viewsLength = 0;
|
|
@@ -2904,6 +2779,14 @@ class RepeatDirective {
|
|
|
2904
2779
|
}
|
|
2905
2780
|
}
|
|
2906
2781
|
HTMLDirective.define(RepeatDirective);
|
|
2782
|
+
/**
|
|
2783
|
+
* A directive that enables list rendering.
|
|
2784
|
+
* @param itemsBinding - The array to render.
|
|
2785
|
+
* @param templateOrTemplateBinding - The template or a template binding used obtain a template
|
|
2786
|
+
* to render for each item in the array.
|
|
2787
|
+
* @param options - Options used to turn on special repeat features.
|
|
2788
|
+
* @public
|
|
2789
|
+
*/
|
|
2907
2790
|
function repeat(itemsBinding, templateOrTemplateBinding, options = defaultRepeatOptions) {
|
|
2908
2791
|
const templateBinding = isFunction(templateOrTemplateBinding)
|
|
2909
2792
|
? templateOrTemplateBinding
|
|
@@ -3348,6 +3231,8 @@ class FASTElementDefinition {
|
|
|
3348
3231
|
/**
|
|
3349
3232
|
* Defines a custom element based on this definition.
|
|
3350
3233
|
* @param registry - The element registry to define the element in.
|
|
3234
|
+
* @remarks
|
|
3235
|
+
* This operation is idempotent per registry.
|
|
3351
3236
|
*/
|
|
3352
3237
|
define(registry = customElements) {
|
|
3353
3238
|
const type = this.type;
|
|
@@ -3805,7 +3690,15 @@ const FASTElement = Object.assign(createFASTElement(HTMLElement), {
|
|
|
3805
3690
|
* that describes the element to define.
|
|
3806
3691
|
*/
|
|
3807
3692
|
define(type, nameOrDef) {
|
|
3808
|
-
return
|
|
3693
|
+
return this.metadata(type, nameOrDef).define().type;
|
|
3694
|
+
},
|
|
3695
|
+
/**
|
|
3696
|
+
* Defines metadata for a FASTElement which can be used to later define the element.
|
|
3697
|
+
* IMPORTANT: This API will be renamed to "compose" in a future beta.
|
|
3698
|
+
* @public
|
|
3699
|
+
*/
|
|
3700
|
+
metadata(type, nameOrDef) {
|
|
3701
|
+
return new FASTElementDefinition(type, nameOrDef);
|
|
3809
3702
|
},
|
|
3810
3703
|
});
|
|
3811
3704
|
/**
|
|
@@ -3817,8 +3710,8 @@ const FASTElement = Object.assign(createFASTElement(HTMLElement), {
|
|
|
3817
3710
|
function customElement(nameOrDef) {
|
|
3818
3711
|
/* eslint-disable-next-line @typescript-eslint/explicit-function-return-type */
|
|
3819
3712
|
return function (type) {
|
|
3820
|
-
|
|
3713
|
+
FASTElement.define(type, nameOrDef);
|
|
3821
3714
|
};
|
|
3822
3715
|
}
|
|
3823
3716
|
|
|
3824
|
-
export { AdoptedStyleSheetsStrategy, ArrayObserver, Aspect, AttributeDefinition, BindingConfig, BindingMode, CSSDirective, ChangeBinding, ChildrenDirective, Compiler, Controller, DOM, ElementStyles, EventBinding, ExecutionContext, FAST, FASTElement, FASTElementDefinition, HTMLBindingDirective, HTMLDirective, HTMLView, Markup, NodeObservationDirective, Observable, OneTimeBinding, Parser, PropertyChangeNotifier, RefDirective, RepeatBehavior, RepeatDirective,
|
|
3717
|
+
export { AdoptedStyleSheetsStrategy, ArrayObserver, Aspect, AttributeDefinition, BindingConfig, BindingMode, CSSDirective, ChangeBinding, ChildrenDirective, Compiler, Controller, DOM, ElementStyles, EventBinding, ExecutionContext, FAST, FASTElement, FASTElementDefinition, HTMLBindingDirective, HTMLDirective, HTMLView, Markup, NodeObservationDirective, Observable, OneTimeBinding, Parser, PropertyChangeNotifier, RefDirective, RepeatBehavior, RepeatDirective, SlottedDirective, Splice, SpliceStrategy, SpliceStrategySupport, StatelessAttachedAttributeDirective, SubscriberSet, UpdateBinding, Updates, ViewTemplate, attr, bind, booleanConverter, children, createTypeRegistry, css, cssDirective, cssPartial, customElement, elements, emptyArray, html, htmlDirective, lengthOf, nullableNumberConverter, observable, onChange, oneTime, ref, repeat, slotted, volatile, when };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){if("undefined"==typeof globalThis)if("undefined"!=typeof global)global.globalThis=global;else if("undefined"!=typeof self)self.globalThis=self;else if("undefined"!=typeof window)window.globalThis=window;else{const e=new Function("return this")();e.globalThis=e}}(),globalThis.trustedTypes||(globalThis.trustedTypes={createPolicy:(e,t)=>t});const e={configurable:!1,enumerable:!1,writable:!1};void 0===globalThis.FAST&&Reflect.defineProperty(globalThis,"FAST",Object.assign({value:Object.create(null)},e));const t=globalThis.FAST;if(void 0===t.getById){const s=Object.create(null);Reflect.defineProperty(t,"getById",Object.assign({value(e,t){let i=s[e];return void 0===i&&(i=t?s[e]=t():null),i}},e))}const s=Array.isArray(document.adoptedStyleSheets)&&"replace"in CSSStyleSheet.prototype;function i(e){return e===document?document.body:e}let n=0;class r{constructor(e){this.styles=e,this.styleClass="fast-"+ ++n}addStylesTo(e){e=i(e);const t=this.styles,s=this.styleClass;for(let i=0;i<t.length;i++){const n=document.createElement("style");n.innerHTML=t[i],n.className=s,e.append(n)}}removeStylesFrom(e){const t=e.querySelectorAll(`.${this.styleClass}`);e=i(e);for(let s=0,i=t.length;s<i;++s)e.removeChild(t[s])}}s||t.getById(5,(()=>r)),void 0===globalThis.FAST&&Reflect.defineProperty(globalThis,"FAST",{value:Object.create(null),configurable:!1,enumerable:!1,writable:!1});const o=globalThis.FAST,l={1101:"Must call enableArrayObservation before observing arrays.",1201:"The HTML policy can only be set once.",1202:"To bind innerHTML, you must use a TrustedTypesPolicy.",1401:"Missing FASTElement definition."};Object.assign(o,{addMessages(e){Object.assign(l,e)},warn(e,...t){var s;console.warn(null!==(s=l[e])&&void 0!==s?s:"Unknown Warning")},error(e,...t){var s;return new Error(null!==(s=l[e])&&void 0!==s?s:"Unknown Error")}});const h={configurable:!1,enumerable:!1,writable:!1};void 0===globalThis.FAST&&Reflect.defineProperty(globalThis,"FAST",Object.assign({value:Object.create(null)},h));const c=globalThis.FAST;if(void 0===c.getById){const e=Object.create(null);Reflect.defineProperty(c,"getById",Object.assign({value(t,s){let i=e[t];return void 0===i&&(i=s?e[t]=s():null),i}},h))}void 0===c.error&&Object.assign(c,{warn(){},error:e=>new Error(`Code ${e}`),addMessages(){}});const a=Object.freeze([]);function d(){const e=new Map;return Object.freeze({register:t=>!e.has(t.type)&&(e.set(t.type,t),!0),getByType:t=>e.get(t),getForInstance:t=>e.get(t.constructor)})}const u=e=>"function"==typeof e,f=e=>"string"==typeof e,p=c.getById(1,(()=>{const e=[],t=[],s=globalThis.requestAnimationFrame;let i=!0;function n(){if(t.length)throw t.shift()}function r(s){try{s.call()}catch(s){if(!i)throw e.length=0,s;t.push(s),setTimeout(n,0)}}function o(){let t=0;for(;t<e.length;)if(r(e[t]),t++,t>1024){for(let s=0,i=e.length-t;s<i;s++)e[s]=e[s+t];e.length-=t,t=0}e.length=0}function l(t){e.push(t),e.length<2&&(i?s(o):o())}return Object.freeze({enqueue:l,next:()=>new Promise(l),process:o,setMode:e=>i=e})}));class b{constructor(e,t){this.sub1=void 0,this.sub2=void 0,this.spillover=void 0,this.subject=e,this.sub1=t}has(e){return void 0===this.spillover?this.sub1===e||this.sub2===e:-1!==this.spillover.indexOf(e)}subscribe(e){const t=this.spillover;if(void 0===t){if(this.has(e))return;if(void 0===this.sub1)return void(this.sub1=e);if(void 0===this.sub2)return void(this.sub2=e);this.spillover=[this.sub1,this.sub2,e],this.sub1=void 0,this.sub2=void 0}else{-1===t.indexOf(e)&&t.push(e)}}unsubscribe(e){const t=this.spillover;if(void 0===t)this.sub1===e?this.sub1=void 0:this.sub2===e&&(this.sub2=void 0);else{const s=t.indexOf(e);-1!==s&&t.splice(s,1)}}notify(e){const t=this.spillover,s=this.subject;if(void 0===t){const t=this.sub1,i=this.sub2;void 0!==t&&t.handleChange(s,e),void 0!==i&&i.handleChange(s,e)}else for(let i=0,n=t.length;i<n;++i)t[i].handleChange(s,e)}}class g{constructor(e){this.subscribers={},this.subjectSubscribers=null,this.subject=e}notify(e){var t,s;null===(t=this.subscribers[e])||void 0===t||t.notify(e),null===(s=this.subjectSubscribers)||void 0===s||s.notify(e)}subscribe(e,t){var s,i;let n;n=t?null!==(s=this.subscribers[t])&&void 0!==s?s:this.subscribers[t]=new b(this.subject):null!==(i=this.subjectSubscribers)&&void 0!==i?i:this.subjectSubscribers=new b(this.subject),n.subscribe(e)}unsubscribe(e,t){var s,i;t?null===(s=this.subscribers[t])||void 0===s||s.unsubscribe(e):null===(i=this.subjectSubscribers)||void 0===i||i.unsubscribe(e)}}const v=c.getById(2,(()=>{const e=p.enqueue,t=/(:|&&|\|\||if)/,s=new WeakMap,i=new WeakMap;let n,r=e=>{throw c.error(1101)};function o(e){var t;let i=null!==(t=e.$fastController)&&void 0!==t?t:s.get(e);return void 0===i&&(Array.isArray(e)?i=r(e):s.set(e,i=new g(e))),i}function l(e){let t=i.get(e);if(void 0===t){let s=Reflect.getPrototypeOf(e);for(;void 0===t&&null!==s;)t=i.get(s),s=Reflect.getPrototypeOf(s);t=void 0===t?[]:t.slice(0),i.set(e,t)}return t}class h{constructor(e){this.name=e,this.field=`_${e}`,this.callback=`${e}Changed`}getValue(e){return void 0!==n&&n.watch(e,this.name),e[this.field]}setValue(e,t){const s=this.field,i=e[s];if(i!==t){e[s]=t;const n=e[this.callback];u(n)&&n.call(e,i,t),o(e).notify(this.name)}}}class a extends b{constructor(e,t,s=!1){super(e,t),this.binding=e,this.isVolatileBinding=s,this.needsRefresh=!0,this.needsQueue=!0,this.isAsync=!0,this.first=this,this.last=null,this.propertySource=void 0,this.propertyName=void 0,this.notifier=void 0,this.next=void 0}setMode(e){this.isAsync=this.needsQueue=e}observe(e,t){this.needsRefresh&&null!==this.last&&this.dispose();const s=n;n=this.needsRefresh?this:void 0,this.needsRefresh=this.isVolatileBinding;const i=this.binding(e,null!=t?t:T.default);return n=s,i}dispose(){if(null!==this.last){let e=this.first;for(;void 0!==e;)e.notifier.unsubscribe(this,e.propertyName),e=e.next;this.last=null,this.needsRefresh=this.needsQueue=this.isAsync}}watch(e,t){const s=this.last,i=o(e),r=null===s?this.first:{};if(r.propertySource=e,r.propertyName=t,r.notifier=i,i.subscribe(this,t),null!==s){if(!this.needsRefresh){let t;n=void 0,t=s.propertySource[s.propertyName],n=this,e===t&&(this.needsRefresh=!0)}s.next=r}this.last=r}handleChange(){this.needsQueue?(this.needsQueue=!1,e(this)):this.isAsync||this.call()}call(){null!==this.last&&(this.needsQueue=this.isAsync,this.notify(this))}*records(){let e=this.first;for(;void 0!==e;)yield e,e=e.next}}return Object.freeze({setArrayObserverFactory(e){r=e},getNotifier:o,track(e,t){n&&n.watch(e,t)},trackVolatile(){n&&(n.needsRefresh=!0)},notify(e,t){o(e).notify(t)},defineProperty(e,t){f(t)&&(t=new h(t)),l(e).push(t),Reflect.defineProperty(e,t.name,{enumerable:!0,get(){return t.getValue(this)},set(e){t.setValue(this,e)}})},getAccessors:l,binding(e,t,s=this.isVolatileBinding(e)){return new a(e,t,s)},isVolatileBinding:e=>t.test(e.toString())})}));function y(e,t){v.defineProperty(e,t)}function m(e,t,s){return Object.assign({},s,{get(){return v.trackVolatile(),s.get.apply(this)}})}const w=c.getById(3,(()=>{let e=null;return{get:()=>e,set(t){e=t}}}));class C{constructor(e=null,t=null){this.index=0,this.length=0,this.parent=e,this.parentContext=t}get event(){return w.get()}get isEven(){return this.index%2==0}get isOdd(){return this.index%2!=0}get isFirst(){return 0===this.index}get isInMiddle(){return!this.isFirst&&!this.isLast}get isLast(){return this.index===this.length-1}eventDetail(){return this.event.detail}eventTarget(){return this.event.target}updatePosition(e,t){this.index=e,this.length=t}createChildContext(e){return new C(e,this)}createItemContext(e,t){const s=Object.create(this);return s.index=e,s.length=t,s}}v.defineProperty(C.prototype,"index"),v.defineProperty(C.prototype,"length");const T=Object.freeze({default:new C,setEvent(e){w.set(e)},create:()=>new C});class S{constructor(e,t,s){this.index=e,this.removed=t,this.addedCount=s}adjustTo(e){let t=this.index;const s=e.length;return t>s?t=s-this.addedCount:t<0&&(t=s+this.removed.length+t-this.addedCount),this.index=t<0?0:t,this}}const x=Object.freeze({reset:1,splice:2,optimized:3}),O=new S(0,a,0);O.reset=!0;const A=[O];let B=Object.freeze({support:x.splice,normalize:(e,t,s)=>void 0===e?null!=s?s:a:A,pop(e,t,s,i){const n=e.length>0,r=s.apply(e,i);return n&&t.addSplice(new S(e.length,[r],0)),r},push(e,t,s,i){const n=s.apply(e,i);return t.addSplice(new S(e.length-i.length,[],i.length).adjustTo(e)),n},reverse(e,t,s,i){const n=s.apply(e,i);return t.reset(e),n},shift(e,t,s,i){const n=e.length>0,r=s.apply(e,i);return n&&t.addSplice(new S(0,[r],0)),r},sort(e,t,s,i){const n=s.apply(e,i);return t.reset(e),n},splice(e,t,s,i){const n=s.apply(e,i);return t.addSplice(new S(+i[0],n,i.length>2?i.length-2:0).adjustTo(e)),n},unshift(e,t,s,i){const n=s.apply(e,i);return t.addSplice(new S(0,[],i.length).adjustTo(e)),n}});const j=Object.freeze({reset:A,setDefaultStrategy(e){B=e}});function I(e,t,s){Reflect.defineProperty(e,t,{value:s,enumerable:!1})}class $ extends b{constructor(e){super(e),this.oldCollection=void 0,this.splices=void 0,this.needsQueue=!0,this._strategy=null,this._lengthObserver=void 0,this.call=this.flush,I(e,"$fastController",this)}get strategy(){return this._strategy}set strategy(e){this._strategy=e}get lengthObserver(){let e=this._lengthObserver;if(void 0===e){const t=this.subject;this._lengthObserver=e={length:t.length,handleChange(){this.length!==t.length&&(this.length=t.length,v.notify(e,"length"))}},this.subscribe(e)}return e}subscribe(e){this.flush(),super.subscribe(e)}addSplice(e){void 0===this.splices?this.splices=[e]:this.splices.push(e),this.enqueue()}reset(e){this.oldCollection=e,this.enqueue()}flush(){var e;const t=this.splices,s=this.oldCollection;void 0===t&&void 0===s||(this.needsQueue=!0,this.splices=void 0,this.oldCollection=void 0,this.notify((null!==(e=this._strategy)&&void 0!==e?e:B).normalize(s,this.subject,t)))}enqueue(){this.needsQueue&&(this.needsQueue=!1,p.enqueue(this))}}let V=!1;const k=Object.freeze({enable(){if(V)return;V=!0,v.setArrayObserverFactory((e=>new $(e)));const e=Array.prototype;e.$fastPatch||(I(e,"$fastPatch",1),[e.pop,e.push,e.reverse,e.shift,e.sort,e.splice,e.unshift].forEach((t=>{e[t.name]=function(...e){var s;const i=this.$fastController;return void 0===i?t.apply(this,e):(null!==(s=i.strategy)&&void 0!==s?s:B)[t.name](this,i,t,e)}})))}});function E(e){if(!e)return 0;let t=e.$fastController;return void 0===t&&(k.enable(),t=v.getNotifier(e)),v.track(t.lengthObserver,"length"),e.length}const P=new Map;let N;function F(e){return e.map((e=>e instanceof L?F(e.styles):[e])).reduce(((e,t)=>e.concat(t)),[])}class L{constructor(e){this.styles=e,this.targets=new WeakSet,this._strategy=null,this.behaviors=e.map((e=>e instanceof L?e.behaviors:null)).reduce(((e,t)=>null===t?e:null===e?t:e.concat(t)),null)}get strategy(){return null===this._strategy&&this.withStrategy(N),this._strategy}addStylesTo(e){this.strategy.addStylesTo(e),this.targets.add(e)}removeStylesFrom(e){this.strategy.removeStylesFrom(e),this.targets.delete(e)}isAttachedTo(e){return this.targets.has(e)}withBehaviors(...e){return this.behaviors=null===this.behaviors?e:this.behaviors.concat(e),this}withStrategy(e){return this._strategy=new e(F(this.styles)),this}static setDefaultStrategy(e){N=e}}L.supportsAdoptedStyleSheets=Array.isArray(document.adoptedStyleSheets)&&"replace"in CSSStyleSheet.prototype;class _{constructor(e){this.sheets=e.map((e=>{if(e instanceof CSSStyleSheet)return e;let t=P.get(e);return void 0===t&&(t=new CSSStyleSheet,t.replaceSync(e),P.set(e,t)),t}))}addStylesTo(e){e.adoptedStyleSheets=[...e.adoptedStyleSheets,...this.sheets]}removeStylesFrom(e){const t=this.sheets;e.adoptedStyleSheets=e.adoptedStyleSheets.filter((e=>-1===t.indexOf(e)))}}L.setDefaultStrategy(c.getById(5,(()=>_)));const M=d(),z=Object.freeze({getForInstance:M.getForInstance,getByType:M.getByType,define:e=>(M.register({type:e}),e)});function R(){return function(e){z.define(e)}}function H(e,t){const s=[];let i="";const n=[],r=e=>{n.push(e)};for(let n=0,o=e.length-1;n<o;++n){i+=e[n];let o=t[n];void 0!==z.getForInstance(o)&&(o=o.createCSS(r)),o instanceof L||o instanceof CSSStyleSheet?(""!==i.trim()&&(s.push(i),i=""),s.push(o)):i+=o}return i+=e[e.length-1],""!==i.trim()&&s.push(i),{styles:s,behaviors:n}}const q=(e,...t)=>{const{styles:s,behaviors:i}=H(e,t),n=new L(s);return i.length?n.withBehaviors(...i):n};class D{constructor(e,t){this.behaviors=t,this.css="";const s=e.reduce(((e,t)=>(f(t)?this.css+=t:e.push(t),e)),[]);s.length&&(this.styles=new L(s))}createCSS(e){return this.behaviors.forEach(e),this.styles&&e(this),this.css}bind(e){e.$fastController.addStyles(this.styles)}unbind(e){e.$fastController.removeStyles(this.styles)}}z.define(D);const Q=q.partial=(e,...t)=>{const{styles:s,behaviors:i}=H(e,t);return new D(s,i)},U=Object.freeze({queueUpdate:p.enqueue,nextUpdate:p.next,processUpdates:p.process,setAttribute(e,t,s){null==s?e.removeAttribute(t):e.setAttribute(t,s)},setBooleanAttribute(e,t,s){s?e.setAttribute(t,""):e.removeAttribute(t)}}),W=`fast-${Math.random().toString(36).substring(2,8)}`,G=`${W}{`,J=`}${W}`,K=J.length;let X=0;const Y=()=>`${W}-${++X}`,Z=Object.freeze({interpolation:e=>`${G}${e}${J}`,attribute:e=>`${Y()}="${G}${e}${J}"`,comment:e=>`\x3c!--${G}${e}${J}--\x3e`}),ee=Object.freeze({parse(e,t){const s=e.split(G);if(1===s.length)return null;const i=[];for(let e=0,n=s.length;e<n;++e){const n=s[e],r=n.indexOf(J);let o;if(-1===r)o=n;else{const e=n.substring(0,r);i.push(t[e]),o=n.substring(r+K)}""!==o&&i.push(o)}return i}}),te=d(),se=Object.freeze({getForInstance:te.getForInstance,getByType:te.getByType,define:(e,t)=>((t=t||{}).type=e,te.register(t),e)});function ie(e){return function(t){se.define(t,e)}}const ne=Object.freeze({none:0,attribute:1,booleanAttribute:2,property:3,content:4,tokenList:5,event:6,assign(e,t){if(e.sourceAspect=t,t)switch(t[0]){case":":switch(e.targetAspect=t.substring(1),e.targetAspect){case"innerHTML":default:e.aspectType=ne.property;break;case"classList":e.aspectType=ne.tokenList}break;case"?":e.targetAspect=t.substring(1),e.aspectType=ne.booleanAttribute;break;case"@":e.targetAspect=t.substring(1),e.aspectType=ne.event;break;default:"class"===t?(e.targetAspect="className",e.aspectType=ne.property):(e.targetAspect=t,e.aspectType=ne.attribute)}}});class re{constructor(e){this.options=e}createBehavior(e){return this}createHTML(e){return Z.attribute(e(this))}}const oe=globalThis.TrustedHTML?e=>(t,s)=>{const i=e(t,s);if(i instanceof TrustedHTML)return i;throw c.error(1202)}:e=>e,le=Object.freeze({define:(e,t=ge)=>Object.freeze({1:t=>new e(t,U.setAttribute),2:t=>new e(t,U.setBooleanAttribute),3:t=>new e(t,((e,t,s)=>e[t]=s)),4:t=>{return new(s=e,class extends s{unbind(e,t,s){super.unbind(e,t,s);const i=s[this.directive.nodeId].$fastView;void 0!==i&&i.isComposed&&(i.unbind(),i.needsBindOnly=!0)}})(t,ae);var s},5:t=>new e(t,de),6:e=>new t(e)})}),he=Object.freeze({define(e,t){const s=e=>({mode:s.mode,options:Object.assign({},t,e)});return s.options=t,s.mode=e,s}});class ce{constructor(e,t){this.directive=e,this.updateTarget=t}bind(e,t,s){}unbind(e,t,s){}createBehavior(e){return this}}function ae(e,t,s,i,n){if(null==s&&(s=""),s.create){e.textContent="";let t=e.$fastView;void 0===t?t=s.create():e.$fastTemplate!==s&&(t.isComposed&&(t.remove(),t.unbind()),t=s.create()),t.isComposed?t.needsBindOnly&&(t.needsBindOnly=!1,t.bind(i,n)):(t.isComposed=!0,t.bind(i,n),t.insertBefore(e),e.$fastView=t,e.$fastTemplate=s)}else{const t=e.$fastView;void 0!==t&&t.isComposed&&(t.isComposed=!1,t.remove(),t.needsBindOnly?t.needsBindOnly=!1:t.unbind()),e.textContent=s}}function de(e,t,s){var i;const n=`${this.directive.id}-t`,r=null!==(i=e[n])&&void 0!==i?i:e[n]={c:0,v:Object.create(null)},o=r.v;let l=r.c;const h=e[t];if(null!=s&&s.length){const e=s.split(/\s+/);for(let t=0,s=e.length;t<s;++t){const s=e[t];""!==s&&(o[s]=l,h.add(s))}}if(r.v=l+1,0!==l){l-=1;for(const e in o)o[e]===l&&h.remove(e)}}class ue extends ce{bind(e,t,s){const i=this.directive;this.updateTarget(s[i.nodeId],i.targetAspect,i.binding(e,t),e,t)}}const fe=Object.create(null);class pe extends ce{constructor(){super(...arguments),this.handlerProperty=`${this.directive.id}-h`}bind(e,t,s){const i=this.directive,n=s[i.nodeId],r=this.getSignal(e,t),o=n[this.handlerProperty]=()=>{this.updateTarget(n,i.targetAspect,i.binding(e,t),e,t)};o();const l=fe[r];l?Array.isArray(l)?l.push(o):fe[r]=[l,o]:fe[r]=o}unbind(e,t,s){const i=this.getSignal(e,t),n=fe[i];if(n&&Array.isArray(n)){const e=s[this.directive.nodeId][this.handlerProperty],t=n.indexOf(e);-1!==t&&n.splice(t,1)}else fe[i]=void 0}getSignal(e,t){const s=this.directive.options;return f(s)?s:s(e,t)}static send(e){const t=fe[e];t&&(Array.isArray(t)?t.forEach((e=>e())):t())}}class be extends ce{constructor(e,t){super(e,t),this.isBindingVolatile=v.isVolatileBinding(e.binding),this.observerProperty=`${e.id}-o`}getObserver(e){var t;return null!==(t=e[this.observerProperty])&&void 0!==t?t:e[this.observerProperty]=v.binding(this.directive.binding,this,this.isBindingVolatile)}bind(e,t,s){const i=this.directive,n=s[i.nodeId],r=this.getObserver(n);r.target=n,r.source=e,r.context=t,this.updateTarget(n,i.targetAspect,r.observe(e,t),e,t)}unbind(e,t,s){const i=s[this.directive.nodeId],n=this.getObserver(i);n.dispose(),n.target=null,n.source=null,n.context=null}handleChange(e,t){const s=t.target,i=t.source,n=t.context;this.updateTarget(s,this.directive.targetAspect,t.observe(i,n),i,n)}}class ge{constructor(e){this.directive=e,this.sourceProperty=`${e.id}-s`,this.contextProperty=`${e.id}-c`}bind(e,t,s){const i=this.directive,n=s[i.nodeId];n[this.sourceProperty]=e,n[this.contextProperty]=t,n.addEventListener(i.targetAspect,this,i.options)}unbind(e,t,s){const i=this.directive,n=s[i.nodeId];n[this.sourceProperty]=n[this.contextProperty]=null,n.removeEventListener(i.targetAspect,this,i.options)}createBehavior(e){return this}handleEvent(e){const t=e.currentTarget;T.setEvent(e);const s=this.directive.binding(t[this.sourceProperty],t[this.contextProperty]);T.setEvent(null),!0!==s&&e.preventDefault()}}let ve={determineChangeEvent:()=>"change"};class ye extends be{bind(e,t,s){var i;super.bind(e,t,s);const n=this.directive,r=s[n.nodeId];this.changeEvent||(this.changeEvent=null!==(i=n.options.changeEvent)&&void 0!==i?i:ve.determineChangeEvent(n,r)),r.addEventListener(this.changeEvent,this)}unbind(e,t,s){super.unbind(e,t,s),s[this.directive.nodeId].removeEventListener(this.changeEvent,this)}handleEvent(e){const t=this.directive,s=e.currentTarget;let i;switch(t.aspectType){case 1:i=s.getAttribute(t.targetAspect);break;case 2:i=s.hasAttribute(t.targetAspect);break;case 4:i=s.innerText;break;default:i=s[t.targetAspect]}const n=this.getObserver(s).last;n.propertySource[n.propertyName]=t.options.fromView(i)}static configure(e){ve=e}}const me=he.define(le.define(be),{}),we=he.define(le.define(ye),{fromView:e=>e}),Ce=he.define(le.define(ue),{once:!0}),Te=le.define(pe),Se=e=>({mode:Te,options:e});class xe{constructor(e,t,s){this.binding=e,this.mode=t,this.options=s,this.factory=null,this.aspectType=ne.content}createHTML(e){return Z.interpolation(e(this))}createBehavior(e){return null==this.factory&&("innerHTML"===this.targetAspect&&(this.binding=oe(this.binding)),this.factory=this.mode[this.aspectType](this)),this.factory.createBehavior(e)}}function Oe(e,t=me){return"mode"in t||(t=me(t)),new xe(e,t.mode,t.options)}function Ae(e,t){const s=e.parentNode;let i,n=e;for(;n!==t;)i=n.nextSibling,s.removeChild(n),n=i;s.removeChild(t)}se.define(xe,{aspected:!0});class Be{constructor(e,t,s){this.fragment=e,this.factories=t,this.targets=s,this.behaviors=null,this.source=null,this.context=null,this.firstChild=e.firstChild,this.lastChild=e.lastChild}appendTo(e){e.appendChild(this.fragment)}insertBefore(e){if(this.fragment.hasChildNodes())e.parentNode.insertBefore(this.fragment,e);else{const t=e.parentNode,s=this.lastChild;let i,n=this.firstChild;for(;n!==s;)i=n.nextSibling,t.insertBefore(n,e),n=i;t.insertBefore(s,e)}}remove(){const e=this.fragment,t=this.lastChild;let s,i=this.firstChild;for(;i!==t;)s=i.nextSibling,e.appendChild(i),i=s;e.appendChild(t)}dispose(){Ae(this.firstChild,this.lastChild),this.unbind()}bind(e,t){let s=this.behaviors;const i=this.source;if(i===e)return;this.source=e,this.context=t;const n=this.targets;if(null!==i)for(let r=0,o=s.length;r<o;++r){const o=s[r];o.unbind(i,t,n),o.bind(e,t,n)}else if(null===s){this.behaviors=s=new Array(this.factories.length);const i=this.factories;for(let r=0,o=i.length;r<o;++r){const o=i[r].createBehavior(n);o.bind(e,t,n),s[r]=o}}else for(let i=0,r=s.length;i<r;++i)s[i].bind(e,t,n)}unbind(){const e=this.source;if(null===e)return;const t=this.targets,s=this.context,i=this.behaviors;for(let n=0,r=i.length;n<r;++n)i[n].unbind(e,s,t);this.source=null,this.context=null}static disposeContiguousBatch(e){if(0!==e.length){Ae(e[0].firstChild,e[e.length-1].lastChild);for(let t=0,s=e.length;t<s;++t)e[t].unbind()}}}const je=(e,t)=>`${e}.${t}`,Ie={},$e={index:0,node:null};class Ve{constructor(e,t){this.fragment=e,this.directives=t,this.proto=null,this.nodeIds=new Set,this.descriptors={},this.factories=[]}addFactory(e,t,s,i){this.nodeIds.has(s)||(this.nodeIds.add(s),this.addTargetDescriptor(t,s,i)),e.nodeId=s,this.factories.push(e)}freeze(){return this.proto=Object.create(null,this.descriptors),this}addTargetDescriptor(e,t,s){const i=this.descriptors;if("r"===t||"h"===t||i[t])return;if(!i[e]){const t=e.lastIndexOf("."),s=e.substring(0,t),i=parseInt(e.substring(t+1));this.addTargetDescriptor(s,e,i)}let n=Ie[t];if(!n){const i=`_${t}`;Ie[t]=n={get(){var t;return null!==(t=this[i])&&void 0!==t?t:this[i]=this[e].childNodes[s]}}}i[t]=n}createView(e){const t=this.fragment.cloneNode(!0),s=Object.create(this.proto);s.r=t,s.h=null!=e?e:t;for(const e of this.nodeIds)s[e];return new Be(t,this.factories,s)}}function ke(e,t,s,i,n,r=!1){const o=s.attributes,l=e.directives;for(let h=0,c=o.length;h<c;++h){const a=o[h],d=a.value,u=ee.parse(d,l);let f=null;null===u?r&&(f=Oe((()=>d),Ce),ne.assign(f,a.name)):f=_e.aggregate(u),null!==f&&(s.removeAttributeNode(a),h--,c--,e.addFactory(f,t,i,n))}}function Ee(e,t,s){let i=0,n=t.firstChild;for(;n;){const t=Pe(e,s,n,i);n=t.node,i=t.index}}function Pe(e,t,s,i){const n=je(t,i);switch(s.nodeType){case 1:ke(e,t,s,n,i),Ee(e,s,n);break;case 3:return function(e,t,s,i,n){const r=ee.parse(t.textContent,e.directives);if(null===r)return $e.node=t.nextSibling,$e.index=n+1,$e;let o,l=o=t;for(let t=0,h=r.length;t<h;++t){const h=r[t];0!==t&&(n++,i=je(s,n),o=l.parentNode.insertBefore(document.createTextNode(""),l.nextSibling)),f(h)?o.textContent=h:(o.textContent=" ",e.addFactory(h,s,i,n)),l=o}return $e.index=n+1,$e.node=l.nextSibling,$e}(e,s,t,n,i);case 8:const r=ee.parse(s.data,e.directives);null!==r&&e.addFactory(_e.aggregate(r),t,n,i)}return $e.index=i+1,$e.node=s.nextSibling,$e}const Ne={createHTML:e=>e};let Fe=globalThis.trustedTypes?globalThis.trustedTypes.createPolicy("fast-html",Ne):Ne;const Le=Fe,_e={setHTMLPolicy(e){if(Fe!==Le)throw c.error(1201);Fe=e},compile(e,t){let s;if(f(e)){s=document.createElement("TEMPLATE"),s.innerHTML=Fe.createHTML(e);const t=s.content.firstElementChild;null!==t&&"TEMPLATE"===t.tagName&&(s=t)}else s=e;const i=document.adoptNode(s.content),n=new Ve(i,t);return ke(n,"",s,"h",0,!0),(function(e,t){return e&&8==e.nodeType&&null!==ee.parse(e.data,t)}(i.firstChild,t)||1===i.childNodes.length&&Object.keys(t).length>0)&&i.insertBefore(document.createComment(""),i.firstChild),Ee(n,i,"r"),$e.node=null,n.freeze()},setDefaultStrategy(e){this.compile=e},aggregate(e){if(1===e.length)return e[0];let t;const s=e.length,i=e.map((e=>f(e)?()=>e:(t=e.sourceAspect||t,e.binding))),n=Oe(((e,t)=>{let n="";for(let r=0;r<s;++r)n+=i[r](e,t);return n}));return ne.assign(n,t),n}};class Me{constructor(e,t){this.result=null,this.html=e,this.factories=t}create(e){return null===this.result&&(this.result=_e.compile(this.html,this.factories)),this.result.createView(e)}render(e,t,s,i){const n=this.create(null!=s?s:t);return n.bind(e,null!=i?i:T.default),n.appendTo(t),n}}const ze=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function Re(e,t,s){const i=ze.exec(t);return null!==i&&ne.assign(e,i[2]),e.createHTML(s)}function He(e,...t){let s="";const i=Object.create(null),n=e=>{var t;const s=null!==(t=e.id)&&void 0!==t?t:e.id=Y();return i[s]=e,s};for(let i=0,r=e.length-1;i<r;++i){const r=e[i],o=t[i];let l;if(s+=r,u(o))s+=Re(Oe(o),r,n);else if(f(o)){const e=ze.exec(r);if(null!==e){const t=Oe((()=>o),Ce);ne.assign(t,e[2]),s+=t.createHTML(n)}else s+=o}else void 0===(l=se.getForInstance(o))?s+=Re(Oe((()=>o),Ce),r,n):l.aspected?s+=Re(o,r,n):s+=o.createHTML(n)}return new Me(s+e[e.length-1],i)}const qe=He,De=He;class Qe extends re{bind(e,t,s){e[this.options]=s[this.nodeId]}unbind(){}}se.define(Qe);const Ue=e=>new Qe(e);function We(e,t){const s=u(t)?t:()=>t;return(t,i)=>e(t,i)?s(t,i):null}const Ge=Object.freeze({positioning:!1,recycle:!0});function Je(e,t,s,i){e.bind(t[s],i)}function Ke(e,t,s,i){e.bind(t[s],i.createItemContext(s,t.length))}class Xe{constructor(e,t,s,i,n,r){this.location=e,this.itemsBinding=t,this.templateBinding=i,this.options=r,this.source=null,this.views=[],this.items=null,this.itemsObserver=null,this.context=void 0,this.childContext=void 0,this.bindView=Je,this.itemsBindingObserver=v.binding(t,this,s),this.templateBindingObserver=v.binding(i,this,n),r.positioning&&(this.bindView=Ke)}bind(e,t){this.source=e,this.context=t,this.childContext=t.createChildContext(e),this.items=this.itemsBindingObserver.observe(e,this.context),this.template=this.templateBindingObserver.observe(e,this.context),this.observeItems(!0),this.refreshAllViews()}unbind(){this.source=null,this.items=null,null!==this.itemsObserver&&this.itemsObserver.unsubscribe(this),this.unbindAllViews(),this.itemsBindingObserver.dispose(),this.templateBindingObserver.dispose()}handleChange(e,t){e===this.itemsBinding?(this.items=this.itemsBindingObserver.observe(this.source,this.context),this.observeItems(),this.refreshAllViews()):e===this.templateBinding?(this.template=this.templateBindingObserver.observe(this.source,this.context),this.refreshAllViews(!0)):t[0].reset?this.refreshAllViews():this.updateViews(t)}observeItems(e=!1){if(!this.items)return void(this.items=a);const t=this.itemsObserver,s=this.itemsObserver=v.getNotifier(this.items),i=t!==s;i&&null!==t&&t.unsubscribe(this),(i||e)&&s.subscribe(this)}updateViews(e){const t=this.views,s=this.childContext,i=[],n=this.bindView;let r=0;for(let s=0,n=e.length;s<n;++s){const n=e[s],o=n.removed;i.push(...t.splice(n.index+r,o.length)),r-=n.addedCount}const o=this.items,l=this.template;for(let r=0,h=e.length;r<h;++r){const h=e[r];let c=h.index;const a=c+h.addedCount;for(;c<a;++c){const e=t[c],r=e?e.firstChild:this.location,h=this.options.recycle&&i.length>0?i.shift():l.create();t.splice(c,0,h),n(h,o,c,s),h.insertBefore(r)}}for(let e=0,t=i.length;e<t;++e)i[e].dispose();if(this.options.positioning)for(let e=0,s=t.length;e<s;++e)t[e].context.updatePosition(e,s)}refreshAllViews(e=!1){const t=this.items,s=this.template,i=this.location,n=this.bindView,r=this.childContext;let o=t.length,l=this.views,h=l.length;if((0===o||e)&&(Be.disposeContiguousBatch(l),h=0),0===h){this.views=l=new Array(o);for(let e=0;e<o;++e){const o=s.create();n(o,t,e,r),l[e]=o,o.insertBefore(i)}}else{let e=0;for(;e<o;++e)if(e<h){n(l[e],t,e,r)}else{const o=s.create();n(o,t,e,r),l.push(o),o.insertBefore(i)}const c=l.splice(e,h-e);for(e=0,o=c.length;e<o;++e)c[e].dispose()}}unbindAllViews(){const e=this.views;for(let t=0,s=e.length;t<s;++t)e[t].unbind()}}class Ye{constructor(e,t,s){this.itemsBinding=e,this.templateBinding=t,this.options=s,k.enable(),this.isItemsBindingVolatile=v.isVolatileBinding(e),this.isTemplateBindingVolatile=v.isVolatileBinding(t)}createHTML(e){return Z.comment(e(this))}createBehavior(e){return new Xe(e[this.nodeId],this.itemsBinding,this.isItemsBindingVolatile,this.templateBinding,this.isTemplateBindingVolatile,this.options)}}function Ze(e,t,s=Ge){const i=u(t)?t:()=>t;return new Ye(e,i,s)}se.define(Ye);const et=e=>1===e.nodeType,tt=e=>e?t=>1===t.nodeType&&t.matches(e):et;class st extends re{constructor(){super(...arguments),this.sourceProperty=`${this.id}-s`}bind(e,t,s){const i=s[this.nodeId];i[this.sourceProperty]=e,this.updateTarget(e,this.computeNodes(i)),this.observe(i)}unbind(e,t,s){const i=s[this.nodeId];this.updateTarget(e,a),this.disconnect(i),i[this.sourceProperty]=null}getSource(e){return e[this.sourceProperty]}updateTarget(e,t){e[this.options.property]=t}computeNodes(e){let t=this.getNodes(e);return"filter"in this.options&&(t=t.filter(this.options.filter)),t}}class it extends st{observe(e){e.addEventListener("slotchange",this)}disconnect(e){e.removeEventListener("slotchange",this)}getNodes(e){return e.assignedNodes(this.options)}handleEvent(e){const t=e.currentTarget;this.updateTarget(this.getSource(t),this.computeNodes(t))}}function nt(e){return f(e)&&(e={property:e}),new it(e)}se.define(it);class rt extends st{constructor(e){super(e),this.observerProperty=`${this.id}-o`,this.handleEvent=(e,t)=>{const s=t.target;this.updateTarget(this.getSource(s),this.computeNodes(s))},e.childList=!0}observe(e){var t;const s=null!==(t=e[this.observerProperty])&&void 0!==t?t:e[this.observerProperty]=new MutationObserver(this.handleEvent);s.target=e,s.observe(e,this.options)}disconnect(e){const t=e[this.observerProperty];t.target=null,t.disconnect()}getNodes(e){return"selector"in this.options?Array.from(e.querySelectorAll(this.options.selector)):Array.from(e.childNodes)}}function ot(e){return f(e)&&(e={property:e}),new rt(e)}se.define(rt);const lt={toView:e=>e?"true":"false",fromView:e=>null!=e&&"false"!==e&&!1!==e&&0!==e};function ht(e){if(null==e)return null;const t=1*e;return isNaN(t)?null:t}const ct={toView(e){const t=ht(e);return t?t.toString():t},fromView:ht};class at{constructor(e,t,s=t.toLowerCase(),i="reflect",n){this.guards=new Set,this.Owner=e,this.name=t,this.attribute=s,this.mode=i,this.converter=n,this.fieldName=`_${t}`,this.callbackName=`${t}Changed`,this.hasCallback=this.callbackName in e.prototype,"boolean"===i&&void 0===n&&(this.converter=lt)}setValue(e,t){const s=e[this.fieldName],i=this.converter;void 0!==i&&(t=i.fromView(t)),s!==t&&(e[this.fieldName]=t,this.tryReflectToAttribute(e),this.hasCallback&&e[this.callbackName](s,t),e.$fastController.notify(this.name))}getValue(e){return v.track(e,this.name),e[this.fieldName]}onAttributeChangedCallback(e,t){this.guards.has(e)||(this.guards.add(e),this.setValue(e,t),this.guards.delete(e))}tryReflectToAttribute(e){const t=this.mode,s=this.guards;s.has(e)||"fromView"===t||p.enqueue((()=>{s.add(e);const i=e[this.fieldName];switch(t){case"reflect":const t=this.converter;U.setAttribute(e,this.attribute,void 0!==t?t.toView(i):i);break;case"boolean":U.setBooleanAttribute(e,this.attribute,i)}s.delete(e)}))}static collect(e,...t){const s=[];t.push(e.attributes);for(let i=0,n=t.length;i<n;++i){const n=t[i];if(void 0!==n)for(let t=0,i=n.length;t<i;++t){const i=n[t];f(i)?s.push(new at(e,i)):s.push(new at(e,i.property,i.attribute,i.mode,i.converter))}}return s}}function dt(e,t){let s;function i(e,t){arguments.length>1&&(s.property=t);const i=e.constructor.attributes||(e.constructor.attributes=[]);i.push(s)}return arguments.length>1?(s={},void i(e,t)):(s=void 0===e?{}:e,i)}const ut={mode:"open"},ft={},pt=c.getById(4,(()=>d()));class bt{constructor(e,t=e.definition){f(t)&&(t={name:t}),this.type=e,this.name=t.name,this.template=t.template;const s=at.collect(e,t.attributes),i=new Array(s.length),n={},r={};for(let e=0,t=s.length;e<t;++e){const t=s[e];i[e]=t.attribute,n[t.name]=t,r[t.attribute]=t}this.attributes=s,this.observedAttributes=i,this.propertyLookup=n,this.attributeLookup=r,this.shadowOptions=void 0===t.shadowOptions?ut:null===t.shadowOptions?void 0:Object.assign(Object.assign({},ut),t.shadowOptions),this.elementOptions=void 0===t.elementOptions?ft:Object.assign(Object.assign({},ft),t.elementOptions),this.styles=void 0===t.styles?void 0:Array.isArray(t.styles)?new L(t.styles):t.styles instanceof L?t.styles:new L([t.styles])}get isDefined(){return!!pt.getByType(this.type)}define(e=customElements){const t=this.type;if(pt.register(this)){const e=this.attributes,s=t.prototype;for(let t=0,i=e.length;t<i;++t)v.defineProperty(s,e[t]);Reflect.defineProperty(t,"observedAttributes",{value:this.observedAttributes,enumerable:!0})}return e.get(this.name)||e.define(this.name,t,this.elementOptions),this}}bt.getByType=pt.getByType,bt.getForInstance=pt.getForInstance;const gt=new WeakMap,vt={bubbles:!0,composed:!0,cancelable:!0};function yt(e){var t,s;return null!==(s=null!==(t=e.shadowRoot)&&void 0!==t?t:gt.get(e))&&void 0!==s?s:null}class mt extends g{constructor(e,t){super(e),this.boundObservables=null,this.behaviors=null,this.needsInitialization=!0,this.hasExistingShadowRoot=!1,this._template=null,this._styles=null,this._isConnected=!1,this.$fastController=this,this.view=null,this.element=e,this.definition=t;const s=t.shadowOptions;if(void 0!==s){let t=e.shadowRoot;t?this.hasExistingShadowRoot=!0:(t=e.attachShadow(s),"closed"===s.mode&>.set(e,t))}const i=v.getAccessors(e);if(i.length>0){const t=this.boundObservables=Object.create(null);for(let s=0,n=i.length;s<n;++s){const n=i[s].name,r=e[n];void 0!==r&&(delete e[n],t[n]=r)}}}get isConnected(){return v.track(this,"isConnected"),this._isConnected}setIsConnected(e){this._isConnected=e,v.notify(this,"isConnected")}get template(){var e;if(null===this._template){const t=this.definition;this.element.resolveTemplate?this._template=this.element.resolveTemplate():t.template&&(this._template=null!==(e=t.template)&&void 0!==e?e:null)}return this._template}set template(e){this._template!==e&&(this._template=e,this.needsInitialization||this.renderTemplate(e))}get styles(){var e;if(null===this._styles){const t=this.definition;this.element.resolveStyles?this._styles=this.element.resolveStyles():t.styles&&(this._styles=null!==(e=t.styles)&&void 0!==e?e:null)}return this._styles}set styles(e){this._styles!==e&&(null!==this._styles&&this.removeStyles(this._styles),this._styles=e,this.needsInitialization||this.addStyles(e))}addStyles(e){if(!e)return;const t=yt(this.element)||this.element.getRootNode();if(e instanceof HTMLElement)t.append(e);else if(!e.isAttachedTo(t)){const s=e.behaviors;e.addStylesTo(t),null!==s&&this.addBehaviors(s)}}removeStyles(e){if(!e)return;const t=yt(this.element)||this.element.getRootNode();if(e instanceof HTMLElement)t.removeChild(e);else if(e.isAttachedTo(t)){const s=e.behaviors;e.removeStylesFrom(t),null!==s&&this.removeBehaviors(s)}}addBehaviors(e){var t;const s=null!==(t=this.behaviors)&&void 0!==t?t:this.behaviors=new Map,i=e.length,n=[];for(let t=0;t<i;++t){const i=e[t];s.has(i)?s.set(i,s.get(i)+1):(s.set(i,1),n.push(i))}if(this._isConnected){const e=this.element,t=T.default;for(let s=0;s<n.length;++s)n[s].bind(e,t)}}removeBehaviors(e,t=!1){const s=this.behaviors;if(null===s)return;const i=e.length,n=[];for(let r=0;r<i;++r){const i=e[r];if(s.has(i)){const e=s.get(i)-1;0===e||t?s.delete(i)&&n.push(i):s.set(i,e)}}if(this._isConnected){const e=this.element,t=T.default;for(let s=0;s<n.length;++s)n[s].unbind(e,t)}}onConnectedCallback(){if(this._isConnected)return;const e=this.element,t=T.default;this.needsInitialization?this.finishInitialization():null!==this.view&&this.view.bind(e,t);const s=this.behaviors;if(null!==s)for(const i of s.keys())i.bind(e,t);this.setIsConnected(!0)}onDisconnectedCallback(){if(!this._isConnected)return;this.setIsConnected(!1);const e=this.view;null!==e&&e.unbind();const t=this.behaviors;if(null!==t){const e=this.element,s=T.default;for(const i of t.keys())i.unbind(e,s)}}onAttributeChangedCallback(e,t,s){const i=this.definition.attributeLookup[e];void 0!==i&&i.onAttributeChangedCallback(this.element,s)}emit(e,t,s){return!!this._isConnected&&this.element.dispatchEvent(new CustomEvent(e,Object.assign(Object.assign({detail:t},vt),s)))}finishInitialization(){const e=this.element,t=this.boundObservables;if(null!==t){const s=Object.keys(t);for(let i=0,n=s.length;i<n;++i){const n=s[i];e[n]=t[n]}this.boundObservables=null}this.renderTemplate(this.template),this.addStyles(this.styles),this.needsInitialization=!1}renderTemplate(e){var t;const s=this.element,i=null!==(t=yt(s))&&void 0!==t?t:s;if(null!==this.view)this.view.dispose(),this.view=null;else if(!this.needsInitialization||this.hasExistingShadowRoot){this.hasExistingShadowRoot=!1;for(let e=i.firstChild;null!==e;e=i.firstChild)i.removeChild(e)}e&&(this.view=e.render(s,i,s))}static forCustomElement(e){const t=e.$fastController;if(void 0!==t)return t;const s=bt.getForInstance(e);if(void 0===s)throw c.error(1401);return e.$fastController=new mt(e,s)}}function wt(e){return class extends e{constructor(){super(),mt.forCustomElement(this)}$emit(e,t,s){return this.$fastController.emit(e,t,s)}connectedCallback(){this.$fastController.onConnectedCallback()}disconnectedCallback(){this.$fastController.onDisconnectedCallback()}attributeChangedCallback(e,t,s){this.$fastController.onAttributeChangedCallback(e,t,s)}}}const Ct=Object.assign(wt(HTMLElement),{from:e=>wt(e),define:(e,t)=>new bt(e,t).define().type});function Tt(e){return function(t){new bt(t,e).define()}}export{_ as AdoptedStyleSheetsStrategy,k as ArrayObserver,ne as Aspect,at as AttributeDefinition,he as BindingConfig,le as BindingMode,z as CSSDirective,be as ChangeBinding,rt as ChildrenDirective,_e as Compiler,mt as Controller,U as DOM,L as ElementStyles,ge as EventBinding,T as ExecutionContext,c as FAST,Ct as FASTElement,bt as FASTElementDefinition,xe as HTMLBindingDirective,se as HTMLDirective,Be as HTMLView,Z as Markup,st as NodeObservationDirective,v as Observable,ue as OneTimeBinding,ee as Parser,g as PropertyChangeNotifier,Qe as RefDirective,Xe as RepeatBehavior,Ye as RepeatDirective,pe as SignalBinding,it as SlottedDirective,S as Splice,j as SpliceStrategy,x as SpliceStrategySupport,re as StatelessAttachedAttributeDirective,b as SubscriberSet,ye as TwoWayBinding,ce as UpdateBinding,p as Updates,Me as ViewTemplate,dt as attr,Oe as bind,lt as booleanConverter,qe as child,ot as children,d as createTypeRegistry,q as css,R as cssDirective,Q as cssPartial,Tt as customElement,tt as elements,a as emptyArray,He as html,ie as htmlDirective,De as item,E as length,ct as nullableNumberConverter,y as observable,me as onChange,Ce as oneTime,Ue as ref,Ze as repeat,Se as signal,nt as slotted,we as twoWay,m as volatile,We as when};
|
|
1
|
+
!function(){if("undefined"==typeof globalThis)if("undefined"!=typeof global)global.globalThis=global;else if("undefined"!=typeof self)self.globalThis=self;else if("undefined"!=typeof window)window.globalThis=window;else{const t=new Function("return this")();t.globalThis=t}}(),globalThis.trustedTypes||(globalThis.trustedTypes={createPolicy:(t,e)=>e});const t={configurable:!1,enumerable:!1,writable:!1};void 0===globalThis.FAST&&Reflect.defineProperty(globalThis,"FAST",Object.assign({value:Object.create(null)},t));const e=globalThis.FAST;if(void 0===e.getById){const s=Object.create(null);Reflect.defineProperty(e,"getById",Object.assign({value(t,e){let i=s[t];return void 0===i&&(i=e?s[t]=e():null),i}},t))}const s=Array.isArray(document.adoptedStyleSheets)&&"replace"in CSSStyleSheet.prototype;function i(t){return t===document?document.body:t}let n=0;class r{constructor(t){this.styles=t,this.styleClass="fast-"+ ++n}addStylesTo(t){t=i(t);const e=this.styles,s=this.styleClass;for(let i=0;i<e.length;i++){const n=document.createElement("style");n.innerHTML=e[i],n.className=s,t.append(n)}}removeStylesFrom(t){const e=t.querySelectorAll(`.${this.styleClass}`);t=i(t);for(let s=0,i=e.length;s<i;++s)t.removeChild(e[s])}}s||e.getById(5,(()=>r)),void 0===globalThis.FAST&&Reflect.defineProperty(globalThis,"FAST",{value:Object.create(null),configurable:!1,enumerable:!1,writable:!1});const o=globalThis.FAST,l={1101:"Must call enableArrayObservation before observing arrays.",1201:"The HTML policy can only be set once.",1202:"To bind innerHTML, you must use a TrustedTypesPolicy.",1401:"Missing FASTElement definition."};Object.assign(o,{addMessages(t){Object.assign(l,t)},warn(t,...e){var s;console.warn(null!==(s=l[t])&&void 0!==s?s:"Unknown Warning")},error(t,...e){var s;return new Error(null!==(s=l[t])&&void 0!==s?s:"Unknown Error")}});const h={configurable:!1,enumerable:!1,writable:!1};void 0===globalThis.FAST&&Reflect.defineProperty(globalThis,"FAST",Object.assign({value:Object.create(null)},h));const c=globalThis.FAST;if(void 0===c.getById){const t=Object.create(null);Reflect.defineProperty(c,"getById",Object.assign({value(e,s){let i=t[e];return void 0===i&&(i=s?t[e]=s():null),i}},h))}void 0===c.error&&Object.assign(c,{warn(){},error:t=>new Error(`Code ${t}`),addMessages(){}});const a=Object.freeze([]);function d(){const t=new Map;return Object.freeze({register:e=>!t.has(e.type)&&(t.set(e.type,e),!0),getByType:e=>t.get(e),getForInstance:e=>t.get(e.constructor)})}const u=t=>"function"==typeof t,f=t=>"string"==typeof t,p=c.getById(1,(()=>{const t=[],e=[],s=globalThis.requestAnimationFrame;let i=!0;function n(){if(e.length)throw e.shift()}function r(s){try{s.call()}catch(s){if(!i)throw t.length=0,s;e.push(s),setTimeout(n,0)}}function o(){let e=0;for(;e<t.length;)if(r(t[e]),e++,e>1024){for(let s=0,i=t.length-e;s<i;s++)t[s]=t[s+e];t.length-=e,e=0}t.length=0}function l(e){t.push(e),t.length<2&&(i?s(o):o())}return Object.freeze({enqueue:l,next:()=>new Promise(l),process:o,setMode:t=>i=t})}));class b{constructor(t,e){this.sub1=void 0,this.sub2=void 0,this.spillover=void 0,this.subject=t,this.sub1=e}has(t){return void 0===this.spillover?this.sub1===t||this.sub2===t:-1!==this.spillover.indexOf(t)}subscribe(t){const e=this.spillover;if(void 0===e){if(this.has(t))return;if(void 0===this.sub1)return void(this.sub1=t);if(void 0===this.sub2)return void(this.sub2=t);this.spillover=[this.sub1,this.sub2,t],this.sub1=void 0,this.sub2=void 0}else{-1===e.indexOf(t)&&e.push(t)}}unsubscribe(t){const e=this.spillover;if(void 0===e)this.sub1===t?this.sub1=void 0:this.sub2===t&&(this.sub2=void 0);else{const s=e.indexOf(t);-1!==s&&e.splice(s,1)}}notify(t){const e=this.spillover,s=this.subject;if(void 0===e){const e=this.sub1,i=this.sub2;void 0!==e&&e.handleChange(s,t),void 0!==i&&i.handleChange(s,t)}else for(let i=0,n=e.length;i<n;++i)e[i].handleChange(s,t)}}class g{constructor(t){this.subscribers={},this.subjectSubscribers=null,this.subject=t}notify(t){var e,s;null===(e=this.subscribers[t])||void 0===e||e.notify(t),null===(s=this.subjectSubscribers)||void 0===s||s.notify(t)}subscribe(t,e){var s,i;let n;n=e?null!==(s=this.subscribers[e])&&void 0!==s?s:this.subscribers[e]=new b(this.subject):null!==(i=this.subjectSubscribers)&&void 0!==i?i:this.subjectSubscribers=new b(this.subject),n.subscribe(t)}unsubscribe(t,e){var s,i;e?null===(s=this.subscribers[e])||void 0===s||s.unsubscribe(t):null===(i=this.subjectSubscribers)||void 0===i||i.unsubscribe(t)}}const v=c.getById(2,(()=>{const t=p.enqueue,e=/(:|&&|\|\||if)/,s=new WeakMap,i=new WeakMap;let n,r=t=>{throw c.error(1101)};function o(t){var e;let i=null!==(e=t.$fastController)&&void 0!==e?e:s.get(t);return void 0===i&&(Array.isArray(t)?i=r(t):s.set(t,i=new g(t))),i}function l(t){let e=i.get(t);if(void 0===e){let s=Reflect.getPrototypeOf(t);for(;void 0===e&&null!==s;)e=i.get(s),s=Reflect.getPrototypeOf(s);e=void 0===e?[]:e.slice(0),i.set(t,e)}return e}class h{constructor(t){this.name=t,this.field=`_${t}`,this.callback=`${t}Changed`}getValue(t){return void 0!==n&&n.watch(t,this.name),t[this.field]}setValue(t,e){const s=this.field,i=t[s];if(i!==e){t[s]=e;const n=t[this.callback];u(n)&&n.call(t,i,e),o(t).notify(this.name)}}}class a extends b{constructor(t,e,s=!1){super(t,e),this.binding=t,this.isVolatileBinding=s,this.needsRefresh=!0,this.needsQueue=!0,this.isAsync=!0,this.first=this,this.last=null,this.propertySource=void 0,this.propertyName=void 0,this.notifier=void 0,this.next=void 0}setMode(t){this.isAsync=this.needsQueue=t}observe(t,e){this.needsRefresh&&null!==this.last&&this.dispose();const s=n;n=this.needsRefresh?this:void 0,this.needsRefresh=this.isVolatileBinding;const i=this.binding(t,null!=e?e:C.default);return n=s,i}dispose(){if(null!==this.last){let t=this.first;for(;void 0!==t;)t.notifier.unsubscribe(this,t.propertyName),t=t.next;this.last=null,this.needsRefresh=this.needsQueue=this.isAsync}}watch(t,e){const s=this.last,i=o(t),r=null===s?this.first:{};if(r.propertySource=t,r.propertyName=e,r.notifier=i,i.subscribe(this,e),null!==s){if(!this.needsRefresh){let e;n=void 0,e=s.propertySource[s.propertyName],n=this,t===e&&(this.needsRefresh=!0)}s.next=r}this.last=r}handleChange(){this.needsQueue?(this.needsQueue=!1,t(this)):this.isAsync||this.call()}call(){null!==this.last&&(this.needsQueue=this.isAsync,this.notify(this))}*records(){let t=this.first;for(;void 0!==t;)yield t,t=t.next}}return Object.freeze({setArrayObserverFactory(t){r=t},getNotifier:o,track(t,e){n&&n.watch(t,e)},trackVolatile(){n&&(n.needsRefresh=!0)},notify(t,e){o(t).notify(e)},defineProperty(t,e){f(e)&&(e=new h(e)),l(t).push(e),Reflect.defineProperty(t,e.name,{enumerable:!0,get(){return e.getValue(this)},set(t){e.setValue(this,t)}})},getAccessors:l,binding(t,e,s=this.isVolatileBinding(t)){return new a(t,e,s)},isVolatileBinding:t=>e.test(t.toString())})}));function y(t,e){v.defineProperty(t,e)}function m(t,e,s){return Object.assign({},s,{get(){return v.trackVolatile(),s.get.apply(this)}})}const w=c.getById(3,(()=>{let t=null;return{get:()=>t,set(e){t=e}}}));class C{constructor(t=null,e=null){this.index=0,this.length=0,this.parent=t,this.parentContext=e}get event(){return w.get()}get isEven(){return this.index%2==0}get isOdd(){return this.index%2!=0}get isFirst(){return 0===this.index}get isInMiddle(){return!this.isFirst&&!this.isLast}get isLast(){return this.index===this.length-1}eventDetail(){return this.event.detail}eventTarget(){return this.event.target}updatePosition(t,e){this.index=t,this.length=e}createChildContext(t){return new C(t,this)}createItemContext(t,e){const s=Object.create(this);return s.index=t,s.length=e,s}static setEvent(t){w.set(t)}static create(){return new C}}C.default=new C,v.defineProperty(C.prototype,"index"),v.defineProperty(C.prototype,"length");class T{constructor(t,e,s){this.index=t,this.removed=e,this.addedCount=s}adjustTo(t){let e=this.index;const s=t.length;return e>s?e=s-this.addedCount:e<0&&(e=s+this.removed.length+e-this.addedCount),this.index=e<0?0:e,this}}const S=Object.freeze({reset:1,splice:2,optimized:3}),x=new T(0,a,0);x.reset=!0;const O=[x];let A=Object.freeze({support:S.splice,normalize:(t,e,s)=>void 0===t?null!=s?s:a:O,pop(t,e,s,i){const n=t.length>0,r=s.apply(t,i);return n&&e.addSplice(new T(t.length,[r],0)),r},push(t,e,s,i){const n=s.apply(t,i);return e.addSplice(new T(t.length-i.length,[],i.length).adjustTo(t)),n},reverse(t,e,s,i){const n=s.apply(t,i);return e.reset(t),n},shift(t,e,s,i){const n=t.length>0,r=s.apply(t,i);return n&&e.addSplice(new T(0,[r],0)),r},sort(t,e,s,i){const n=s.apply(t,i);return e.reset(t),n},splice(t,e,s,i){const n=s.apply(t,i);return e.addSplice(new T(+i[0],n,i.length>2?i.length-2:0).adjustTo(t)),n},unshift(t,e,s,i){const n=s.apply(t,i);return e.addSplice(new T(0,[],i.length).adjustTo(t)),n}});const B=Object.freeze({reset:O,setDefaultStrategy(t){A=t}});function j(t,e,s){Reflect.defineProperty(t,e,{value:s,enumerable:!1})}class I extends b{constructor(t){super(t),this.oldCollection=void 0,this.splices=void 0,this.needsQueue=!0,this._strategy=null,this._lengthObserver=void 0,this.call=this.flush,j(t,"$fastController",this)}get strategy(){return this._strategy}set strategy(t){this._strategy=t}get lengthObserver(){let t=this._lengthObserver;if(void 0===t){const e=this.subject;this._lengthObserver=t={length:e.length,handleChange(){this.length!==e.length&&(this.length=e.length,v.notify(t,"length"))}},this.subscribe(t)}return t}subscribe(t){this.flush(),super.subscribe(t)}addSplice(t){void 0===this.splices?this.splices=[t]:this.splices.push(t),this.enqueue()}reset(t){this.oldCollection=t,this.enqueue()}flush(){var t;const e=this.splices,s=this.oldCollection;void 0===e&&void 0===s||(this.needsQueue=!0,this.splices=void 0,this.oldCollection=void 0,this.notify((null!==(t=this._strategy)&&void 0!==t?t:A).normalize(s,this.subject,e)))}enqueue(){this.needsQueue&&(this.needsQueue=!1,p.enqueue(this))}}let $=!1;const V=Object.freeze({enable(){if($)return;$=!0,v.setArrayObserverFactory((t=>new I(t)));const t=Array.prototype;t.$fastPatch||(j(t,"$fastPatch",1),[t.pop,t.push,t.reverse,t.shift,t.sort,t.splice,t.unshift].forEach((e=>{t[e.name]=function(...t){var s;const i=this.$fastController;return void 0===i?e.apply(this,t):(null!==(s=i.strategy)&&void 0!==s?s:A)[e.name](this,i,e,t)}})))}});function k(t){if(!t)return 0;let e=t.$fastController;return void 0===e&&(V.enable(),e=v.getNotifier(t)),v.track(e.lengthObserver,"length"),t.length}const P=new Map;let N;function F(t){return t.map((t=>t instanceof _?F(t.styles):[t])).reduce(((t,e)=>t.concat(e)),[])}class _{constructor(t){this.styles=t,this.targets=new WeakSet,this._strategy=null,this.behaviors=t.map((t=>t instanceof _?t.behaviors:null)).reduce(((t,e)=>null===e?t:null===t?e:t.concat(e)),null)}get strategy(){return null===this._strategy&&this.withStrategy(N),this._strategy}addStylesTo(t){this.strategy.addStylesTo(t),this.targets.add(t)}removeStylesFrom(t){this.strategy.removeStylesFrom(t),this.targets.delete(t)}isAttachedTo(t){return this.targets.has(t)}withBehaviors(...t){return this.behaviors=null===this.behaviors?t:this.behaviors.concat(t),this}withStrategy(t){return this._strategy=new t(F(this.styles)),this}static setDefaultStrategy(t){N=t}}_.supportsAdoptedStyleSheets=Array.isArray(document.adoptedStyleSheets)&&"replace"in CSSStyleSheet.prototype;class E{constructor(t){this.sheets=t.map((t=>{if(t instanceof CSSStyleSheet)return t;let e=P.get(t);return void 0===e&&(e=new CSSStyleSheet,e.replaceSync(t),P.set(t,e)),e}))}addStylesTo(t){t.adoptedStyleSheets=[...t.adoptedStyleSheets,...this.sheets]}removeStylesFrom(t){const e=this.sheets;t.adoptedStyleSheets=t.adoptedStyleSheets.filter((t=>-1===e.indexOf(t)))}}_.setDefaultStrategy(c.getById(5,(()=>E)));const M=d(),L=Object.freeze({getForInstance:M.getForInstance,getByType:M.getByType,define:t=>(M.register({type:t}),t)});function z(){return function(t){L.define(t)}}function R(t,e){const s=[];let i="";const n=[],r=t=>{n.push(t)};for(let n=0,o=t.length-1;n<o;++n){i+=t[n];let o=e[n];void 0!==L.getForInstance(o)&&(o=o.createCSS(r)),o instanceof _||o instanceof CSSStyleSheet?(""!==i.trim()&&(s.push(i),i=""),s.push(o)):i+=o}return i+=t[t.length-1],""!==i.trim()&&s.push(i),{styles:s,behaviors:n}}const H=(t,...e)=>{const{styles:s,behaviors:i}=R(t,e),n=new _(s);return i.length?n.withBehaviors(...i):n};class q{constructor(t,e){this.behaviors=e,this.css="";const s=t.reduce(((t,e)=>(f(e)?this.css+=e:t.push(e),t)),[]);s.length&&(this.styles=new _(s))}createCSS(t){return this.behaviors.forEach(t),this.styles&&t(this),this.css}bind(t){t.$fastController.addStyles(this.styles)}unbind(t){t.$fastController.removeStyles(this.styles)}}L.define(q);const D=H.partial=(t,...e)=>{const{styles:s,behaviors:i}=R(t,e);return new q(s,i)},Q=Object.freeze({queueUpdate:p.enqueue,nextUpdate:p.next,processUpdates:p.process,setAttribute(t,e,s){null==s?t.removeAttribute(e):t.setAttribute(e,s)},setBooleanAttribute(t,e,s){s?t.setAttribute(e,""):t.removeAttribute(e)}}),U=`fast-${Math.random().toString(36).substring(2,8)}`,W=`${U}{`,G=`}${U}`,J=G.length;let K=0;const X=()=>`${U}-${++K}`,Y=Object.freeze({interpolation:t=>`${W}${t}${G}`,attribute:t=>`${X()}="${W}${t}${G}"`,comment:t=>`\x3c!--${W}${t}${G}--\x3e`}),Z=Object.freeze({parse(t,e){const s=t.split(W);if(1===s.length)return null;const i=[];for(let t=0,n=s.length;t<n;++t){const n=s[t],r=n.indexOf(G);let o;if(-1===r)o=n;else{const t=n.substring(0,r);i.push(e[t]),o=n.substring(r+J)}""!==o&&i.push(o)}return i}}),tt=d(),et=Object.freeze({getForInstance:tt.getForInstance,getByType:tt.getByType,define:(t,e)=>((e=e||{}).type=t,tt.register(e),t)});function st(t){return function(e){et.define(e,t)}}const it=Object.freeze({none:0,attribute:1,booleanAttribute:2,property:3,content:4,tokenList:5,event:6,assign(t,e){if(t.sourceAspect=e,e)switch(e[0]){case":":switch(t.targetAspect=e.substring(1),t.targetAspect){case"innerHTML":default:t.aspectType=it.property;break;case"classList":t.aspectType=it.tokenList}break;case"?":t.targetAspect=e.substring(1),t.aspectType=it.booleanAttribute;break;case"@":t.targetAspect=e.substring(1),t.aspectType=it.event;break;default:"class"===e?(t.targetAspect="className",t.aspectType=it.property):(t.targetAspect=e,t.aspectType=it.attribute)}}});class nt{constructor(t){this.options=t}createBehavior(t){return this}createHTML(t){return Y.attribute(t(this))}}const rt=globalThis.TrustedHTML?t=>(e,s)=>{const i=t(e,s);if(i instanceof TrustedHTML)return i;throw c.error(1202)}:t=>t,ot=Object.freeze({define:(t,e=ft)=>Object.freeze({1:e=>new t(e,Q.setAttribute),2:e=>new t(e,Q.setBooleanAttribute),3:e=>new t(e,((t,e,s)=>t[e]=s)),4:e=>{return new(s=t,class extends s{unbind(t,e,s){super.unbind(t,e,s);const i=s[this.directive.nodeId].$fastView;void 0!==i&&i.isComposed&&(i.unbind(),i.needsBindOnly=!0)}})(e,ct);var s},5:e=>new t(e,at),6:t=>new e(t)})}),lt=Object.freeze({define(t,e){const s=t=>({mode:s.mode,options:Object.assign({},e,t)});return s.options=e,s.mode=t,s}});class ht{constructor(t,e){this.directive=t,this.updateTarget=e}bind(t,e,s){}unbind(t,e,s){}createBehavior(t){return this}}function ct(t,e,s,i,n){if(null==s&&(s=""),s.create){t.textContent="";let e=t.$fastView;void 0===e?e=s.create():t.$fastTemplate!==s&&(e.isComposed&&(e.remove(),e.unbind()),e=s.create()),e.isComposed?e.needsBindOnly&&(e.needsBindOnly=!1,e.bind(i,n)):(e.isComposed=!0,e.bind(i,n),e.insertBefore(t),t.$fastView=e,t.$fastTemplate=s)}else{const e=t.$fastView;void 0!==e&&e.isComposed&&(e.isComposed=!1,e.remove(),e.needsBindOnly?e.needsBindOnly=!1:e.unbind()),t.textContent=s}}function at(t,e,s){var i;const n=`${this.directive.id}-t`,r=null!==(i=t[n])&&void 0!==i?i:t[n]={c:0,v:Object.create(null)},o=r.v;let l=r.c;const h=t[e];if(null!=s&&s.length){const t=s.split(/\s+/);for(let e=0,s=t.length;e<s;++e){const s=t[e];""!==s&&(o[s]=l,h.add(s))}}if(r.v=l+1,0!==l){l-=1;for(const t in o)o[t]===l&&h.remove(t)}}class dt extends ht{bind(t,e,s){const i=this.directive;this.updateTarget(s[i.nodeId],i.targetAspect,i.binding(t,e),t,e)}}class ut extends ht{constructor(t,e){super(t,e),this.isBindingVolatile=v.isVolatileBinding(t.binding),this.observerProperty=`${t.id}-o`}getObserver(t){var e;return null!==(e=t[this.observerProperty])&&void 0!==e?e:t[this.observerProperty]=v.binding(this.directive.binding,this,this.isBindingVolatile)}bind(t,e,s){const i=this.directive,n=s[i.nodeId],r=this.getObserver(n);r.target=n,r.source=t,r.context=e,this.updateTarget(n,i.targetAspect,r.observe(t,e),t,e)}unbind(t,e,s){const i=s[this.directive.nodeId],n=this.getObserver(i);n.dispose(),n.target=null,n.source=null,n.context=null}handleChange(t,e){const s=e.target,i=e.source,n=e.context;this.updateTarget(s,this.directive.targetAspect,e.observe(i,n),i,n)}}class ft{constructor(t){this.directive=t,this.sourceProperty=`${t.id}-s`,this.contextProperty=`${t.id}-c`}bind(t,e,s){const i=this.directive,n=s[i.nodeId];n[this.sourceProperty]=t,n[this.contextProperty]=e,n.addEventListener(i.targetAspect,this,i.options)}unbind(t,e,s){const i=this.directive,n=s[i.nodeId];n[this.sourceProperty]=n[this.contextProperty]=null,n.removeEventListener(i.targetAspect,this,i.options)}createBehavior(t){return this}handleEvent(t){const e=t.currentTarget;C.setEvent(t);const s=this.directive.binding(e[this.sourceProperty],e[this.contextProperty]);C.setEvent(null),!0!==s&&t.preventDefault()}}const pt=lt.define(ot.define(ut),{}),bt=lt.define(ot.define(dt),{once:!0});class gt{constructor(t,e,s){this.binding=t,this.mode=e,this.options=s,this.factory=null,this.aspectType=it.content}createHTML(t){return Y.interpolation(t(this))}createBehavior(t){return null==this.factory&&("innerHTML"===this.targetAspect&&(this.binding=rt(this.binding)),this.factory=this.mode[this.aspectType](this)),this.factory.createBehavior(t)}}function vt(t,e=pt){return"mode"in e||(e=pt(e)),new gt(t,e.mode,e.options)}function yt(t,e){const s=t.parentNode;let i,n=t;for(;n!==e;)i=n.nextSibling,s.removeChild(n),n=i;s.removeChild(e)}et.define(gt,{aspected:!0});class mt{constructor(t,e,s){this.fragment=t,this.factories=e,this.targets=s,this.behaviors=null,this.source=null,this.context=null,this.firstChild=t.firstChild,this.lastChild=t.lastChild}appendTo(t){t.appendChild(this.fragment)}insertBefore(t){if(this.fragment.hasChildNodes())t.parentNode.insertBefore(this.fragment,t);else{const e=t.parentNode,s=this.lastChild;let i,n=this.firstChild;for(;n!==s;)i=n.nextSibling,e.insertBefore(n,t),n=i;e.insertBefore(s,t)}}remove(){const t=this.fragment,e=this.lastChild;let s,i=this.firstChild;for(;i!==e;)s=i.nextSibling,t.appendChild(i),i=s;t.appendChild(e)}dispose(){yt(this.firstChild,this.lastChild),this.unbind()}bind(t,e){let s=this.behaviors;const i=this.source;if(i===t)return;this.source=t,this.context=e;const n=this.targets;if(null!==i)for(let r=0,o=s.length;r<o;++r){const o=s[r];o.unbind(i,e,n),o.bind(t,e,n)}else if(null===s){this.behaviors=s=new Array(this.factories.length);const i=this.factories;for(let r=0,o=i.length;r<o;++r){const o=i[r].createBehavior(n);o.bind(t,e,n),s[r]=o}}else for(let i=0,r=s.length;i<r;++i)s[i].bind(t,e,n)}unbind(){const t=this.source;if(null===t)return;const e=this.targets,s=this.context,i=this.behaviors;for(let n=0,r=i.length;n<r;++n)i[n].unbind(t,s,e);this.source=null,this.context=null}static disposeContiguousBatch(t){if(0!==t.length){yt(t[0].firstChild,t[t.length-1].lastChild);for(let e=0,s=t.length;e<s;++e)t[e].unbind()}}}const wt=(t,e)=>`${t}.${e}`,Ct={},Tt={index:0,node:null};class St{constructor(t,e){this.fragment=t,this.directives=e,this.proto=null,this.nodeIds=new Set,this.descriptors={},this.factories=[]}addFactory(t,e,s,i){this.nodeIds.has(s)||(this.nodeIds.add(s),this.addTargetDescriptor(e,s,i)),t.nodeId=s,this.factories.push(t)}freeze(){return this.proto=Object.create(null,this.descriptors),this}addTargetDescriptor(t,e,s){const i=this.descriptors;if("r"===e||"h"===e||i[e])return;if(!i[t]){const e=t.lastIndexOf("."),s=t.substring(0,e),i=parseInt(t.substring(e+1));this.addTargetDescriptor(s,t,i)}let n=Ct[e];if(!n){const i=`_${e}`;Ct[e]=n={get(){var e;return null!==(e=this[i])&&void 0!==e?e:this[i]=this[t].childNodes[s]}}}i[e]=n}createView(t){const e=this.fragment.cloneNode(!0),s=Object.create(this.proto);s.r=e,s.h=null!=t?t:e;for(const t of this.nodeIds)s[t];return new mt(e,this.factories,s)}}function xt(t,e,s,i,n,r=!1){const o=s.attributes,l=t.directives;for(let h=0,c=o.length;h<c;++h){const a=o[h],d=a.value,u=Z.parse(d,l);let f=null;null===u?r&&(f=vt((()=>d),bt),it.assign(f,a.name)):f=$t.aggregate(u),null!==f&&(s.removeAttributeNode(a),h--,c--,t.addFactory(f,e,i,n))}}function Ot(t,e,s){let i=0,n=e.firstChild;for(;n;){const e=At(t,s,n,i);n=e.node,i=e.index}}function At(t,e,s,i){const n=wt(e,i);switch(s.nodeType){case 1:xt(t,e,s,n,i),Ot(t,s,n);break;case 3:return function(t,e,s,i,n){const r=Z.parse(e.textContent,t.directives);if(null===r)return Tt.node=e.nextSibling,Tt.index=n+1,Tt;let o,l=o=e;for(let e=0,h=r.length;e<h;++e){const h=r[e];0!==e&&(n++,i=wt(s,n),o=l.parentNode.insertBefore(document.createTextNode(""),l.nextSibling)),f(h)?o.textContent=h:(o.textContent=" ",t.addFactory(h,s,i,n)),l=o}return Tt.index=n+1,Tt.node=l.nextSibling,Tt}(t,s,e,n,i);case 8:const r=Z.parse(s.data,t.directives);null!==r&&t.addFactory($t.aggregate(r),e,n,i)}return Tt.index=i+1,Tt.node=s.nextSibling,Tt}const Bt={createHTML:t=>t};let jt=globalThis.trustedTypes?globalThis.trustedTypes.createPolicy("fast-html",Bt):Bt;const It=jt,$t={setHTMLPolicy(t){if(jt!==It)throw c.error(1201);jt=t},compile(t,e){let s;if(f(t)){s=document.createElement("TEMPLATE"),s.innerHTML=jt.createHTML(t);const e=s.content.firstElementChild;null!==e&&"TEMPLATE"===e.tagName&&(s=e)}else s=t;const i=document.adoptNode(s.content),n=new St(i,e);return xt(n,"",s,"h",0,!0),(function(t,e){return t&&8==t.nodeType&&null!==Z.parse(t.data,e)}(i.firstChild,e)||1===i.childNodes.length&&Object.keys(e).length>0)&&i.insertBefore(document.createComment(""),i.firstChild),Ot(n,i,"r"),Tt.node=null,n.freeze()},setDefaultStrategy(t){this.compile=t},aggregate(t){if(1===t.length)return t[0];let e;const s=t.length,i=t.map((t=>f(t)?()=>t:(e=t.sourceAspect||e,t.binding))),n=vt(((t,e)=>{let n="";for(let r=0;r<s;++r)n+=i[r](t,e);return n}));return it.assign(n,e),n}};class Vt{constructor(t,e){this.result=null,this.html=t,this.factories=e}create(t){return null===this.result&&(this.result=$t.compile(this.html,this.factories)),this.result.createView(t)}render(t,e,s,i){const n=this.create(null!=s?s:e);return n.bind(t,null!=i?i:C.default),n.appendTo(e),n}}const kt=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function Pt(t,e,s){const i=kt.exec(e);return null!==i&&it.assign(t,i[2]),t.createHTML(s)}function Nt(t,...e){let s="";const i=Object.create(null),n=t=>{var e;const s=null!==(e=t.id)&&void 0!==e?e:t.id=X();return i[s]=t,s};for(let i=0,r=t.length-1;i<r;++i){const r=t[i],o=e[i];let l;if(s+=r,u(o))s+=Pt(vt(o),r,n);else if(f(o)){const t=kt.exec(r);if(null!==t){const e=vt((()=>o),bt);it.assign(e,t[2]),s+=e.createHTML(n)}else s+=o}else void 0===(l=et.getForInstance(o))?s+=Pt(vt((()=>o),bt),r,n):l.aspected?s+=Pt(o,r,n):s+=o.createHTML(n)}return new Vt(s+t[t.length-1],i)}class Ft extends nt{bind(t,e,s){t[this.options]=s[this.nodeId]}unbind(){}}et.define(Ft);const _t=t=>new Ft(t);function Et(t,e){const s=u(e)?e:()=>e;return(e,i)=>t(e,i)?s(e,i):null}const Mt=Object.freeze({positioning:!1,recycle:!0});function Lt(t,e,s,i){t.bind(e[s],i)}function zt(t,e,s,i){t.bind(e[s],i.createItemContext(s,e.length))}class Rt{constructor(t,e,s,i,n,r){this.location=t,this.itemsBinding=e,this.templateBinding=i,this.options=r,this.source=null,this.views=[],this.items=null,this.itemsObserver=null,this.context=void 0,this.childContext=void 0,this.bindView=Lt,this.itemsBindingObserver=v.binding(e,this,s),this.templateBindingObserver=v.binding(i,this,n),r.positioning&&(this.bindView=zt)}bind(t,e){this.source=t,this.context=e,this.childContext=e.createChildContext(t),this.items=this.itemsBindingObserver.observe(t,this.context),this.template=this.templateBindingObserver.observe(t,this.context),this.observeItems(!0),this.refreshAllViews()}unbind(){this.source=null,this.items=null,null!==this.itemsObserver&&this.itemsObserver.unsubscribe(this),this.unbindAllViews(),this.itemsBindingObserver.dispose(),this.templateBindingObserver.dispose()}handleChange(t,e){t===this.itemsBinding?(this.items=this.itemsBindingObserver.observe(this.source,this.context),this.observeItems(),this.refreshAllViews()):t===this.templateBinding?(this.template=this.templateBindingObserver.observe(this.source,this.context),this.refreshAllViews(!0)):e[0].reset?this.refreshAllViews():this.updateViews(e)}observeItems(t=!1){if(!this.items)return void(this.items=a);const e=this.itemsObserver,s=this.itemsObserver=v.getNotifier(this.items),i=e!==s;i&&null!==e&&e.unsubscribe(this),(i||t)&&s.subscribe(this)}updateViews(t){const e=this.views,s=this.childContext,i=[],n=this.bindView;let r=0;for(let s=0,n=t.length;s<n;++s){const n=t[s],o=n.removed;i.push(...e.splice(n.index+r,o.length)),r-=n.addedCount}const o=this.items,l=this.template;for(let r=0,h=t.length;r<h;++r){const h=t[r];let c=h.index;const a=c+h.addedCount;for(;c<a;++c){const t=e[c],r=t?t.firstChild:this.location,h=this.options.recycle&&i.length>0?i.shift():l.create();e.splice(c,0,h),n(h,o,c,s),h.insertBefore(r)}}for(let t=0,e=i.length;t<e;++t)i[t].dispose();if(this.options.positioning)for(let t=0,s=e.length;t<s;++t)e[t].context.updatePosition(t,s)}refreshAllViews(t=!1){const e=this.items,s=this.template,i=this.location,n=this.bindView,r=this.childContext;let o=e.length,l=this.views,h=l.length;if(0!==o&&!t&&this.options.recycle||(mt.disposeContiguousBatch(l),h=0),0===h){this.views=l=new Array(o);for(let t=0;t<o;++t){const o=s.create();n(o,e,t,r),l[t]=o,o.insertBefore(i)}}else{let t=0;for(;t<o;++t)if(t<h){n(l[t],e,t,r)}else{const o=s.create();n(o,e,t,r),l.push(o),o.insertBefore(i)}const c=l.splice(t,h-t);for(t=0,o=c.length;t<o;++t)c[t].dispose()}}unbindAllViews(){const t=this.views;for(let e=0,s=t.length;e<s;++e)t[e].unbind()}}class Ht{constructor(t,e,s){this.itemsBinding=t,this.templateBinding=e,this.options=s,V.enable(),this.isItemsBindingVolatile=v.isVolatileBinding(t),this.isTemplateBindingVolatile=v.isVolatileBinding(e)}createHTML(t){return Y.comment(t(this))}createBehavior(t){return new Rt(t[this.nodeId],this.itemsBinding,this.isItemsBindingVolatile,this.templateBinding,this.isTemplateBindingVolatile,this.options)}}function qt(t,e,s=Mt){const i=u(e)?e:()=>e;return new Ht(t,i,s)}et.define(Ht);const Dt=t=>1===t.nodeType,Qt=t=>t?e=>1===e.nodeType&&e.matches(t):Dt;class Ut extends nt{constructor(){super(...arguments),this.sourceProperty=`${this.id}-s`}bind(t,e,s){const i=s[this.nodeId];i[this.sourceProperty]=t,this.updateTarget(t,this.computeNodes(i)),this.observe(i)}unbind(t,e,s){const i=s[this.nodeId];this.updateTarget(t,a),this.disconnect(i),i[this.sourceProperty]=null}getSource(t){return t[this.sourceProperty]}updateTarget(t,e){t[this.options.property]=e}computeNodes(t){let e=this.getNodes(t);return"filter"in this.options&&(e=e.filter(this.options.filter)),e}}class Wt extends Ut{observe(t){t.addEventListener("slotchange",this)}disconnect(t){t.removeEventListener("slotchange",this)}getNodes(t){return t.assignedNodes(this.options)}handleEvent(t){const e=t.currentTarget;this.updateTarget(this.getSource(e),this.computeNodes(e))}}function Gt(t){return f(t)&&(t={property:t}),new Wt(t)}et.define(Wt);class Jt extends Ut{constructor(t){super(t),this.observerProperty=`${this.id}-o`,this.handleEvent=(t,e)=>{const s=e.target;this.updateTarget(this.getSource(s),this.computeNodes(s))},t.childList=!0}observe(t){var e;const s=null!==(e=t[this.observerProperty])&&void 0!==e?e:t[this.observerProperty]=new MutationObserver(this.handleEvent);s.target=t,s.observe(t,this.options)}disconnect(t){const e=t[this.observerProperty];e.target=null,e.disconnect()}getNodes(t){return"selector"in this.options?Array.from(t.querySelectorAll(this.options.selector)):Array.from(t.childNodes)}}function Kt(t){return f(t)&&(t={property:t}),new Jt(t)}et.define(Jt);const Xt={toView:t=>t?"true":"false",fromView:t=>null!=t&&"false"!==t&&!1!==t&&0!==t};function Yt(t){if(null==t)return null;const e=1*t;return isNaN(e)?null:e}const Zt={toView(t){const e=Yt(t);return e?e.toString():e},fromView:Yt};class te{constructor(t,e,s=e.toLowerCase(),i="reflect",n){this.guards=new Set,this.Owner=t,this.name=e,this.attribute=s,this.mode=i,this.converter=n,this.fieldName=`_${e}`,this.callbackName=`${e}Changed`,this.hasCallback=this.callbackName in t.prototype,"boolean"===i&&void 0===n&&(this.converter=Xt)}setValue(t,e){const s=t[this.fieldName],i=this.converter;void 0!==i&&(e=i.fromView(e)),s!==e&&(t[this.fieldName]=e,this.tryReflectToAttribute(t),this.hasCallback&&t[this.callbackName](s,e),t.$fastController.notify(this.name))}getValue(t){return v.track(t,this.name),t[this.fieldName]}onAttributeChangedCallback(t,e){this.guards.has(t)||(this.guards.add(t),this.setValue(t,e),this.guards.delete(t))}tryReflectToAttribute(t){const e=this.mode,s=this.guards;s.has(t)||"fromView"===e||p.enqueue((()=>{s.add(t);const i=t[this.fieldName];switch(e){case"reflect":const e=this.converter;Q.setAttribute(t,this.attribute,void 0!==e?e.toView(i):i);break;case"boolean":Q.setBooleanAttribute(t,this.attribute,i)}s.delete(t)}))}static collect(t,...e){const s=[];e.push(t.attributes);for(let i=0,n=e.length;i<n;++i){const n=e[i];if(void 0!==n)for(let e=0,i=n.length;e<i;++e){const i=n[e];f(i)?s.push(new te(t,i)):s.push(new te(t,i.property,i.attribute,i.mode,i.converter))}}return s}}function ee(t,e){let s;function i(t,e){arguments.length>1&&(s.property=e);const i=t.constructor.attributes||(t.constructor.attributes=[]);i.push(s)}return arguments.length>1?(s={},void i(t,e)):(s=void 0===t?{}:t,i)}const se={mode:"open"},ie={},ne=c.getById(4,(()=>d()));class re{constructor(t,e=t.definition){f(e)&&(e={name:e}),this.type=t,this.name=e.name,this.template=e.template;const s=te.collect(t,e.attributes),i=new Array(s.length),n={},r={};for(let t=0,e=s.length;t<e;++t){const e=s[t];i[t]=e.attribute,n[e.name]=e,r[e.attribute]=e}this.attributes=s,this.observedAttributes=i,this.propertyLookup=n,this.attributeLookup=r,this.shadowOptions=void 0===e.shadowOptions?se:null===e.shadowOptions?void 0:Object.assign(Object.assign({},se),e.shadowOptions),this.elementOptions=void 0===e.elementOptions?ie:Object.assign(Object.assign({},ie),e.elementOptions),this.styles=void 0===e.styles?void 0:Array.isArray(e.styles)?new _(e.styles):e.styles instanceof _?e.styles:new _([e.styles])}get isDefined(){return!!ne.getByType(this.type)}define(t=customElements){const e=this.type;if(ne.register(this)){const t=this.attributes,s=e.prototype;for(let e=0,i=t.length;e<i;++e)v.defineProperty(s,t[e]);Reflect.defineProperty(e,"observedAttributes",{value:this.observedAttributes,enumerable:!0})}return t.get(this.name)||t.define(this.name,e,this.elementOptions),this}}re.getByType=ne.getByType,re.getForInstance=ne.getForInstance;const oe=new WeakMap,le={bubbles:!0,composed:!0,cancelable:!0};function he(t){var e,s;return null!==(s=null!==(e=t.shadowRoot)&&void 0!==e?e:oe.get(t))&&void 0!==s?s:null}class ce extends g{constructor(t,e){super(t),this.boundObservables=null,this.behaviors=null,this.needsInitialization=!0,this.hasExistingShadowRoot=!1,this._template=null,this._styles=null,this._isConnected=!1,this.$fastController=this,this.view=null,this.element=t,this.definition=e;const s=e.shadowOptions;if(void 0!==s){let e=t.shadowRoot;e?this.hasExistingShadowRoot=!0:(e=t.attachShadow(s),"closed"===s.mode&&oe.set(t,e))}const i=v.getAccessors(t);if(i.length>0){const e=this.boundObservables=Object.create(null);for(let s=0,n=i.length;s<n;++s){const n=i[s].name,r=t[n];void 0!==r&&(delete t[n],e[n]=r)}}}get isConnected(){return v.track(this,"isConnected"),this._isConnected}setIsConnected(t){this._isConnected=t,v.notify(this,"isConnected")}get template(){var t;if(null===this._template){const e=this.definition;this.element.resolveTemplate?this._template=this.element.resolveTemplate():e.template&&(this._template=null!==(t=e.template)&&void 0!==t?t:null)}return this._template}set template(t){this._template!==t&&(this._template=t,this.needsInitialization||this.renderTemplate(t))}get styles(){var t;if(null===this._styles){const e=this.definition;this.element.resolveStyles?this._styles=this.element.resolveStyles():e.styles&&(this._styles=null!==(t=e.styles)&&void 0!==t?t:null)}return this._styles}set styles(t){this._styles!==t&&(null!==this._styles&&this.removeStyles(this._styles),this._styles=t,this.needsInitialization||this.addStyles(t))}addStyles(t){if(!t)return;const e=he(this.element)||this.element.getRootNode();if(t instanceof HTMLElement)e.append(t);else if(!t.isAttachedTo(e)){const s=t.behaviors;t.addStylesTo(e),null!==s&&this.addBehaviors(s)}}removeStyles(t){if(!t)return;const e=he(this.element)||this.element.getRootNode();if(t instanceof HTMLElement)e.removeChild(t);else if(t.isAttachedTo(e)){const s=t.behaviors;t.removeStylesFrom(e),null!==s&&this.removeBehaviors(s)}}addBehaviors(t){var e;const s=null!==(e=this.behaviors)&&void 0!==e?e:this.behaviors=new Map,i=t.length,n=[];for(let e=0;e<i;++e){const i=t[e];s.has(i)?s.set(i,s.get(i)+1):(s.set(i,1),n.push(i))}if(this._isConnected){const t=this.element,e=C.default;for(let s=0;s<n.length;++s)n[s].bind(t,e)}}removeBehaviors(t,e=!1){const s=this.behaviors;if(null===s)return;const i=t.length,n=[];for(let r=0;r<i;++r){const i=t[r];if(s.has(i)){const t=s.get(i)-1;0===t||e?s.delete(i)&&n.push(i):s.set(i,t)}}if(this._isConnected){const t=this.element,e=C.default;for(let s=0;s<n.length;++s)n[s].unbind(t,e)}}onConnectedCallback(){if(this._isConnected)return;const t=this.element,e=C.default;this.needsInitialization?this.finishInitialization():null!==this.view&&this.view.bind(t,e);const s=this.behaviors;if(null!==s)for(const i of s.keys())i.bind(t,e);this.setIsConnected(!0)}onDisconnectedCallback(){if(!this._isConnected)return;this.setIsConnected(!1);const t=this.view;null!==t&&t.unbind();const e=this.behaviors;if(null!==e){const t=this.element,s=C.default;for(const i of e.keys())i.unbind(t,s)}}onAttributeChangedCallback(t,e,s){const i=this.definition.attributeLookup[t];void 0!==i&&i.onAttributeChangedCallback(this.element,s)}emit(t,e,s){return!!this._isConnected&&this.element.dispatchEvent(new CustomEvent(t,Object.assign(Object.assign({detail:e},le),s)))}finishInitialization(){const t=this.element,e=this.boundObservables;if(null!==e){const s=Object.keys(e);for(let i=0,n=s.length;i<n;++i){const n=s[i];t[n]=e[n]}this.boundObservables=null}this.renderTemplate(this.template),this.addStyles(this.styles),this.needsInitialization=!1}renderTemplate(t){var e;const s=this.element,i=null!==(e=he(s))&&void 0!==e?e:s;if(null!==this.view)this.view.dispose(),this.view=null;else if(!this.needsInitialization||this.hasExistingShadowRoot){this.hasExistingShadowRoot=!1;for(let t=i.firstChild;null!==t;t=i.firstChild)i.removeChild(t)}t&&(this.view=t.render(s,i,s))}static forCustomElement(t){const e=t.$fastController;if(void 0!==e)return e;const s=re.getForInstance(t);if(void 0===s)throw c.error(1401);return t.$fastController=new ce(t,s)}}function ae(t){return class extends t{constructor(){super(),ce.forCustomElement(this)}$emit(t,e,s){return this.$fastController.emit(t,e,s)}connectedCallback(){this.$fastController.onConnectedCallback()}disconnectedCallback(){this.$fastController.onDisconnectedCallback()}attributeChangedCallback(t,e,s){this.$fastController.onAttributeChangedCallback(t,e,s)}}}const de=Object.assign(ae(HTMLElement),{from:t=>ae(t),define(t,e){return this.metadata(t,e).define().type},metadata:(t,e)=>new re(t,e)});function ue(t){return function(e){de.define(e,t)}}export{E as AdoptedStyleSheetsStrategy,V as ArrayObserver,it as Aspect,te as AttributeDefinition,lt as BindingConfig,ot as BindingMode,L as CSSDirective,ut as ChangeBinding,Jt as ChildrenDirective,$t as Compiler,ce as Controller,Q as DOM,_ as ElementStyles,ft as EventBinding,C as ExecutionContext,c as FAST,de as FASTElement,re as FASTElementDefinition,gt as HTMLBindingDirective,et as HTMLDirective,mt as HTMLView,Y as Markup,Ut as NodeObservationDirective,v as Observable,dt as OneTimeBinding,Z as Parser,g as PropertyChangeNotifier,Ft as RefDirective,Rt as RepeatBehavior,Ht as RepeatDirective,Wt as SlottedDirective,T as Splice,B as SpliceStrategy,S as SpliceStrategySupport,nt as StatelessAttachedAttributeDirective,b as SubscriberSet,ht as UpdateBinding,p as Updates,Vt as ViewTemplate,ee as attr,vt as bind,Xt as booleanConverter,Kt as children,d as createTypeRegistry,H as css,z as cssDirective,D as cssPartial,ue as customElement,Qt as elements,a as emptyArray,Nt as html,st as htmlDirective,k as lengthOf,Zt as nullableNumberConverter,y as observable,pt as onChange,bt as oneTime,_t as ref,qt as repeat,Gt as slotted,m as volatile,Et as when};
|