Publish Vulpes Preview 15 sources for desktop, Android and Tundra

Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,15 @@
define(['require','modules/mvvm/observable_array'],function(require){var elements=new WeakMap();var ObservableArray=require('modules/mvvm/observable_array');var ListView=function(root,observableArray,templateFunc){var _observableArray=null;var _root=root;var _templateFunc=templateFunc;var _enabled=true;var observerMap=new WeakMap();function releaseObservers(element){var observable=observerMap.get(element);if(!observable||typeof observable!=='object'){return;}
var observers=observerMap.get(observable);if(observers){observers.forEach(function eachObserver(observer){observable.unobserve(observer);});observerMap.delete(observable);observerMap.delete(element);}}
function observeAndCall(observable,map){var observers=observerMap.get(observable)||[];if(observerMap.has(observable)){observers=observerMap.get(observable);}
observers=Object.keys(map).map(function eachProperty(property){observable.observe(property,map[property]);map[property]();return map[property];});observerMap.set(observable,observers);}
var _helper={observeAndCall:observeAndCall};var _handleEvent=function(event){if(!_enabled){return;}
var data=event.detail;switch(event.type){case'insert':_insert(data.index,data.items);break;case'remove':_remove(data.index,data.count);break;case'replace':_replace(data.index,data.newValue);break;case'reset':_reset(data.items||[]);break;default:break;}};var _insert=function(index,items){if(items.length<=0){return;}
var referenceElement=_root.children[index];for(var i=items.length-1;i>=0;i--){var curElement=_templateFunc(items[i],undefined,_helper);observerMap.set(curElement,items[i]);_root.insertBefore(curElement,referenceElement);referenceElement=curElement;}};var _remove=function(index,count){if(count===0){return;}
if(count>=_root.childElementCount){while(_root.firstElementChild){releaseObservers(_root.firstElementChild);_root.removeChild(_root.firstElementChild);}}else{var nextElement=_root.children[index];for(var i=0;i<count;i++){if(nextElement){var temp=nextElement.nextElementSibling;releaseObservers(nextElement);_root.removeChild(nextElement);nextElement=temp;}else{break;}}}};var _replace=function(index,value){var element=_root.children[index];if(element){releaseObservers(element);var newElement=_templateFunc(value,element,_helper);observerMap.set(element,value);if(newElement!==element){_root.insertBefore(newElement,element);_root.removeChild(element);}}};var _reset=function(items){var itemCount=items.length;var elementCount=_root.childElementCount;if(itemCount===0){_remove(0,elementCount);}else if(itemCount<=elementCount){items.forEach(function(item,index){_replace(index,item);});_remove(itemCount,elementCount-itemCount);}else{var slicedItems=items.slice(0,elementCount);var remainingItems=items.slice(elementCount);slicedItems.forEach(function(item,index){_replace(index,item);});_insert(elementCount,remainingItems);}};var _enabledChanged=function(){if(_enabled){_reset(_observableArray.array);}};var view={set:function lv_set(newArray){if(_observableArray){_observableArray.removeEventListener('insert',_handleEvent);_observableArray.removeEventListener('remove',_handleEvent);_observableArray.removeEventListener('replace',_handleEvent);_observableArray.removeEventListener('reset',_handleEvent);}
if(!newArray){if(_observableArray){_remove(0,_observableArray.length);_observableArray=null;}
return;}
if(Array.isArray(newArray)){newArray=ObservableArray(newArray);}
_observableArray=newArray;_observableArray.addEventListener('insert',_handleEvent);_observableArray.addEventListener('remove',_handleEvent);_observableArray.addEventListener('replace',_handleEvent);_observableArray.addEventListener('reset',_handleEvent);if(this.enabled){_reset(_observableArray.array);}},destroy:function(){if(_observableArray){_observableArray.removeEventListener('insert',_handleEvent);_observableArray.removeEventListener('remove',_handleEvent);_observableArray.removeEventListener('replace',_handleEvent);_observableArray.removeEventListener('reset',_handleEvent);}
_remove(0,_observableArray.length);elements.delete(_root);_root=null;_observableArray=null;_templateFunc=null;_enabled=false;},get element(){return _root;},set enabled(value){if(_enabled!==value){_enabled=value;_enabledChanged();}},get enabled(){return _enabled;}};if(elements.has(_root)){elements.get(_root).destroy();}
elements.set(_root,view);_root.innerHTML='';view.set(observableArray);return view;};return ListView;});