Todos los componentes del NIVEL 2 ya están implementados correctamente: - ✅ Notification Bar (#49) - ✅ Navbar (#50) - ✅ Hero Section (#51) - ✅ Sidebar (#52) - ✅ Footer (#53) Solo se actualizó notification-bar.css para usar variables CSS. Próximo paso: NIVEL 3 (Refinamientos visuales) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
53 lines
7.8 KiB
Plaintext
53 lines
7.8 KiB
Plaintext
/*!
|
|
* Knockout ES5 plugin - https://github.com/SteveSanderson/knockout-es5
|
|
* Copyright (c) Steve Sanderson
|
|
* MIT license
|
|
*/
|
|
(function(global,undefined){'use strict';var ko;function track(obj,propertyNamesOrSettings){if(!obj||typeof obj!=='object'){throw new Error('When calling ko.track, you must pass an object as the first parameter.');}
|
|
var propertyNames;if(isPlainObject(propertyNamesOrSettings)){propertyNamesOrSettings.deep=propertyNamesOrSettings.deep||false;propertyNamesOrSettings.fields=propertyNamesOrSettings.fields||Object.getOwnPropertyNames(obj);propertyNamesOrSettings.lazy=propertyNamesOrSettings.lazy||false;wrap(obj,propertyNamesOrSettings.fields,propertyNamesOrSettings);}else{propertyNames=propertyNamesOrSettings||Object.getOwnPropertyNames(obj);wrap(obj,propertyNames,{});}
|
|
return obj;}
|
|
var rFunctionName=/^function\s*([^\s(]+)/;function getFunctionName(ctor){if(ctor.name){return ctor.name;}
|
|
return(ctor.toString().trim().match(rFunctionName)||[])[1];}
|
|
function canTrack(obj){return obj&&typeof obj==='object'&&getFunctionName(obj.constructor)==='Object';}
|
|
function createPropertyDescriptor(originalValue,prop,map){var isObservable=ko.isObservable(originalValue);var isArray=!isObservable&&Array.isArray(originalValue);var observable=isObservable?originalValue:isArray?ko.observableArray(originalValue):ko.observable(originalValue);map[prop]=function(){return observable;};if(isArray||(isObservable&&'push'in observable)){notifyWhenPresentOrFutureArrayValuesMutate(ko,observable);}
|
|
return{configurable:true,enumerable:true,get:observable,set:ko.isWriteableObservable(observable)?observable:undefined};}
|
|
function createLazyPropertyDescriptor(originalValue,prop,map){if(ko.isObservable(originalValue)){return createPropertyDescriptor(originalValue,prop,map);}
|
|
var observable;function getOrCreateObservable(value,writing){if(observable){return writing?observable(value):observable;}
|
|
if(Array.isArray(value)){observable=ko.observableArray(value);notifyWhenPresentOrFutureArrayValuesMutate(ko,observable);return observable;}
|
|
return(observable=ko.observable(value));}
|
|
map[prop]=function(){return getOrCreateObservable(originalValue);};return{configurable:true,enumerable:true,get:function(){return getOrCreateObservable(originalValue)();},set:function(value){getOrCreateObservable(value,true);}};}
|
|
function wrap(obj,props,options){if(!props.length){return;}
|
|
var allObservablesForObject=getAllObservablesForObject(obj,true);var descriptors={};props.forEach(function(prop){if(prop in allObservablesForObject){return;}
|
|
if(Object.getOwnPropertyDescriptor(obj,prop).configurable===false){return;}
|
|
var originalValue=obj[prop];descriptors[prop]=(options.lazy?createLazyPropertyDescriptor:createPropertyDescriptor)
|
|
(originalValue,prop,allObservablesForObject);if(options.deep&&canTrack(originalValue)){wrap(originalValue,Object.keys(originalValue),options);}});Object.defineProperties(obj,descriptors);}
|
|
function isPlainObject(obj){return!!obj&&typeof obj==='object'&&obj.constructor===Object;}
|
|
var objectToObservableMap;function getAllObservablesForObject(obj,createIfNotDefined){if(!objectToObservableMap){objectToObservableMap=weakMapFactory();}
|
|
var result=objectToObservableMap.get(obj);if(!result&&createIfNotDefined){result={};objectToObservableMap.set(obj,result);}
|
|
return result;}
|
|
function untrack(obj,propertyNames){if(!objectToObservableMap){return;}
|
|
if(arguments.length===1){objectToObservableMap['delete'](obj);}else{var allObservablesForObject=getAllObservablesForObject(obj,false);if(allObservablesForObject){propertyNames.forEach(function(propertyName){delete allObservablesForObject[propertyName];});}}}
|
|
function defineComputedProperty(obj,propertyName,evaluatorOrOptions){var ko=this,computedOptions={owner:obj,deferEvaluation:true};if(typeof evaluatorOrOptions==='function'){computedOptions.read=evaluatorOrOptions;}else{if('value'in evaluatorOrOptions){throw new Error('For ko.defineProperty, you must not specify a "value" for the property. '+'You must provide a "get" function.');}
|
|
if(typeof evaluatorOrOptions.get!=='function'){throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, '+'or an options object containing a function called "get".');}
|
|
computedOptions.read=evaluatorOrOptions.get;computedOptions.write=evaluatorOrOptions.set;}
|
|
obj[propertyName]=ko.computed(computedOptions);track.call(ko,obj,[propertyName]);return obj;}
|
|
function notifyWhenPresentOrFutureArrayValuesMutate(ko,observable){var watchingArraySubscription=null;ko.computed(function(){if(watchingArraySubscription){watchingArraySubscription.dispose();watchingArraySubscription=null;}
|
|
var newArrayInstance=observable();if(newArrayInstance instanceof Array){watchingArraySubscription=startWatchingArrayInstance(ko,observable,newArrayInstance);}});}
|
|
function startWatchingArrayInstance(ko,observable,arrayInstance){var subscribable=getSubscribableForArray(ko,arrayInstance);return subscribable.subscribe(observable);}
|
|
var arraySubscribablesMap;function getSubscribableForArray(ko,arrayInstance){if(!arraySubscribablesMap){arraySubscribablesMap=weakMapFactory();}
|
|
var subscribable=arraySubscribablesMap.get(arrayInstance);if(!subscribable){subscribable=new ko.subscribable();arraySubscribablesMap.set(arrayInstance,subscribable);var notificationPauseSignal={};wrapStandardArrayMutators(arrayInstance,subscribable,notificationPauseSignal);addKnockoutArrayMutators(ko,arrayInstance,subscribable,notificationPauseSignal);}
|
|
return subscribable;}
|
|
function wrapStandardArrayMutators(arrayInstance,subscribable,notificationPauseSignal){['pop','push','reverse','shift','sort','splice','unshift'].forEach(function(fnName){var origMutator=arrayInstance[fnName];arrayInstance[fnName]=function(){var result=origMutator.apply(this,arguments);if(notificationPauseSignal.pause!==true){subscribable.notifySubscribers(this);}
|
|
return result;};});}
|
|
function addKnockoutArrayMutators(ko,arrayInstance,subscribable,notificationPauseSignal){['remove','removeAll','destroy','destroyAll','replace'].forEach(function(fnName){Object.defineProperty(arrayInstance,fnName,{enumerable:false,value:function(){var result;notificationPauseSignal.pause=true;try{result=ko.observableArray.fn[fnName].apply(ko.observableArray(arrayInstance),arguments);}
|
|
finally{notificationPauseSignal.pause=false;}
|
|
subscribable.notifySubscribers(arrayInstance);return result;}});});}
|
|
function getObservable(obj,propertyName){if(!obj||typeof obj!=='object'){return null;}
|
|
var allObservablesForObject=getAllObservablesForObject(obj,false);if(allObservablesForObject&&propertyName in allObservablesForObject){return allObservablesForObject[propertyName]();}
|
|
return null;}
|
|
function isTracked(obj,propertyName){if(!obj||typeof obj!=='object'){return false;}
|
|
var allObservablesForObject=getAllObservablesForObject(obj,false);return!!allObservablesForObject&&propertyName in allObservablesForObject;}
|
|
function valueHasMutated(obj,propertyName){var observable=getObservable(obj,propertyName);if(observable){observable.valueHasMutated();}}
|
|
var weakMapFactory;function attachToKo(ko){ko.track=track;ko.untrack=untrack;ko.getObservable=getObservable;ko.valueHasMutated=valueHasMutated;ko.defineProperty=defineComputedProperty;ko.es5={getAllObservablesForObject:getAllObservablesForObject,notifyWhenPresentOrFutureArrayValuesMutate:notifyWhenPresentOrFutureArrayValuesMutate,isTracked:isTracked};}
|
|
function prepareExports(){if(typeof exports==='object'&&typeof module==='object'){ko=require('knockout');var WM=require('../lib/weakmap');attachToKo(ko);weakMapFactory=function(){return new WM();};module.exports=ko;}else if(typeof define==='function'&&define.amd){define(['knockout'],function(koModule){ko=koModule;attachToKo(koModule);weakMapFactory=function(){return new global.WeakMap();};return koModule;});}else if('ko'in global){ko=global.ko;attachToKo(global.ko);weakMapFactory=function(){return new global.WeakMap();};}}
|
|
prepareExports();})(this); |