Best Python code snippet using pyatom_python
slider_deslizante.py
Source:slider_deslizante.py  
1__pragma__("alias","array_from","Array.from")2c=03class Slider(object):4	def __init__(self,5				selector,6				data={"velocity":1,7					  "direction":"left",8					  "orientation":"horizontal",9					  "width":"auto",10					  "height":"auto"}) -> Slider:11		if type(selector)==str:12			self.document=document.querySelectorAll(selector)13		elif NodeList.prototype.isPrototypeOf(selector):14			self.document=selector15		elif Node.prototype.isPrototypeOf(selector):16			self.document=[selector]17		else:18			self.document=selector19		self.maxdistance=020		self.second_delay=021		self.direction=data["direction"] if "direction" in data else "left"22		self.orientation=data["orientation"] if "orientation" in data else "horizontal"23		self.height=data["height"] if type(data["height"])==str else f"{data['height']}px"24		self.width=data["width"] if type(data["width"])==str else f"{data['width']}px"25		self.velocity=data["velocity"] if "velocity" in data else 126		self.mode="prod"27		self.sliders={}28		29			30		31	def loop(self,slider):32		def fn(slider):			33			34			node=self.document[slider].querySelector(".slowslider-content")35			doc=self.sliders[slider]36			37			if not doc.paused:38				39				if self.direction=="left":40					41					node.scrollLeft+=142					self.sliders[slider]["scrollleft"]=node.scrollLeft43					44					if node.scrollLeft>=self.sliders[slider]["maxdistance"]:45						node.scrollLeft=046						self.sliders[slider]["scrollleft"]=node.scrollLeft47				elif self.direction=="right":48					node.scrollLeft-=149					self.sliders[slider]["scrollleft"]=node.scrollLeft50					constante=3551					if node.scrollLeft<=((node.maxscroll*(self.sliders[slider]["maxdistance"]-node.offsetWidth))/node.scrollWidth)+constante:#3552						53						node.scrollLeft=node.scrollWidth54			self.sliders[slider]["control"]=False55		if not self.sliders[slider]["control"]:56			self.sliders[slider]["control"]=True57			setTimeout(lambda:fn(slider),self.sliders[slider]["second_delay"])58					59	def dragstart(self,evt):60		61		for k,elem in enumerate(self.document):62			found=True63			for slider in evt.path:64				if elem==slider:65					break66			else:67				found=False68			if found:69				break70		slider.x=evt.clientX71		slider.y=evt.clientY72		slider.paused=True73		74		75	def drag(self,evt):76		for k,elem in enumerate(self.document):77			found=True78			for slider in evt.path:79				if elem==slider:80					break81			else:82				found=False83			if found:84				break85		86		87		88		89		dx=evt.clientX-slider.x90		dy=evt.clientY-slider.y91		slider.x=evt.clientX92		slider.y=evt.clientY93		slider.paused=True94		if self.orientation=="horizontal":95			slider.querySelector(".slowslider-content").scrollLeft+=dx96			self.sliders[k]["scrollleft"]=slider.querySelector(".slowslider-content").scrollLeft97			#slider.scrollleft=self.sliders[k]["scrollleft"]98		elif self.orientation=="vertical":99			slider.querySelector(".slowslider-content").scrollTop+=dy100			#slider.scrollltop=self.slider[k]["scrolltop"]101		102	def dragend(self,evt):103		104		for k,elem in enumerate(self.document):105			found=True106			for slider in evt.path:107				if elem==slider:108					break109			else:110				found=False111			if found:112				break113		114		115		116		slider.querySelector(".slowslider-content").scrollLeft=self.sliders[k]["scrollleft"]117		118		slider.paused=False119	def mouseover(self,evt):120		121		for k,elem in enumerate(self.document):122			found=True123			for slider in evt.path:124				if elem==slider:125					break126			else:127				found=False128			if found:129				break130		131		#slider.paused=True132		self.sliders[k]["second_delay"]=50133	def mouseout(self,evt):134		135		for k,elem in enumerate(self.document):136			found=True137			for slider in evt.path:138				if elem==slider:139					break140			else:141				found=False142			if found:143				break144		#slider.paused=False145		self.sliders[k]["second_delay"]=0146		147				148	def recursive(self,node,fn):149		150		for node in node.children:151			fn(node)152			self.recursive(node,fn)153		154	def reload(self):155		156		for k,doc in enumerate(self.document):157			node=doc.querySelector("[data-height]")158			if node!=None:159				self.height=node.attributes["data-height"].value160				if "data-velocity" in node.attributes:161					self.velocity=int(node.attributes["data-velocity"].value.replace("px",""))162				if "data-width" in node.attributes:163					self.width=node.attributes["data-width"].value164				if "data-direction" in node.attributes:165					self.direction=node.attributes["data-direction"].value166				if "data-orientation" in node.attributes:167					self.orientation=node.attributes["data-orientation"].value168			169			#self.recursive(doc,lambda node: setattr(node.style,"maxHeight",self.height))170			clones=[]171			doc.maxdistance=0172			children=doc.querySelector(".slowslider-content").children173			for node in children:174				if "data-clone" in node.attributes:175					node.remove()176			children=doc.querySelector(".slowslider-content").children177			for node in children:178				clones.append(node.cloneNode(True))179				self.sliders[k]["maxdistance"]+=node.offsetWidth	180			for node in clones:181				node.setAttribute("data-clone",True)182				doc.querySelector(".slowslider-content").appendChild(node)183		184	185	def run(self):186		187		for k,doc in enumerate(self.document):188			doc.setAttribute("draggable",True)189			doc.paused=False190			if "slider" in dir(doc):191				clearInterval(doc.sider.mainloop)192				del doc.slider193			#doc.addEventListener("dragstart",self.dragstart)194			#doc.addEventListener("drag",self.drag)195			#doc.addEventListener("dragend",self.dragend)196			doc.addEventListener("mouseover",self.mouseover)197			doc.addEventListener("mouseout",self.mouseout)198			self.sliders[k]={}199			self.sliders[k]["scrollleft"]=0200			self.sliders[k]["scrolltop"]=0201			self.sliders[k]["second_delay"]=0202			self.sliders[k]["control"]=False203			self.sliders[k]["maxdistance"]=0204			doc.slider=self205			node=doc.querySelector(".slowslider-content")206			if self.mode=="prod":207				node.style.overflow="hidden"		208			elif self.mode=="edit":209				node.style.overflow="scroll"		210			if self.orientation=="horizontal":211				node.style.flexDirection="row";212			elif self.orientation=="vertical":213				node.style.flexDirection="column";214				node.style.height=height;215			216			node.style.height=self.height;217			node.style.width=self.width;218			node.style.display="flex";219			node.style.flexDirection="row";220			221			self.reload()222			if self.direction=="right":223				node.scrollLeft=node.scrollWidth224				self.sliders[k]["maxdistance"]+=node.offsetWidth225			self.maxscroll=node.scrollLeft226			if self.mode=="prod":227				doc.mainloop=setInterval(lambda: self.loop(k),self.velocity)228	...script.py
Source:script.py  
1from mixt import Element, html2# language=JS3JS = """4/* <components.script.VendoredScripts> */5// "focus-within" polyfill: https://gist.github.com/aFarkas/a7e0d85450f323d5e1646(function(window, document){7    'use strict';8    var slice = [].slice;9    var removeClass = function(elem){10        elem.classList.remove('focus-within');11    };12    var update = (function(){13        var running, last;14        var action = function(){15            var element = document.activeElement;16            running = false;17            if(last !== element){18                last = element;19                slice.call(document.getElementsByClassName('focus-within')).forEach(removeClass);20                while(element && element.classList){21                    element.classList.add('focus-within');22                    element = element.parentNode;23                }24            }25        };26        return function(){27            if(!running){28                requestAnimationFrame(action);29                running = true;30            }31        };32    })();33    document.addEventListener('focus', update, true);34    document.addEventListener('blur', update, true);35    update();36})(window, document);37// "scrollIntoView" only if needed: https://github.com/stipsan/scroll-into-view-if-needed38!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.scrollIntoView=e()}(this,function(){"use strict";var t,e=function(){return t||(t="CSS1Compat"===document.compatMode?document.documentElement:document.scrollingElement||document.documentElement),t},o=function(t){return null!=t&&"object"==typeof t&&(1===t.nodeType||11===t.nodeType)},i=function(t,e){return"X"===e?t.clientWidth<t.scrollWidth:t.clientHeight<t.scrollHeight},n=function(t,e,o){var i=getComputedStyle(t,null)["overflow"+e];return(!o||"hidden"!==i)&&("visible"!==i&&"clip"!==i)},r=function(t,o){return t===e()||i(t,"Y")&&n(t,"Y",o)||i(t,"X")&&n(t,"X",o)},l=function(t,e,o,i,n,r,l,f){return r<t&&l>e||r>t&&l<e?0:r<t&&f<o||l>e&&f>o?r-t-i:l>e&&f<o||r<t&&f>o?l-e+n:0},f=function(t,i){void 0===i&&(i={});var n=i,f=n.scrollMode,c=void 0===f?"always":f,d=n.block,s=void 0===d?"center":d,u=n.inline,h=void 0===u?"nearest":u,a=n.boundary,p=n.skipOverflowHiddenElements,v=void 0!==p&&p,w="function"==typeof a?a:function(t){return t!==a};if(!o(t))throw new Error("Element is required in scrollIntoView");for(var m,g=t.getBoundingClientRect(),b=[];o(m=t.parentNode||t.host)&&w(t);)r(m,v)&&b.push(m),t=m;var y,T,L=e(),M=window.visualViewport?window.visualViewport.width:Math.min(L.clientWidth,window.innerWidth),H=window.visualViewport?window.visualViewport.height:Math.min(L.clientHeight,window.innerHeight),W=window.scrollX||window.pageXOffset,C=window.scrollY||window.pageYOffset;if("if-needed"===c&&b.every(function(t){var e=t.getBoundingClientRect();if(g.top<e.top)return!1;if(g.bottom>e.bottom)return!1;if(t===L){if(g.bottom>H||g.top<0)return!1;if(g.left>M||g.right<0)return!1}return!0}))return[];return b.map(function(t){var e=t.getBoundingClientRect(),o=getComputedStyle(t),i=parseInt(o.borderLeftWidth,10),n=parseInt(o.borderTopWidth,10),r=parseInt(o.borderRightWidth,10),f=parseInt(o.borderBottomWidth,10),c=0,d=0;if("start"===s)if(y||(y=g.top),L===t)c=C+y;else{var u=Math.min(y-e.top,t.scrollHeight-t.clientHeight-t.scrollTop);c=t.scrollTop+u-n}if("center"===s)if(y||(y=g.top+g.height/2),L===t)c=C+y-H/2;else{var a=0-Math.min(e.top+e.height/2-y,t.scrollTop);c=t.scrollTop+a}if("end"===s)if(y||(y=g.bottom),L===t)c=C+y-H;else{var p=0-Math.min(e.bottom-y,t.scrollTop);c=t.scrollTop+p+f}if("nearest"===s)if(y||(y=g.top),L===t){var v=l(C,C+H,H,n,f,C+y,C+y+g.height,g.height);c=C+v}else{var w=l(e.top,e.bottom,e.height,n,f,y,y+g.height,g.height);c=t.scrollTop+w}if("start"===h)if(T||(T=g.left),L===t)d=W+T;else{var m=Math.min(T-e.left,t.scrollHeight-t.clientLeft-t.scrollLeft);d=t.scrollLeft+m-i}if("center"===h)if(T||(T=g.left+g.width/2),L===t)d=W+T-M/2;else{var b=0-Math.min(e.left+e.width/2-T,t.scrollLeft);d=t.scrollLeft+b}if("end"===h)if(T||(T=g.right),L===t)d=W+T-M;else{var E=0-Math.min(e.right-T,t.scrollLeft);d=t.scrollLeft+E+r}if("nearest"===h)if(T||(T=g.left),L===t){var k=l(W,W+M,M,i,r,W+T,W+T+g.width,g.width);d=W+k}else{var I=l(e.left,e.right,e.width,i,r,T,T+g.width,g.width);d=t.scrollLeft+I}return y+=t.scrollTop-c,T+=t.scrollLeft-d,{el:t,top:c,left:d}})},c=function(t){return"function"==typeof t},d=function(t){return t===Object(t)&&0!==Object.keys(t).length},s=function(t,o){void 0===o&&(o="auto");var i=e(),n="scrollBehavior"in i.style;t.forEach(function(t){var e=t.el,r=t.top,l=t.left;e.scroll&&n?e.scroll({top:r,left:l,behavior:o}):e===i?window.scrollTo(l,r):(e.scrollTop=r,e.scrollLeft=l)})},u=function(t){return void 0===t&&(t=!0),!0===t||null===t?{block:"start",inline:"nearest"}:!1===t?{block:"end",inline:"nearest"}:d(t)?t:{block:"start",inline:"nearest"}};return function(t,e){if(void 0===e&&(e=!0),d(e)&&c(e.behavior))return e.behavior(f(t,e));var o=u(e);return s(f(t,o),o.behavior)}});39/* </components.script.VendoredScripts> */40"""41class VendoredScripts(Element):42    class PropTypes:43        with_tag: bool = True44    def render(self, context):45        js = html.Raw(JS)...scrollLeft.js
Source:scrollLeft.js  
1module('baidu.dom.scrollLeft');2test("baidu.dom().scrollLeft()", function(){3	var div, textarea, body, iframe;4	div = create( "div", 100, 100 );5	textarea = create( "textarea", 100, 100 );6//	body = create( "body", 100, 100 );7//	iframe = create( "iframe", 100, 100 );8	equal( div.scrollLeft(), 100, "div scrollLeft" );9	equal( textarea.scrollLeft(), 0, "textarea scrollLeft" );//textareaæ²¡ææ¨ªåæ»å¨æ¡10//	equal( body.scrollLeft(), 100, "body scrollLeft" );11//	equal( iframe.scrollLeft(), 100, "iframe scrollLeft" );12	$.each( [ div, textarea ], function( index, item ){ item.remove(); } );13});14test("baidu.dom().scrollLeft(value)", function(){15	var div, textarea, body, iframe;16	div = create( "div" );17	textarea = create( "textarea" );18//	body = create( "body" );19//	iframe = create( "iframe" );20	equal( div.scrollLeft( 200 ).scrollLeft(), 200, "div scrollLeft" );21	equal( textarea.scrollLeft( 100 ).scrollLeft(), 0, "textarea scrollLeft" );22//	equal( body.scrollLeft( 100 ).scrollLeft(), 100, "body scrollLeft" );23//	equal( iframe.scrollLeft( 100 ).scrollLeft(), 100, "iframe scrollLeft" );24	$.each( [ div, textarea ], function( index, item ){ item.remove(); } );25});26test("baidu.dom().scrollLeft( NaN )", function(){27	var div, textarea, body, iframe;28	div = create( "div" );29	textarea = create( "textarea" );30//	body = create( "body" );31//	iframe = create( "iframe" );32	equal( div.scrollLeft( NaN ).scrollLeft(), 0, "div scrollLeft" );33	equal( textarea.scrollLeft( NaN ).scrollLeft(), 0, "textarea scrollLeft" );34//	equal( body.scrollLeft( NaN ).scrollLeft(), 0, "body scrollLeft" );35//	equal( iframe.scrollLeft( NaN ).scrollLeft(), 0, "iframe scrollLeft" );36	$.each( [ div, textarea ], function( index, item ){ item.remove(); } );37});38test("baidu.dom().scrollLeft( -n )", function(){39	var div, textarea, body, iframe;40	div = create( "div" );41	textarea = create( "textarea" );42//	body = create( "body" );43//	iframe = create( "iframe" );44	equal( div.scrollLeft( -100 ).scrollLeft(), 0, "div scrollLeft" );45	equal( textarea.scrollLeft( -100 ).scrollLeft(), 0, "textarea scrollLeft" );46//	equal( body.scrollLeft( 100 ).scrollLeft( -100 ).scrollLeft(), 100, "body scrollLeft" );47//	equal( iframe.scrollLeft( -100 ).scrollLeft(), 0, "iframe scrollLeft" );48	$.each( [ div, textarea ], function( index, item ){ item.remove(); } );49});50test("baidu.dom().scrollLeft( n.n )", function(){51	var div, textarea, body, iframe;52	div = create( "div" );53	textarea = create( "textarea" );54//	body = create( "body" );55//	iframe = create( "iframe" );56	equal( div.scrollLeft( 10.5 ).scrollLeft(), 10, "div scrollLeft" );//ä¿æåjqä¸è´57	equal( textarea.scrollLeft( 10.5 ).scrollLeft(), 0, "textarea scrollLeft" );58//	equal( body.scrollLeft( 10.5 ).scrollLeft(), 11, "body scrollLeft" );59//	equal( iframe.scrollLeft( 10.5 ).scrollLeft(), 11, "iframe scrollLeft" );60	$.each( [ div, textarea ], function( index, item ){ item.remove(); } );61});62function create( tag, sLeft, sTop ){63    var el = document.createElement( tag );64    document.body.appendChild( el );65    66    if( tag == "div" )67    	el.style.overflow = "scroll";68    69    el[tag === 'textarea' ? 'value' : 'innerHTML'] = new Array(50).join('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz<br/>\n');70    71    el.style.width =72    el.style.height = '100px';73    74    if( typeof sLeft != "undefined" )75        el.scrollLeft = sLeft;76    if( typeof sTop != "undefined" )77    	el.scrollTop = sTop;78    79    var El = baidu.dom( el );80    El.remove = function(){81        document.body.removeChild( el );82    }83    return El;84}85test("dom为空çæ
åµ",function(){86    var result = baidu("#baidujsxiaozu").scrollLeft();87    equal(result,0,'getæ¹æ³');88    var result = baidu("#baidujsxiaozu").scrollLeft(1231231);89    ok(result,'æä¸è¥¿å°±è¡');...dir-helper.js
Source:dir-helper.js  
1/**2 * @license3 * Copyright (c) 2021 - 2022 Vaadin Ltd.4 * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/5 */6/**7 * Helper that provides a set of functions for RTL.8 */9class DirHelper {10  /**11   * Get the scroll type in the current browser view.12   *13   * @return {string} the scroll type. Possible values are `default|reverse|negative`14   */15  static detectScrollType() {16    const dummy = document.createElement('div');17    dummy.textContent = 'ABCD';18    dummy.dir = 'rtl';19    dummy.style.fontSize = '14px';20    dummy.style.width = '4px';21    dummy.style.height = '1px';22    dummy.style.position = 'absolute';23    dummy.style.top = '-1000px';24    dummy.style.overflow = 'scroll';25    document.body.appendChild(dummy);26    let cachedType = 'reverse';27    if (dummy.scrollLeft > 0) {28      cachedType = 'default';29    } else {30      dummy.scrollLeft = 2;31      if (dummy.scrollLeft < 2) {32        cachedType = 'negative';33      }34    }35    document.body.removeChild(dummy);36    return cachedType;37  }38  /**39   * Get the scrollLeft value of the element relative to the direction40   *41   * @param {string} scrollType type of the scroll detected with `detectScrollType`42   * @param {string} direction current direction of the element43   * @param {Element} element44   * @return {number} the scrollLeft value.45   */46  static getNormalizedScrollLeft(scrollType, direction, element) {47    const { scrollLeft } = element;48    if (direction !== 'rtl' || !scrollType) {49      return scrollLeft;50    }51    switch (scrollType) {52      case 'negative':53        return element.scrollWidth - element.clientWidth + scrollLeft;54      case 'reverse':55        return element.scrollWidth - element.clientWidth - scrollLeft;56      default:57        return scrollLeft;58    }59  }60  /**61   * Set the scrollLeft value of the element relative to the direction62   *63   * @param {string} scrollType type of the scroll detected with `detectScrollType`64   * @param {string} direction current direction of the element65   * @param {Element} element66   * @param {number} scrollLeft the scrollLeft value to be set67   */68  static setNormalizedScrollLeft(scrollType, direction, element, scrollLeft) {69    if (direction !== 'rtl' || !scrollType) {70      element.scrollLeft = scrollLeft;71      return;72    }73    switch (scrollType) {74      case 'negative':75        element.scrollLeft = element.clientWidth - element.scrollWidth + scrollLeft;76        break;77      case 'reverse':78        element.scrollLeft = element.scrollWidth - element.clientWidth - scrollLeft;79        break;80      default:81        element.scrollLeft = scrollLeft;82        break;83    }84  }85}...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!!
