Best JavaScript code snippet using wpt
d549ba877ef2abdd028ad56f175ed0eccb0425c1_3_17.js
Source:d549ba877ef2abdd028ad56f175ed0eccb0425c1_3_17.js
...11 if ( _isSelectionStopNode( endContainer ) ) {12 if ( endOffset == 0 ) {13 newEndContainer = _moveBackwards( endContainer );14 }15 } else if ( isVoidElement(16 endContainer.childNodes[ endOffset ? endOffset - 1 : 0 ] ) ) {17 if ( endOffset == 0 ) {18 newEndContainer = _getSelectionEndNode(19 _moveBackwards( endContainer )20 );21 newEndOffset = newEndContainer.length;22 }23 } else if ( _isPositionAtNodeEnd ( endContainer, endOffset ) ) {24 // The endOffset is at the end of a node on which we cannot stop25 // at. We will therefore search for an appropriate node nested26 // inside this node at which to stop at27 newEndContainer = endContainer; 28 } else if ( endContainer.children &&29 endContainer.children.length ) {30 //debugger;31 newEndContainer = endContainer.children[ endOffset ];32 if ( _isFlowNode( newEndContainer ) ) {33 newEndContainer = endContainer;34 newEndOffset = endOffset;35 }36 //newEndContainer = endContainer.children[37 // endContainer.children.length - 138 //];39 } else if ( _moveBackwards( endContainer ) ) {40 newEndContainer = _moveBackwards( endContainer );41 }42 43 //debugger;44 45 newEndContainer = _getSelectionEndNode( newEndContainer );46 47 if ( newEndContainer ) {48 newEndOffset = newEndContainer.length;49 } else {50 newEndContainer = range.endContainer;51 }52 53 // rule:54 // IF the end position is at the start of the end container55 // THEN look for its previous relative node that is a phrase element56 // WHICH would enable us to have an end positon that is greater than zero.57 // IF we cannot find such a cousin node to be our new end container58 // THEN leave the end position where it was.59 //60 // ie:61 // [ '[foo<span>]bar</span>baz', '[foo]<span>bar</span>baz' ]62 // [ '{foo<span>}bar</span>baz', '[foo]<span>bar</span>baz' ]63 // [ 'foo{<span>}bar</span>baz', 'foo[]<span>bar</span>baz' ]64 // [ 'foo<span><b>{<b><b>]bar</b></b></b></span>baz', 'foo[]<span><b><b><b>bar</b></b></b></span>baz' ]65 // [ 'foo<i></i>{<span><b><b>}bar</b></b></span>baz', 'foo[]<i></i><span><b><b>bar</b></b></span>baz' ]66 // [ 'foo<i>a</i>{<span><b><b>}bar</b></b></span>baz', 'foo<i>a[]</i><span><b><b>bar</b></b></span>baz' ]67 // [ 'test<span>{<span><b><b>}bar</b></b></span>baz</span>', 'test[]<span><span><b><b>bar</b></b></span>baz</span>' ]68 //69 // nb:70 // Notice that in all cases below, we cannot get a start position that is greater than zero71 // and therefore we leave the end position where it was72 //73 // [ '{<span><b><b>}bar</b></b></span>baz', '<span><b><b>[]bar</b></b></span>baz' ]74 // [ '<i></i>{<span><b><b>}bar</b></b></span>baz', '<i></i><span><b><b>[]bar</b></b></span>baz' ]75 // [ '<span>{<span><b><b>}bar</b></b></span>baz</span>', '<span><span><b><b>[]bar</b></b></span>baz</span>' ]76 //77 78 if ( newEndOffset == 0 && !_isFlowNode( newEndContainer ) ) {79 var prev = _getSelectionEndNode( _moveBackwards( newEndContainer ) );80 81 if ( prev ) {82 newEndContainer = prev;83 newEndOffset = prev.length;84 } else {85 var next = _getSelectionStartNode( newEndContainer );86 if ( next ) {87 newEndContainer = next;88 newEndOffset = 0;89 }90 }91 92 // TODO: !isVoidElement && !_isFlowNode93 }94 95 if ( startContainer == newEndContainer ) {96 // logic:97 // If the startContainer is the same as the *corrected*98 // endContainer (newEndContainer), then we can infere that the99 // corrected endContainer was the most suitable container to100 // place the end selection position, and it is therefore also101 // the nearest best container for the start position. The only102 // things that differ are the start and end positions.103 // Therefore do nothing.104 // ie:105 // Ensures that 'foo<span>bar[</span>]baz' is corrected to106 // 'foo<span>bar[]</span>baz'107 108 if ( newEndOffset == 0 ) {109 newStartContainer = _getSelectionStartNode( newEndContainer );110 if ( newStartContainer ) {111 newEndContainer = newStartContainer;112 }113 }114 } else if ( _isPositionAtNodeEnd( startContainer, startOffset ) &&115 startContainer.firstChild == newEndContainer ) {116 range.startContainer = newEndContainer;117 newStartOffset = newEndOffset;118 } else if ( endOffset == 0 &&119 //startContainer.childNodes.length &&120 startContainer.childNodes[ startOffset ] == endContainer &&121 _moveBackwards( startContainer.childNodes[ startOffset ] ) ) {122 // Corrects 'foo{<span>}bar</span>baz' to 'foo[]<span>bar</span>baz'123 // by trying to find the nearest position to the original start124 // node. We do this by jumping to the previousSibling and125 // traversing to the end of it126 newStartContainer = _getSelectionEndNode(127 _moveBackwards( startContainer.childNodes[ startOffset ] )128 );129 130 if ( newStartContainer ) {131 range.startContainer = newStartContainer;132 newStartOffset = newStartContainer.length;133 newStartContainer = null; // Prevent going into _getSelectionStartNode. Should we just return here?134 }135 } else if ( startOffset == startContainer.length &&136 isVoidElement( startContainer.nextSibling ) ) {137 //debugger;138 } else if ( _isPositionAtNodeEnd( startContainer, startOffset ) &&139 _moveForwards( startContainer ) ) {140 newStartContainer = _moveForwards( startContainer );141 } else if ( startContainer.childNodes.length &&142 !isVoidElement( startContainer.childNodes[ startOffset ] ) ) {143 newStartContainer = startContainer.childNodes[ startOffset ];144 }145 146 newStartContainer = _getSelectionStartNode( newStartContainer );147 148 if ( newStartContainer ) {149 newStartOffset = 0;150 } else {151 newStartContainer = range.startContainer;152 }153 154 // rule:155 // The end position cannot preceed the start position.156 // If we detect such a case, then we collapse the selection round157 // the end position158 //159 // reference:160 // http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-compareDocumentPosition161 // Bits Number Meaning162 // ------ ------ -------163 // 000000 0 Elements are identical.164 // 000001 1 The nodes are in different documents (or one is outside of a document).165 // 000010 2 Node B precedes Node A.166 // 000100 4 Node A precedes Node B.167 // 001000 8 Node B contains Node A.168 // 010000 16 Node A contains Node B.169 // 100000 32 For private use by the browser.170 var posbits = compareDocumentPosition( newStartContainer, newEndContainer );171 172 if ( posbits & 2 && !( posbits & 8 ) ) {173 range.startOffset = newEndOffset;174 range.startContainer = newEndContainer;175 range.endOffset = newEndOffset;176 range.endContainer = newEndContainer;177 178 return range;179 }180 181 while ( !_isFlowNode( newStartContainer ) &&182 newStartContainer == newEndContainer &&183 newStartOffset == newEndOffset - 1 &&184 !_isSelectionStopNode( newStartContainer ) &&185 !isVoidElement( newStartContainer.childNodes[ newStartOffset ] ) ) {186 // We have this sort of situation: 'foo{<span><br></span>}baz'187 newStartContainer = newEndContainer = newStartContainer.childNodes[ newStartOffset ];188 newStartOffset = 0;189 if ( newEndContainer.childNodes ) {190 newEndOffset = newEndContainer.childNodes.length;191 } else {192 newEndOffset = newEndContainer.length;193 }194 }195 196 // Fix position around void elements197 198 if ( newStartContainer != newEndContainer || newStartOffset != newEndOffset ) {199 200 if ( newEndOffset == 0 && isVoidElement( newEndContainer.previousSibling ) ) {201 202 var index = getIndexOfChildNode(203 newEndContainer.parentNode, newEndContainer.previousSibling204 );205 206 if ( index != -1 ) {207 newEndContainer = newEndContainer.parentNode;208 newEndOffset = index + 1;209 }210 211 }212 213 if ( newStartContainer.length &&214 newStartContainer.length == newStartOffset &&215 isVoidElement( newStartContainer.nextSibling ) ) {216 217 var index = getIndexOfChildNode(218 newStartContainer.parentNode, newStartContainer.nextSibling219 );220 221 if ( index != -1 ) {222 newStartContainer = newStartContainer.parentNode;223 newStartOffset = index;224 }225 226 }227 } else {228 //debugger;229 //newStartContainer = _getSelectionStartNode( newStartContainer );230 //if ( newStartContainer ) {231 // newEndContainer = newStartContainer;232 // newEndOffset = newStartOffset = 0;233 //}234 }235 236 // 'foo<span>{}<br></span>baz', 'foo[]<span><br></span>baz'237 // 'foo<span><br>{}</span>baz', 'foo<span><br></span>[]baz'238 if ( newStartOffset == 0 &&239 newStartContainer == newEndContainer &&240 isVoidElement( newStartContainer.firstChild ) ) {241 242 newStartContainer = _getSelectionEndNode(243 _moveBackwards( newStartContainer )244 );245 newStartOffset = newStartContainer.length;246 247 } else if ( newStartOffset == newStartContainer.childNodes.length &&248 isVoidElement( newStartContainer.lastChild ) ) {249 250 newStartContainer = _moveForwards( newStartContainer );251 newStartOffset = 0;252 253 }254 255 if ( newEndOffset == 0 &&256 newEndContainer.previousSibling &&257 isVoidElement( newEndContainer.firstChild ) ) {258 259 newEndContainer = newEndContainer.previousSibling;260 newEndOffset = newEndContainer.length;261 262 } else if ( newEndContainer.nextSibling &&263 newEndOffset == newEndContainer.childNodes.length &&264 isVoidElement( newEndContainer.lastChild ) ) {265 266 newEndContainer = newEndContainer.nextSibling;267 newEndOffset = 0;268 269 }270 271 if ( newStartContainer != newEndContainer ) {272 if ( newStartContainer.length == newStartOffset ) {273 var next = _moveForwards( newStartContainer );274 } else {275 var next = newStartContainer.childNodes[ newStartOffset ];276 }277 278 if ( next ) {279 if ( next.firstChild == next.lastChild && isVoidElement( next.firstChild ) ) {280 newStartContainer = next;281 newStartOffset = 0;282 }283 }284 285 if ( newEndOffset == 0 ) {286 var prev = _moveBackwards( newEndContainer );287 288 if ( prev ) {289 if ( prev.firstChild == prev.lastChild && isVoidElement( prev.firstChild ) ) {290 newEndContainer = prev;291 newEndOffset = 1;292 }293 }294 }295 }296 297 // [ 'foo[}<br>baz', 'foo[]<br>baz' ],298 // [ 'foo<br>{]baz', 'foo<br>[]baz' ],299 if ( newStartContainer == newEndContainer &&300 newStartOffset == newEndOffset &&301 newStartContainer.childNodes.length &&302 !_isSelectionStopNode( newStartContainer ) ) {303 newStartContainer = newStartContainer.childNodes[ newStartOffset ];304 if ( isVoidElement( newStartContainer ) ) {305 newStartContainer = newStartContainer.previousSibling;306 newStartOffset = newEndOffset = newStartContainer.length;307 } else {308 newStartOffset = newEndOffset = 0;309 }310 311 newEndContainer = newStartContainer;312 }313 314 // Satisfies: '<p>[foo</p><p>]bar</p><p>baz</p>', '<p>[foo</p><p>}bar</p><p>baz</p>'315 if ( _isFlowNode( newEndContainer.parentNode ) &&316 newEndContainer.parentNode.firstChild == newEndContainer &&317 newEndOffset == 0 ) {318 //debugger;319 newEndContainer = newEndContainer.parentNode,320 newEndOffset = 0;321 }322 323 if ( !_isFlowNode( newEndContainer ) && // make sure we don't do correct this: </p>}foo to </p>]foo324 !_isSelectionStopNode( newEndContainer ) &&325 _isPositionAtNodeEnd( newEndContainer, newEndOffset + 1 ) &&326 !isVoidElement( newEndContainer.childNodes[ newEndOffset ].previousSibling ) ) {327 newEndContainer = newEndContainer.childNodes[ newEndOffset ];328 newEndOffset = 0;329 }330 331 if ( newEndContainer ) {332 range.endContainer = newEndContainer;333 range.endOffset = newEndOffset;334 }335 336 if ( newStartContainer ) {337 range.startContainer = newStartContainer;338 range.startOffset = newStartOffset;339 }340 ...
parse.spec.ts
Source:parse.spec.ts
1import { parse } from '../src/parse'2describe('parse', () => {3 it('happy path', () => {4 const res = parse('<div class="foo"></div>')5 expect(res).toEqual( {6 type: 'root',7 tag: 'root',8 isVoidElement: false,9 class: '',10 bindClass: '',11 id:'',12 bindId:'',13 children: [{14 type: 'tag',15 tag: 'div',16 class: 'foo',17 bindClass: '',18 id:'',19 bindId:'',20 isVoidElement: false,21 children: []22 }]23 })24 })25 it('muti tag', () => {26 const res = parse('<div class="foo"><p class="bar"></p></div>')27 expect(res).toEqual({28 type: 'root',29 tag: 'root',30 isVoidElement: false,31 class: '',32 bindClass: '',33 id:'',34 bindId:'',35 children: [36 {37 type: 'tag',38 tag: 'div',39 class: 'foo',40 bindClass: '',41 id:'',42 bindId:'',43 isVoidElement: false,44 children: [45 {46 type: 'tag',47 tag: 'p',48 class: 'bar',49 bindClass: '',50 id:'',51 bindId:'',52 isVoidElement: false,53 children: []54 }55 ]56 }57 ]58 })59 })...
ast.js
Source:ast.js
...33 "br": true,34 "hr": true,35 "img": true36};37function isVoidElement(node) {38 return (node.children.length === 0) && voidTagNames[node.tag.tagName];39}...
Using AI Code Generation
1const wptools = require('wptools');2const isVoidElement = wptools.isVoidElement;3const wptools = require('wptools');4const isVoidElement = wptools.isVoidElement;5const wptools = require('wptools');6const isVoidElement = wptools.isVoidElement;7const wptools = require('wptools');8const isVoidElement = wptools.isVoidElement;9const wptools = require('wptools');10const isVoidElement = wptools.isVoidElement;11const wptools = require('wptools');12const isVoidElement = wptools.isVoidElement;13const wptools = require('wptools');14const isVoidElement = wptools.isVoidElement;15const wptools = require('wptools');16const isVoidElement = wptools.isVoidElement;17const wptools = require('wptools');18const isVoidElement = wptools.isVoidElement;19const wptools = require('wptools');20const isVoidElement = wptools.isVoidElement;21const wptools = require('wptools');22const isVoidElement = wptools.isVoidElement;23const wptools = require('wptools');24const isVoidElement = wptools.isVoidElement;
Using AI Code Generation
1const wptools = require('wptools');2const isVoidElement = wptools.isVoidElement;3const wptools = require('wptools');4const isVoidElement = wptools.isVoidElement;5const wptools = require('wptools');6const isVoidElement = wptools.isVoidElement;7const wptools = require('wptools');8const isVoidElement = wptools.isVoidElement;9const wptools = require('wptools');10const isVoidElement = wptools.isVoidElement;11const wptools = require('wptools');12const isVoidElement = wptools.isVoidElement;13const wptools = require('wptools');14const isVoidElement = wptools.isVoidElement;15const wptools = require('wptools');16const isVoidElement = wptools.isVoidElement;
Using AI Code Generation
1const { isVoidElement } = require('wptools');2const { isVoidElement } = require('wptools');3const { isVoidElement } = require('wptools');4const { isVoidElement } = require('wptools');5const { isVoidElement } = require('wptools');6const { isVoidElement } = require('wptools');7const { isVoidElement } = require('wptools');8const { isVoidElement } = require('wptools');9const { isVoidElement } = require('wptools');10const { isVoidElement } = require('wptools');11const { isVoidElement } = require('wptools');
Using AI Code Generation
1var wptools = require('wptools');2var isVoidElement = wptools.isVoidElement;3var wptools = require('wptools');4var isVoidElementSync = wptools.isVoidElementSync;5var wptools = require('wptools');6var isVoidElementSync = wptools.isVoidElementSync;7var wptools = require('wptools');8var isVoidElementSync = wptools.isVoidElementSync;9var wptools = require('wptools');10var isVoidElementSync = wptools.isVoidElementSync;11var wptools = require('wptools');12var isVoidElementSync = wptools.isVoidElementSync;
Using AI Code Generation
1var wpt = require('webpage').create();2wpt.open(url, function(status) {3 if (status === 'success') {4 var isVoid = wpt.evaluate(function() {5 return document.isVoidElement('br');6 });7 console.log('isVoidElement: ' + isVoid);8 }9 phantom.exit();10});
Using AI Code Generation
1var wptools = require('./wptools.js');2var assert = require('assert');3var test = function() {4 assert.equal(true,wptools.isVoidElement("area"));5 assert.equal(true,wptools.isVoidElement("base"));6 assert.equal(true,wptools.isVoidElement("br"));7 assert.equal(true,wptools.isVoidElement("col"));8 assert.equal(true,wptools.isVoidElement("embed"));9 assert.equal(true,wptools.isVoidElement("hr"));10 assert.equal(true,wptools.isVoidElement("img"));11 assert.equal(true,wptools.isVoidElement("input"));12 assert.equal(true,wptools.isVoidElement("keygen"));13 assert.equal(true,wptools.isVoidElement("link"));14 assert.equal(true,wptools.isVoidElement("menuitem"));15 assert.equal(true,wptools.isVoidElement("meta"));16 assert.equal(true,wptools.isVoidElement("param"));17 assert.equal(true,wptools.isVoidElement("source"));18 assert.equal(true,wptools.isVoidElement("track"));19 assert.equal(true,wptools.isVoidElement("wbr"));20 assert.equal(true,wptools.isVoidElement("command"));21 assert.equal(true,wptools.isVoidElement("basefont"));22 assert.equal(true,wptools.isVoidElement("isindex"));23 assert.equal(true,wptools.isVoidElement("bgsound"));24 assert.equal(true,wptools.isVoidElement("frame"));25 assert.equal(true,wptools.isVoidElement("image"));26 assert.equal(true,wptools.isVoidElement("spacer"));27 assert.equal(tr
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!