@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.
Files changed (37) hide show
  1. package/CHANGELOG.json +51 -0
  2. package/CHANGELOG.md +15 -1
  3. package/dist/dts/components/fast-definitions.d.ts +2 -0
  4. package/dist/dts/components/fast-element.d.ts +7 -1
  5. package/dist/dts/context.d.ts +157 -0
  6. package/dist/dts/metadata.d.ts +25 -0
  7. package/dist/dts/observation/arrays.d.ts +1 -1
  8. package/dist/dts/observation/behavior.d.ts +4 -4
  9. package/dist/dts/observation/observable.d.ts +43 -62
  10. package/dist/dts/templating/binding-signal.d.ts +38 -0
  11. package/dist/dts/templating/binding-two-way.d.ts +56 -0
  12. package/dist/dts/templating/binding.d.ts +0 -88
  13. package/dist/dts/templating/compiler.d.ts +1 -2
  14. package/dist/dts/templating/repeat.d.ts +3 -49
  15. package/dist/dts/templating/template.d.ts +10 -59
  16. package/dist/dts/templating/view.d.ts +9 -9
  17. package/dist/{tsdoc-metadata.json → dts/tsdoc-metadata.json} +0 -0
  18. package/dist/esm/components/fast-definitions.js +2 -0
  19. package/dist/esm/components/fast-element.js +10 -2
  20. package/dist/esm/context.js +159 -0
  21. package/dist/esm/metadata.js +60 -0
  22. package/dist/esm/observation/arrays.js +1 -1
  23. package/dist/esm/observation/observable.js +69 -17
  24. package/dist/esm/templating/binding-signal.js +84 -0
  25. package/dist/esm/templating/binding-two-way.js +76 -0
  26. package/dist/esm/templating/binding.js +1 -158
  27. package/dist/esm/templating/repeat.js +9 -1
  28. package/dist/esm/templating/template.js +1 -21
  29. package/dist/fast-element.api.json +5586 -7541
  30. package/dist/fast-element.d.ts +119 -329
  31. package/dist/fast-element.debug.js +92 -199
  32. package/dist/fast-element.debug.min.js +1 -1
  33. package/dist/fast-element.js +92 -199
  34. package/dist/fast-element.min.js +1 -1
  35. package/dist/fast-element.untrimmed.d.ts +120 -331
  36. package/docs/api-report.md +50 -156
  37. package/package.json +20 -4
@@ -687,75 +687,127 @@ const contextEvent = FAST.getById(3 /* KernelServiceId.contextEvent */, () => {
687
687
  },
688
688
  };
689
689
  });
690
- class DefaultExecutionContext {
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 DefaultExecutionContext(parentSource, this);
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 DefaultExecutionContext();
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 length(array) {
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 new FASTElementDefinition(type, nameOrDef).define().type;
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
- new FASTElementDefinition(type, nameOrDef).define();
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, SignalBinding, SlottedDirective, Splice, SpliceStrategy, SpliceStrategySupport, StatelessAttachedAttributeDirective, SubscriberSet, TwoWayBinding, UpdateBinding, Updates, ViewTemplate, attr, bind, booleanConverter, child, children, createTypeRegistry, css, cssDirective, cssPartial, customElement, elements, emptyArray, html, htmlDirective, item, length, nullableNumberConverter, observable, onChange, oneTime, ref, repeat, signal, slotted, twoWay, volatile, when };
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&&gt.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};