Mercurial > nebulaweb3
diff default/node_modules/shoestring/src/dom/index.js @ 0:1d038bc9b3d2 default tip
Up:default
author | Liny <dev@neowd.com> |
---|---|
date | Sat, 31 May 2025 09:21:51 +0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/default/node_modules/shoestring/src/dom/index.js Sat May 31 09:21:51 2025 +0800 @@ -0,0 +1,64 @@ +//>>excludeStart("exclude", pragmas.exclude); +define([ "shoestring" ], function(){ +//>>excludeEnd("exclude"); + + (function() { + function _getIndex( set, test ) { + var i, result, element; + + for( i = result = 0; i < set.length; i++ ) { + element = set.item ? set.item(i) : set[i]; + + if( test(element) ){ + return result; + } + + // ignore text nodes, etc + // NOTE may need to be more permissive + if( element.nodeType === 1 ){ + result++; + } + } + + return -1; + } + + /** + * Find the index in the current set for the passed selector. + * Without a selector it returns the index of the first node within the array of its siblings. + * + * @param {string|undefined} selector The selector used to search for the index. + * @return {integer} + * @this {shoestring} + */ + shoestring.fn.index = function( selector ){ + var self, children; + + self = this; + + // no arg? check the children, otherwise check each element that matches + if( selector === undefined ){ + children = ( ( this[ 0 ] && this[0].parentNode ) || doc.documentElement).childNodes; + + // check if the element matches the first of the set + return _getIndex(children, function( element ) { + return self[0] === element; + }); + } else { +//>>includeStart("development", pragmas.development); + if( selector.constructor === shoestring.Shoestring ) { + shoestring.error( "index-shoestring-object" ); + } +//>>includeEnd("development"); + + // check if the element matches the first selected node from the parent + return _getIndex(self, function( element ) { + return element === (shoestring( selector, element.parentNode )[ 0 ]); + }); + } + }; + })(); + +//>>excludeStart("exclude", pragmas.exclude); +}); +//>>excludeEnd("exclude");