@sbb-esta/lyne-elements-experimental-dev 5.7.0-dev.1788547704 → 5.7.0-dev.1788573444
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/autocomplete-grid.pure.js +1 -1
- package/core.js +1 -1
- package/easter-egg.pure.js +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{miniButtonStyle as e}from"@sbb-esta/lyne-elements/button.pure.js";import{SbbActionBaseElement as t,SbbDisabledMixin as n,SbbElement as r,SbbNegativeMixin as i,SbbPropertyWatcherController as a,getNextElementIndex as o,isEventPrevented as s,isSafari as c,setAriaComboBoxAttributes as l,ɵstateController as u}from"@sbb-esta/lyne-elements/core.js";import{SbbIconNameMixin as d}from"@sbb-esta/lyne-elements/icon.pure.js";import{html as f,isServer as p,unsafeCSS as m}from"lit";import{SbbOptgroupBaseElement as h,SbbOptionBaseElement as g}from"@sbb-esta/lyne-elements/option.pure.js";import{SbbAutocompleteBaseElement as _}from"@sbb-esta/lyne-elements/autocomplete.pure.js";let v=0;var y=class extends n(i(d(t))){static{this.elementName=`sbb-autocomplete-grid-button`}static{this.role=`button`}static{this.styles=[e]}get option(){return this.closest(`sbb-autocomplete-grid-row`)?.querySelector(`sbb-autocomplete-grid-option`)||null}get optgroup(){return this.closest(`sbb-autocomplete-grid-optgroup`)}constructor(){super(),this._handleButtonClick=async e=>{await s(e)
|
|
1
|
+
import{miniButtonStyle as e}from"@sbb-esta/lyne-elements/button.pure.js";import{SbbActionBaseElement as t,SbbDisabledMixin as n,SbbElement as r,SbbNegativeMixin as i,SbbPropertyWatcherController as a,getNextElementIndex as o,isEventPrevented as s,isSafari as c,setAriaComboBoxAttributes as l,ɵstateController as u}from"@sbb-esta/lyne-elements/core.js";import{SbbIconNameMixin as d}from"@sbb-esta/lyne-elements/icon.pure.js";import{html as f,isServer as p,unsafeCSS as m}from"lit";import{SbbOptgroupBaseElement as h,SbbOptionBaseElement as g}from"@sbb-esta/lyne-elements/option.pure.js";import{SbbAutocompleteBaseElement as _}from"@sbb-esta/lyne-elements/autocomplete.pure.js";let v=0;var y=class extends n(i(d(t))){static{this.elementName=`sbb-autocomplete-grid-button`}static{this.role=`button`}static{this.styles=[e]}get option(){return this.closest(`sbb-autocomplete-grid-row`)?.querySelector(`sbb-autocomplete-grid-option`)||null}get optgroup(){return this.closest(`sbb-autocomplete-grid-optgroup`)}constructor(){super(),this._handleButtonClick=async e=>{!await s(e)&&this.closest(`form`)},this.internals.states.add(`button`),p||(this.setupBaseEventHandlers(),this.addEventListener(`click`,this._handleButtonClick),this.addController(new a(this,()=>this.closest(`sbb-autocomplete-grid-optgroup`),{disabled:()=>this._updateInternals()})))}isDisabledExternally(){return this.optgroup?.disabled??!1}renderTemplate(){return super.renderIconSlot()}connectedCallback(){super.connectedCallback(),this.id||=`sbb-autocomplete-grid-button-${++v}`,this.removeAttribute(`tabindex`)}willUpdate(e){super.willUpdate(e),e.has(`disabled`)&&this._updateInternals()}_updateInternals(){this.disabled||this.optgroup?.disabled?(this.internals.states.add(`disabled`),this.internals.ariaDisabled=`true`):(this.internals.states.delete(`disabled`),this.internals.ariaDisabled=null)}},b=`:host{--sbb-autocomplete-grid-cell-gap:var(--sbb-spacing-fixed-6x);display:block}.sbb-autocomplete-grid-cell{column-gap:var(--sbb-autocomplete-grid-cell-gap);display:flex}
|
|
2
2
|
`,x=class extends r{static{this.elementName=`sbb-autocomplete-grid-cell`}static{this.role=`gridcell`}static{this.styles=[m(b)]}render(){return f`
|
|
3
3
|
<span class="sbb-autocomplete-grid-cell">
|
|
4
4
|
<slot></slot>
|
package/core.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i18nDurationDay as e,i18nDurationHour as t,i18nDurationMinute as n,i18nWalkingDistanceArrival as r,i18nWalkingDistanceDeparture as i}from"@sbb-esta/lyne-elements/core.js";import{html as a,nothing as o}from"lit";import"@sbb-esta/lyne-elements/icon.pure.js";const s=6e4,c=36e5,l=Symbol.for(`constructDateFrom`);function u(e,t){return typeof e==`function`?e(t):e&&typeof e==`object`&&l in e?e[l](t):e instanceof Date?new e.constructor(t):new Date(t)}function d(e,t){return u(t||e,e)}function f(e,t,n){let r=d(e,n?.in);return isNaN(t)?u(n?.in||e,NaN):(t&&r.setDate(r.getDate()+t),r)}function p(e,t,n){return u(n?.in||e,+d(e)+t)}function m(e,t,n){return p(e,t*c,n)}function h(e){let t=d(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-n}function g(e,...t){let n=u.bind(null,e||t.find(e=>typeof e==`object`));return t.map(n)}function _(e,t){let n=d(e,t?.in);return n.setHours(0,0,0,0),n}function v(e,t,n){let[r,i]=g(n?.in,e,t),a=_(r),o=_(i),s=+a-h(a),c=+o-h(o);return Math.round((s-c)/864e5)}function y(e,t,n){let r=d(e,n?.in);return r.setTime(r.getTime()+t*s),r}function b(e){return e instanceof Date||typeof e==`object`&&Object.prototype.toString.call(e)===`[object Date]`}function x(e){return!(!b(e)&&typeof e!=`number`||isNaN(+d(e)))}function S(e,t,n){let[r,i]=g(n?.in,e,t),a=C(r,i),o=Math.abs(v(r,i));r.setDate(r.getDate()-a*o);let s=a*(o-Number(C(r,i)===-a));return s===0?0:s}function C(e,t){let n=e.getFullYear()-t.getFullYear()||e.getMonth()-t.getMonth()||e.getDate()-t.getDate()||e.getHours()-t.getHours()||e.getMinutes()-t.getMinutes()||e.getSeconds()-t.getSeconds()||e.getMilliseconds()-t.getMilliseconds();return n<0?-1:n>0?1:n}function w(e){return t=>{let n=(e?Math[e]:Math.trunc)(t);return n===0?0:n}}function T(e,t,n){let[r,i]=g(n?.in,e,t),a=(+r-i)/c;return w(n?.roundingMethod)(a)}function E(e,t){return+d(e)-d(t)}function D(e,t,n){let r=E(e,t)/s;return w(n?.roundingMethod)(r)}function O(e,t,n){return f(e,-t,n)}function k(e,t){let n=()=>u(t?.in,NaN),r=t?.additionalDigits??2,i=ne(e),a;if(i.date){let e=re(i.date,r);a=M(e.restDateString,e.year)}if(!a||isNaN(+a))return n();let o=+a,s=0,c;if(i.time&&(s=P(i.time),isNaN(s)))return n();if(i.timezone){if(c=I(i.timezone),isNaN(c))return n()}else{let e=new Date(o+s),n=d(0,t?.in);return n.setFullYear(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()),n.setHours(e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()),n}return d(o+s+c,t?.in)}const A={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},j=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,ee=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,te=/^([+-])(\d{2})(?::?(\d{2}))?$/;function ne(e){let t={},n=e.split(A.dateTimeDelimiter),r;if(n.length>2)return t;if(/:/.test(n[0])?r=n[0]:(t.date=n[0],r=n[1],A.timeZoneDelimiter.test(t.date)&&(t.date=e.split(A.timeZoneDelimiter)[0],r=e.substr(t.date.length,e.length))),r){let e=A.timezone.exec(r);e?(t.time=r.replace(e[1],``),t.timezone=e[1]):t.time=r}return t}function re(e,t){let n=RegExp(`^(?:(\\d{4}|[+-]\\d{`+(4+t)+`})|(\\d{2}|[+-]\\d{`+(2+t)+`})$)`),r=e.match(n);if(!r)return{year:NaN,restDateString:``};let i=r[1]?parseInt(r[1]):null,a=r[2]?parseInt(r[2]):null;return{year:a===null?i:a*100,restDateString:e.slice((r[1]||r[2]).length)}}function M(e,t){if(t===null)return new Date(NaN);let n=e.match(j);if(!n)return new Date(NaN);let r=!!n[4],i=N(n[1]),a=N(n[2])-1,o=N(n[3]),s=N(n[4]),c=N(n[5])-1;if(r)return H(t,s,c)?L(t,s,c):new Date(NaN);{let e=new Date(0);return!B(t,a,o)||!V(t,i)?new Date(NaN):(e.setUTCFullYear(t,a,Math.max(i,o)),e)}}function N(e){return e?parseInt(e):1}function P(e){let t=e.match(ee);if(!t)return NaN;let n=F(t[1]),r=F(t[2]),i=F(t[3]);return U(n,r,i)?n*c+r*s+i*1e3:NaN}function F(e){return e&&parseFloat(e.replace(`,`,`.`))||0}function I(e){if(e===`Z`)return 0;let t=e.match(te);if(!t)return 0;let n=t[1]===`+`?-1:1,r=parseInt(t[2]),i=t[3]&&parseInt(t[3])||0;return W(r,i)?n*(r*c+i*s):NaN}function L(e,t,n){let r=new Date(0);r.setUTCFullYear(e,0,4);let i=r.getUTCDay()||7,a=(t-1)*7+n+1-i;return r.setUTCDate(r.getUTCDate()+a),r}const R=[31,null,31,30,31,30,31,31,30,31,30,31];function z(e){return e%400==0||e%4==0&&e%100!=0}function B(e,t,n){return t>=0&&t<=11&&n>=1&&n<=(R[t]||(z(e)?29:28))}function V(e,t){return t>=1&&t<=(z(e)?366:365)}function H(e,t,n){return t>=1&&t<=53&&n>=0&&n<=6}function U(e,t,n){return e===24?t===0&&n===0:n>=0&&n<60&&t>=0&&t<60&&e>=0&&e<25}function W(e,t){return t>=0&&t<=59}function G(e,t,n){return m(e,-t,n)}function K(e){if(
|
|
1
|
+
import{i18nDurationDay as e,i18nDurationHour as t,i18nDurationMinute as n,i18nWalkingDistanceArrival as r,i18nWalkingDistanceDeparture as i}from"@sbb-esta/lyne-elements/core.js";import{html as a,nothing as o}from"lit";import"@sbb-esta/lyne-elements/icon.pure.js";const s=6e4,c=36e5,l=Symbol.for(`constructDateFrom`);function u(e,t){return typeof e==`function`?e(t):e&&typeof e==`object`&&l in e?e[l](t):e instanceof Date?new e.constructor(t):new Date(t)}function d(e,t){return u(t||e,e)}function f(e,t,n){let r=d(e,n?.in);return isNaN(t)?u(n?.in||e,NaN):(t&&r.setDate(r.getDate()+t),r)}function p(e,t,n){return u(n?.in||e,+d(e)+t)}function m(e,t,n){return p(e,t*c,n)}function h(e){let t=d(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-n}function g(e,...t){let n=u.bind(null,e||t.find(e=>typeof e==`object`));return t.map(n)}function _(e,t){let n=d(e,t?.in);return n.setHours(0,0,0,0),n}function v(e,t,n){let[r,i]=g(n?.in,e,t),a=_(r),o=_(i),s=+a-h(a),c=+o-h(o);return Math.round((s-c)/864e5)}function y(e,t,n){let r=d(e,n?.in);return r.setTime(r.getTime()+t*s),r}function b(e){return e instanceof Date||typeof e==`object`&&Object.prototype.toString.call(e)===`[object Date]`}function x(e){return!(!b(e)&&typeof e!=`number`||isNaN(+d(e)))}function S(e,t,n){let[r,i]=g(n?.in,e,t),a=C(r,i),o=Math.abs(v(r,i));r.setDate(r.getDate()-a*o);let s=a*(o-Number(C(r,i)===-a));return s===0?0:s}function C(e,t){let n=e.getFullYear()-t.getFullYear()||e.getMonth()-t.getMonth()||e.getDate()-t.getDate()||e.getHours()-t.getHours()||e.getMinutes()-t.getMinutes()||e.getSeconds()-t.getSeconds()||e.getMilliseconds()-t.getMilliseconds();return n<0?-1:n>0?1:n}function w(e){return t=>{let n=(e?Math[e]:Math.trunc)(t);return n===0?0:n}}function T(e,t,n){let[r,i]=g(n?.in,e,t),a=(+r-i)/c;return w(n?.roundingMethod)(a)}function E(e,t){return+d(e)-d(t)}function D(e,t,n){let r=E(e,t)/s;return w(n?.roundingMethod)(r)}function O(e,t,n){return f(e,-t,n)}function k(e,t){let n=()=>u(t?.in,NaN),r=t?.additionalDigits??2,i=ne(e),a;if(i.date){let e=re(i.date,r);a=M(e.restDateString,e.year)}if(!a||isNaN(+a))return n();let o=+a,s=0,c;if(i.time&&(s=P(i.time),isNaN(s)))return n();if(i.timezone){if(c=I(i.timezone),isNaN(c))return n()}else{let e=new Date(o+s),n=d(0,t?.in);return n.setFullYear(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()),n.setHours(e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()),n}return d(o+s+c,t?.in)}const A={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},j=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,ee=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,te=/^([+-])(\d{2})(?::?(\d{2}))?$/;function ne(e){let t={},n=e.split(A.dateTimeDelimiter),r;if(n.length>2)return t;if(/:/.test(n[0])?r=n[0]:(t.date=n[0],r=n[1],A.timeZoneDelimiter.test(t.date)&&(t.date=e.split(A.timeZoneDelimiter)[0],r=e.substr(t.date.length,e.length))),r){let e=A.timezone.exec(r);e?(t.time=r.replace(e[1],``),t.timezone=e[1]):t.time=r}return t}function re(e,t){let n=RegExp(`^(?:(\\d{4}|[+-]\\d{`+(4+t)+`})|(\\d{2}|[+-]\\d{`+(2+t)+`})$)`),r=e.match(n);if(!r)return{year:NaN,restDateString:``};let i=r[1]?parseInt(r[1]):null,a=r[2]?parseInt(r[2]):null;return{year:a===null?i:a*100,restDateString:e.slice((r[1]||r[2]).length)}}function M(e,t){if(t===null)return new Date(NaN);let n=e.match(j);if(!n)return new Date(NaN);let r=!!n[4],i=N(n[1]),a=N(n[2])-1,o=N(n[3]),s=N(n[4]),c=N(n[5])-1;if(r)return H(t,s,c)?L(t,s,c):new Date(NaN);{let e=new Date(0);return!B(t,a,o)||!V(t,i)?new Date(NaN):(e.setUTCFullYear(t,a,Math.max(i,o)),e)}}function N(e){return e?parseInt(e):1}function P(e){let t=e.match(ee);if(!t)return NaN;let n=F(t[1]),r=F(t[2]),i=F(t[3]);return U(n,r,i)?n*c+r*s+i*1e3:NaN}function F(e){return e&&parseFloat(e.replace(`,`,`.`))||0}function I(e){if(e===`Z`)return 0;let t=e.match(te);if(!t)return 0;let n=t[1]===`+`?-1:1,r=parseInt(t[2]),i=t[3]&&parseInt(t[3])||0;return W(r,i)?n*(r*c+i*s):NaN}function L(e,t,n){let r=new Date(0);r.setUTCFullYear(e,0,4);let i=r.getUTCDay()||7,a=(t-1)*7+n+1-i;return r.setUTCDate(r.getUTCDate()+a),r}const R=[31,null,31,30,31,30,31,31,30,31,30,31];function z(e){return e%400==0||e%4==0&&e%100!=0}function B(e,t,n){return t>=0&&t<=11&&n>=1&&n<=(R[t]||(z(e)?29:28))}function V(e,t){return t>=1&&t<=(z(e)?366:365)}function H(e,t,n){return t>=1&&t<=53&&n>=0&&n<=6}function U(e,t,n){return e===24?t===0&&n===0:n>=0&&n<60&&t>=0&&t<60&&e>=0&&e<25}function W(e,t){return t>=0&&t<=59}function G(e,t,n){return m(e,-t,n)}function K(e){if(e&&x(k(e))){if(e.includes(`Z`))return new Date(e.replace(`Z`,``));if(e.includes(`T`)){let t=e.split(`T`);if(t[1]&&(t[1].includes(`+`)||t[1].includes(`-`)))return new Date(`${t[0]}T${t[1].split(/[+-]/)[0]}`)}return new Date(e)}}const q=(r,i)=>{let a=[],o=[],s=y(0,r),c=S(s,0);c>0&&(a.push(`${c} d`),i&&o.push(`${c} ${c>1?e.multiple.long[i]:e.single.long[i]}`),s=O(s,c));let l=T(s,0);l>0&&(a.push(`${l} h`),i&&o.push(`${l} ${l>1?t.multiple.long[i]:t.single.long[i]}`),s=G(s,l));let u=D(s,0);return u>0&&(a.push(`${u} min`),i&&o.push(`${u} ${u>1?n.multiple.long[i]:n.single.long[i]}`)),{short:a.join(` `),long:o.join(` `)}},J=e=>e?.__typename===`PTRideLeg`,Y=e=>e?.__typename===`PTConnectionLeg`,X=e=>{let t=e?.text?.template&&e.text.template.indexOf(`(`)+1,n=e?.text?.template?.substring(t||0,e?.text?.template.indexOf(`)`));return{duration:n&&+n.substring(0,n.length-1)||0,text:e?.text?.template?.split(`(`)[0]||``}};function Z(e,t){let n=Y(e)?e:null,r=n?n?.notices?.filter(e=>t.includes(e.name))[0]:null;return r?{duration:n?.duration||0,text:r?.text?.template||``,icon:`walk-small`}:null}function ie(e,t,n,r){let a=J(e)?e?.serviceJourney?.notices?.filter(e=>[`CI`].includes(e.name))[0]:null,o=a&&X(a);return a?{duration:(o?.duration||0)+(t||0),text:n?i[r]:o?.text||``,icon:n?`wheelchair-small`:`sa-${a?.name?.toLowerCase()}`}:null}function ae(e,t,n,i){let a=J(e)?e?.serviceJourney?.notices?.filter(e=>[`CO`].includes(e.name))[0]:null,o=a&&X(a);return a?{duration:(o?.duration||0)+(t||0),text:n?r[i]:o?.text||``,icon:n?`wheelchair-small`:`sa-${a?.name?.toLowerCase()}`}:null}function Q(e,t,n,s,c){return a`
|
|
2
2
|
<span class="sbb-pearl-chain__time-transfer sbb-pearl-chain__time-transfer--${t}-${c}">
|
|
3
3
|
<sbb-icon name=${t}></sbb-icon>
|
|
4
4
|
<time datetime=${e+`M`}>
|
package/easter-egg.pure.js
CHANGED
|
@@ -528,7 +528,7 @@ import{__esDecorate as e,__runInitializers as t}from"tslib";import{SbbButtonElem
|
|
|
528
528
|
</filter>
|
|
529
529
|
</defs>
|
|
530
530
|
</svg>
|
|
531
|
-
`;const H=e=>`data:image/svg+xml;utf8,${encodeURIComponent(e)}`,U=H(y),W=[O,k,P,F,I,L,R,z,B,V,A,j,M,N].map(H),G=[b,x,S,C,w,T,E,D].map(H),K=Object.freeze({HORIZONTAL:0,VERTICAL:1,SOUTHWEST:2,NORTHWEST:3,NORTHEAST:4,SOUTHEAST:5});let q=(()=>{let y=a,b,x=[],S=[],C,w=[],T=[],E,D=[],O=[],k,A=[],j=[];return class extends y{static{let t=typeof Symbol==`function`&&Symbol.metadata?Object.create(y[Symbol.metadata]??null):void 0;b=[d()],C=[d()],E=[d()],k=[d()],e(this,null,b,{kind:`accessor`,name:`_score`,static:!1,private:!1,access:{has:e=>`_score`in e,get:e=>e._score,set:(e,t)=>{e._score=t}},metadata:t},x,S),e(this,null,C,{kind:`accessor`,name:`_highScore`,static:!1,private:!1,access:{has:e=>`_highScore`in e,get:e=>e._highScore,set:(e,t)=>{e._highScore=t}},metadata:t},w,T),e(this,null,E,{kind:`accessor`,name:`_gameOver`,static:!1,private:!1,access:{has:e=>`_gameOver`in e,get:e=>e._gameOver,set:(e,t)=>{e._gameOver=t}},metadata:t},D,O),e(this,null,k,{kind:`accessor`,name:`_started`,static:!1,private:!1,access:{has:e=>`_started`in e,get:e=>e._started,set:(e,t)=>{e._started=t}},metadata:t},A,j),t&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:t})}static{this.elementName=`sbb-easter-egg`}static{this.elementDependencies=[r,o,i,n]}static{this.styles=[u(p)]}get score(){return this._score}get highScore(){return this._highScore}#e;get _score(){return this.#e}set _score(e){this.#e=e}#t;get _highScore(){return this.#t}set _highScore(e){this.#t=e}#n;get _gameOver(){return this.#n}set _gameOver(e){this.#n=e}#r;get _started(){return this.#r}set _started(e){this.#r=e}constructor(){super(),this.#e=t(this,x,0),this.#t=(t(this,S),t(this,w,0)),this.#n=(t(this,T),t(this,D,!1)),this.#r=(t(this,O),t(this,A,!1)),this._canvas=(t(this,j),null),this._ctx=null,this._cellSize=20,this._snake=[],this._currentDir={x:0,y:0},this._nextDir={x:0,y:0},this._snakePresence=new Uint8Array(256),this._foodPixel=[5,5],this._currentFoodIndex=0,this._currentSpeed=230,this._timerId=null,this._touchStart={x:0,y:0},this._touchEnd={x:0,y:0},this._trainImages=[],this._foodImages=[],this._gridImage=null,this._imagesReady=!1,this._openAbortController=null,this._prevTailCell=null,this._ateFoodThisFrame=!1,this._needsFullRedraw=!0,this._handleStartClick=()=>{c||(this._resetGame(),this._started=!0)},this.backdropAction=`none`,this.accessibilityLabel=m[this.language.current],this.language.withHandler(()=>{this.accessibilityLabel=m[this.language.current]})}disconnectedCallback(){super.disconnectedCallback(),this._stopGame(),this._openAbortController?.abort(),this._openAbortController=null}handleOpening(){super.handleOpening(),!c&&(this._attachInputListeners(),this._imagesReady||this._initGame().then(()=>this._resetGame(!0)),this._focusStartButton())}handleClosing(){super.handleClosing(),this._highScore=0,this._resetGame(!0),this._openAbortController?.abort(),this._openAbortController=null}async _initGame(){this._cellSize=Math.min(20,Math.max(8,Math.floor(window.innerWidth/16)-1));let e=this._canvas;e&&(e.width=16*this._cellSize,e.height=16*this._cellSize,this._ctx=e.getContext(`2d`),this._gridImage=await this._loadImage(U),this._trainImages=await Promise.all(W.map(e=>this._loadImage(e))),this._foodImages=await Promise.all(G.map(e=>this._loadImage(e))),this._imagesReady=!0)}async _loadImage(e){let t=new Image;return t.src=e,t.decode().then(()=>t).catch(()=>t)}_attachInputListeners(){this._openAbortController?.abort(),this._openAbortController=new AbortController;let e=this._openAbortController.signal;document.addEventListener(`keydown`,e=>this._onKeydown(e),{signal:e});let t=this._canvas;t&&(t.addEventListener(`touchstart`,e=>this._onTouchStart(e),{signal:e,passive:!0}),t.addEventListener(`touchend`,e=>this._onTouchEnd(e),{signal:e,passive:!0}),t.addEventListener(`touchmove`,e=>e.preventDefault(),{signal:e,passive:!1}))}_onTouchStart(e){if(this._gameOver||!this._started)return;let t=e.changedTouches[0];this._touchStart={x:t.screenX,y:t.screenY}}_onTouchEnd(e){if(this._gameOver||!this._started)return;let t=e.changedTouches[0];this._touchEnd={x:t.screenX,y:t.screenY},this._handleSwipe()}_handleSwipe(){if(this._gameOver||!this._started)return;let e=this._touchEnd.x-this._touchStart.x,t=this._touchEnd.y-this._touchStart.y;if(Math.abs(e)<30&&Math.abs(t)<30)return;let n=Math.abs(e)>Math.abs(t)?e>0?`ArrowRight`:`ArrowLeft`:t>0?`ArrowDown`:`ArrowUp`;this._applyDirectionKey(n)}_onKeydown(e){this._applyDirectionKey(e.key)}_applyDirectionKey(e){if(!
|
|
531
|
+
`;const H=e=>`data:image/svg+xml;utf8,${encodeURIComponent(e)}`,U=H(y),W=[O,k,P,F,I,L,R,z,B,V,A,j,M,N].map(H),G=[b,x,S,C,w,T,E,D].map(H),K=Object.freeze({HORIZONTAL:0,VERTICAL:1,SOUTHWEST:2,NORTHWEST:3,NORTHEAST:4,SOUTHEAST:5});let q=(()=>{let y=a,b,x=[],S=[],C,w=[],T=[],E,D=[],O=[],k,A=[],j=[];return class extends y{static{let t=typeof Symbol==`function`&&Symbol.metadata?Object.create(y[Symbol.metadata]??null):void 0;b=[d()],C=[d()],E=[d()],k=[d()],e(this,null,b,{kind:`accessor`,name:`_score`,static:!1,private:!1,access:{has:e=>`_score`in e,get:e=>e._score,set:(e,t)=>{e._score=t}},metadata:t},x,S),e(this,null,C,{kind:`accessor`,name:`_highScore`,static:!1,private:!1,access:{has:e=>`_highScore`in e,get:e=>e._highScore,set:(e,t)=>{e._highScore=t}},metadata:t},w,T),e(this,null,E,{kind:`accessor`,name:`_gameOver`,static:!1,private:!1,access:{has:e=>`_gameOver`in e,get:e=>e._gameOver,set:(e,t)=>{e._gameOver=t}},metadata:t},D,O),e(this,null,k,{kind:`accessor`,name:`_started`,static:!1,private:!1,access:{has:e=>`_started`in e,get:e=>e._started,set:(e,t)=>{e._started=t}},metadata:t},A,j),t&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:t})}static{this.elementName=`sbb-easter-egg`}static{this.elementDependencies=[r,o,i,n]}static{this.styles=[u(p)]}get score(){return this._score}get highScore(){return this._highScore}#e;get _score(){return this.#e}set _score(e){this.#e=e}#t;get _highScore(){return this.#t}set _highScore(e){this.#t=e}#n;get _gameOver(){return this.#n}set _gameOver(e){this.#n=e}#r;get _started(){return this.#r}set _started(e){this.#r=e}constructor(){super(),this.#e=t(this,x,0),this.#t=(t(this,S),t(this,w,0)),this.#n=(t(this,T),t(this,D,!1)),this.#r=(t(this,O),t(this,A,!1)),this._canvas=(t(this,j),null),this._ctx=null,this._cellSize=20,this._snake=[],this._currentDir={x:0,y:0},this._nextDir={x:0,y:0},this._snakePresence=new Uint8Array(256),this._foodPixel=[5,5],this._currentFoodIndex=0,this._currentSpeed=230,this._timerId=null,this._touchStart={x:0,y:0},this._touchEnd={x:0,y:0},this._trainImages=[],this._foodImages=[],this._gridImage=null,this._imagesReady=!1,this._openAbortController=null,this._prevTailCell=null,this._ateFoodThisFrame=!1,this._needsFullRedraw=!0,this._handleStartClick=()=>{c||(this._resetGame(),this._started=!0)},this.backdropAction=`none`,this.accessibilityLabel=m[this.language.current],this.language.withHandler(()=>{this.accessibilityLabel=m[this.language.current]})}disconnectedCallback(){super.disconnectedCallback(),this._stopGame(),this._openAbortController?.abort(),this._openAbortController=null}handleOpening(){super.handleOpening(),!c&&(this._attachInputListeners(),this._imagesReady||this._initGame().then(()=>this._resetGame(!0)),this._focusStartButton())}handleClosing(){super.handleClosing(),this._highScore=0,this._resetGame(!0),this._openAbortController?.abort(),this._openAbortController=null}async _initGame(){this._cellSize=Math.min(20,Math.max(8,Math.floor(window.innerWidth/16)-1));let e=this._canvas;e&&(e.width=16*this._cellSize,e.height=16*this._cellSize,this._ctx=e.getContext(`2d`),this._gridImage=await this._loadImage(U),this._trainImages=await Promise.all(W.map(e=>this._loadImage(e))),this._foodImages=await Promise.all(G.map(e=>this._loadImage(e))),this._imagesReady=!0)}async _loadImage(e){let t=new Image;return t.src=e,t.decode().then(()=>t).catch(()=>t)}_attachInputListeners(){this._openAbortController?.abort(),this._openAbortController=new AbortController;let e=this._openAbortController.signal;document.addEventListener(`keydown`,e=>this._onKeydown(e),{signal:e});let t=this._canvas;t&&(t.addEventListener(`touchstart`,e=>this._onTouchStart(e),{signal:e,passive:!0}),t.addEventListener(`touchend`,e=>this._onTouchEnd(e),{signal:e,passive:!0}),t.addEventListener(`touchmove`,e=>e.preventDefault(),{signal:e,passive:!1}))}_onTouchStart(e){if(this._gameOver||!this._started)return;let t=e.changedTouches[0];this._touchStart={x:t.screenX,y:t.screenY}}_onTouchEnd(e){if(this._gameOver||!this._started)return;let t=e.changedTouches[0];this._touchEnd={x:t.screenX,y:t.screenY},this._handleSwipe()}_handleSwipe(){if(this._gameOver||!this._started)return;let e=this._touchEnd.x-this._touchStart.x,t=this._touchEnd.y-this._touchStart.y;if(Math.abs(e)<30&&Math.abs(t)<30)return;let n=Math.abs(e)>Math.abs(t)?e>0?`ArrowRight`:`ArrowLeft`:t>0?`ArrowDown`:`ArrowUp`;this._applyDirectionKey(n)}_onKeydown(e){this._applyDirectionKey(e.key)}_applyDirectionKey(e){if(!this._gameOver&&this._started){switch(e.toLowerCase()){case`w`:case`arrowup`:this._nextDir={x:0,y:-1};break;case`s`:case`arrowdown`:this._nextDir={x:0,y:1};break;case`a`:case`arrowleft`:if(!this._started)return;this._nextDir={x:-1,y:0};break;case`d`:case`arrowright`:this._nextDir={x:1,y:0};break;default:return}this._started=!0}}_resetGame(e){this._stopGame(),this._gameOver=!1,this._started=!1,this._score=0,this._currentSpeed=230,this._currentDir={x:1,y:0},this._nextDir={x:1,y:0},this._snake=[{x:10,y:10,corner:K.HORIZONTAL},{x:9,y:10,corner:K.HORIZONTAL},{x:8,y:10,corner:K.HORIZONTAL}],this._snakePresence=new Uint8Array(256);for(let e of this._snake)this._snakePresence[this._idx(e.x,e.y)]=1;if(this._foodPixel=[5,5],this._currentFoodIndex=0,this._prevTailCell=null,this._ateFoodThisFrame=!1,this._needsFullRedraw=!0,!this._imagesReady){this._initGame().then(()=>{e?this._draw():this._startGame()});return}e?this._draw():this._startGame()}_startGame(){this._timerId=setInterval(()=>this._update(),this._currentSpeed)}_stopGame(){this._timerId!==null&&(clearInterval(this._timerId),this._timerId=null)}_setGameOver(){this._stopGame(),this._gameOver=!0,this._score>this._highScore&&(this._highScore=this._score),this._focusStartButton()}async _focusStartButton(){c||(await this.updateComplete,this.shadowRoot?.querySelector(`.sbb-easter-egg__overlay sbb-button`)?.focus())}_updatePoints(){this._score+=1,this._score%3==0&&(this._currentSpeed=Math.max(this._currentSpeed-5,50),this._stopGame(),this._startGame())}_hasCollided(e){return e.x<0||e.x>=16||e.y<0||e.y>=16||this._snake.some(t=>t.x===e.x&&t.y===e.y)}_placeFood(){let e=[];for(let t=0;t<this._snakePresence.length;t++)this._snakePresence[t]===0&&e.push(t);if(!e.length)return;let t=e[Math.floor(Math.random()*e.length)];this._foodPixel=[t%16,Math.floor(t/16)],this._currentFoodIndex=Math.floor(Math.random()*this._foodImages.length)}_isReverse(e,t){return e.x===-t.x&&e.y===-t.y}_idx(e,t){return t*16+e}_getSecondSnakeCellDir(){let e=this._snake[0],t=this._snake[2];if(!t)return null;if(e.x===t.x)return K.VERTICAL;if(e.y===t.y)return K.HORIZONTAL;let n=t.x-e.x,r=t.y-e.y,i={"1,1":[K.SOUTHWEST,K.NORTHEAST],"-1,1":[K.SOUTHEAST,K.NORTHWEST],"-1,-1":[K.NORTHEAST,K.SOUTHWEST],"1,-1":[K.NORTHWEST,K.SOUTHEAST]}[`${n},${r}`];return i?this._currentDir.x===0?i[1]:i[0]:null}_update(){if(this._started){this._isReverse(this._currentDir,this._nextDir)||(this._currentDir={...this._nextDir});let e={x:this._snake[0].x+this._currentDir.x,y:this._snake[0].y+this._currentDir.y,corner:null};if(this._hasCollided(e)){this._setGameOver();return}if(this._snakePresence[this._idx(e.x,e.y)]=1,this._snake.unshift(e),this._snake[1].corner=this._getSecondSnakeCellDir(),e.x===this._foodPixel[0]&&e.y===this._foodPixel[1])this._placeFood(),this._updatePoints(),this._ateFoodThisFrame=!0,this._prevTailCell=null;else{let e=this._snake.length-1;this._prevTailCell={...this._snake[e]},this._snakePresence[this._idx(this._snake[e].x,this._snake[e].y)]=0,this._snake.pop(),this._ateFoodThisFrame=!1}}this._draw()}_clearTile(e,t){if(!this._ctx||!this._gridImage)return;let n=this._cellSize;this._ctx.clearRect(e*n,t*n,n,n),this._ctx.drawImage(this._gridImage,e*20,t*20,20,20,e*n,t*n,n,n)}_draw(){if(!this._ctx||!this._gridImage)return;let e=this._cellSize;requestAnimationFrame(()=>{if(!this._ctx||!this._gridImage)return;if(this._needsFullRedraw){let t=e*16;this._ctx.clearRect(0,0,t,t),this._ctx.drawImage(this._gridImage,0,0,t,t),this._ctx.drawImage(this._foodImages[this._currentFoodIndex],this._foodPixel[0]*e,this._foodPixel[1]*e,e,e);for(let t=0;t<this._snake.length;t++){let n=this._snake[t],r=n.corner===null?null:this._trainImages[n.corner];t===0&&(r=this._trainImages[this._getTrainHeadDir()]),t===this._snake.length-1&&(r=this._trainImages[this._getTrainTailDir(t)]),r&&this._ctx.drawImage(r,n.x*e,n.y*e,e,e)}this._needsFullRedraw=!1;return}let t=this._snake[1];if(this._clearTile(t.x,t.y),t.corner!==null&&this._ctx.drawImage(this._trainImages[t.corner],t.x*e,t.y*e,e,e),this._ateFoodThisFrame){let t=this._snake[0];this._clearTile(t.x,t.y),this._ctx.drawImage(this._trainImages[this._getTrainHeadDir()],t.x*e,t.y*e,e,e),this._ctx.drawImage(this._foodImages[this._currentFoodIndex],this._foodPixel[0]*e,this._foodPixel[1]*e,e,e)}else{this._prevTailCell&&this._clearTile(this._prevTailCell.x,this._prevTailCell.y);let t=this._snake.length-1,n=this._snake[t];this._clearTile(n.x,n.y),this._ctx.drawImage(this._trainImages[this._getTrainTailDir(t)],n.x*e,n.y*e,e,e);let r=this._snake[0];this._ctx.drawImage(this._trainImages[this._getTrainHeadDir()],r.x*e,r.y*e,e,e)}})}_getTrainHeadDir(){return{"0,1":8,"0,-1":6,"-1,0":9,"1,0":7}[`${this._currentDir.x},${this._currentDir.y}`]??7}_getTrainTailDir(e){let t=this._snake[e],n=this._snake[e-1];return t.x===n.x?t.y-n.y>0?13:11:t.x-n.x>0?10:12}render(){let e=this.language.current,t=!this._started||this._gameOver,n=this._gameOver?v[e]:_[e];return s`
|
|
532
532
|
<div class="sbb-dialog__container">
|
|
533
533
|
<div @animationend=${this.onOverlayAnimationEnd} class="sbb-dialog">
|
|
534
534
|
<div
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sbb-esta/lyne-elements-experimental-dev",
|
|
3
|
-
"version": "5.7.0-dev.
|
|
3
|
+
"version": "5.7.0-dev.1788573444",
|
|
4
4
|
"description": "Lyne Design System",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"design system",
|
|
7
7
|
"web components",
|
|
8
8
|
"lit",
|
|
9
|
-
"https://github.com/sbb-design-systems/lyne-components/commit/
|
|
9
|
+
"https://github.com/sbb-design-systems/lyne-components/commit/865159bff8927e7a7ad236856208442dd7068ca8"
|
|
10
10
|
],
|
|
11
11
|
"type": "module",
|
|
12
12
|
"exports": {
|