diff options
| author | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
|---|---|---|
| committer | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
| commit | 5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch) | |
| tree | 360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/nwsapi/src/modules | |
| parent | b500a50f1b97d93c98b36ed9a980f8188d648147 (diff) | |
| download | LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip  | |
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/nwsapi/src/modules')
| -rw-r--r-- | node_modules/nwsapi/src/modules/nwsapi-jquery.js | 135 | ||||
| -rw-r--r-- | node_modules/nwsapi/src/modules/nwsapi-traversal.js | 90 | 
2 files changed, 225 insertions, 0 deletions
diff --git a/node_modules/nwsapi/src/modules/nwsapi-jquery.js b/node_modules/nwsapi/src/modules/nwsapi-jquery.js new file mode 100644 index 0000000..961cb30 --- /dev/null +++ b/node_modules/nwsapi/src/modules/nwsapi-jquery.js @@ -0,0 +1,135 @@ +/* + * Copyright (C) 2007-2017 Diego Perini + * All rights reserved. + * + * this is just a small example to show + * how an extension for NWMatcher could be + * adapted to handle special jQuery selectors + * + * Child Selectors + * :even, :odd, :eq, :lt, :gt, :first, :last, :nth + * + * Pseudo Selectors + * :has, :button, :header, :input, :checkbox, :radio, :file, :image + * :password, :reset, :submit, :text, :hidden, :visible, :parent + * + */ + +// for structural pseudo-classes extensions +NW.Dom.registerSelector( +  'jquery:child', +  /^\:((?:(nth|eq|lt|gt)\(([^()]*)\))|(?:even|odd|first|last))(.*)/i, +  (function(global) { + +    return function(match, source, mode, callback) { + +      var status = true, +      macro = mode ? NW.Dom.S_BODY : NW.Dom.M_BODY; + +      macro = macro.replace('@', typeof callback == 'function' ? (mode ? NW.Dom.S_TEST : NW.Dom.M_TEST) : ''); + +      switch (match[1].toLowerCase()) { +        case 'odd': +          source = source.replace(macro, 'if((n=n^1)==0){' + macro + '}'); +          break; +        case 'even': +          source = source.replace(macro, 'if((n=n^1)==1){' + macro + '}'); +          break; +        case 'first': +          source = 'n=s.root.getElementsByTagName(e.nodeName);if(n.length&&n[0]===e){' + source + '}'; +          break; +        case 'last': +          source = 'n=s.root.getElementsByTagName(e.nodeName);if(n.length&&n[n.length-1]===e){' + source + '}'; +          break; +        default: +          switch (match[2].toLowerCase()) { +            case 'nth': +              source = 'n=s.root.getElementsByTagName(e.nodeName);if(n.length&&n[' + match[3] + ']===e){' + source + '}'; +              break; +            case 'eq': +              source = source.replace(macro, 'if(x++==' + match[3] + '){' + macro + '}'); +              break; +            case 'lt': +              source = source.replace(macro, 'if(x++<' + match[3] + '){' + macro + '}'); +              break; +            case 'gt': +              source = source.replace(macro, 'if(x++>' + match[3] + '){' + macro + '}'); +              break; +            default: +              status = false; +              break; +          } +          break; +      } + +      // compiler will add this to "source" +      return { +        'source': source, +        'status': status, +        'modvar': 'x=0' +      }; + +    }; + +  })(this)); + +// for element pseudo-classes extensions +NW.Dom.registerSelector( +  'jquery:pseudo', +  /^\:(has|checkbox|file|image|password|radio|reset|submit|text|button|input|header|hidden|visible|parent)(?:\(\s*(["']*)?([^'"()]*)\2\s*\))?(.*)/i, +  (function(global) { + +    return function(match, source, mode, callback) { + +      var status = true, +      macro = mode ? NW.Dom.S_BODY : NW.Dom.M_BODY; + +      macro = macro.replace('@', typeof callback == 'function' ? (mode ? NW.Dom.S_TEST : NW.Dom.M_TEST) : ''); + +      switch(match[1].toLowerCase()) { +        case 'has': +          source = source.replace(macro, 'if(e.getElementsByTagName("' + match[3].replace(/^\s|\s$/g, '') + '")[0]){' + macro + '}'); +          break; +        case 'checkbox': +        case 'file': +        case 'image': +        case 'password': +        case 'radio': +        case 'reset': +        case 'submit': +        case 'text': +          // :checkbox, :file, :image, :password, :radio, :reset, :submit, :text +          source = 'if(/^' + match[1] + '$/i.test(e.type)){' + source + '}'; +          break; +        case 'button': +          source = 'if(/^button$/i.test(e.nodeName)){' + source + '}'; +          break; +        case 'input': +          source = 'if(/^(?:button|input|select|textarea)$/i.test(e.nodeName)){' + source + '}'; +          break; +        case 'header': +          source = 'if(/^h[1-6]$/i.test(e.nodeName)){' + source + '}'; +          break; +        case 'hidden': +          source = 'if(!e.offsetWidth&&!e.offsetHeight){' + source + '}'; +          break; +        case 'visible': +          source = 'if(e.offsetWidth||e.offsetHeight){' + source + '}'; +          break; +        case 'parent': +          source = 'if(e.firstChild){' + source + '}'; +          break; +        default: +          status = false; +          break; +      } + +      // compiler will add this to "source" +      return { +        'source': source, +        'status': status +      }; + +    }; + +  })(this)); diff --git a/node_modules/nwsapi/src/modules/nwsapi-traversal.js b/node_modules/nwsapi/src/modules/nwsapi-traversal.js new file mode 100644 index 0000000..9d2b62f --- /dev/null +++ b/node_modules/nwsapi/src/modules/nwsapi-traversal.js @@ -0,0 +1,90 @@ +/* + * Element Traversal methods from Juriy Zaytsev (kangax) + * used to emulate Prototype up/down/previous/next methods + */ + +(function(D){ + +  // TODO: all of this needs tests +  var match = D.match, select = D.select, root = document.documentElement, + +  // Use the Element Traversal API if available. +  nextElement = 'nextElementSibling', +  previousElement = 'previousElementSibling', +  parentElement = 'parentElement'; + +  // Fall back to the DOM Level 1 API. +  if (!(nextElement in root)) nextElement = 'nextSibling'; +  if (!(previousElement in root)) previousElement = 'previousSibling'; +  if (!(parentElement in root)) parentElement = 'parentNode'; + +  function walkElements(property, element, expr) { +    var i = 0, isIndex = typeof expr == 'number'; +    if (typeof expr == 'undefined') { +      isIndex = true; +      expr = 0; +    } +    while ((element = element[property])) { +      if (element.nodeType != 1) continue; +      if (isIndex) { +        ++i; +        if (i == expr) return element; +      } else if (match(element, expr)) { +        return element; +      } +    } +    return null; +  } + +  /** +   * @method up +   * @param {HTMLElement} element element to walk from +   * @param {String | Number} expr CSS expression or an index +   * @return {HTMLElement | null} +   */ +  function up(element, expr) { +    return walkElements(parentElement, element, expr); +  } +  /** +   * @method next +   * @param {HTMLElement} element element to walk from +   * @param {String | Number} expr CSS expression or an index +   * @return {HTMLElement | null} +   */ +  function next(element, expr) { +    return walkElements(nextElement, element, expr); +  } +  /** +   * @method previous +   * @param {HTMLElement} element element to walk from +   * @param {String | Number} expr CSS expression or an index +   * @return {HTMLElement | null} +   */ +  function previous(element, expr) { +    return walkElements(previousElement, element, expr); +  } +  /** +   * @method down +   * @param {HTMLElement} element element to walk from +   * @param {String | Number} expr CSS expression or an index +   * @return {HTMLElement | null} +   */ +  function down(element, expr) { +    var isIndex = typeof expr == 'number', descendants, index, descendant; +    if (expr === null) { +      element = element.firstChild; +      while (element && element.nodeType != 1) element = element[nextElement]; +      return element; +    } +    if (!isIndex && match(element, expr) || isIndex && expr === 0) return element; +    descendants = select('*', element); +    if (isIndex) return descendants[expr] || null; +    index = 0; +    while ((descendant = descendants[index]) && !match(descendant, expr)) { ++index; } +    return descendant || null; +  } +  D.up = up; +  D.down = down; +  D.next = next; +  D.previous = previous; +})(NW.Dom);  | 
