@microsoft/fast-element
Advanced tools
Comparing version 0.21.1 to 0.22.0
@@ -6,2 +6,19 @@ # Change Log | ||
# [0.22.0](https://github.com/Microsoft/fast/compare/@microsoft/fast-element@0.21.1...@microsoft/fast-element@0.22.0) (2021-01-30) | ||
### Bug Fixes | ||
* increase sophistication of behavior binding and unbinding ([#4288](https://github.com/Microsoft/fast/issues/4288)) ([9c24ee6](https://github.com/Microsoft/fast/commit/9c24ee6f865673cfa8f32ae5141f139484d79f73)) | ||
* **repeat:** observe arrays after unbound then rebound ([#4211](https://github.com/Microsoft/fast/issues/4211)) ([cec8e69](https://github.com/Microsoft/fast/commit/cec8e69d3b72b672605bf3f77a702ca0d6ba1a5b)) | ||
### Features | ||
* add support for attachment test to ElementStyles ([#4289](https://github.com/Microsoft/fast/issues/4289)) ([df6f765](https://github.com/Microsoft/fast/commit/df6f7652083ea71e3419976281ee393744606018)) | ||
## [0.21.1](https://github.com/Microsoft/fast/compare/@microsoft/fast-element@0.21.0...@microsoft/fast-element@0.21.1) (2020-12-16) | ||
@@ -8,0 +25,0 @@ |
@@ -77,4 +77,5 @@ import { FASTElementDefinition } from "./fast-definitions"; | ||
* @param behaviors - The behaviors to remove. | ||
* @param force - Forces unbinding of behaviors. | ||
*/ | ||
removeBehaviors(behaviors: ReadonlyArray<Behavior>): void; | ||
removeBehaviors(behaviors: ReadonlyArray<Behavior>, force?: boolean): void; | ||
/** | ||
@@ -81,0 +82,0 @@ * Runs connected lifecycle behavior on the associated element. |
@@ -100,2 +100,2 @@ import { CaptureType, SyntheticViewTemplate } from "../template"; | ||
*/ | ||
export declare function repeat<TSource = any, TItem = any>(itemsBinding: Binding<TSource, TItem[]>, templateOrTemplateBinding: SyntheticViewTemplate | Binding<TSource, SyntheticViewTemplate>, options?: RepeatOptions): CaptureType<TSource>; | ||
export declare function repeat<TSource = any, TItem = any>(itemsBinding: Binding<TSource, readonly TItem[]>, templateOrTemplateBinding: SyntheticViewTemplate | Binding<TSource, SyntheticViewTemplate>, options?: RepeatOptions): CaptureType<TSource>; |
@@ -42,2 +42,3 @@ import { Behavior } from "./directives/behavior"; | ||
export declare abstract class ElementStyles { | ||
private targets; | ||
/** @internal */ | ||
@@ -48,5 +49,7 @@ abstract readonly styles: ReadonlyArray<ComposableStyles>; | ||
/** @internal */ | ||
abstract addStylesTo(target: StyleTarget): void; | ||
addStylesTo(target: StyleTarget): void; | ||
/** @internal */ | ||
abstract removeStylesFrom(target: StyleTarget): void; | ||
removeStylesFrom(target: StyleTarget): void; | ||
/** @internal */ | ||
isAttachedTo(target: StyleTarget): boolean; | ||
/** | ||
@@ -97,2 +100,4 @@ * Associates behaviors with this set of styles. | ||
removeStylesFrom(target: StyleTarget): void; | ||
isAttachedTo(target: StyleTarget): boolean; | ||
private normalizeTarget; | ||
} | ||
@@ -99,0 +104,0 @@ /** |
@@ -122,3 +122,3 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { | ||
} | ||
else { | ||
else if (!styles.isAttachedTo(target)) { | ||
const sourceBehaviors = styles.behaviors; | ||
@@ -141,3 +141,3 @@ styles.addStylesTo(target); | ||
} | ||
else { | ||
else if (styles.isAttachedTo(target)) { | ||
const sourceBehaviors = styles.behaviors; | ||
@@ -155,11 +155,19 @@ styles.removeStylesFrom(target); | ||
addBehaviors(behaviors) { | ||
const targetBehaviors = this.behaviors || (this.behaviors = []); | ||
const targetBehaviors = this.behaviors || (this.behaviors = new Map()); | ||
const length = behaviors.length; | ||
const behaviorsToBind = []; | ||
for (let i = 0; i < length; ++i) { | ||
targetBehaviors.push(behaviors[i]); | ||
const behavior = behaviors[i]; | ||
if (targetBehaviors.has(behavior)) { | ||
targetBehaviors.set(behavior, targetBehaviors.get(behavior) + 1); | ||
} | ||
else { | ||
targetBehaviors.set(behavior, 1); | ||
behaviorsToBind.push(behavior); | ||
} | ||
} | ||
if (this.isConnected) { | ||
const element = this.element; | ||
for (let i = 0; i < length; ++i) { | ||
behaviors[i].bind(element, defaultExecutionContext); | ||
for (let i = 0; i < behaviorsToBind.length; ++i) { | ||
behaviorsToBind[i].bind(element, defaultExecutionContext); | ||
} | ||
@@ -171,4 +179,5 @@ } | ||
* @param behaviors - The behaviors to remove. | ||
* @param force - Forces unbinding of behaviors. | ||
*/ | ||
removeBehaviors(behaviors) { | ||
removeBehaviors(behaviors, force = false) { | ||
const targetBehaviors = this.behaviors; | ||
@@ -179,6 +188,10 @@ if (targetBehaviors === null) { | ||
const length = behaviors.length; | ||
const behaviorsToUnbind = []; | ||
for (let i = 0; i < length; ++i) { | ||
const index = targetBehaviors.indexOf(behaviors[i]); | ||
if (index !== -1) { | ||
targetBehaviors.splice(index, 1); | ||
const behavior = behaviors[i]; | ||
if (targetBehaviors.has(behavior)) { | ||
const count = targetBehaviors.get(behavior) - 1; | ||
count === 0 || force | ||
? targetBehaviors.delete(behavior) && behaviorsToUnbind.push(behavior) | ||
: targetBehaviors.set(behavior, count); | ||
} | ||
@@ -188,4 +201,4 @@ } | ||
const element = this.element; | ||
for (let i = 0; i < length; ++i) { | ||
behaviors[i].unbind(element); | ||
for (let i = 0; i < behaviorsToUnbind.length; ++i) { | ||
behaviorsToUnbind[i].unbind(element); | ||
} | ||
@@ -210,4 +223,4 @@ } | ||
if (behaviors !== null) { | ||
for (let i = 0, ii = behaviors.length; i < ii; ++i) { | ||
behaviors[i].bind(element, defaultExecutionContext); | ||
for (let [behavior] of behaviors) { | ||
behavior.bind(element, defaultExecutionContext); | ||
} | ||
@@ -232,4 +245,4 @@ } | ||
const element = this.element; | ||
for (let i = 0, ii = behaviors.length; i < ii; ++i) { | ||
behaviors[i].unbind(element); | ||
for (let [behavior] of behaviors) { | ||
behavior.unbind(element); | ||
} | ||
@@ -236,0 +249,0 @@ } |
@@ -6,2 +6,3 @@ import { DOM } from "../dom"; | ||
import { Directive } from "./directive"; | ||
import { emptyArray } from "../interfaces"; | ||
const defaultRepeatOptions = Object.freeze({ | ||
@@ -64,3 +65,3 @@ positioning: false, | ||
this.template = this.templateBindingObserver.observe(source, this.originalContext); | ||
this.observeItems(); | ||
this.observeItems(true); | ||
this.refreshAllViews(); | ||
@@ -97,12 +98,14 @@ } | ||
} | ||
observeItems() { | ||
observeItems(force = false) { | ||
if (!this.items) { | ||
this.items = []; | ||
this.items = emptyArray; | ||
return; | ||
} | ||
const oldObserver = this.itemsObserver; | ||
const newObserver = (this.itemsObserver = Observable.getNotifier(this.items)); | ||
if (oldObserver !== newObserver) { | ||
if (oldObserver !== null) { | ||
oldObserver.unsubscribe(this); | ||
} | ||
const hasNewObserver = oldObserver !== newObserver; | ||
if (hasNewObserver && oldObserver !== null) { | ||
oldObserver.unsubscribe(this); | ||
} | ||
if (hasNewObserver || force) { | ||
newObserver.subscribe(this); | ||
@@ -109,0 +112,0 @@ } |
@@ -9,2 +9,3 @@ import { DOM } from "./dom"; | ||
constructor() { | ||
this.targets = new WeakSet(); | ||
/** @internal */ | ||
@@ -14,2 +15,14 @@ this.behaviors = null; | ||
} | ||
/** @internal */ | ||
addStylesTo(target) { | ||
this.targets.add(target); | ||
} | ||
/** @internal */ | ||
removeStylesFrom(target) { | ||
this.targets.delete(target); | ||
} | ||
/** @internal */ | ||
isAttachedTo(target) { | ||
return this.targets.has(target); | ||
} | ||
/** | ||
@@ -96,2 +109,3 @@ * Associates behaviors with this set of styles. | ||
target.adoptedStyleSheets = [...target.adoptedStyleSheets, ...this.styleSheets]; | ||
super.addStylesTo(target); | ||
} | ||
@@ -101,2 +115,3 @@ removeStylesFrom(target) { | ||
target.adoptedStyleSheets = target.adoptedStyleSheets.filter((x) => sourceSheets.indexOf(x) === -1); | ||
super.removeStylesFrom(target); | ||
} | ||
@@ -123,5 +138,3 @@ } | ||
const styleClass = this.styleClass; | ||
if (target === document) { | ||
target = document.body; | ||
} | ||
target = this.normalizeTarget(target); | ||
for (let i = styleSheets.length - 1; i > -1; --i) { | ||
@@ -133,7 +146,6 @@ const element = document.createElement("style"); | ||
} | ||
super.addStylesTo(target); | ||
} | ||
removeStylesFrom(target) { | ||
if (target === document) { | ||
target = document.body; | ||
} | ||
target = this.normalizeTarget(target); | ||
const styles = target.querySelectorAll(`.${this.styleClass}`); | ||
@@ -143,3 +155,10 @@ for (let i = 0, ii = styles.length; i < ii; ++i) { | ||
} | ||
super.removeStylesFrom(target); | ||
} | ||
isAttachedTo(target) { | ||
return super.isAttachedTo(this.normalizeTarget(target)); | ||
} | ||
normalizeTarget(target) { | ||
return target === document ? document.body : target; | ||
} | ||
} | ||
@@ -146,0 +165,0 @@ /** |
@@ -1,2 +0,2 @@ | ||
const t=function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof global)return global;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;try{return new Function("return this")()}catch(t){return{}}}();void 0===t.trustedTypes&&(t.trustedTypes={createPolicy:(t,e)=>e});const e=[],s=t.trustedTypes.createPolicy("fast-html",{createHTML:t=>t});let i=s;function n(){let t=0;for(;t<e.length;){if(e[t].call(),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}const o="fast-"+Math.random().toString(36).substring(2,8),r=o+"{",l="}"+o,h=Object.freeze({supportsAdoptedStyleSheets:Array.isArray(document.adoptedStyleSheets)&&"replace"in CSSStyleSheet.prototype,setHTMLPolicy(t){if(i!==s)throw new Error("The HTML policy can only be set once.");i=t},createHTML:t=>i.createHTML(t),isMarker:t=>t&&8===t.nodeType&&t.data.startsWith(o),extractDirectiveIndexFromMarker:t=>parseInt(t.data.replace(o+":","")),createInterpolationPlaceholder:t=>`${r}${t}${l}`,createCustomAttributePlaceholder(t,e){return`${t}="${this.createInterpolationPlaceholder(e)}"`},createBlockPlaceholder:t=>`\x3c!--${o}:${t}--\x3e`,queueUpdate(t){e.length<1&&window.requestAnimationFrame(n),e.push(t)},nextUpdate:()=>new Promise(t=>{h.queueUpdate(t)}),setAttribute(t,e,s){null==s?t.removeAttribute(e):t.setAttribute(e,s)},setBooleanAttribute(t,e,s){s?t.setAttribute(e,""):t.removeAttribute(e)},removeChildNodes(t){for(let e=t.firstChild;null!==e;e=t.firstChild)t.removeChild(e)},createTemplateWalker:t=>document.createTreeWalker(t,133,null,!1)});function a(t){const e=this.spillover;-1===e.indexOf(t)&&e.push(t)}function c(t){const e=this.spillover,s=e.indexOf(t);-1!==s&&e.splice(s,1)}function d(t){const e=this.spillover,s=this.source;for(let i=0,n=e.length;i<n;++i)e[i].handleChange(s,t)}function u(t){return-1!==this.spillover.indexOf(t)}class f{constructor(t,e){this.sub1=void 0,this.sub2=void 0,this.spillover=void 0,this.source=t,this.sub1=e}has(t){return this.sub1===t||this.sub2===t}subscribe(t){this.has(t)||(void 0!==this.sub1?void 0!==this.sub2?(this.spillover=[this.sub1,this.sub2,t],this.subscribe=a,this.unsubscribe=c,this.notify=d,this.has=u,this.sub1=void 0,this.sub2=void 0):this.sub2=t:this.sub1=t)}unsubscribe(t){this.sub1===t?this.sub1=void 0:this.sub2===t&&(this.sub2=void 0)}notify(t){const e=this.sub1,s=this.sub2,i=this.source;void 0!==e&&e.handleChange(i,t),void 0!==s&&s.handleChange(i,t)}}class p{constructor(t){this.subscribers={},this.source=t}notify(t){const e=this.subscribers[t];void 0!==e&&e.notify(t)}subscribe(t,e){let s=this.subscribers[e];void 0===s&&(this.subscribers[e]=s=new f(this.source)),s.subscribe(t)}unsubscribe(t,e){const s=this.subscribers[e];void 0!==s&&s.unsubscribe(t)}}const g=/(\:|\&\&|\|\||if)/,b=new WeakMap,v=new WeakMap;let m=void 0,y=t=>{throw new Error("Must call enableArrayObservation before observing arrays.")};class C{constructor(t){this.name=t,this.field="_"+t,this.callback=t+"Changed"}getValue(t){return void 0!==m&&m.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];"function"==typeof n&&n.call(t,i,e),w(t).notify(this.name)}}}const x=Object.freeze({setArrayObserverFactory(t){y=t},getNotifier(t){let e=t.$fastController||b.get(t);return void 0===e&&(Array.isArray(t)?e=y(t):b.set(t,e=new p(t))),e},track(t,e){void 0!==m&&m.watch(t,e)},trackVolatile(){void 0!==m&&(m.needsRefresh=!0)},notify(t,e){w(t).notify(e)},defineProperty(t,e){"string"==typeof e&&(e=new C(e)),this.getAccessors(t).push(e),Reflect.defineProperty(t,e.name,{enumerable:!0,get:function(){return e.getValue(this)},set:function(t){e.setValue(this,t)}})},getAccessors(t){let e=v.get(t);if(void 0===e){let s=Reflect.getPrototypeOf(t);for(;void 0===e&&null!==s;)e=v.get(s),s=Reflect.getPrototypeOf(s);e=void 0===e?[]:e.slice(0),v.set(t,e)}return e},binding(t,e,s=this.isVolatileBinding(t)){return new F(t,e,s)},isVolatileBinding:t=>g.test(t.toString())}),w=x.getNotifier,B=x.trackVolatile,O=h.queueUpdate;function S(t,e){x.defineProperty(t,e)}function T(t,e,s){return Object.assign({},s,{get:function(){return B(),s.get.apply(this)}})}let N=null;function A(t){N=t}class k{constructor(){this.index=0,this.length=0,this.parent=null,this.parentContext=null}get event(){return N}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}}x.defineProperty(k.prototype,"index"),x.defineProperty(k.prototype,"length");const V=Object.seal(new k);class F extends f{constructor(t,e,s=!1){super(t,e),this.binding=t,this.isVolatileBinding=s,this.needsRefresh=!0,this.needsQueue=!0,this.first=this,this.last=null,this.propertySource=void 0,this.propertyName=void 0,this.notifier=void 0,this.next=void 0}observe(t,e){this.needsRefresh&&null!==this.last&&this.disconnect();const s=m;m=this.needsRefresh?this:void 0,this.needsRefresh=this.isVolatileBinding;const i=this.binding(t,e);return m=s,i}disconnect(){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=!0}}watch(t,e){const s=this.last,i=w(t),n=null===s?this.first:{};if(n.propertySource=t,n.propertyName=e,n.notifier=i,i.subscribe(this,e),null!==s){if(!this.needsRefresh){m=void 0;const e=s.propertySource[s.propertyName];m=this,t===e&&(this.needsRefresh=!0)}s.next=n}this.last=n}handleChange(){this.needsQueue&&(this.needsQueue=!1,O(this))}call(){null!==this.last&&(this.needsQueue=!0,this.notify(this))}}class M{constructor(){this.targetIndex=0}}class $ extends M{constructor(){super(...arguments),this.createPlaceholder=h.createInterpolationPlaceholder}}class I extends M{constructor(t,e,s){super(),this.name=t,this.behavior=e,this.options=s}createPlaceholder(t){return h.createCustomAttributePlaceholder(this.name,t)}createBehavior(t){return new this.behavior(t,this.options)}}function E(t,e){this.source=t,this.context=e,null===this.bindingObserver&&(this.bindingObserver=x.binding(this.binding,this,this.isBindingVolatile)),this.updateTarget(this.bindingObserver.observe(t,e))}function L(t,e){this.source=t,this.context=e,this.target.addEventListener(this.targetName,this)}function P(){this.bindingObserver.disconnect(),this.source=null,this.context=null}function _(){this.bindingObserver.disconnect(),this.source=null,this.context=null;const t=this.target.$fastView;void 0!==t&&t.isComposed&&(t.unbind(),t.needsBindOnly=!0)}function j(){this.target.removeEventListener(this.targetName,this),this.source=null,this.context=null}function R(t){h.setAttribute(this.target,this.targetName,t)}function H(t){h.setBooleanAttribute(this.target,this.targetName,t)}function z(t){if(null==t&&(t=""),t.create){this.target.textContent="";let e=this.target.$fastView;void 0===e?e=t.create():this.target.$fastTemplate!==t&&(e.isComposed&&(e.remove(),e.unbind()),e=t.create()),e.isComposed?e.needsBindOnly&&(e.needsBindOnly=!1,e.bind(this.source,this.context)):(e.isComposed=!0,e.bind(this.source,this.context),e.insertBefore(this.target),this.target.$fastView=e,this.target.$fastTemplate=t)}else{const e=this.target.$fastView;void 0!==e&&e.isComposed&&(e.isComposed=!1,e.remove(),e.needsBindOnly?e.needsBindOnly=!1:e.unbind()),this.target.textContent=t}}function Q(t){this.target[this.targetName]=t}function U(t){const e=this.classVersions||Object.create(null),s=this.target;let i=this.version||0;if(null!=t&&t.length){const n=t.split(/\s+/);for(let t=0,o=n.length;t<o;++t){const o=n[t];""!==o&&(e[o]=i,s.classList.add(o))}}if(this.classVersions=e,this.version=i+1,0!==i){i-=1;for(const t in e)e[t]===i&&s.classList.remove(t)}}class q extends ${constructor(t){super(),this.binding=t,this.bind=E,this.unbind=P,this.updateTarget=R,this.isBindingVolatile=x.isVolatileBinding(this.binding)}get targetName(){return this.originalTargetName}set targetName(t){if(this.originalTargetName=t,void 0!==t)switch(t[0]){case":":if(this.cleanedTargetName=t.substr(1),this.updateTarget=Q,"innerHTML"===this.cleanedTargetName){const t=this.binding;this.binding=(e,s)=>h.createHTML(t(e,s))}break;case"?":this.cleanedTargetName=t.substr(1),this.updateTarget=H;break;case"@":this.cleanedTargetName=t.substr(1),this.bind=L,this.unbind=j;break;default:this.cleanedTargetName=t,"class"===t&&(this.updateTarget=U)}}targetAtContent(){this.updateTarget=z,this.unbind=_}createBehavior(t){return new D(t,this.binding,this.isBindingVolatile,this.bind,this.unbind,this.updateTarget,this.cleanedTargetName)}}class D{constructor(t,e,s,i,n,o,r){this.source=null,this.context=null,this.bindingObserver=null,this.target=t,this.binding=e,this.isBindingVolatile=s,this.bind=i,this.unbind=n,this.updateTarget=o,this.targetName=r}handleChange(){this.updateTarget(this.bindingObserver.observe(this.source,this.context))}handleEvent(t){A(t);const e=this.binding(this.source,this.context);A(null),!0!==e&&t.preventDefault()}}class W{addFactory(t){t.targetIndex=this.targetIndex,this.behaviorFactories.push(t)}captureContentBinding(t){t.targetAtContent(),this.addFactory(t)}reset(){this.behaviorFactories=[],this.targetIndex=-1}release(){K=this}static borrow(t){const e=K||new W;return e.directives=t,e.reset(),K=null,e}}let K=null;function G(t){if(1===t.length)return t[0];let e;const s=t.length,i=t.map(t=>"string"==typeof t?()=>t:(e=t.targetName||e,t.binding)),n=new q((t,e)=>{let n="";for(let o=0;o<s;++o)n+=i[o](t,e);return n});return n.targetName=e,n}const J=l.length;function X(t,e){const s=e.split(r);if(1===s.length)return null;const i=[];for(let e=0,n=s.length;e<n;++e){const n=s[e],o=n.indexOf(l);let r;if(-1===o)r=n;else{const e=parseInt(n.substring(0,o));i.push(t.directives[e]),r=n.substring(o+J)}""!==r&&i.push(r)}return i}function Y(t,e,s=!1){const i=e.attributes;for(let n=0,o=i.length;n<o;++n){const r=i[n],l=r.value,h=X(t,l);let a=null;null===h?s&&(a=new q(()=>l),a.targetName=r.name):a=G(h),null!==a&&(e.removeAttributeNode(r),n--,o--,t.addFactory(a))}}function Z(t,e,s){const i=X(t,e.textContent);if(null!==i){let n=e;for(let o=0,r=i.length;o<r;++o){const r=i[o],l=0===o?e:n.parentNode.insertBefore(document.createTextNode(""),n.nextSibling);"string"==typeof r?l.textContent=r:(l.textContent=" ",t.captureContentBinding(r)),n=l,t.targetIndex++,l!==e&&s.nextNode()}t.targetIndex--}}function tt(t,e){const s=t.content;document.adoptNode(s);const i=W.borrow(e);Y(i,t,!0);const n=i.behaviorFactories;i.reset();const o=h.createTemplateWalker(s);let r;for(;r=o.nextNode();)switch(i.targetIndex++,r.nodeType){case 1:Y(i,r);break;case 3:Z(i,r,o);break;case 8:h.isMarker(r)&&i.addFactory(e[h.extractDirectiveIndexFromMarker(r)])}let l=0;h.isMarker(s.firstChild)&&(s.insertBefore(document.createComment(""),s.firstChild),l=-1);const a=i.behaviorFactories;return i.release(),{fragment:s,viewBehaviorFactories:a,hostBehaviorFactories:n,targetOffset:l}}const et=document.createRange();class st{constructor(t,e){this.fragment=t,this.behaviors=e,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(){const t=this.firstChild.parentNode,e=this.lastChild;let s,i=this.firstChild;for(;i!==e;)s=i.nextSibling,t.removeChild(i),i=s;t.removeChild(e);const n=this.behaviors,o=this.source;for(let t=0,e=n.length;t<e;++t)n[t].unbind(o)}bind(t,e){const s=this.behaviors;if(this.source!==t)if(null!==this.source){const i=this.source;this.source=t,this.context=e;for(let n=0,o=s.length;n<o;++n){const o=s[n];o.unbind(i),o.bind(t,e)}}else{this.source=t,this.context=e;for(let i=0,n=s.length;i<n;++i)s[i].bind(t,e)}}unbind(){if(null===this.source)return;const t=this.behaviors,e=this.source;for(let s=0,i=t.length;s<i;++s)t[s].unbind(e);this.source=null}static disposeContiguousBatch(t){if(0!==t.length){et.setStartBefore(t[0].firstChild),et.setEndAfter(t[t.length-1].lastChild),et.deleteContents();for(let e=0,s=t.length;e<s;++e){const s=t[e],i=s.behaviors,n=s.source;for(let t=0,e=i.length;t<e;++t)i[t].unbind(n)}}}}class it{constructor(t,e){this.behaviorCount=0,this.hasHostBehaviors=!1,this.fragment=null,this.targetOffset=0,this.viewBehaviorFactories=null,this.hostBehaviorFactories=null,this.html=t,this.directives=e}create(t){if(null===this.fragment){let t;const e=this.html;if("string"==typeof e){t=document.createElement("template"),t.innerHTML=h.createHTML(e);const s=t.content.firstElementChild;null!==s&&"TEMPLATE"===s.tagName&&(t=s)}else t=e;const s=tt(t,this.directives);this.fragment=s.fragment,this.viewBehaviorFactories=s.viewBehaviorFactories,this.hostBehaviorFactories=s.hostBehaviorFactories,this.targetOffset=s.targetOffset,this.behaviorCount=this.viewBehaviorFactories.length+this.hostBehaviorFactories.length,this.hasHostBehaviors=this.hostBehaviorFactories.length>0}const e=this.fragment.cloneNode(!0),s=this.viewBehaviorFactories,i=new Array(this.behaviorCount),n=h.createTemplateWalker(e);let o=0,r=this.targetOffset,l=n.nextNode();for(let t=s.length;o<t;++o){const t=s[o],e=t.targetIndex;for(;null!==l;){if(r===e){i[o]=t.createBehavior(l);break}l=n.nextNode(),r++}}if(this.hasHostBehaviors){const e=this.hostBehaviorFactories;for(let s=0,n=e.length;s<n;++s,++o)i[o]=e[s].createBehavior(t)}return new st(e,i)}render(t,e,s){"string"==typeof e&&(e=document.getElementById(e)),void 0===s&&(s=e);const i=this.create(s);return i.bind(t,V),i.appendTo(e),i}}const nt=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function ot(t,...e){const s=[];let i="";for(let n=0,o=t.length-1;n<o;++n){const o=t[n];let r=e[n];if(i+=o,r instanceof it){const t=r;r=()=>t}if("function"==typeof r&&(r=new q(r)),r instanceof $){const t=nt.exec(o);null!==t&&(r.targetName=t[2])}r instanceof M?(i+=r.createPlaceholder(s.length),s.push(r)):i+=r}return i+=t[t.length-1],new it(i,s)} | ||
const t=function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof global)return global;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;try{return new Function("return this")()}catch(t){return{}}}();void 0===t.trustedTypes&&(t.trustedTypes={createPolicy:(t,e)=>e});const e=[],s=t.trustedTypes.createPolicy("fast-html",{createHTML:t=>t});let i=s;function n(){let t=0;for(;t<e.length;){if(e[t].call(),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}const o="fast-"+Math.random().toString(36).substring(2,8),r=o+"{",l="}"+o,h=Object.freeze({supportsAdoptedStyleSheets:Array.isArray(document.adoptedStyleSheets)&&"replace"in CSSStyleSheet.prototype,setHTMLPolicy(t){if(i!==s)throw new Error("The HTML policy can only be set once.");i=t},createHTML:t=>i.createHTML(t),isMarker:t=>t&&8===t.nodeType&&t.data.startsWith(o),extractDirectiveIndexFromMarker:t=>parseInt(t.data.replace(o+":","")),createInterpolationPlaceholder:t=>`${r}${t}${l}`,createCustomAttributePlaceholder(t,e){return`${t}="${this.createInterpolationPlaceholder(e)}"`},createBlockPlaceholder:t=>`\x3c!--${o}:${t}--\x3e`,queueUpdate(t){e.length<1&&window.requestAnimationFrame(n),e.push(t)},nextUpdate:()=>new Promise(t=>{h.queueUpdate(t)}),setAttribute(t,e,s){null==s?t.removeAttribute(e):t.setAttribute(e,s)},setBooleanAttribute(t,e,s){s?t.setAttribute(e,""):t.removeAttribute(e)},removeChildNodes(t){for(let e=t.firstChild;null!==e;e=t.firstChild)t.removeChild(e)},createTemplateWalker:t=>document.createTreeWalker(t,133,null,!1)});function a(t){const e=this.spillover;-1===e.indexOf(t)&&e.push(t)}function c(t){const e=this.spillover,s=e.indexOf(t);-1!==s&&e.splice(s,1)}function d(t){const e=this.spillover,s=this.source;for(let i=0,n=e.length;i<n;++i)e[i].handleChange(s,t)}function u(t){return-1!==this.spillover.indexOf(t)}class f{constructor(t,e){this.sub1=void 0,this.sub2=void 0,this.spillover=void 0,this.source=t,this.sub1=e}has(t){return this.sub1===t||this.sub2===t}subscribe(t){this.has(t)||(void 0!==this.sub1?void 0!==this.sub2?(this.spillover=[this.sub1,this.sub2,t],this.subscribe=a,this.unsubscribe=c,this.notify=d,this.has=u,this.sub1=void 0,this.sub2=void 0):this.sub2=t:this.sub1=t)}unsubscribe(t){this.sub1===t?this.sub1=void 0:this.sub2===t&&(this.sub2=void 0)}notify(t){const e=this.sub1,s=this.sub2,i=this.source;void 0!==e&&e.handleChange(i,t),void 0!==s&&s.handleChange(i,t)}}class p{constructor(t){this.subscribers={},this.source=t}notify(t){const e=this.subscribers[t];void 0!==e&&e.notify(t)}subscribe(t,e){let s=this.subscribers[e];void 0===s&&(this.subscribers[e]=s=new f(this.source)),s.subscribe(t)}unsubscribe(t,e){const s=this.subscribers[e];void 0!==s&&s.unsubscribe(t)}}const g=/(\:|\&\&|\|\||if)/,b=new WeakMap,v=new WeakMap;let m=void 0,y=t=>{throw new Error("Must call enableArrayObservation before observing arrays.")};class C{constructor(t){this.name=t,this.field="_"+t,this.callback=t+"Changed"}getValue(t){return void 0!==m&&m.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];"function"==typeof n&&n.call(t,i,e),w(t).notify(this.name)}}}const x=Object.freeze({setArrayObserverFactory(t){y=t},getNotifier(t){let e=t.$fastController||b.get(t);return void 0===e&&(Array.isArray(t)?e=y(t):b.set(t,e=new p(t))),e},track(t,e){void 0!==m&&m.watch(t,e)},trackVolatile(){void 0!==m&&(m.needsRefresh=!0)},notify(t,e){w(t).notify(e)},defineProperty(t,e){"string"==typeof e&&(e=new C(e)),this.getAccessors(t).push(e),Reflect.defineProperty(t,e.name,{enumerable:!0,get:function(){return e.getValue(this)},set:function(t){e.setValue(this,t)}})},getAccessors(t){let e=v.get(t);if(void 0===e){let s=Reflect.getPrototypeOf(t);for(;void 0===e&&null!==s;)e=v.get(s),s=Reflect.getPrototypeOf(s);e=void 0===e?[]:e.slice(0),v.set(t,e)}return e},binding(t,e,s=this.isVolatileBinding(t)){return new F(t,e,s)},isVolatileBinding:t=>g.test(t.toString())}),w=x.getNotifier,B=x.trackVolatile,T=h.queueUpdate;function S(t,e){x.defineProperty(t,e)}function O(t,e,s){return Object.assign({},s,{get:function(){return B(),s.get.apply(this)}})}let N=null;function A(t){N=t}class k{constructor(){this.index=0,this.length=0,this.parent=null,this.parentContext=null}get event(){return N}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}}x.defineProperty(k.prototype,"index"),x.defineProperty(k.prototype,"length");const V=Object.seal(new k);class F extends f{constructor(t,e,s=!1){super(t,e),this.binding=t,this.isVolatileBinding=s,this.needsRefresh=!0,this.needsQueue=!0,this.first=this,this.last=null,this.propertySource=void 0,this.propertyName=void 0,this.notifier=void 0,this.next=void 0}observe(t,e){this.needsRefresh&&null!==this.last&&this.disconnect();const s=m;m=this.needsRefresh?this:void 0,this.needsRefresh=this.isVolatileBinding;const i=this.binding(t,e);return m=s,i}disconnect(){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=!0}}watch(t,e){const s=this.last,i=w(t),n=null===s?this.first:{};if(n.propertySource=t,n.propertyName=e,n.notifier=i,i.subscribe(this,e),null!==s){if(!this.needsRefresh){m=void 0;const e=s.propertySource[s.propertyName];m=this,t===e&&(this.needsRefresh=!0)}s.next=n}this.last=n}handleChange(){this.needsQueue&&(this.needsQueue=!1,T(this))}call(){null!==this.last&&(this.needsQueue=!0,this.notify(this))}}class M{constructor(){this.targetIndex=0}}class $ extends M{constructor(){super(...arguments),this.createPlaceholder=h.createInterpolationPlaceholder}}class I extends M{constructor(t,e,s){super(),this.name=t,this.behavior=e,this.options=s}createPlaceholder(t){return h.createCustomAttributePlaceholder(this.name,t)}createBehavior(t){return new this.behavior(t,this.options)}}function E(t,e){this.source=t,this.context=e,null===this.bindingObserver&&(this.bindingObserver=x.binding(this.binding,this,this.isBindingVolatile)),this.updateTarget(this.bindingObserver.observe(t,e))}function L(t,e){this.source=t,this.context=e,this.target.addEventListener(this.targetName,this)}function P(){this.bindingObserver.disconnect(),this.source=null,this.context=null}function _(){this.bindingObserver.disconnect(),this.source=null,this.context=null;const t=this.target.$fastView;void 0!==t&&t.isComposed&&(t.unbind(),t.needsBindOnly=!0)}function j(){this.target.removeEventListener(this.targetName,this),this.source=null,this.context=null}function R(t){h.setAttribute(this.target,this.targetName,t)}function z(t){h.setBooleanAttribute(this.target,this.targetName,t)}function H(t){if(null==t&&(t=""),t.create){this.target.textContent="";let e=this.target.$fastView;void 0===e?e=t.create():this.target.$fastTemplate!==t&&(e.isComposed&&(e.remove(),e.unbind()),e=t.create()),e.isComposed?e.needsBindOnly&&(e.needsBindOnly=!1,e.bind(this.source,this.context)):(e.isComposed=!0,e.bind(this.source,this.context),e.insertBefore(this.target),this.target.$fastView=e,this.target.$fastTemplate=t)}else{const e=this.target.$fastView;void 0!==e&&e.isComposed&&(e.isComposed=!1,e.remove(),e.needsBindOnly?e.needsBindOnly=!1:e.unbind()),this.target.textContent=t}}function Q(t){this.target[this.targetName]=t}function U(t){const e=this.classVersions||Object.create(null),s=this.target;let i=this.version||0;if(null!=t&&t.length){const n=t.split(/\s+/);for(let t=0,o=n.length;t<o;++t){const o=n[t];""!==o&&(e[o]=i,s.classList.add(o))}}if(this.classVersions=e,this.version=i+1,0!==i){i-=1;for(const t in e)e[t]===i&&s.classList.remove(t)}}class q extends ${constructor(t){super(),this.binding=t,this.bind=E,this.unbind=P,this.updateTarget=R,this.isBindingVolatile=x.isVolatileBinding(this.binding)}get targetName(){return this.originalTargetName}set targetName(t){if(this.originalTargetName=t,void 0!==t)switch(t[0]){case":":if(this.cleanedTargetName=t.substr(1),this.updateTarget=Q,"innerHTML"===this.cleanedTargetName){const t=this.binding;this.binding=(e,s)=>h.createHTML(t(e,s))}break;case"?":this.cleanedTargetName=t.substr(1),this.updateTarget=z;break;case"@":this.cleanedTargetName=t.substr(1),this.bind=L,this.unbind=j;break;default:this.cleanedTargetName=t,"class"===t&&(this.updateTarget=U)}}targetAtContent(){this.updateTarget=H,this.unbind=_}createBehavior(t){return new W(t,this.binding,this.isBindingVolatile,this.bind,this.unbind,this.updateTarget,this.cleanedTargetName)}}class W{constructor(t,e,s,i,n,o,r){this.source=null,this.context=null,this.bindingObserver=null,this.target=t,this.binding=e,this.isBindingVolatile=s,this.bind=i,this.unbind=n,this.updateTarget=o,this.targetName=r}handleChange(){this.updateTarget(this.bindingObserver.observe(this.source,this.context))}handleEvent(t){A(t);const e=this.binding(this.source,this.context);A(null),!0!==e&&t.preventDefault()}}class D{addFactory(t){t.targetIndex=this.targetIndex,this.behaviorFactories.push(t)}captureContentBinding(t){t.targetAtContent(),this.addFactory(t)}reset(){this.behaviorFactories=[],this.targetIndex=-1}release(){K=this}static borrow(t){const e=K||new D;return e.directives=t,e.reset(),K=null,e}}let K=null;function G(t){if(1===t.length)return t[0];let e;const s=t.length,i=t.map(t=>"string"==typeof t?()=>t:(e=t.targetName||e,t.binding)),n=new q((t,e)=>{let n="";for(let o=0;o<s;++o)n+=i[o](t,e);return n});return n.targetName=e,n}const J=l.length;function X(t,e){const s=e.split(r);if(1===s.length)return null;const i=[];for(let e=0,n=s.length;e<n;++e){const n=s[e],o=n.indexOf(l);let r;if(-1===o)r=n;else{const e=parseInt(n.substring(0,o));i.push(t.directives[e]),r=n.substring(o+J)}""!==r&&i.push(r)}return i}function Y(t,e,s=!1){const i=e.attributes;for(let n=0,o=i.length;n<o;++n){const r=i[n],l=r.value,h=X(t,l);let a=null;null===h?s&&(a=new q(()=>l),a.targetName=r.name):a=G(h),null!==a&&(e.removeAttributeNode(r),n--,o--,t.addFactory(a))}}function Z(t,e,s){const i=X(t,e.textContent);if(null!==i){let n=e;for(let o=0,r=i.length;o<r;++o){const r=i[o],l=0===o?e:n.parentNode.insertBefore(document.createTextNode(""),n.nextSibling);"string"==typeof r?l.textContent=r:(l.textContent=" ",t.captureContentBinding(r)),n=l,t.targetIndex++,l!==e&&s.nextNode()}t.targetIndex--}}function tt(t,e){const s=t.content;document.adoptNode(s);const i=D.borrow(e);Y(i,t,!0);const n=i.behaviorFactories;i.reset();const o=h.createTemplateWalker(s);let r;for(;r=o.nextNode();)switch(i.targetIndex++,r.nodeType){case 1:Y(i,r);break;case 3:Z(i,r,o);break;case 8:h.isMarker(r)&&i.addFactory(e[h.extractDirectiveIndexFromMarker(r)])}let l=0;h.isMarker(s.firstChild)&&(s.insertBefore(document.createComment(""),s.firstChild),l=-1);const a=i.behaviorFactories;return i.release(),{fragment:s,viewBehaviorFactories:a,hostBehaviorFactories:n,targetOffset:l}}const et=document.createRange();class st{constructor(t,e){this.fragment=t,this.behaviors=e,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(){const t=this.firstChild.parentNode,e=this.lastChild;let s,i=this.firstChild;for(;i!==e;)s=i.nextSibling,t.removeChild(i),i=s;t.removeChild(e);const n=this.behaviors,o=this.source;for(let t=0,e=n.length;t<e;++t)n[t].unbind(o)}bind(t,e){const s=this.behaviors;if(this.source!==t)if(null!==this.source){const i=this.source;this.source=t,this.context=e;for(let n=0,o=s.length;n<o;++n){const o=s[n];o.unbind(i),o.bind(t,e)}}else{this.source=t,this.context=e;for(let i=0,n=s.length;i<n;++i)s[i].bind(t,e)}}unbind(){if(null===this.source)return;const t=this.behaviors,e=this.source;for(let s=0,i=t.length;s<i;++s)t[s].unbind(e);this.source=null}static disposeContiguousBatch(t){if(0!==t.length){et.setStartBefore(t[0].firstChild),et.setEndAfter(t[t.length-1].lastChild),et.deleteContents();for(let e=0,s=t.length;e<s;++e){const s=t[e],i=s.behaviors,n=s.source;for(let t=0,e=i.length;t<e;++t)i[t].unbind(n)}}}}class it{constructor(t,e){this.behaviorCount=0,this.hasHostBehaviors=!1,this.fragment=null,this.targetOffset=0,this.viewBehaviorFactories=null,this.hostBehaviorFactories=null,this.html=t,this.directives=e}create(t){if(null===this.fragment){let t;const e=this.html;if("string"==typeof e){t=document.createElement("template"),t.innerHTML=h.createHTML(e);const s=t.content.firstElementChild;null!==s&&"TEMPLATE"===s.tagName&&(t=s)}else t=e;const s=tt(t,this.directives);this.fragment=s.fragment,this.viewBehaviorFactories=s.viewBehaviorFactories,this.hostBehaviorFactories=s.hostBehaviorFactories,this.targetOffset=s.targetOffset,this.behaviorCount=this.viewBehaviorFactories.length+this.hostBehaviorFactories.length,this.hasHostBehaviors=this.hostBehaviorFactories.length>0}const e=this.fragment.cloneNode(!0),s=this.viewBehaviorFactories,i=new Array(this.behaviorCount),n=h.createTemplateWalker(e);let o=0,r=this.targetOffset,l=n.nextNode();for(let t=s.length;o<t;++o){const t=s[o],e=t.targetIndex;for(;null!==l;){if(r===e){i[o]=t.createBehavior(l);break}l=n.nextNode(),r++}}if(this.hasHostBehaviors){const e=this.hostBehaviorFactories;for(let s=0,n=e.length;s<n;++s,++o)i[o]=e[s].createBehavior(t)}return new st(e,i)}render(t,e,s){"string"==typeof e&&(e=document.getElementById(e)),void 0===s&&(s=e);const i=this.create(s);return i.bind(t,V),i.appendTo(e),i}}const nt=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function ot(t,...e){const s=[];let i="";for(let n=0,o=t.length-1;n<o;++n){const o=t[n];let r=e[n];if(i+=o,r instanceof it){const t=r;r=()=>t}if("function"==typeof r&&(r=new q(r)),r instanceof $){const t=nt.exec(o);null!==t&&(r.targetName=t[2])}r instanceof M?(i+=r.createPlaceholder(s.length),s.push(r)):i+=r}return i+=t[t.length-1],new it(i,s)} | ||
/*! ***************************************************************************** | ||
@@ -15,2 +15,2 @@ Copyright (c) Microsoft Corporation. | ||
PERFORMANCE OF THIS SOFTWARE. | ||
***************************************************************************** */const rt=new Map;class lt{constructor(){this.behaviors=null}withBehaviors(...t){return this.behaviors=null===this.behaviors?t:this.behaviors.concat(t),this}withKey(t){return rt.set(t,this),this}static find(t){return rt.get(t)||null}}function ht(t){return t.map(t=>t instanceof lt?ht(t.styles):[t]).reduce((t,e)=>t.concat(e),[])}function at(t){return t.map(t=>t instanceof lt?t.behaviors:null).reduce((t,e)=>null===e?t:(null===t&&(t=[]),t.concat(e)),null)}lt.create=(()=>{if(h.supportsAdoptedStyleSheets){const t=new Map;return e=>new ct(e,t)}return t=>new ut(t)})();class ct extends lt{constructor(t,e){super(),this.styles=t,this.behaviors=null,this.behaviors=at(t),this.styleSheets=ht(t).map(t=>{if(t instanceof CSSStyleSheet)return t;let s=e.get(t);return void 0===s&&(s=new CSSStyleSheet,s.replaceSync(t),e.set(t,s)),s})}addStylesTo(t){t.adoptedStyleSheets=[...t.adoptedStyleSheets,...this.styleSheets]}removeStylesFrom(t){const e=this.styleSheets;t.adoptedStyleSheets=t.adoptedStyleSheets.filter(t=>-1===e.indexOf(t))}}let dt=0;class ut extends lt{constructor(t){super(),this.styles=t,this.behaviors=null,this.behaviors=at(t),this.styleSheets=ht(t),this.styleClass="fast-style-class-"+ ++dt}addStylesTo(t){const e=this.styleSheets,s=this.styleClass;t===document&&(t=document.body);for(let i=e.length-1;i>-1;--i){const n=document.createElement("style");n.innerHTML=e[i],n.className=s,t.prepend(n)}}removeStylesFrom(t){t===document&&(t=document.body);const e=t.querySelectorAll("."+this.styleClass);for(let s=0,i=e.length;s<i;++s)t.removeChild(e[s])}}function ft(t,...e){const s=[];let i="";for(let n=0,o=t.length-1;n<o;++n){i+=t[n];const o=e[n];o instanceof lt||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),lt.create(s)}const pt={toView:t=>t?"true":"false",fromView:t=>null!=t&&"false"!==t&&!1!==t&&0!==t},gt={toView(t){if(null==t)return null;const e=1*t;return isNaN(e)?null:e.toString()},fromView(t){if(null==t)return null;const e=1*t;return isNaN(e)?null:e}};class bt{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=pt)}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 x.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||h.queueUpdate(()=>{s.add(t);const i=t[this.fieldName];switch(e){case"reflect":const e=this.converter;h.setAttribute(t,this.attribute,void 0!==e?e.toView(i):i);break;case"boolean":h.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];"string"==typeof i?s.push(new bt(t,i)):s.push(new bt(t,i.property,i.attribute,i.mode,i.converter))}}return s}}function vt(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 mt={mode:"open"},yt={},Ct=new Map;class xt{constructor(t,e=t.definition){"string"==typeof e&&(e={name:e}),this.type=t,this.name=e.name,this.template=e.template;const s=bt.collect(t,e.attributes),i=new Array(s.length),n={},o={};for(let t=0,e=s.length;t<e;++t){const e=s[t];i[t]=e.attribute,n[e.name]=e,o[e.attribute]=e}this.attributes=s,this.observedAttributes=i,this.propertyLookup=n,this.attributeLookup=o,this.shadowOptions=void 0===e.shadowOptions?mt:null===e.shadowOptions?void 0:Object.assign(Object.assign({},mt),e.shadowOptions),this.elementOptions=void 0===e.elementOptions?yt:Object.assign(Object.assign({},yt),e.elementOptions),this.styles=void 0===e.styles?void 0:Array.isArray(e.styles)?lt.create(e.styles):e.styles instanceof lt?e.styles:lt.create([e.styles])}define(t=customElements){const e=this.type;if(!this.isDefined){const t=this.attributes,s=e.prototype;for(let e=0,i=t.length;e<i;++e)x.defineProperty(s,t[e]);Reflect.defineProperty(e,"observedAttributes",{value:this.observedAttributes,enumerable:!0}),Ct.set(e,this),this.isDefined=!0}return t.get(this.name)||t.define(this.name,e,this.elementOptions),this}static forType(t){return Ct.get(t)}}const wt=new WeakMap,Bt={bubbles:!0,composed:!0};function Ot(t){return t.shadowRoot||wt.get(t)||null}class St extends p{constructor(t,e){super(t),this.boundObservables=null,this.behaviors=null,this.needsInitialization=!0,this._template=null,this._styles=null,this.view=null,this.isConnected=!1,this.element=t,this.definition=e;const s=e.shadowOptions;if(void 0!==s){const e=t.attachShadow(s);"closed"===s.mode&&wt.set(t,e)}const i=x.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,o=t[n];void 0!==o&&(delete t[n],e[n]=o)}}}get template(){return this._template}set template(t){this._template!==t&&(this._template=t,this.needsInitialization||this.renderTemplate(t))}get styles(){return this._styles}set styles(t){this._styles!==t&&(null!==this._styles&&this.removeStyles(this._styles),this._styles=t,this.needsInitialization||null===t||this.addStyles(t))}addStyles(t){const e=Ot(this.element)||this.element.getRootNode();if(t instanceof HTMLStyleElement)e.prepend(t);else{const s=t.behaviors;t.addStylesTo(e),null!==s&&this.addBehaviors(s)}}removeStyles(t){const e=Ot(this.element)||this.element.getRootNode();if(t instanceof HTMLStyleElement)e.removeChild(t);else{const s=t.behaviors;t.removeStylesFrom(e),null!==s&&this.removeBehaviors(s)}}addBehaviors(t){const e=this.behaviors||(this.behaviors=[]),s=t.length;for(let i=0;i<s;++i)e.push(t[i]);if(this.isConnected){const e=this.element;for(let i=0;i<s;++i)t[i].bind(e,V)}}removeBehaviors(t){const e=this.behaviors;if(null===e)return;const s=t.length;for(let i=0;i<s;++i){const s=e.indexOf(t[i]);-1!==s&&e.splice(s,1)}if(this.isConnected){const e=this.element;for(let i=0;i<s;++i)t[i].unbind(e)}}onConnectedCallback(){if(this.isConnected)return;const t=this.element;this.needsInitialization?this.finishInitialization():null!==this.view&&this.view.bind(t,V);const e=this.behaviors;if(null!==e)for(let s=0,i=e.length;s<i;++s)e[s].bind(t,V);this.isConnected=!0}onDisconnectedCallback(){if(!1===this.isConnected)return;this.isConnected=!1;const t=this.view;null!==t&&t.unbind();const e=this.behaviors;if(null!==e){const t=this.element;for(let s=0,i=e.length;s<i;++s)e[s].unbind(t)}}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},Bt),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}const s=this.definition;null===this._template&&(this.element.resolveTemplate?this._template=this.element.resolveTemplate():s.template&&(this._template=s.template||null)),null!==this._template&&this.renderTemplate(this._template),null===this._styles&&(this.element.resolveStyles?this._styles=this.element.resolveStyles():s.styles&&(this._styles=s.styles||null)),null!==this._styles&&this.addStyles(this._styles),this.needsInitialization=!1}renderTemplate(t){const e=this.element,s=Ot(e)||e;null!==this.view?(this.view.dispose(),this.view=null):this.needsInitialization||h.removeChildNodes(s),t&&(this.view=t.render(e,s,e))}static forCustomElement(t){const e=t.$fastController;if(void 0!==e)return e;const s=xt.forType(t.constructor);if(void 0===s)throw new Error("Missing FASTElement definition.");return t.$fastController=new St(t,s)}}function Tt(t){return class extends t{constructor(){super(),St.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)}}}!function(t,e,s,i){var n,o=arguments.length,r=o<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,s,i);else for(var l=t.length-1;l>=0;l--)(n=t[l])&&(r=(o<3?n(r):o>3?n(e,s,r):n(e,s))||r);o>3&&r&&Object.defineProperty(e,s,r)}([S],St.prototype,"isConnected",void 0);const Nt=Object.assign(Tt(HTMLElement),{from:t=>Tt(t),define:(t,e)=>new xt(t,e).define().type});function At(t){return function(e){new xt(e,t).define()}}const kt=Object.freeze([]);function Vt(t,e,s){return{index:t,removed:e,addedCount:s}}function Ft(t,e,s,i,n,o){let r=0,l=0;const h=Math.min(s-e,o-n);if(0===e&&0===n&&(r=function(t,e,s){for(let i=0;i<s;++i)if(t[i]!==e[i])return i;return s}(t,i,h)),s===t.length&&o===i.length&&(l=function(t,e,s){let i=t.length,n=e.length,o=0;for(;o<s&&t[--i]===e[--n];)o++;return o}(t,i,h-r)),n+=r,o-=l,(s-=l)-(e+=r)==0&&o-n==0)return kt;if(e===s){const t=Vt(e,[],0);for(;n<o;)t.removed.push(i[n++]);return[t]}if(n===o)return[Vt(e,[],s-e)];const a=function(t){let e=t.length-1,s=t[0].length-1,i=t[e][s];const n=[];for(;e>0||s>0;){if(0===e){n.push(2),s--;continue}if(0===s){n.push(3),e--;continue}const o=t[e-1][s-1],r=t[e-1][s],l=t[e][s-1];let h;h=r<l?r<o?r:o:l<o?l:o,h===o?(o===i?n.push(0):(n.push(1),i=o),e--,s--):h===r?(n.push(3),e--,i=r):(n.push(2),s--,i=l)}return n.reverse(),n}(function(t,e,s,i,n,o){const r=o-n+1,l=s-e+1,h=new Array(r);let a,c;for(let t=0;t<r;++t)h[t]=new Array(l),h[t][0]=t;for(let t=0;t<l;++t)h[0][t]=t;for(let s=1;s<r;++s)for(let o=1;o<l;++o)t[e+o-1]===i[n+s-1]?h[s][o]=h[s-1][o-1]:(a=h[s-1][o]+1,c=h[s][o-1]+1,h[s][o]=a<c?a:c);return h}(t,e,s,i,n,o)),c=[];let d=void 0,u=e,f=n;for(let t=0;t<a.length;++t)switch(a[t]){case 0:void 0!==d&&(c.push(d),d=void 0),u++,f++;break;case 1:void 0===d&&(d=Vt(u,[],0)),d.addedCount++,u++,d.removed.push(i[f]),f++;break;case 2:void 0===d&&(d=Vt(u,[],0)),d.addedCount++,u++;break;case 3:void 0===d&&(d=Vt(u,[],0)),d.removed.push(i[f]),f++}return void 0!==d&&c.push(d),c}const Mt=Array.prototype.push;function $t(t,e,s,i){const n=Vt(e,s,i);let o=!1,r=0;for(let e=0;e<t.length;e++){const s=t[e];if(s.index+=r,o)continue;const i=(l=n.index,h=n.index+n.removed.length,a=s.index,c=s.index+s.addedCount,h<a||c<l?-1:h===a||c===l?0:l<a?h<c?h-a:c-a:c<h?c-l:h-l);if(i>=0){t.splice(e,1),e--,r-=s.addedCount-s.removed.length,n.addedCount+=s.addedCount-i;const l=n.removed.length+s.removed.length-i;if(n.addedCount||l){let t=s.removed;if(n.index<s.index){const e=n.removed.slice(0,s.index-n.index);Mt.apply(e,t),t=e}if(n.index+n.removed.length>s.index+s.addedCount){const e=n.removed.slice(s.index+s.addedCount-n.index);Mt.apply(t,e)}n.removed=t,s.index<n.index&&(n.index=s.index)}else o=!0}else if(n.index<s.index){o=!0,t.splice(e,0,n),e++;const i=n.addedCount-n.removed.length;s.index+=i,r+=i}}var l,h,a,c;o||t.push(n)}function It(t,e){let s=[];const i=function(t){const e=[];for(let s=0,i=t.length;s<i;s++){const i=t[s];$t(e,i.index,i.removed,i.addedCount)}return e}(e);for(let e=0,n=i.length;e<n;++e){const n=i[e];1!==n.addedCount||1!==n.removed.length?s=s.concat(Ft(t,n.index,n.index+n.addedCount,n.removed,0,n.removed.length)):n.removed[0]!==t[n.index]&&s.push(n)}return s}let Et=!1;function Lt(t,e){let s=t.index;const i=e.length;return s>i?s=i-t.addedCount:s<0&&(s=i+t.removed.length+s-t.addedCount),s<0&&(s=0),t.index=s,t}class Pt extends f{constructor(t){super(t),this.oldCollection=void 0,this.splices=void 0,this.needsQueue=!0,this.call=this.flush,t.$fastController=this}addSplice(t){void 0===this.splices?this.splices=[t]:this.splices.push(t),this.needsQueue&&(this.needsQueue=!1,h.queueUpdate(this))}reset(t){this.oldCollection=t,this.needsQueue&&(this.needsQueue=!1,h.queueUpdate(this))}flush(){const t=this.splices,e=this.oldCollection;if(void 0===t&&void 0===e)return;this.needsQueue=!0,this.splices=void 0,this.oldCollection=void 0;const s=void 0===e?It(this.source,t):Ft(this.source,0,this.source.length,e,0,e.length);this.notify(s)}}function _t(){if(Et)return;Et=!0,x.setArrayObserverFactory(t=>new Pt(t));const t=Array.prototype,e=t.pop,s=t.push,i=t.reverse,n=t.shift,o=t.sort,r=t.splice,l=t.unshift;t.pop=function(){const t=this.length>0,s=e.apply(this,arguments),i=this.$fastController;return void 0!==i&&t&&i.addSplice(Vt(this.length,[s],0)),s},t.push=function(){const t=s.apply(this,arguments),e=this.$fastController;return void 0!==e&&e.addSplice(Lt(Vt(this.length-arguments.length,[],arguments.length),this)),t},t.reverse=function(){let t;const e=this.$fastController;void 0!==e&&(e.flush(),t=this.slice());const s=i.apply(this,arguments);return void 0!==e&&e.reset(t),s},t.shift=function(){const t=this.length>0,e=n.apply(this,arguments),s=this.$fastController;return void 0!==s&&t&&s.addSplice(Vt(0,[e],0)),e},t.sort=function(){let t;const e=this.$fastController;void 0!==e&&(e.flush(),t=this.slice());const s=o.apply(this,arguments);return void 0!==e&&e.reset(t),s},t.splice=function(){const t=r.apply(this,arguments),e=this.$fastController;return void 0!==e&&e.addSplice(Lt(Vt(+arguments[0],t,arguments.length>2?arguments.length-2:0),this)),t},t.unshift=function(){const t=l.apply(this,arguments),e=this.$fastController;return void 0!==e&&e.addSplice(Lt(Vt(0,[],arguments.length),this)),t}}class jt{constructor(t,e){this.target=t,this.propertyName=e}bind(t){t[this.propertyName]=this.target}unbind(){}}function Rt(t){return new I("fast-ref",jt,t)}function Ht(t,e){const s="function"==typeof e?e:()=>e;return(e,i)=>t(e,i)?s(e,i):null}const zt=Object.freeze({positioning:!1});function Qt(t,e,s,i){t.bind(e[s],i)}function Ut(t,e,s,i){const n=Object.create(i);n.index=s,n.length=e.length,t.bind(e[s],n)}class qt{constructor(t,e,s,i,n,o){this.location=t,this.itemsBinding=e,this.templateBinding=i,this.options=o,this.source=null,this.views=[],this.items=null,this.itemsObserver=null,this.originalContext=void 0,this.childContext=void 0,this.bindView=Qt,this.itemsBindingObserver=x.binding(e,this,s),this.templateBindingObserver=x.binding(i,this,n),o.positioning&&(this.bindView=Ut)}bind(t,e){this.source=t,this.originalContext=e,this.childContext=Object.create(e),this.childContext.parent=t,this.childContext.parentContext=this.originalContext,this.items=this.itemsBindingObserver.observe(t,this.originalContext),this.template=this.templateBindingObserver.observe(t,this.originalContext),this.observeItems(),this.refreshAllViews()}unbind(){this.source=null,this.items=null,null!==this.itemsObserver&&this.itemsObserver.unsubscribe(this),this.unbindAllViews(),this.itemsBindingObserver.disconnect(),this.templateBindingObserver.disconnect()}handleChange(t,e){t===this.itemsBinding?(this.items=this.itemsBindingObserver.observe(this.source,this.originalContext),this.observeItems(),this.refreshAllViews()):t===this.templateBinding?(this.template=this.templateBindingObserver.observe(this.source,this.originalContext),this.refreshAllViews(!0)):this.updateViews(e)}observeItems(){this.items||(this.items=[]);const t=this.itemsObserver,e=this.itemsObserver=x.getNotifier(this.items);t!==e&&(null!==t&&t.unsubscribe(this),e.subscribe(this))}updateViews(t){const e=this.childContext,s=this.views,i=[],n=this.bindView;let o=0;for(let e=0,n=t.length;e<n;++e){const n=t[e],r=n.removed;i.push(...s.splice(n.index+o,r.length)),o-=n.addedCount}const r=this.items,l=this.template;for(let o=0,h=t.length;o<h;++o){const h=t[o];let a=h.index;const c=a+h.addedCount;for(;a<c;++a){const t=s[a],o=t?t.firstChild:this.location,h=i.length>0?i.shift():l.create();s.splice(a,0,h),n(h,r,a,e),h.insertBefore(o)}}for(let t=0,e=i.length;t<e;++t)i[t].dispose();if(this.options.positioning)for(let t=0,e=s.length;t<e;++t){const i=s[t].context;i.length=e,i.index=t}}refreshAllViews(t=!1){const e=this.items,s=this.childContext,i=this.template,n=this.location,o=this.bindView;let r=e.length,l=this.views,h=l.length;if((0===r||t)&&(st.disposeContiguousBatch(l),h=0),0===h){this.views=l=new Array(r);for(let t=0;t<r;++t){const r=i.create();o(r,e,t,s),l[t]=r,r.insertBefore(n)}}else{let t=0;for(;t<r;++t)if(t<h){o(l[t],e,t,s)}else{const r=i.create();o(r,e,t,s),l.push(r),r.insertBefore(n)}const a=l.splice(t,h-t);for(t=0,r=a.length;t<r;++t)a[t].dispose()}}unbindAllViews(){const t=this.views;for(let e=0,s=t.length;e<s;++e)t[e].unbind()}}class Dt extends M{constructor(t,e,s){super(),this.itemsBinding=t,this.templateBinding=e,this.options=s,this.createPlaceholder=h.createBlockPlaceholder,_t(),this.isItemsBindingVolatile=x.isVolatileBinding(t),this.isTemplateBindingVolatile=x.isVolatileBinding(e)}createBehavior(t){return new qt(t,this.itemsBinding,this.isItemsBindingVolatile,this.templateBinding,this.isTemplateBindingVolatile,this.options)}}function Wt(t,e,s=zt){return new Dt(t,"function"==typeof e?e:()=>e,s)}function Kt(t){return t?function(e,s,i){return 1===e.nodeType&&e.matches(t)}:function(t,e,s){return 1===t.nodeType}}class Gt{constructor(t,e){this.target=t,this.options=e,this.source=null}bind(t){const e=this.options.property;this.shouldUpdate=x.getAccessors(t).some(t=>t.name===e),this.source=t,this.updateTarget(this.computeNodes()),this.shouldUpdate&&this.observe()}unbind(){this.updateTarget(kt),this.source=null,this.shouldUpdate&&this.disconnect()}handleEvent(){this.updateTarget(this.computeNodes())}computeNodes(){let t=this.getNodes();return void 0!==this.options.filter&&(t=t.filter(this.options.filter)),t}updateTarget(t){this.source[this.options.property]=t}}class Jt extends Gt{constructor(t,e){super(t,e)}observe(){this.target.addEventListener("slotchange",this)}disconnect(){this.target.removeEventListener("slotchange",this)}getNodes(){return this.target.assignedNodes(this.options)}}function Xt(t){return"string"==typeof t&&(t={property:t}),new I("fast-slotted",Jt,t)}class Yt extends Gt{constructor(t,e){super(t,e),this.observer=null,e.childList=!0}observe(){null===this.observer&&(this.observer=new MutationObserver(this.handleEvent.bind(this))),this.observer.observe(this.target,this.options)}disconnect(){this.observer.disconnect()}getNodes(){return"subtree"in this.options?Array.from(this.target.querySelectorAll(this.options.selector)):Array.from(this.target.childNodes)}}function Zt(t){return"string"==typeof t&&(t={property:t}),new I("fast-children",Yt,t)}export{t as $global,I as AttachedBehaviorDirective,bt as AttributeDefinition,D as BindingBehavior,q as BindingDirective,Yt as ChildrenBehavior,St as Controller,h as DOM,M as Directive,lt as ElementStyles,k as ExecutionContext,Nt as FASTElement,xt as FASTElementDefinition,st as HTMLView,$ as NamedTargetDirective,x as Observable,p as PropertyChangeNotifier,jt as RefBehavior,qt as RepeatBehavior,Dt as RepeatDirective,Jt as SlottedBehavior,f as SubscriberSet,it as ViewTemplate,vt as attr,pt as booleanConverter,Zt as children,tt as compileTemplate,ft as css,At as customElement,V as defaultExecutionContext,Kt as elements,kt as emptyArray,_t as enableArrayObservation,ot as html,gt as nullableNumberConverter,S as observable,Rt as ref,Wt as repeat,A as setCurrentEvent,Xt as slotted,T as volatile,Ht as when}; | ||
***************************************************************************** */const rt=new Map;class lt{constructor(){this.targets=new WeakSet,this.behaviors=null}addStylesTo(t){this.targets.add(t)}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}withKey(t){return rt.set(t,this),this}static find(t){return rt.get(t)||null}}function ht(t){return t.map(t=>t instanceof lt?ht(t.styles):[t]).reduce((t,e)=>t.concat(e),[])}function at(t){return t.map(t=>t instanceof lt?t.behaviors:null).reduce((t,e)=>null===e?t:(null===t&&(t=[]),t.concat(e)),null)}lt.create=(()=>{if(h.supportsAdoptedStyleSheets){const t=new Map;return e=>new ct(e,t)}return t=>new ut(t)})();class ct extends lt{constructor(t,e){super(),this.styles=t,this.behaviors=null,this.behaviors=at(t),this.styleSheets=ht(t).map(t=>{if(t instanceof CSSStyleSheet)return t;let s=e.get(t);return void 0===s&&(s=new CSSStyleSheet,s.replaceSync(t),e.set(t,s)),s})}addStylesTo(t){t.adoptedStyleSheets=[...t.adoptedStyleSheets,...this.styleSheets],super.addStylesTo(t)}removeStylesFrom(t){const e=this.styleSheets;t.adoptedStyleSheets=t.adoptedStyleSheets.filter(t=>-1===e.indexOf(t)),super.removeStylesFrom(t)}}let dt=0;class ut extends lt{constructor(t){super(),this.styles=t,this.behaviors=null,this.behaviors=at(t),this.styleSheets=ht(t),this.styleClass="fast-style-class-"+ ++dt}addStylesTo(t){const e=this.styleSheets,s=this.styleClass;t=this.normalizeTarget(t);for(let i=e.length-1;i>-1;--i){const n=document.createElement("style");n.innerHTML=e[i],n.className=s,t.prepend(n)}super.addStylesTo(t)}removeStylesFrom(t){const e=(t=this.normalizeTarget(t)).querySelectorAll("."+this.styleClass);for(let s=0,i=e.length;s<i;++s)t.removeChild(e[s]);super.removeStylesFrom(t)}isAttachedTo(t){return super.isAttachedTo(this.normalizeTarget(t))}normalizeTarget(t){return t===document?document.body:t}}function ft(t,...e){const s=[];let i="";for(let n=0,o=t.length-1;n<o;++n){i+=t[n];const o=e[n];o instanceof lt||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),lt.create(s)}const pt={toView:t=>t?"true":"false",fromView:t=>null!=t&&"false"!==t&&!1!==t&&0!==t},gt={toView(t){if(null==t)return null;const e=1*t;return isNaN(e)?null:e.toString()},fromView(t){if(null==t)return null;const e=1*t;return isNaN(e)?null:e}};class bt{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=pt)}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 x.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||h.queueUpdate(()=>{s.add(t);const i=t[this.fieldName];switch(e){case"reflect":const e=this.converter;h.setAttribute(t,this.attribute,void 0!==e?e.toView(i):i);break;case"boolean":h.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];"string"==typeof i?s.push(new bt(t,i)):s.push(new bt(t,i.property,i.attribute,i.mode,i.converter))}}return s}}function vt(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 mt={mode:"open"},yt={},Ct=new Map;class xt{constructor(t,e=t.definition){"string"==typeof e&&(e={name:e}),this.type=t,this.name=e.name,this.template=e.template;const s=bt.collect(t,e.attributes),i=new Array(s.length),n={},o={};for(let t=0,e=s.length;t<e;++t){const e=s[t];i[t]=e.attribute,n[e.name]=e,o[e.attribute]=e}this.attributes=s,this.observedAttributes=i,this.propertyLookup=n,this.attributeLookup=o,this.shadowOptions=void 0===e.shadowOptions?mt:null===e.shadowOptions?void 0:Object.assign(Object.assign({},mt),e.shadowOptions),this.elementOptions=void 0===e.elementOptions?yt:Object.assign(Object.assign({},yt),e.elementOptions),this.styles=void 0===e.styles?void 0:Array.isArray(e.styles)?lt.create(e.styles):e.styles instanceof lt?e.styles:lt.create([e.styles])}define(t=customElements){const e=this.type;if(!this.isDefined){const t=this.attributes,s=e.prototype;for(let e=0,i=t.length;e<i;++e)x.defineProperty(s,t[e]);Reflect.defineProperty(e,"observedAttributes",{value:this.observedAttributes,enumerable:!0}),Ct.set(e,this),this.isDefined=!0}return t.get(this.name)||t.define(this.name,e,this.elementOptions),this}static forType(t){return Ct.get(t)}}const wt=new WeakMap,Bt={bubbles:!0,composed:!0};function Tt(t){return t.shadowRoot||wt.get(t)||null}class St extends p{constructor(t,e){super(t),this.boundObservables=null,this.behaviors=null,this.needsInitialization=!0,this._template=null,this._styles=null,this.view=null,this.isConnected=!1,this.element=t,this.definition=e;const s=e.shadowOptions;if(void 0!==s){const e=t.attachShadow(s);"closed"===s.mode&&wt.set(t,e)}const i=x.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,o=t[n];void 0!==o&&(delete t[n],e[n]=o)}}}get template(){return this._template}set template(t){this._template!==t&&(this._template=t,this.needsInitialization||this.renderTemplate(t))}get styles(){return this._styles}set styles(t){this._styles!==t&&(null!==this._styles&&this.removeStyles(this._styles),this._styles=t,this.needsInitialization||null===t||this.addStyles(t))}addStyles(t){const e=Tt(this.element)||this.element.getRootNode();if(t instanceof HTMLStyleElement)e.prepend(t);else if(!t.isAttachedTo(e)){const s=t.behaviors;t.addStylesTo(e),null!==s&&this.addBehaviors(s)}}removeStyles(t){const e=Tt(this.element)||this.element.getRootNode();if(t instanceof HTMLStyleElement)e.removeChild(t);else if(t.isAttachedTo(e)){const s=t.behaviors;t.removeStylesFrom(e),null!==s&&this.removeBehaviors(s)}}addBehaviors(t){const e=this.behaviors||(this.behaviors=new Map),s=t.length,i=[];for(let n=0;n<s;++n){const s=t[n];e.has(s)?e.set(s,e.get(s)+1):(e.set(s,1),i.push(s))}if(this.isConnected){const t=this.element;for(let e=0;e<i.length;++e)i[e].bind(t,V)}}removeBehaviors(t,e=!1){const s=this.behaviors;if(null===s)return;const i=t.length,n=[];for(let o=0;o<i;++o){const i=t[o];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;for(let e=0;e<n.length;++e)n[e].unbind(t)}}onConnectedCallback(){if(this.isConnected)return;const t=this.element;this.needsInitialization?this.finishInitialization():null!==this.view&&this.view.bind(t,V);const e=this.behaviors;if(null!==e)for(let[s]of e)s.bind(t,V);this.isConnected=!0}onDisconnectedCallback(){if(!1===this.isConnected)return;this.isConnected=!1;const t=this.view;null!==t&&t.unbind();const e=this.behaviors;if(null!==e){const t=this.element;for(let[s]of e)s.unbind(t)}}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},Bt),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}const s=this.definition;null===this._template&&(this.element.resolveTemplate?this._template=this.element.resolveTemplate():s.template&&(this._template=s.template||null)),null!==this._template&&this.renderTemplate(this._template),null===this._styles&&(this.element.resolveStyles?this._styles=this.element.resolveStyles():s.styles&&(this._styles=s.styles||null)),null!==this._styles&&this.addStyles(this._styles),this.needsInitialization=!1}renderTemplate(t){const e=this.element,s=Tt(e)||e;null!==this.view?(this.view.dispose(),this.view=null):this.needsInitialization||h.removeChildNodes(s),t&&(this.view=t.render(e,s,e))}static forCustomElement(t){const e=t.$fastController;if(void 0!==e)return e;const s=xt.forType(t.constructor);if(void 0===s)throw new Error("Missing FASTElement definition.");return t.$fastController=new St(t,s)}}function Ot(t){return class extends t{constructor(){super(),St.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)}}}!function(t,e,s,i){var n,o=arguments.length,r=o<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,s,i);else for(var l=t.length-1;l>=0;l--)(n=t[l])&&(r=(o<3?n(r):o>3?n(e,s,r):n(e,s))||r);o>3&&r&&Object.defineProperty(e,s,r)}([S],St.prototype,"isConnected",void 0);const Nt=Object.assign(Ot(HTMLElement),{from:t=>Ot(t),define:(t,e)=>new xt(t,e).define().type});function At(t){return function(e){new xt(e,t).define()}}const kt=Object.freeze([]);function Vt(t,e,s){return{index:t,removed:e,addedCount:s}}function Ft(t,e,s,i,n,o){let r=0,l=0;const h=Math.min(s-e,o-n);if(0===e&&0===n&&(r=function(t,e,s){for(let i=0;i<s;++i)if(t[i]!==e[i])return i;return s}(t,i,h)),s===t.length&&o===i.length&&(l=function(t,e,s){let i=t.length,n=e.length,o=0;for(;o<s&&t[--i]===e[--n];)o++;return o}(t,i,h-r)),n+=r,o-=l,(s-=l)-(e+=r)==0&&o-n==0)return kt;if(e===s){const t=Vt(e,[],0);for(;n<o;)t.removed.push(i[n++]);return[t]}if(n===o)return[Vt(e,[],s-e)];const a=function(t){let e=t.length-1,s=t[0].length-1,i=t[e][s];const n=[];for(;e>0||s>0;){if(0===e){n.push(2),s--;continue}if(0===s){n.push(3),e--;continue}const o=t[e-1][s-1],r=t[e-1][s],l=t[e][s-1];let h;h=r<l?r<o?r:o:l<o?l:o,h===o?(o===i?n.push(0):(n.push(1),i=o),e--,s--):h===r?(n.push(3),e--,i=r):(n.push(2),s--,i=l)}return n.reverse(),n}(function(t,e,s,i,n,o){const r=o-n+1,l=s-e+1,h=new Array(r);let a,c;for(let t=0;t<r;++t)h[t]=new Array(l),h[t][0]=t;for(let t=0;t<l;++t)h[0][t]=t;for(let s=1;s<r;++s)for(let o=1;o<l;++o)t[e+o-1]===i[n+s-1]?h[s][o]=h[s-1][o-1]:(a=h[s-1][o]+1,c=h[s][o-1]+1,h[s][o]=a<c?a:c);return h}(t,e,s,i,n,o)),c=[];let d=void 0,u=e,f=n;for(let t=0;t<a.length;++t)switch(a[t]){case 0:void 0!==d&&(c.push(d),d=void 0),u++,f++;break;case 1:void 0===d&&(d=Vt(u,[],0)),d.addedCount++,u++,d.removed.push(i[f]),f++;break;case 2:void 0===d&&(d=Vt(u,[],0)),d.addedCount++,u++;break;case 3:void 0===d&&(d=Vt(u,[],0)),d.removed.push(i[f]),f++}return void 0!==d&&c.push(d),c}const Mt=Array.prototype.push;function $t(t,e,s,i){const n=Vt(e,s,i);let o=!1,r=0;for(let e=0;e<t.length;e++){const s=t[e];if(s.index+=r,o)continue;const i=(l=n.index,h=n.index+n.removed.length,a=s.index,c=s.index+s.addedCount,h<a||c<l?-1:h===a||c===l?0:l<a?h<c?h-a:c-a:c<h?c-l:h-l);if(i>=0){t.splice(e,1),e--,r-=s.addedCount-s.removed.length,n.addedCount+=s.addedCount-i;const l=n.removed.length+s.removed.length-i;if(n.addedCount||l){let t=s.removed;if(n.index<s.index){const e=n.removed.slice(0,s.index-n.index);Mt.apply(e,t),t=e}if(n.index+n.removed.length>s.index+s.addedCount){const e=n.removed.slice(s.index+s.addedCount-n.index);Mt.apply(t,e)}n.removed=t,s.index<n.index&&(n.index=s.index)}else o=!0}else if(n.index<s.index){o=!0,t.splice(e,0,n),e++;const i=n.addedCount-n.removed.length;s.index+=i,r+=i}}var l,h,a,c;o||t.push(n)}function It(t,e){let s=[];const i=function(t){const e=[];for(let s=0,i=t.length;s<i;s++){const i=t[s];$t(e,i.index,i.removed,i.addedCount)}return e}(e);for(let e=0,n=i.length;e<n;++e){const n=i[e];1!==n.addedCount||1!==n.removed.length?s=s.concat(Ft(t,n.index,n.index+n.addedCount,n.removed,0,n.removed.length)):n.removed[0]!==t[n.index]&&s.push(n)}return s}let Et=!1;function Lt(t,e){let s=t.index;const i=e.length;return s>i?s=i-t.addedCount:s<0&&(s=i+t.removed.length+s-t.addedCount),s<0&&(s=0),t.index=s,t}class Pt extends f{constructor(t){super(t),this.oldCollection=void 0,this.splices=void 0,this.needsQueue=!0,this.call=this.flush,t.$fastController=this}addSplice(t){void 0===this.splices?this.splices=[t]:this.splices.push(t),this.needsQueue&&(this.needsQueue=!1,h.queueUpdate(this))}reset(t){this.oldCollection=t,this.needsQueue&&(this.needsQueue=!1,h.queueUpdate(this))}flush(){const t=this.splices,e=this.oldCollection;if(void 0===t&&void 0===e)return;this.needsQueue=!0,this.splices=void 0,this.oldCollection=void 0;const s=void 0===e?It(this.source,t):Ft(this.source,0,this.source.length,e,0,e.length);this.notify(s)}}function _t(){if(Et)return;Et=!0,x.setArrayObserverFactory(t=>new Pt(t));const t=Array.prototype,e=t.pop,s=t.push,i=t.reverse,n=t.shift,o=t.sort,r=t.splice,l=t.unshift;t.pop=function(){const t=this.length>0,s=e.apply(this,arguments),i=this.$fastController;return void 0!==i&&t&&i.addSplice(Vt(this.length,[s],0)),s},t.push=function(){const t=s.apply(this,arguments),e=this.$fastController;return void 0!==e&&e.addSplice(Lt(Vt(this.length-arguments.length,[],arguments.length),this)),t},t.reverse=function(){let t;const e=this.$fastController;void 0!==e&&(e.flush(),t=this.slice());const s=i.apply(this,arguments);return void 0!==e&&e.reset(t),s},t.shift=function(){const t=this.length>0,e=n.apply(this,arguments),s=this.$fastController;return void 0!==s&&t&&s.addSplice(Vt(0,[e],0)),e},t.sort=function(){let t;const e=this.$fastController;void 0!==e&&(e.flush(),t=this.slice());const s=o.apply(this,arguments);return void 0!==e&&e.reset(t),s},t.splice=function(){const t=r.apply(this,arguments),e=this.$fastController;return void 0!==e&&e.addSplice(Lt(Vt(+arguments[0],t,arguments.length>2?arguments.length-2:0),this)),t},t.unshift=function(){const t=l.apply(this,arguments),e=this.$fastController;return void 0!==e&&e.addSplice(Lt(Vt(0,[],arguments.length),this)),t}}class jt{constructor(t,e){this.target=t,this.propertyName=e}bind(t){t[this.propertyName]=this.target}unbind(){}}function Rt(t){return new I("fast-ref",jt,t)}function zt(t,e){const s="function"==typeof e?e:()=>e;return(e,i)=>t(e,i)?s(e,i):null}const Ht=Object.freeze({positioning:!1});function Qt(t,e,s,i){t.bind(e[s],i)}function Ut(t,e,s,i){const n=Object.create(i);n.index=s,n.length=e.length,t.bind(e[s],n)}class qt{constructor(t,e,s,i,n,o){this.location=t,this.itemsBinding=e,this.templateBinding=i,this.options=o,this.source=null,this.views=[],this.items=null,this.itemsObserver=null,this.originalContext=void 0,this.childContext=void 0,this.bindView=Qt,this.itemsBindingObserver=x.binding(e,this,s),this.templateBindingObserver=x.binding(i,this,n),o.positioning&&(this.bindView=Ut)}bind(t,e){this.source=t,this.originalContext=e,this.childContext=Object.create(e),this.childContext.parent=t,this.childContext.parentContext=this.originalContext,this.items=this.itemsBindingObserver.observe(t,this.originalContext),this.template=this.templateBindingObserver.observe(t,this.originalContext),this.observeItems(!0),this.refreshAllViews()}unbind(){this.source=null,this.items=null,null!==this.itemsObserver&&this.itemsObserver.unsubscribe(this),this.unbindAllViews(),this.itemsBindingObserver.disconnect(),this.templateBindingObserver.disconnect()}handleChange(t,e){t===this.itemsBinding?(this.items=this.itemsBindingObserver.observe(this.source,this.originalContext),this.observeItems(),this.refreshAllViews()):t===this.templateBinding?(this.template=this.templateBindingObserver.observe(this.source,this.originalContext),this.refreshAllViews(!0)):this.updateViews(e)}observeItems(t=!1){if(!this.items)return void(this.items=kt);const e=this.itemsObserver,s=this.itemsObserver=x.getNotifier(this.items),i=e!==s;i&&null!==e&&e.unsubscribe(this),(i||t)&&s.subscribe(this)}updateViews(t){const e=this.childContext,s=this.views,i=[],n=this.bindView;let o=0;for(let e=0,n=t.length;e<n;++e){const n=t[e],r=n.removed;i.push(...s.splice(n.index+o,r.length)),o-=n.addedCount}const r=this.items,l=this.template;for(let o=0,h=t.length;o<h;++o){const h=t[o];let a=h.index;const c=a+h.addedCount;for(;a<c;++a){const t=s[a],o=t?t.firstChild:this.location,h=i.length>0?i.shift():l.create();s.splice(a,0,h),n(h,r,a,e),h.insertBefore(o)}}for(let t=0,e=i.length;t<e;++t)i[t].dispose();if(this.options.positioning)for(let t=0,e=s.length;t<e;++t){const i=s[t].context;i.length=e,i.index=t}}refreshAllViews(t=!1){const e=this.items,s=this.childContext,i=this.template,n=this.location,o=this.bindView;let r=e.length,l=this.views,h=l.length;if((0===r||t)&&(st.disposeContiguousBatch(l),h=0),0===h){this.views=l=new Array(r);for(let t=0;t<r;++t){const r=i.create();o(r,e,t,s),l[t]=r,r.insertBefore(n)}}else{let t=0;for(;t<r;++t)if(t<h){o(l[t],e,t,s)}else{const r=i.create();o(r,e,t,s),l.push(r),r.insertBefore(n)}const a=l.splice(t,h-t);for(t=0,r=a.length;t<r;++t)a[t].dispose()}}unbindAllViews(){const t=this.views;for(let e=0,s=t.length;e<s;++e)t[e].unbind()}}class Wt extends M{constructor(t,e,s){super(),this.itemsBinding=t,this.templateBinding=e,this.options=s,this.createPlaceholder=h.createBlockPlaceholder,_t(),this.isItemsBindingVolatile=x.isVolatileBinding(t),this.isTemplateBindingVolatile=x.isVolatileBinding(e)}createBehavior(t){return new qt(t,this.itemsBinding,this.isItemsBindingVolatile,this.templateBinding,this.isTemplateBindingVolatile,this.options)}}function Dt(t,e,s=Ht){return new Wt(t,"function"==typeof e?e:()=>e,s)}function Kt(t){return t?function(e,s,i){return 1===e.nodeType&&e.matches(t)}:function(t,e,s){return 1===t.nodeType}}class Gt{constructor(t,e){this.target=t,this.options=e,this.source=null}bind(t){const e=this.options.property;this.shouldUpdate=x.getAccessors(t).some(t=>t.name===e),this.source=t,this.updateTarget(this.computeNodes()),this.shouldUpdate&&this.observe()}unbind(){this.updateTarget(kt),this.source=null,this.shouldUpdate&&this.disconnect()}handleEvent(){this.updateTarget(this.computeNodes())}computeNodes(){let t=this.getNodes();return void 0!==this.options.filter&&(t=t.filter(this.options.filter)),t}updateTarget(t){this.source[this.options.property]=t}}class Jt extends Gt{constructor(t,e){super(t,e)}observe(){this.target.addEventListener("slotchange",this)}disconnect(){this.target.removeEventListener("slotchange",this)}getNodes(){return this.target.assignedNodes(this.options)}}function Xt(t){return"string"==typeof t&&(t={property:t}),new I("fast-slotted",Jt,t)}class Yt extends Gt{constructor(t,e){super(t,e),this.observer=null,e.childList=!0}observe(){null===this.observer&&(this.observer=new MutationObserver(this.handleEvent.bind(this))),this.observer.observe(this.target,this.options)}disconnect(){this.observer.disconnect()}getNodes(){return"subtree"in this.options?Array.from(this.target.querySelectorAll(this.options.selector)):Array.from(this.target.childNodes)}}function Zt(t){return"string"==typeof t&&(t={property:t}),new I("fast-children",Yt,t)}export{t as $global,I as AttachedBehaviorDirective,bt as AttributeDefinition,W as BindingBehavior,q as BindingDirective,Yt as ChildrenBehavior,St as Controller,h as DOM,M as Directive,lt as ElementStyles,k as ExecutionContext,Nt as FASTElement,xt as FASTElementDefinition,st as HTMLView,$ as NamedTargetDirective,x as Observable,p as PropertyChangeNotifier,jt as RefBehavior,qt as RepeatBehavior,Wt as RepeatDirective,Jt as SlottedBehavior,f as SubscriberSet,it as ViewTemplate,vt as attr,pt as booleanConverter,Zt as children,tt as compileTemplate,ft as css,At as customElement,V as defaultExecutionContext,Kt as elements,kt as emptyArray,_t as enableArrayObservation,ot as html,gt as nullableNumberConverter,S as observable,Rt as ref,Dt as repeat,A as setCurrentEvent,Xt as slotted,O as volatile,zt as when}; |
@@ -194,3 +194,3 @@ ## API Report File for "@microsoft/fast-element" | ||
onDisconnectedCallback(): void; | ||
removeBehaviors(behaviors: ReadonlyArray<Behavior>): void; | ||
removeBehaviors(behaviors: ReadonlyArray<Behavior>, force?: boolean): void; | ||
removeStyles(styles: ElementStyles | HTMLStyleElement): void; | ||
@@ -250,3 +250,3 @@ get styles(): ElementStyles | null; | ||
// @internal (undocumented) | ||
abstract addStylesTo(target: StyleTarget): void; | ||
addStylesTo(target: StyleTarget): void; | ||
// @internal (undocumented) | ||
@@ -257,4 +257,6 @@ abstract readonly behaviors: ReadonlyArray<Behavior> | null; | ||
// @internal (undocumented) | ||
abstract removeStylesFrom(target: StyleTarget): void; | ||
isAttachedTo(target: StyleTarget): boolean; | ||
// @internal (undocumented) | ||
removeStylesFrom(target: StyleTarget): void; | ||
// @internal (undocumented) | ||
abstract readonly styles: ReadonlyArray<ComposableStyles>; | ||
@@ -433,3 +435,3 @@ withBehaviors(...behaviors: Behavior[]): this; | ||
// @public | ||
export function repeat<TSource = any, TItem = any>(itemsBinding: Binding<TSource, TItem[]>, templateOrTemplateBinding: SyntheticViewTemplate | Binding<TSource, SyntheticViewTemplate>, options?: RepeatOptions): CaptureType<TSource>; | ||
export function repeat<TSource = any, TItem = any>(itemsBinding: Binding<TSource, readonly TItem[]>, templateOrTemplateBinding: SyntheticViewTemplate | Binding<TSource, SyntheticViewTemplate>, options?: RepeatOptions): CaptureType<TSource>; | ||
@@ -436,0 +438,0 @@ // @public |
@@ -5,3 +5,3 @@ { | ||
"sideEffects": false, | ||
"version": "0.21.1", | ||
"version": "0.22.0", | ||
"author": { | ||
@@ -89,3 +89,3 @@ "name": "Microsoft", | ||
}, | ||
"gitHead": "8327a90a04e2957a524257c44f4b160f6f3408c0" | ||
"gitHead": "51b89a2cd29743331d96aaf0268abdb84fe96a79" | ||
} |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
882729
20919