@stratusjs/angularjs
Version:
This is the AngularJS package for StratusJS.
1 lines • 5.36 kB
JavaScript
System.register(["lodash","@stratusjs/runtime/stratus","@stratusjs/core/conversion","@stratusjs/core/misc","@stratusjs/core/environment","../injector","./model","./collection","@stratusjs/core/events/eventManager"],function(exports_1,context_1){"use strict";var lodash_1,stratus_1,conversion_1,misc_1,environment_1,injector_1,model_1,collection_1,eventManager_1,injector,$interpolate,serviceVerify,Registry;context_1&&context_1.id;return{setters:[function(lodash_1_1){lodash_1=lodash_1_1},function(stratus_1_1){stratus_1=stratus_1_1},function(conversion_1_1){conversion_1=conversion_1_1},function(misc_1_1){misc_1=misc_1_1},function(environment_1_1){environment_1=environment_1_1},function(injector_1_1){injector_1=injector_1_1},function(model_1_1){model_1=model_1_1},function(collection_1_1){collection_1=collection_1_1},function(eventManager_1_1){eventManager_1=eventManager_1_1}],execute:function(){injector=injector_1.getInjector(),serviceVerify=async()=>new Promise(async(resolve,_reject)=>{$interpolate?resolve(!0):(injector||(injector=injector_1.getInjector()),injector&&($interpolate=injector.get("$interpolate")),$interpolate?resolve(!0):setTimeout(()=>{environment_1.cookie("env")&&console.log("wait for $interpolate service:",$interpolate),serviceVerify().then(resolve)},250))}),exports_1("Registry",Registry=class{constructor(){}fetch($element,$scope){return new Promise(async(resolve,_reject)=>{"string"==typeof $element&&($element={target:$element});const inputs={};lodash_1.forEach(lodash_1.union(model_1.ModelOptionKeys,collection_1.CollectionOptionKeys,["id","api","temp","decouple","fetch"]),option=>lodash_1.set(inputs,option,"data-"+lodash_1.kebabCase(option)));const options=lodash_1.forEach(inputs,(value,key,list)=>{list[key]=$element.attr?$element.attr(value):$element[key],misc_1.isJSON(list[key])&&(list[key]=JSON.parse(list[key]))});options.api=conversion_1.sanitize(options.api),options.temp=conversion_1.sanitize(options.temp);let completed=0;const verify=()=>{lodash_1.isNumber(completed)&&completed===lodash_1.size(options)&&resolve(this.build(options,$scope))};$interpolate||await serviceVerify(),lodash_1.forEach(options,async(element,key)=>{if(!element||"string"!=typeof element||!$scope||!$scope.$parent)return completed++,void verify();const interpreter=$interpolate(element,!1,null,!0),initial=interpreter($scope.$parent);if(void 0!==initial)return options[key]=initial,completed++,void verify();let value;environment_1.cookie("env")&&console.log(`poll (${key}): start`);try{value=await misc_1.poll(()=>interpreter($scope.$parent),1500,250)}catch(err){(environment_1.cookie("env")||"Timeout"!==err.name)&&console.error(err)}environment_1.cookie("env")&&console.log(`poll (${key}):`,value),options[key]=value,completed++,verify()})})}build(options,$scope){let data;if((options.payload||options.convoy)&&(options.fetch=!1),options.target){if(options.target=misc_1.ucfirst(options.target),options.manifest||options.id){stratus_1.Stratus.Catalog[options.target]||(stratus_1.Stratus.Catalog[options.target]={});const id=options.id||"manifest";if(options.decouple||!stratus_1.Stratus.Catalog[options.target][id]){const modelOptions={stagger:!0};lodash_1.forEach(model_1.ModelOptionKeys,element=>{const optionValue=lodash_1.get(options,element);lodash_1.isUndefined(optionValue)||lodash_1.set(modelOptions,element,optionValue)}),data=new model_1.Model(modelOptions,{id:options.id}),options.decouple||(stratus_1.Stratus.Catalog[options.target][id]=data)}else stratus_1.Stratus.Catalog[options.target][id]&&(data=stratus_1.Stratus.Catalog[options.target][id])}else{const registry=options.direct?"Compendium":"Catalog";if(stratus_1.Stratus[registry][options.target]||(stratus_1.Stratus[registry][options.target]={}),options.decouple||!stratus_1.Stratus[registry][options.target].collection){const collectionOptions={};lodash_1.forEach(collection_1.CollectionOptionKeys,element=>{const optionValue=lodash_1.get(options,element);lodash_1.isUndefined(optionValue)||lodash_1.set(collectionOptions,element,optionValue)}),data=new collection_1.Collection(collectionOptions),options.decouple||(stratus_1.Stratus[registry][options.target].collection=data)}else stratus_1.Stratus[registry][options.target].collection&&(data=stratus_1.Stratus[registry][options.target].collection)}options.api&&data.meta.set("api",misc_1.isJSON(options.api)?JSON.parse(options.api):options.api),options.temp&&lodash_1.isObject(options.temp)&&!data.completed&&lodash_1.forEach(misc_1.flatten(options.temp),(v,k)=>{console.log("setting temp:",`api.${k}`,v),data.meta.temp(`api.${k}`,v)}),data instanceof model_1.Model&&data.stagger&&"function"==typeof data.initialize&&data.initialize()}return"object"==typeof data&&null!==data&&(void 0!==$scope&&($scope.data=data,data instanceof model_1.Model?$scope.model=data:data instanceof collection_1.Collection&&($scope.collection=data),data instanceof eventManager_1.EventManager&&"function"==typeof $scope.$applyAsync&&(data.on("change",()=>{$scope.$applyAsync()}),data.on("error",()=>{$scope.$applyAsync()}),data.completed&&$scope.$applyAsync())),data.pending||data.completed||!lodash_1.isUndefined(options.fetch)&&!options.fetch||data.fetch().then()),data}}),stratus_1.Stratus.Services.Registry=["$provide",$provide=>{$provide.factory("Registry",[()=>new Registry])}],stratus_1.Stratus.Data.Registry=Registry}}});