@fluxscape/react-runtime 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/build/{viewer/fluxscape.viewer.js → preview/fluxscape.preview.js} +2 -2
  2. package/build/{deploy/noodl.index.deploy.js.map → preview/fluxscape.preview.js.map} +1 -1
  3. package/build/{deploy → preview}/index.html +2 -15
  4. package/build/preview/index.js.liquid +1 -0
  5. package/{static/deploy → build/production}/index.html +2 -15
  6. package/build/production/index.js.liquid +1 -0
  7. package/build/{deploy/noodl.index.deploy.js → production/noodl.index.production.js} +2 -2
  8. package/build/production/noodl.index.production.js.map +1 -0
  9. package/dist/components/visual/Icon/Icon.d.ts +2 -2
  10. package/dist/components/visual/Icon/Icon.d.ts.map +1 -1
  11. package/dist/index.es.js +21 -11
  12. package/dist/index.es.js.map +1 -1
  13. package/dist/index.iife.js +1 -1
  14. package/dist/index.iife.js.map +1 -1
  15. package/package.json +6 -7
  16. package/build/deploy/index.js +0 -10
  17. package/build/deploy/index.json +0 -10
  18. package/build/deploy/noodl-app.png +0 -0
  19. package/build/viewer/fluxscape.viewer.js.map +0 -1
  20. package/build/viewer/index.html +0 -99
  21. package/build/viewer/noodl-app.png +0 -0
  22. package/index.deploy.js +0 -3
  23. package/index.ssr.js +0 -7
  24. package/index.viewer.js +0 -4
  25. package/static/deploy/index.js +0 -10
  26. package/static/deploy/index.json +0 -10
  27. package/static/shared/load_terminator.js +0 -1
  28. package/static/shared/noodl-app.png +0 -0
  29. package/static/shared/react-dom.production.min.js +0 -219
  30. package/static/shared/react.production.min.js +0 -32
  31. package/static/ssr/index.js +0 -194
  32. package/static/ssr/index.json +0 -5
  33. package/static/ssr/package.json +0 -25
  34. package/static/viewer/global.d.ts.keep +0 -721
  35. package/static/viewer/index.html +0 -99
  36. package/static/viewer/ndl_assets/OpenSans-Bold.ttf +0 -0
  37. package/static/viewer/ndl_assets/OpenSans-Regular.ttf +0 -0
  38. package/static/viewer/ndl_assets/home-icon.svg +0 -3
  39. package/static/viewer/ndl_assets/make-home-instructions@2x.png +0 -0
  40. package/static/viewer/ndl_assets/noodl-logo-black.svg +0 -3
  41. /package/build/{viewer → preview}/global.d.ts.keep +0 -0
  42. /package/build/{deploy → preview}/load_terminator.js +0 -0
  43. /package/build/{viewer → preview}/ndl_assets/OpenSans-Bold.ttf +0 -0
  44. /package/build/{viewer → preview}/ndl_assets/OpenSans-Regular.ttf +0 -0
  45. /package/build/{viewer → preview}/ndl_assets/home-icon.svg +0 -0
  46. /package/build/{viewer → preview}/ndl_assets/make-home-instructions@2x.png +0 -0
  47. /package/build/{viewer → preview}/ndl_assets/noodl-logo-black.svg +0 -0
  48. /package/build/{deploy → preview}/react-dom.production.min.js +0 -0
  49. /package/build/{deploy → preview}/react-runtime.css +0 -0
  50. /package/build/{deploy → preview}/react.production.min.js +0 -0
  51. /package/build/{viewer → production}/load_terminator.js +0 -0
  52. /package/build/{viewer → production}/react-dom.production.min.js +0 -0
  53. /package/build/{viewer → production}/react-runtime.css +0 -0
  54. /package/build/{viewer → production}/react.production.min.js +0 -0
@@ -92,7 +92,7 @@ map({
92
92
  * better-scroll / slide
93
93
  * (c) 2016-2020 ustbhuangyi
94
94
  * Released under the MIT License.
95
- */function warn(e){console.error("[BScroll warn]: "+e)}var inBrowser=typeof window<"u",ua=inBrowser&&navigator.userAgent.toLowerCase();ua&&ua.indexOf("android")>0;function extend(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var o=0;o<t.length;o++){var r=t[o];for(var s in r)e[s]=r[s]}return e}function fixInboundValue(e,t,n){return e<t?t:e>n?n:e}var elementStyle=inBrowser&&document.createElement("div").style,vendor=function(){if(!inBrowser)return!1;var e={webkit:"webkitTransform",Moz:"MozTransform",O:"OTransform",ms:"msTransform",standard:"transform"};for(var t in e)if(elementStyle[e[t]]!==void 0)return t;return!1}();function prefixStyle(e){return vendor===!1?e:vendor==="standard"?e==="transitionEnd"?"transitionend":e:vendor+e.charAt(0).toUpperCase()+e.substr(1)}vendor&&vendor!=="standard"&&""+vendor.toLowerCase(),prefixStyle("transform"),prefixStyle("transition"),inBrowser&&prefixStyle("perspective")in elementStyle,prefixStyle("transitionTimingFunction"),prefixStyle("transitionDuration"),prefixStyle("transitionDelay"),prefixStyle("transformOrigin"),prefixStyle("transitionEnd");function getRect(e){if(e instanceof window.SVGElement){var t=e.getBoundingClientRect();return{top:t.top,left:t.left,width:t.width,height:t.height}}else return{top:e.offsetTop,left:e.offsetLeft,width:e.offsetWidth,height:e.offsetHeight}}function prepend(e,t){var n=t.firstChild;n?before(e,n):t.appendChild(e)}function before(e,t){t.parentNode.insertBefore(e,t)}function removeChild(e,t){e.removeChild(t)}var ease={bounce:{style:"cubic-bezier(0.165, 0.84, 0.44, 1)",fn:function(e){return 1- --e*e*e*e}}},PagesPos=function(){function e(t,n){this.scroll=t,this.slideOpt=n,this.slideEl=null,this.init()}return e.prototype.init=function(){var t=this.scroll.scroller,n=t.scrollBehaviorX,o=t.scrollBehaviorY,r=getRect(t.wrapper),s=getRect(t.content);this.wrapperWidth=r.width,this.wrapperHeight=r.height,this.scrollerHeight=o.hasScroll?s.height:r.height,this.scrollerWidth=n.hasScroll?s.width:r.width;var a=this.slideOpt.stepX||this.wrapperWidth,l=this.slideOpt.stepY||this.wrapperHeight,u=t.content,d=this.slideOpt.el;typeof d=="string"&&(this.slideEl=u.querySelectorAll(d)),this.pages=this.slideEl?this.computePagePosInfoByEl(this.slideEl):this.computePagePosInfo(a,l),this.xLen=this.pages?this.pages.length:0,this.yLen=this.pages&&this.pages[0]?this.pages[0].length:0},e.prototype.hasInfo=function(){return!(!this.pages||!this.pages.length)},e.prototype.getPos=function(t,n){return this.pages[t]?this.pages[t][n]:null},e.prototype.getNearestPage=function(t,n){if(this.hasInfo()){for(var o=0,r=0,s=this.pages.length;o<s-1&&!(t>=this.pages[o][0].cx);o++);for(s=this.pages[o].length;r<s-1&&!(n>=this.pages[0][r].cy);r++);return{pageX:o,pageY:r}}},e.prototype.computePagePosInfo=function(t,n){var o=[],r=0,s,a,l,u=0,d,h=this.scroll.scroller.scrollBehaviorX.maxScrollPos,f=this.scroll.scroller.scrollBehaviorY.maxScrollPos;for(a=Math.round(t/2),l=Math.round(n/2);r>-this.scrollerWidth;){for(o[u]=[],d=0,s=0;s>-this.scrollerHeight;)o[u][d]={x:Math.max(r,h),y:Math.max(s,f),width:t,height:n,cx:r-a,cy:s-l},s-=n,d++;r-=t,u++}return o},e.prototype.computePagePosInfoByEl=function(t){for(var n=[],o=0,r=0,s,a,l=0,u=t.length,d=0,h=-1,f,g=this.scroll.scroller.scrollBehaviorX.maxScrollPos,b=this.scroll.scroller.scrollBehaviorY.maxScrollPos;l<u;l++)f=getRect(t[l]),(l===0||f.left<=getRect(t[l-1]).left)&&(d=0,h++),n[d]||(n[d]=[]),o=Math.max(-f.left,g),r=Math.max(-f.top,b),s=o-Math.round(f.width/2),a=r-Math.round(f.height/2),n[d][h]={x:o,y:r,width:f.width,height:f.height,cx:s,cy:a},o>g&&d++;return n},e}(),PageInfo=function(){function e(t,n){this.scroll=t,this.slideOpt=n}return e.prototype.init=function(){this.currentPage={x:0,y:0,pageX:0,pageY:0},this.pagesPos=new PagesPos(this.scroll,this.slideOpt),this.checkSlideLoop()},e.prototype.changeCurrentPage=function(t){this.currentPage=t},e.prototype.change2safePage=function(t,n){if(this.pagesPos.hasInfo()){t>=this.pagesPos.xLen?t=this.pagesPos.xLen-1:t<0&&(t=0),n>=this.pagesPos.yLen?n=this.pagesPos.yLen-1:n<0&&(n=0);var o=this.pagesPos.getPos(t,n);return{pageX:t,pageY:n,x:o?o.x:0,y:o?o.y:0}}},e.prototype.getInitPage=function(){var t=this.loopX?1:0,n=this.loopY?1:0;return{pageX:t,pageY:n}},e.prototype.getRealPage=function(t){var n=function(r,s){for(var a=[],l=0;l<s;l++)a.push(l);return a.unshift(s-1),a.push(0),a[r]},o=t?extend({},t):extend({},this.currentPage);return this.loopX&&(o.pageX=n(o.pageX,this.pagesPos.xLen-2)),this.loopY&&(o.pageY=n(o.pageY,this.pagesPos.yLen-2)),{pageX:o.pageX,pageY:o.pageY}},e.prototype.getPageSize=function(){return this.pagesPos.getPos(this.currentPage.pageX,this.currentPage.pageY)},e.prototype.realPage2Page=function(t,n){if(this.pagesPos.hasInfo()){var o=this.pagesPos.xLen-1,r=this.pagesPos.yLen-1,s=0,a=0;return this.loopX&&(t+=1,s=s+1,o=o-1),this.loopY&&(n+=1,a=a+1,r=r-1),t=fixInboundValue(t,s,o),n=fixInboundValue(n,a,r),{realX:t,realY:n}}},e.prototype.nextPage=function(){return this.changedPageNum("positive")},e.prototype.prevPage=function(){return this.changedPageNum("negative")},e.prototype.nearestPage=function(t,n,o,r){var s=this.pagesPos.getNearestPage(t,n);if(!s)return{x:0,y:0,pageX:0,pageY:0};var a=s.pageX,l=s.pageY,u,d;return a===this.currentPage.pageX&&(a+=o,a=fixInboundValue(a,0,this.pagesPos.xLen-1)),l===this.currentPage.pageY&&(l+=r,l=fixInboundValue(s.pageY,0,this.pagesPos.yLen-1)),u=this.pagesPos.getPos(a,0).x,d=this.pagesPos.getPos(0,l).y,{x:u,y:d,pageX:a,pageY:l}},e.prototype.getLoopStage=function(){if(!this.needLoop)return"middle";if(this.loopX){if(this.currentPage.pageX===0)return"head";if(this.currentPage.pageX===this.pagesPos.xLen-1)return"tail"}if(this.loopY){if(this.currentPage.pageY===0)return"head";if(this.currentPage.pageY===this.pagesPos.yLen-1)return"tail"}return"middle"},e.prototype.resetLoopPage=function(){if(this.loopX){if(this.currentPage.pageX===0)return{pageX:this.pagesPos.xLen-2,pageY:this.currentPage.pageY};if(this.currentPage.pageX===this.pagesPos.xLen-1)return{pageX:1,pageY:this.currentPage.pageY}}if(this.loopY){if(this.currentPage.pageY===0)return{pageX:this.currentPage.pageX,pageY:this.pagesPos.yLen-2};if(this.currentPage.pageY===this.pagesPos.yLen-1)return{pageX:this.currentPage.pageX,pageY:1}}},e.prototype.isSameWithCurrent=function(t){return!(t.pageX!==this.currentPage.pageX||t.pageY!==this.currentPage.pageY)},e.prototype.changedPageNum=function(t){var n=this.currentPage.pageX,o=this.currentPage.pageY;return this.slideX&&(n=t==="negative"?n-1:n+1),this.slideY&&(o=t==="negative"?o-1:o+1),{pageX:n,pageY:o}},e.prototype.checkSlideLoop=function(){this.needLoop=this.slideOpt.loop,this.pagesPos.xLen>1&&(this.slideX=!0),this.pagesPos.pages[0]&&this.pagesPos.yLen>1&&(this.slideY=!0),this.loopX=this.needLoop&&this.slideX,this.loopY=this.needLoop&&this.slideY,this.slideX&&this.slideY&&warn("slide does not support two direction at the same time.")},e}(),sourcePrefix="plugins.slide",propertiesMap=[{key:"next",name:"next"},{key:"prev",name:"prev"},{key:"goToPage",name:"goToPage"},{key:"getCurrentPage",name:"getCurrentPage"}],propertiesConfig=propertiesMap.map(function(e){return{key:e.key,sourceKey:sourcePrefix+"."+e.name}}),Slide=function(){function e(t){this.scroll=t,this.resetLooping=!1,this.isTouching=!1,this.scroll.proxy(propertiesConfig),this.scroll.registerType(["slideWillChange"]),this.slideOpt=this.scroll.options.slide,this.page=new PageInfo(t,this.slideOpt),this.hooksFn=[],this.willChangeToPage={pageX:0,pageY:0},this.init()}return e.prototype.init=function(){var t=this,n=this.slideOpt,o=this.scroll.scroller.content,r=!1;if(n.loop){var s=o.children;s.length>1?(this.cloneSlideEleForLoop(o),r=!0):n.loop=!1}var a=this.setSlideWidth(o),l=this.setSlideHeight(this.scroll.scroller.wrapper,o),u=a||l,d=this.scroll.hooks,h=this.scroll.scroller.hooks;this.registorHooks(d,"refresh",this.initSlideState),this.registorHooks(d,"destroy",this.destroy),this.registorHooks(h,"momentum",this.modifyScrollMetaHandler),this.registorHooks(this.scroll,"scrollEnd",this.amendCurrentPage),this.registorHooks(h,"beforeStart",this.setTouchFlag),this.registorHooks(h,"scroll",this.scrollMoving),this.registorHooks(h,"resize",this.resize),this.scroll.eventTypes.mousewheelMove&&this.scroll.eventTypes.mousewheelEnd&&(this.registorHooks(this.scroll,"mousewheelMove",function(){return!0}),this.registorHooks(this.scroll,"mousewheelEnd",function(f){(f.directionX===1||f.directionY===1)&&t.next(),(f.directionX===-1||f.directionY===-1)&&t.prev()})),n.listenFlick!==!1&&this.registorHooks(h,"flick",this.flickHandler),!r&&!u?this.initSlideState():this.scroll.refresh()},e.prototype.resize=function(){var t=this,n=this.scroll.scroller.content,o=this.scroll.scroller.wrapper;return clearTimeout(this.resizeTimeout),this.resizeTimeout=window.setTimeout(function(){t.clearSlideWidth(n),t.clearSlideHeight(n),t.setSlideWidth(n),t.setSlideHeight(o,n),t.scroll.refresh()},this.scroll.options.resizePolling),!0},e.prototype.next=function(t,n){var o=this.page.nextPage(),r=o.pageX,s=o.pageY;this.goTo(r,s,t,n)},e.prototype.prev=function(t,n){var o=this.page.prevPage(),r=o.pageX,s=o.pageY;this.goTo(r,s,t,n)},e.prototype.goToPage=function(t,n,o,r){var s=this.page.realPage2Page(t,n);s&&this.goTo(s.realX,s.realY,o,r)},e.prototype.getCurrentPage=function(){return this.page.getRealPage()},e.prototype.nearestPage=function(t,n){var o=this.scroll.scroller.scrollBehaviorX,r=this.scroll.scroller.scrollBehaviorY,s=!0;return Math.abs(t-o.absStartPos)<=this.thresholdX&&Math.abs(n-r.absStartPos)<=this.thresholdY&&(s=!1),s?this.page.nearestPage(fixInboundValue(t,o.maxScrollPos,o.minScrollPos),fixInboundValue(n,r.maxScrollPos,r.minScrollPos),o.direction,r.direction):this.page.currentPage},e.prototype.destroy=function(){var t=this.scroll.scroller.content;if(this.slideOpt.loop){var n=t.children;n.length>2&&(removeChild(t,n[n.length-1]),removeChild(t,n[0]))}this.hooksFn.forEach(function(o){var r=o[0],s=o[1],a=o[2];r.eventTypes[s]&&r.off(s,a)}),this.hooksFn.length=0},e.prototype.initSlideState=function(){const t=this.page.currentPage;if(this.page.init(),t)this.page.currentPage=t;else{var n=this.page.getInitPage();this.goTo(n.pageX,n.pageY,0)}this.initThreshold()},e.prototype.initThreshold=function(){var t=this.slideOpt.threshold||.1;if(t%1===0)this.thresholdX=t,this.thresholdY=t;else{var n=this.page.getPageSize();n&&(this.thresholdX=Math.round(n.width*t),this.thresholdY=Math.round(n.height*t))}},e.prototype.cloneSlideEleForLoop=function(t){var n=t.children;prepend(n[n.length-1].cloneNode(!0),t),t.appendChild(n[1].cloneNode(!0))},e.prototype.amendCurrentPage=function(){if(this.isTouching=!1,!!this.slideOpt.loop){if(this.resetLooping){this.resetLooping=!1;return}var t=!1;if(this.page.loopX&&(this.scroll.x===this.scroll.scroller.scrollBehaviorX.minScrollPos||this.scroll.x===this.scroll.scroller.scrollBehaviorX.maxScrollPos)&&(t=!0),this.page.loopY&&(this.scroll.y===this.scroll.scroller.scrollBehaviorY.minScrollPos||this.scroll.y===this.scroll.scroller.scrollBehaviorY.maxScrollPos)&&(t=!0),t){var n=this.scroll.scroller.scrollBehaviorX,o=this.scroll.scroller.scrollBehaviorY,r=this.page.nearestPage(fixInboundValue(this.scroll.x,n.maxScrollPos,n.minScrollPos),fixInboundValue(this.scroll.y,o.maxScrollPos,o.minScrollPos),0,0),s={x:r.x,y:r.y,pageX:r.pageX,pageY:r.pageY};this.page.isSameWithCurrent(s)||this.page.changeCurrentPage(s)}var a=this.page.resetLoopPage();if(a)return this.resetLooping=!0,this.goTo(a.pageX,a.pageY,0),!0;this.pageWillChangeTo(this.page.currentPage)}},e.prototype.shouldSetWidthHeight=function(t){var n={width:["scrollX","disableSetWidth"],height:["scrollY","disableSetHeight"]},o=n[t];return!(!this.scroll.options[o[0]]||this.slideOpt[o[1]])},e.prototype.clearSlideWidth=function(t){if(this.shouldSetWidthHeight("width")){for(var n=t.children,o=0;o<n.length;o++){var r=n[o];r.removeAttribute("style")}t.removeAttribute("style")}},e.prototype.setSlideWidth=function(t){if(!this.shouldSetWidthHeight("width"))return!1;for(var n=t.children,o=n[0].clientWidth,r=0;r<n.length;r++){var s=n[r];s.style.width=o+"px"}return t.style.width=o*n.length+"px",!0},e.prototype.clearSlideHeight=function(t){if(this.shouldSetWidthHeight("height")){for(var n=t.children,o=0;o<n.length;o++){var r=n[o];r.removeAttribute("style")}t.removeAttribute("style")}},e.prototype.setSlideHeight=function(t,n){if(!this.shouldSetWidthHeight("height"))return!1;for(var o=t.clientHeight,r=n.children,s=0;s<r.length;s++){var a=r[s];a.style.height=o+"px"}return n.style.height=o*r.length+"px",!0},e.prototype.goTo=function(t,n,o,r){n===void 0&&(n=0);var s=this.page.change2safePage(t,n);if(s){var a=r||this.slideOpt.easing||ease.bounce,l=s.x,u=s.y,d=l-this.scroll.scroller.scrollBehaviorX.currentPos,h=u-this.scroll.scroller.scrollBehaviorY.currentPos;!d&&!h||(o=o===void 0?this.getAnimateTime(d,h):o,this.page.changeCurrentPage({x:l,y:u,pageX:s.pageX,pageY:s.pageY}),this.pageWillChangeTo(this.page.currentPage),this.scroll.scroller.scrollTo(l,u,o,a))}},e.prototype.flickHandler=function(){var t=this.scroll.scroller.scrollBehaviorX,n=this.scroll.scroller.scrollBehaviorY,o=t.currentPos-t.startPos,r=n.currentPos-n.startPos,s=this.getAnimateTime(o,r);this.goTo(this.page.currentPage.pageX+t.direction,this.page.currentPage.pageY+n.direction,s)},e.prototype.getAnimateTime=function(t,n){return this.slideOpt.speed?this.slideOpt.speed:Math.max(Math.max(Math.min(Math.abs(t),1e3),Math.min(Math.abs(n),1e3)),300)},e.prototype.modifyScrollMetaHandler=function(t){var n=this.nearestPage(t.newX,t.newY);t.time=this.getAnimateTime(t.newX-n.x,t.newY-n.y),t.newX=n.x,t.newY=n.y,t.easing=this.slideOpt.easing||ease.bounce,this.page.changeCurrentPage({x:t.newX,y:t.newY,pageX:n.pageX,pageY:n.pageY}),this.pageWillChangeTo(this.page.currentPage)},e.prototype.scrollMoving=function(t){if(this.isTouching){var n=this.nearestPage(t.x,t.y);this.pageWillChangeTo(n)}},e.prototype.pageWillChangeTo=function(t){var n=this.page.getRealPage(t);n.pageX===this.willChangeToPage.pageX&&n.pageY===this.willChangeToPage.pageY||(this.willChangeToPage=n,this.scroll.trigger("slideWillChange",this.willChangeToPage))},e.prototype.setTouchFlag=function(){this.isTouching=!0},e.prototype.registorHooks=function(t,n,o){t.on(n,o,this),this.hooksFn.push([t,n,o])},e.pluginName="slide",e}();BScroll.use(ScrollBar),BScroll.use(NestedScroll),BScroll.use(MouseWheel),BScroll.use(Slide);let Group$1=class extends React__namespace.Component{constructor(t){super(t),this.scrollNeedsToInit=!1,this.scrollRef=React__namespace.createRef()}componentDidMount(){this.props.scrollEnabled&&this.props.nativeScroll!==!0&&this.setupIScroll(),this.scrollRef.current.noodlNode=this.props.noodlNode}componentWillUnmount(){this.iScroll&&(this.iScroll.destroy(),this.iScroll=void 0),this.props.noodlNode.context.setNodeFocused(this.props.noodlNode,!1)}componentDidUpdate(){this.scrollNeedsToInit&&(this.setupIScroll(),this.scrollNeedsToInit=!1),this.iScroll&&setTimeout(()=>{this.iScroll&&this.iScroll.refresh()},0)}scrollToIndex(t,n){if(this.iScroll){const o=this.scrollRef.current.children[0].children[t];o&&this.iScroll.scrollToElement(o,n,0,0)}else{const o=this.scrollRef.current.children[t];o&&o.scrollIntoView({behavior:"smooth"})}}scrollToElement(t,n){if(!t)return;const o=ReactDOM.findDOMNode(t.getRef());o&&o.scrollIntoView&&(this.iScroll?this.iScroll.scrollToElement(o,n,0,0):o.scrollIntoView({behavior:"smooth"}))}setupIScroll(){const{scrollSnapEnabled:t}=this.props,n=this.getScrollDirection(),o={disableSetWidth:!0,disableSetHeight:!0,loop:!1},r=this.scrollRef.current;this.iScroll=new BScroll(r,{bounceTime:500,swipeBounceTime:300,scrollbar:this.props.showScrollbar?{}:void 0,momentum:t?!this.props.scrollSnapToEveryItem:!0,bounce:this.props.scrollBounceEnabled&&!(t&&o.loop),scrollX:n==="x"||n==="both",scrollY:n==="y"||n==="both",slide:t?o:void 0,probeType:this.props.onScrollPositionChanged?3:1,click:!0,nestedScroll:!0,useTransition:!1});const s=this.iScroll.scroller;s.scrollBehaviorX&&(s.scrollBehaviorX.momentum=patchedMomentum.bind(s.scrollBehaviorX)),s.scrollBehaviorY&&(s.scrollBehaviorY.momentum=patchedMomentum.bind(s.scrollBehaviorY)),this.iScroll.on("beforeScrollStart",()=>{this.iScroll.refresh()}),this.iScroll.on("scrollStart",()=>{this.props.onScrollStart&&this.props.onScrollStart()}),this.iScroll.on("scrollEnd",()=>{this.props.onScrollEnd&&this.props.onScrollEnd()}),this.props.onScrollPositionChanged&&this.iScroll.on("scroll",()=>{this.props.onScrollPositionChanged(n==="x"?-this.iScroll.x:-this.iScroll.y)})}UNSAFE_componentWillReceiveProps(t){(this.props.scrollSnapEnabled!==t.scrollSnapEnabled||this.props.onScrollPositionChanged!==t.onScrollPositionChanged||this.props.onScrollStart!==t.onScrollStart||this.props.onScrollEnd!==t.onScrollEnd||this.props.showScrollbar!==t.showScrollbar||this.props.scrollEnabled!==t.scrollEnabled||this.props.nativeScroll!==t.nativeScroll||this.props.scrollSnapToEveryItem!==t.scrollSnapToEveryItem||this.props.layout!==t.layout||this.props.flexWrap!==t.flexWrap||this.props.scrollBounceEnabled!==t.scrollBounceEnabled)&&(this.iScroll&&(this.iScroll.destroy(),this.iScroll=void 0),this.scrollNeedsToInit=t.scrollEnabled&&!t.nativeScroll)}renderIScroll(){const{flexDirection:t,flexWrap:n}=this.props.style,o={display:"inline-flex",flexShrink:0,flexDirection:t,flexWrap:n,touchAction:"none"};return t==="row"?n==="wrap"?o.width="100%":o.height="100%":n==="wrap"?o.height="100%":o.width="100%",React__namespace.createElement("div",{className:"scroll-wrapper-internal",style:o},this.props.children)}getScrollDirection(){return this.props.flexWrap==="wrap"||this.props.flexWrap==="wrap-reverse"?this.props.layout==="row"?"y":"x":this.props.layout==="row"?"x":"y"}render(){const{as:t="div",...n}=this.props,o=n.scrollEnabled&&!n.nativeScroll?this.renderIScroll():n.children,r={...n.style};if(Layout.size(r,n),Layout.align(r,n),n.clip&&(r.overflowX="hidden",r.overflowY="hidden"),n.scrollEnabled&&n.nativeScroll){const a=this.getScrollDirection();a==="y"?r.overflowY="auto":a==="x"?r.overflowX="auto":a==="both"&&(r.overflowX="auto",r.overflowY="auto")}r.opacity===0&&(r.pointerEvents="none");const s={className:n.className,...n.attrs,...n.dom,...pointerProps(n),style:r,ref:this.scrollRef};return React__namespace.createElement(t,{...s},o)}};const GroupNode={name:"Group",docs:"https://docs.noodl.net/nodes/basic-elements/group",connectionPanel:{groupPriority:["General","Style","Events","Mounted","Hover Events","Pointer Events","Focus","Scroll"]},initialize(){this.props.attrs={},this._internal={scrollElementDuration:500,scrollIndexDuration:500,scrollIndex:0},this.props.layout="column"},getReactComponent(){return Group$1},noodlNodeAsProp:!0,visualStates:[{name:"neutral",label:"Neutral"},{name:"hover",label:"Hover"}],defaultCss:{display:"flex",position:"relative",flexDirection:"column"},inputs:{flexDirection:{index:12,displayName:"Layout",group:"Layout",type:{name:"enum",enums:[{label:"None",value:"none"},{label:"Vertical",value:"column"},{label:"Horizontal",value:"row"}]},default:"column",set(e){this.props.layout=e,e!=="none"?this.setStyle({flexDirection:e}):this.removeStyle(["flexDirection"]),this.context.editorConnection&&(e!=="none"&&!flexDirectionValues.includes(e)?this.context.editorConnection.sendWarning(this.nodeScope.componentOwner.name,this.id,"layout-warning",{message:"Invalid Layout value has to be a valid flex-direction value."}):this.context.editorConnection.clearWarning(this.nodeScope.componentOwner.name,this.id,"layout-warning")),this.forceUpdate()}},"scrollToIndex.do":{displayName:"Scroll To Index - Do",group:"Scroll To Index",type:"signal",index:505,valueChangedToTrue(){this.scheduleAfterInputsHaveUpdated(()=>{if(!this.innerReactComponentRef)return;const e=this._internal.scrollIndex,t=this._internal.scrollIndexDuration;this.innerReactComponentRef.scrollToIndex(e,t)})}},"scrollToElement.do":{displayName:"Scroll To Element - Do",group:"Scroll To Element",type:"signal",index:500,valueChangedToTrue(){this.innerReactComponentRef&&this.scheduleAfterInputsHaveUpdated(()=>{const e=this._internal.scrollElement,t=this._internal.scrollElementDuration;this.innerReactComponentRef.scrollToElement(e,t)})}},"scrollToElement.element":{displayName:"Scroll To Element - Element",group:"Scroll To Element",type:"reference",index:501,set(e){this._internal.scrollElement=e}},"scrollToElement.duration":{displayName:"Scroll To Element - Duration",group:"Scroll To Element",type:"number",default:500,index:502,set(e){this._internal.scrollElementDuration=e}},"scrollToIndex.index":{displayName:"Scroll To Index - Index",group:"Scroll To Index",type:"number",default:0,index:506,set(e){this._internal.scrollIndex=e}},"scrollToIndex.duration":{displayName:"Scroll To Index - Duration",group:"Scroll To Index",type:"number",default:500,index:507,set(e){this._internal.scrollIndexDuration=e}},focus:{displayName:"Focus",type:"signal",group:"Focus",valueChangedToTrue(){this.context.setNodeFocused(this,!0)}},testId:{index:100009,displayName:"Test ID Attribute",group:"Advanced HTML",type:"string",set(e){this.props.attrs["data-testid"]=e,this.forceUpdate()}}},inputProps:{clip:{index:19,displayName:"Clip Content",type:"boolean",group:"Layout",default:!1},scrollEnabled:{index:54,group:"Scroll",displayName:"Enable Scroll",type:"boolean",default:!1},scrollSnapEnabled:{index:55,displayName:"Snap",group:"Scroll",type:"boolean",default:!1},scrollSnapToEveryItem:{index:56,displayName:"Snap To Every Item",group:"Scroll",type:"boolean",default:!1},showScrollbar:{index:57,displayName:"Show Scrollbar",group:"Scroll",type:"boolean",default:!1},scrollBounceEnabled:{index:58,displayName:"Bounce at boundaries",group:"Scroll",type:"boolean",default:!0},nativeScroll:{index:60,group:"Scroll",displayName:"Native platform scroll",type:"boolean",default:!0},as:{index:1e5,group:"Advanced HTML",displayName:"Tag",type:{name:"enum",enums:[{label:"<div>",value:"div"},{label:"<section>",value:"section"},{label:"<article>",value:"article"},{label:"<aside>",value:"aside"},{label:"<nav>",value:"nav"},{label:"<header>",value:"header"},{label:"<footer>",value:"footer"},{label:"<main>",value:"main"},{label:"<span>",value:"span"}]},default:"div"}},inputCss:{alignItems:{index:13,group:"Align and justify content",displayName:"Align Items",type:{name:"enum",enums:[{label:"Start",value:"flex-start"},{label:"End",value:"flex-end"},{label:"Center",value:"center"}],alignComp:"align-items"},default:"flex-start"},justifyContent:{index:14,group:"Align and justify content",displayName:"Justify Content",type:{name:"enum",enums:[{label:"Start",value:"flex-start"},{label:"End",value:"flex-end"},{label:"Center",value:"center"},{label:"Space Between",value:"space-between"},{label:"Space Around",value:"space-around"},{label:"Space Evenly",value:"space-evenly"}],alignComp:"justify-content"},default:"flex-start",applyDefault:!1},flexWrap:{index:15,displayName:"Multi Line Wrap",group:"Layout",type:{name:"enum",enums:[{label:"Off",value:"nowrap"},{label:"On",value:"wrap"},{label:"On Reverse",value:"wrap-reverse"}]},default:"nowrap",onChange(e){this.props.flexWrap=e,this.forceUpdate()},applyDefault:!1},alignContent:{index:16,group:"Layout",displayName:"Align Content",type:{name:"enum",enums:[{label:"Start",value:"flex-start"},{label:"End",value:"flex-end"},{label:"Center",value:"center"},{label:"Space Between",value:"space-between"},{label:"Space Around",value:"space-around"},{label:"Space Evenly",value:"space-evenly"}],alignComp:"align-content"}},rowGap:{index:17,displayName:"Vertical Gap",group:"Layout",type:{name:"number",units:["px","%","em"],defaultUnit:"px"},default:0,applyDefault:!1},columnGap:{index:18,displayName:"Horizontal Gap",group:"Layout",type:{name:"number",units:["px","%","em"],defaultUnit:"px"},default:0,applyDefault:!1},backgroundColor:{index:201,displayName:"Background Color",group:"Style",type:"color",default:"transparent",applyDefault:!1,allowVisualStates:!0}},outputProps:{onScrollPositionChanged:{displayName:"Scroll Position",type:"number",group:"Scroll"},onScrollStart:{displayName:"Scroll Start",type:"signal",group:"Scroll"},onScrollEnd:{displayName:"Scroll End",type:"signal",group:"Scroll"}},outputs:{focused:{displayName:"Focused",type:"signal",group:"Focus"},focusLost:{displayName:"Focus Lost",type:"signal",group:"Focus"}},dynamicports:[{condition:"flexDirection != none",inputs:["scrollEnabled"]},{condition:"flexDirection != none AND scrollEnabled = true",inputs:["nativeScroll"]},{condition:"flexDirection != none AND scrollEnabled = true AND nativeScroll = false",inputs:["scrollBounceEnabled","scrollSnapEnabled","showScrollbar","scrollToElement.do","scrollToElement.element","scrollToElement.duration","scrollToIndex.do","scrollToIndex.index","scrollToIndex.duration"]},{condition:"flexDirection != none AND scrollEnabled = true AND scrollSnapEnabled = true",inputs:["scrollSnapToEveryItem"]},{condition:"flexDirection != none",inputs:["flexWrap"]},{condition:"flexWrap = wrap OR flexWrap = wrap-reverse",inputs:["alignContent"]},{condition:"flexDirection = row OR flexWrap = wrap OR flexWrap = wrap-reverse",inputs:["columnGap"]},{condition:"flexDirection = column OR flexWrap = wrap OR flexWrap = wrap-reverse",inputs:["rowGap"]}],methods:{_focus(){this.sendSignalOnOutput("focused")},_blur(){this.sendSignalOnOutput("focusLost")}}};NodeSharedPortDefinitions.addDimensions(GroupNode),NodeSharedPortDefinitions.addTransformInputs(GroupNode),NodeSharedPortDefinitions.addSharedVisualInputs(GroupNode),NodeSharedPortDefinitions.addPaddingInputs(GroupNode),NodeSharedPortDefinitions.addMarginInputs(GroupNode),NodeSharedPortDefinitions.addAlignInputs(GroupNode),NodeSharedPortDefinitions.addPointerEventOutputs(GroupNode),NodeSharedPortDefinitions.addBorderInputs(GroupNode),NodeSharedPortDefinitions.addShadowInputs(GroupNode);function defineTooltips$1(e){e.inputProps.clip.tooltip=createTooltip({title:"Clip content",body:"Controls if elements that are too big to fit will be clipped",images:[{src:"clip-enabled.svg",label:"Enabled"},{src:"clip-disabled.svg",label:"Disabled"}]}),e.inputCss.flexWrap.tooltip=createTooltip({title:"Multiline wrap",body:"Elements will wrap to the next line when there's not enough space",images:[{src:"multiline-h.svg",body:"Using a horizontal layout"},{src:"multiline-v.svg",body:"Using a vertical layout"}]})}Noodl.runDeployed||defineTooltips$1(GroupNode);const Group=createNodeFromReactComponent(GroupNode);function Icon$1(e){const t={userSelect:"none",...e.style};Layout.size(t,e),Layout.align(t,e);function n(){const r={};return e.iconSourceType==="image"&&e.iconImageSource!==void 0?(r.width=e.iconSize,r.height=e.iconSize,React__namespace.createElement("img",{alt:"",src:e.iconImageSource,style:r})):e.iconSourceType==="icon"&&e.iconIconSource!==void 0?(r.fontSize=e.iconSize,r.color=e.iconColor,r.lineHeight=1,React__namespace.createElement("div",{style:{lineHeight:0}},e.iconIconSource.codeAsClass===!0?React__namespace.createElement("span",{className:[e.iconIconSource.class,e.iconIconSource.code].join(" "),style:r}):React__namespace.createElement("span",{className:e.iconIconSource.class,style:r},e.iconIconSource.code))):null}let o="ndl-visual-icon";return e.className&&(o=o+" "+e.className),React__namespace.createElement("div",{className:o,style:t},n())}const IconNode={name:"net.noodl.visual.icon",displayName:"Icon",docs:"https://docs.noodl.net/nodes/basic-elements/icon",allowChildren:!1,noodlNodeAsProp:!0,connectionPanel:{groupPriority:["General","Style","Actions","Events","States","Mounted","Hover Events","Pointer Events","Focus Events"]},getReactComponent(){return Icon$1}};NodeSharedPortDefinitions.addAlignInputs(IconNode),NodeSharedPortDefinitions.addTransformInputs(IconNode),NodeSharedPortDefinitions.addPaddingInputs(IconNode,{defaults:{paddingTop:5,paddingRight:5,paddingBottom:5,paddingLeft:5}}),NodeSharedPortDefinitions.addMarginInputs(IconNode),NodeSharedPortDefinitions.addIconInputs(IconNode,{hideEnableIconInput:!0,defaults:{useIcon:!0}}),NodeSharedPortDefinitions.addSharedVisualInputs(IconNode);const Icon=createNodeFromReactComponent(IconNode);function Image$1(e){const t={...e.style};if(Layout.size(t,e),Layout.align(t,e),t.opacity===0&&(t.pointerEvents="none"),e.dom?.src?.startsWith("/")){const n=Noodl.Env.BaseUrl;n&&(e.dom.src=n+e.dom.src.substring(1))}return React__namespace.createElement("img",{...e.attrs,className:e.className,...e.dom,...pointerProps(e),style:t})}const ImageNode={name:"Image",docs:"https://docs.noodl.net/nodes/basic-elements/image",noodlNodeAsProp:!0,visualStates:[{name:"neutral",label:"Neutral"},{name:"hover",label:"Hover"}],connectionPanel:{groupPriority:["General","Image","Style","Actions","Events","Mounted","Pointer Events","Hover Events","Dimensions","Margin and padding"]},initialize(){this.props.attrs={},this.props.default=""},getReactComponent(){return Image$1},getInspectInfo(){if(this.props.dom.srcSet)return this.props.dom.srcSet;if(this.props.dom.src){const e=this.props.dom.src.toString();return[{type:"text",value:e},{type:"image",value:e}]}},allowChildren:!1,defaultCss:{display:"block",flexShrink:0},inputCss:{objectFit:{displayName:"Image Fit",group:"Dimensions",type:{name:"enum",enums:[{label:"Fill",value:"fill"},{label:"Contain",value:"contain"},{label:"Cover",value:"cover"},{label:"None",value:"none"},{label:"Scale Down",value:"scale-down"}]},default:"contain",allowVisualStates:!0}},dynamicports:[{condition:"sizeMode = explicit",inputs:["objectFit"]}],inputs:{src:{displayName:"Source",group:"Image",propPath:"dom",type:{name:"image"},index:30,allowVisualStates:!0,set(e){this.props.dom.src=getAbsoluteUrl(e),this.forceUpdate()}},testId:{index:100009,displayName:"Test ID Attribute",group:"Advanced HTML",type:"string",set(e){this.props.attrs["data-testid"]=e,this.forceUpdate()}}},inputProps:{srcSet:{displayName:"Source Set",group:"Image",propPath:"dom",type:{name:"string"},index:31,allowVisualStates:!0},alt:{displayName:"Alternate text",tooltip:"The alt text is used by screen readers, or if the image can't be downloaded or displayed",type:"string",propPath:"dom",index:1e3,default:""}},outputProps:{onLoad:{displayName:"On Load",propPath:"dom",type:"signal",group:"Events"},onError:{displayName:"On Error",propPath:"dom",type:"signal",group:"Events"}}};NodeSharedPortDefinitions.addDimensions(ImageNode,{defaultSizeMode:"contentSize",contentLabel:"Image"}),NodeSharedPortDefinitions.addTransformInputs(ImageNode),NodeSharedPortDefinitions.addMarginInputs(ImageNode),NodeSharedPortDefinitions.addSharedVisualInputs(ImageNode),NodeSharedPortDefinitions.addAlignInputs(ImageNode),NodeSharedPortDefinitions.addPointerEventOutputs(ImageNode),NodeSharedPortDefinitions.addBorderInputs(ImageNode),NodeSharedPortDefinitions.addShadowInputs(ImageNode);const Image=createNodeFromReactComponent(ImageNode);function Text(e){const{as:t="div"}=e,n={...e.textStyle,...e.style};return Layout.size(n,e),Layout.align(n,e),n.color=e.noodlNode.context.styles.resolveColor(n.color),e.sizeMode==="contentSize"||e.sizeMode==="contentWidth"?n.whiteSpace="pre":(n.whiteSpace="pre-wrap",n.overflowWrap="anywhere"),n.opacity===0&&(n.pointerEvents="none"),React.createElement(t,{className:["ndl-visual-text",e.className].join(" "),...e.attrs,...e.dom,...pointerProps(e),style:n},String(e.text))}const TextNode={name:"Text",docs:"https://docs.noodl.net/nodes/basic-elements/text",visualStates:[{name:"neutral",label:"Neutral"},{name:"hover",label:"Hover"}],allowChildren:!1,noodlNodeAsProp:!0,usePortAsLabel:"text",portLabelTruncationMode:"length",connectionPanel:{groupPriority:["General","Text","Text Style","Style","Events","Mounted","Hover Events","Pointer Events"]},nodeDoubleClickAction:{focusPort:"text"},initialize(){this.props.attrs={}},getReactComponent(){return Text},getInspectInfo(){return this.props.text},defaultCss:{position:"relative",display:"flex"},inputProps:{text:{index:19,group:"Text",displayName:"Text",default:"Text",type:{name:"string",multiline:!0}},as:{index:1e5,group:"Advanced HTML",displayName:"Tag",type:{name:"enum",enums:[{label:"<div>",value:"div"},{label:"<h1>",value:"h1"},{label:"<h2>",value:"h2"},{label:"<h3>",value:"h3"},{label:"<h4>",value:"h4"},{label:"<h5>",value:"h5"},{label:"<h6>",value:"h6"},{label:"<p>",value:"p"},{label:"<span>",value:"span"}]},default:"div"}},inputCss:{wordBreak:{index:27,group:"Text",displayName:"Word Break",applyDefault:!1,type:{name:"enum",enums:[{label:"Normal",value:"normal"},{label:"Break All",value:"break-all"}]},default:"normal"}},inputs:{textAlignX:{group:"Text Alignment",index:13,displayName:"Text Horizontal Align",type:{name:"enum",enums:[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}],alignComp:"justify"},default:"left",set(e){switch(e){case"left":this.setStyle({textAlign:"left",justifyContent:"flex-start"});break;case"center":this.setStyle({textAlign:"center",justifyContent:"center"});break;case"right":this.setStyle({textAlign:"right",justifyContent:"flex-end"});break}}},textAlignY:{group:"Text Alignment",index:14,displayName:"Text Vertical Align",type:{name:"enum",enums:[{label:"Top",value:"top"},{label:"Center",value:"center"},{label:"Bottom",value:"bottom"}],alignComp:"vertical"},default:"top",set(e){switch(e){case"top":this.setStyle({alignItems:"flex-start"});break;case"center":this.setStyle({alignItems:"center"});break;case"bottom":this.setStyle({alignItems:"flex-end"});break}}},testId:{index:100009,displayName:"Test ID Attribute",group:"Advanced HTML",type:"string",set(e){this.props.attrs["data-testid"]=e,this.forceUpdate()}}}};NodeSharedPortDefinitions.addDimensions(TextNode,{defaultSizeMode:"contentHeight",contentLabel:"Text"}),NodeSharedPortDefinitions.addTextStyleInputs(TextNode),NodeSharedPortDefinitions.addAlignInputs(TextNode),NodeSharedPortDefinitions.addTransformInputs(TextNode),NodeSharedPortDefinitions.addMarginInputs(TextNode),NodeSharedPortDefinitions.addSharedVisualInputs(TextNode),NodeSharedPortDefinitions.addPointerEventOutputs(TextNode);function defineTooltips(e){e.inputCss.wordBreak.tooltip=createTooltip({title:"Word break",body:["Control where line breaks are allowed","- Normal: Break on spaces and other whitespace characters","- Break All: Allow line breaks between any two characters, including inside words"]})}Noodl.runDeployed||defineTooltips(TextNode);const TextNode$1=createNodeFromReactComponent(TextNode);class CachedVideo extends React.PureComponent{componentDidUpdate(){this.video&&(this.video.muted=this.props.muted,this.video.loop=this.props.loop,this.video.volume=this.props.volume,this.video.autoplay=this.props.autoplay,this.video.controls=this.props.controls)}render(){let t=this.props.src?this.props.src.toString():void 0;if(t&&(t.indexOf("#t=")===-1&&(t+="#t=0.01"),t.startsWith("/"))){const n=Noodl.Env.BaseUrl;n&&(t=n+t.substring(1))}return React.createElement("video",{...this.props,playsInline:!0,src:t,...pointerProps(this.props),ref:n=>{this.video=n,this.props.innerRef(n)}})}}let Video$1=class extends React.Component{constructor(t){super(t),this.wantToPlay=!1,this.canPlay=!1}componentWillUnmount(){this.canPlay=!1}setSourceObject(t){this.video.srcObject!==t&&(this.video.srcObject=t,this.canPlay=!1)}play(){this.wantToPlay=!0,this.canPlay&&this.video.play()}restart(){this.wantToPlay=!0,this.canPlay&&(this.video.currentTime=0,this.video.play())}pause(){this.wantToPlay=!1,this.video&&this.video.pause()}reset(){this.wantToPlay=!1,this.video&&(this.video.currentTime=0,this.video.pause())}render(){const t=this.props,n={...t.style};return Layout.size(n,t),Layout.align(n,t),n.opacity===0&&(n.pointerEvents="none"),n.objectPosition=`${t.objectPositionX} ${t.objectPositionY}`,React.createElement(CachedVideo,{...t.dom,className:t.className,style:n,innerRef:o=>{this.video=o,this.props.onVideoElementCreated&&this.props.onVideoElementCreated(o)},onCanPlay:()=>{this.canPlay=!0,this.wantToPlay&&this.video.play(),this.props.onCanPlay&&this.props.onCanPlay(),this.props.videoWidth&&this.props.videoWidth(this.video.videoWidth),this.props.videoHeight&&this.props.videoHeight(this.video.videoHeight)}})}};const VideoNode={name:"Video",docs:"https://docs.noodl.net/nodes/basic-elements/video",connectionPanel:{groupPriority:["General","Video","Video Actions","Style","Actions","Events","Mounted","Playback","Pointer Events","Hover Events","Dimensions","Margin and padding"]},getReactComponent(){return Video$1},allowChildren:!1,noodlNodeAsProp:!0,defaultCss:{display:"block"},inputs:{srcObject:{displayName:"Source Object",group:"Video",type:"mediastream",default:null,set(e){this.innerReactComponentRef&&this.innerReactComponentRef.setSourceObject(e)}},play:{type:"signal",group:"Video Actions",displayName:"Play",tooltip:{standard:"Play the video"},valueChangedToTrue(){this.innerReactComponentRef&&this.innerReactComponentRef.play()}},restart:{type:"signal",group:"Video Actions",displayName:"Restart",tooltip:{standard:"Restart the video from the beginning"},valueChangedToTrue(){this.innerReactComponentRef&&this.innerReactComponentRef.restart()}},pause:{type:"boolean",group:"Video Actions",displayName:"Pause",valueChangedToTrue(){this.innerReactComponentRef&&this.innerReactComponentRef.pause()}},reset:{type:"boolean",group:"Video Actions",displayName:"Reset",valueChangedToTrue(){this.innerReactComponentRef&&this.innerReactComponentRef.reset()}},src:{displayName:"Source",group:"Video",type:"string",set(e){this.props.dom.src=getAbsoluteUrl(e),this.forceUpdate()}},poster:{displayName:"Poster",group:"Video",type:"image",set(e){this.props.dom.poster=getAbsoluteUrl(e),this.forceUpdate()}}},inputProps:{autoplay:{displayName:"Autoplay",propPath:"dom",group:"Video",type:"boolean"},controls:{displayName:"Controls",propPath:"dom",group:"Video",type:"boolean"},volume:{displayName:"Volume",propPath:"dom",group:"Video",type:"number",default:1},muted:{displayName:"Muted",propPath:"dom",group:"Video",type:"boolean"},loop:{displayName:"Loop",propPath:"dom",group:"Video",type:"boolean"},objectPositionX:{displayName:"Video Position X",group:"Video Layout",type:{name:"number",units:["%","px"],defaultUnit:"%"},default:50},objectPositionY:{displayName:"Video Position Y",group:"Video Layout",type:{name:"number",units:["%","px"],defaultUnit:"%"},default:50}},inputCss:{objectFit:{displayName:"Object Fit",group:"Video Layout",type:{name:"enum",enums:[{label:"Contain",value:"contain"},{label:"Cover",value:"cover"},{label:"Fill",value:"fill"},{label:"None",value:"none"}]},default:"contain"}},outputProps:{onCanPlay:{type:"signal",group:"Events",displayName:"On Can Play"},onTimeUpdate:{group:"Playback",displayName:"Playback Position",type:"number",propPath:"dom",getValue(e){return e.target.currentTime}},onPlay:{group:"Events",displayName:"On Play",type:"signal",propPath:"dom"},onPause:{group:"Events",displayName:"On Pause",type:"signal",propPath:"dom"},onVideoElementCreated:{type:"domelement",displayName:"DOM Element"},videoWidth:{group:"Playback",type:"number",displayName:"Video Width"},videoHeight:{group:"Playback",type:"number",displayName:"Video Height"}}};NodeSharedPortDefinitions.addDimensions(VideoNode,{defaultSizeMode:"contentSize",contentLabel:"Video"}),NodeSharedPortDefinitions.addTransformInputs(VideoNode),NodeSharedPortDefinitions.addMarginInputs(VideoNode),NodeSharedPortDefinitions.addSharedVisualInputs(VideoNode),NodeSharedPortDefinitions.addAlignInputs(VideoNode),NodeSharedPortDefinitions.addPointerEventOutputs(VideoNode),NodeSharedPortDefinitions.addBorderInputs(VideoNode);const Video=createNodeFromReactComponent(VideoNode);function _shallowCompare(e,t){for(var n in e)if(e.hasOwnProperty(n)&&e[n]!==t[n])return!1;for(var n in t)if(t.hasOwnProperty(n)&&e[n]!==t[n])return!1;return!0}const _styleSheets={};function updateStylesForClass(e,t,n){if(_styleSheets[e])_shallowCompare(t,_styleSheets[e].props)||(_styleSheets[e].style.innerHTML=n(e,t),_styleSheets[e].props=Object.assign({},t));else{var o=document.createElement("style");o.innerHTML=n(e,t),document.head.appendChild(o),_styleSheets[e]={style:o,props:Object.assign({},t)}}}function mergeAttribute(e,t,n){e[t]||(e[t]={});for(const o in n)e[t][o]=n[o]}function addInputProps(e,t){mergeAttribute(e,"inputProps",t)}function addOutputProps(e,t){mergeAttribute(e,"outputProps",t)}function addControlEventsAndStates(e){addInputProps(e,{blockTouch:{index:450,displayName:"Block Pointer Events",type:"boolean"}}),addOutputProps(e,{focusState:{displayName:"Focused",group:"States",type:"boolean",props:{onFocus(){this.outputPropValues.focusState=!0,this.flagOutputDirty("focusState"),this.hasOutput("onFocus")&&this.sendSignalOnOutput("onFocus")},onBlur(){this.outputPropValues.focusState=!1,this.flagOutputDirty("focusState"),this.hasOutput("onBlur")&&this.sendSignalOnOutput("onBlur")}}},onFocus:{displayName:"Focused",group:"Events",type:"signal",props:{onFocus(){this.outputPropValues.focusState=!0,this.flagOutputDirty("focusState"),this.sendSignalOnOutput("onFocus")}}},onBlur:{displayName:"Blurred",group:"Events",type:"signal",props:{onBlur(){this.outputPropValues.focusState=!1,this.flagOutputDirty("focusState"),this.sendSignalOnOutput("onBlur")}}},hoverState:{displayName:"Hover",group:"States",type:"boolean",props:{onMouseOver(){this.outputPropValues.hoverState=!0,this.flagOutputDirty("hoverState"),this.hasOutput("hoverStart")&&this.sendSignalOnOutput("hoverStart")},onMouseLeave(){this.outputPropValues.hoverState=!1,this.flagOutputDirty("hoverState"),this.hasOutput("hoverEnd")&&this.sendSignalOnOutput("hoverEnd")}}},hoverStart:{displayName:"Hover Start",group:"Events",type:"signal",props:{onMouseOver(){this.outputPropValues.hoverState=!0,this.flagOutputDirty("hoverState"),this.sendSignalOnOutput("hoverStart")}}},hoverEnd:{displayName:"Hover End",group:"Events",type:"signal",props:{onMouseLeave(){this.outputPropValues.hoverState=!1,this.flagOutputDirty("hoverState"),this.sendSignalOnOutput("hoverEnd")}}},pressedState:{displayName:"Pressed",group:"States",type:"boolean",props:{onMouseDown(){this.outputPropValues.pressedState=!0,this.flagOutputDirty("pressedState"),this.hasOutput("pointerDown")&&this.sendSignalOnOutput("pointerDown")},onTouchStart(){this.outputPropValues.pressedState=!0,this.flagOutputDirty("pressedState"),this.hasOutput("pointerDown")&&this.sendSignalOnOutput("pointerDown")},onMouseUp(){this.outputPropValues.pressedState=!1,this.flagOutputDirty("pressedState"),this.hasOutput("pointerUp")&&this.sendSignalOnOutput("pointerUp")},onTouchEnd(){this.outputPropValues.pressedState=!1,this.flagOutputDirty("pressedState"),this.hasOutput("pointerUp")&&this.sendSignalOnOutput("pointerUp")},onTouchCancel(){this.outputPropValues.pressedState=!1,this.flagOutputDirty("pressedState"),this.hasOutput("pointerUp")&&this.sendSignalOnOutput("pointerUp")}}},pointerDown:{displayName:"Pointer Down",group:"Events",type:"signal",props:{onMouseDown(){this.outputPropValues.pressedState=!0,this.flagOutputDirty("pressedState"),this.sendSignalOnOutput("pointerDown")},onTouchStart(){this.outputPropValues.pressedState=!0,this.flagOutputDirty("pressedState"),this.sendSignalOnOutput("pointerDown")}}},pointerUp:{displayName:"Pointer Up",group:"Events",type:"signal",props:{onMouseUp(){this.outputPropValues.pressedState=!1,this.flagOutputDirty("pressedState"),this.sendSignalOnOutput("pointerUp")},onTouchEnd(){this.outputPropValues.pressedState=!1,this.flagOutputDirty("pressedState"),this.sendSignalOnOutput("pointerUp")},onTouchCancel(){this.outputPropValues.pressedState=!1,this.flagOutputDirty("pressedState"),this.sendSignalOnOutput("pointerUp")}}}})}function controlEvents(e){return Object.assign({},{onFocus:e.onFocus,onBlur:e.onBlur},pointerProps(e))}const Utils={updateStylesForClass,addControlEventsAndStates,controlEvents};function Button(e){React.useEffect(()=>{e.focusChanged&&e.focusChanged(!1),e.hoverChanged&&e.hoverChanged(!1),e.pressedChanged&&e.pressedChanged(!1)},[]);var t={...e.style};Layout.size(t,e),Layout.align(t,e),e.textStyle!==void 0&&(t=Object.assign({},e.textStyle,t)),e.boxShadowEnabled&&(t.boxShadow=`${e.boxShadowInset?"inset ":""}${e.boxShadowOffsetX} ${e.boxShadowOffsetY} ${e.boxShadowBlurRadius} ${e.boxShadowSpreadRadius} ${e.boxShadowColor}`);let n="ndl-controls-button";return e.className&&(n=n+" "+e.className),React.createElement("button",{className:n,disabled:!e.enabled,...Utils.controlEvents(e),type:e.buttonType,style:t,onClick:e.onClick},e.label,e.children)}var ButtonNode={name:"Button",docs:"https://docs.noodl.net/nodes/visual/button",allowChildren:!0,noodlNodeAsProp:!0,initialize(){this.outputPropValues.hoverState=this.outputPropValues.focusState=this.outputPropValues.pressedState=!1,this.props.id=this._internal.controlId="input-"+guid(),this.props.enabled=this._internal.enabled=!0},getReactComponent(){return Button},inputs:{enabled:{type:"boolean",displayName:"Enabled",group:"General",default:!0,set:function(e){e=!!e;const t=e!==this._internal.enabled;this.props.enabled=this._internal.enabled=e,t&&(this.forceUpdate(),this.flagOutputDirty("enabled"))}},textStyle:{index:20,type:"textStyle",group:"Text",displayName:"Text Style",default:"None",set(e){this.props.textStyle=this.context.styles.getTextStyle(e),this.forceUpdate()}},fontFamily:{index:21,type:"font",group:"Text",displayName:"Font Family",set(e){if(e){let t=e;t.split(".").length>1&&(t=t.replace(/\.[^/.]+$/,""),t=t.split("/").pop()),this.setStyle({fontFamily:t})}else this.removeStyle(["fontFamily"]);this.props.textStyle&&this.forceUpdate()}}},outputs:{controlId:{type:"string",displayName:"Control Id",group:"General",getter:function(){return this._internal.controlId}},enabled:{type:"boolean",displayName:"Enabled",group:"States",getter:function(){return this._internal.enabled}}},inputCss:{fontSize:{index:21,group:"Text",displayName:"Font Size",type:{name:"number",units:["px"],defaultUnit:"px"},onChange(){this.props.textStyle&&this.forceUpdate()}},color:{index:24,group:"Text",displayName:"Color",type:"color",default:"#FFFFFF"},backgroundColor:{index:100,displayName:"Background Color",group:"Style",type:"color",default:"#000000"},paddingLeft:{index:64,group:"Margin and padding",default:20,applyDefault:!1,displayName:"Pad Left",type:{name:"number",units:["px"],defaultUnit:"px",marginPaddingComp:"padding-left"}},paddingRight:{index:65,group:"Margin and padding",default:20,applyDefault:!1,displayName:"Pad Right",type:{name:"number",units:["px"],defaultUnit:"px",marginPaddingComp:"padding-right"}},paddingTop:{index:66,group:"Margin and padding",displayName:"Pad Top",default:5,applyDefault:!1,type:{name:"number",units:["px"],defaultUnit:"px",marginPaddingComp:"padding-top"}},paddingBottom:{index:67,group:"Margin and padding",displayName:"Pad Bottom",default:5,applyDefault:!1,type:{name:"number",units:["px"],defaultUnit:"px",marginPaddingComp:"padding-bottom"}},borderRadius:{index:202,displayName:"Border Radius",group:"Style",type:{name:"number",units:["px"],defaultUnit:"px"},default:0,applyDefault:!1},borderStyle:{index:203,displayName:"Border Style",group:"Style",type:{name:"enum",enums:[{label:"None",value:"none"},{label:"Solid",value:"solid"},{label:"Dotted",value:"dotted"},{label:"Dashed",value:"dashed"}]},default:"none",applyDefault:!1},borderWidth:{index:204,displayName:"Border Width",group:"Style",type:{name:"number",units:["px"],defaultUnit:"px"},default:0,applyDefault:!1},borderColor:{index:205,displayName:"Border Color",group:"Style",type:"color",default:"#000000"}},inputProps:{label:{type:"string",displayName:"Label",group:"General",default:"Label"},buttonType:{type:{name:"enum",enums:[{label:"Button",value:"button"},{label:"Submit",value:"submit"}]},displayName:"Type",default:"button",group:"General"},boxShadowEnabled:{index:250,group:"Box Shadow",displayName:"Shadow Enabled",type:"boolean",default:!1},boxShadowOffsetX:{index:251,group:"Box Shadow",displayName:"Offset X",default:0,type:{name:"number",units:["px"],defaultUnit:"px"}},boxShadowOffsetY:{index:252,group:"Box Shadow",displayName:"Offset Y",default:0,type:{name:"number",units:["px"],defaultUnit:"px"}},boxShadowBlurRadius:{index:253,group:"Box Shadow",displayName:"Blur Radius",default:5,type:{name:"number",units:["px"],defaultUnit:"px"}},boxShadowSpreadRadius:{index:254,group:"Box Shadow",displayName:"Spread Radius",default:2,type:{name:"number",units:["px"],defaultUnit:"px"}},boxShadowInset:{index:255,group:"Box Shadow",displayName:"Inset",type:"boolean",default:!1},boxShadowColor:{index:256,group:"Box Shadow",displayName:"Shadow Color",type:"color",default:"rgba(0,0,0,0.2)"}},outputProps:{onClick:{displayName:"Click",group:"Events",type:"signal"}},dynamicports:[{condition:"boxShadowEnabled = true",inputs:["boxShadowOffsetX","boxShadowOffsetY","boxShadowInset","boxShadowBlurRadius","boxShadowSpreadRadius","boxShadowColor"]}],methods:{}};NodeSharedPortDefinitions.addDimensions(ButtonNode,{defaultSizeMode:"contentSize",contentLabel:"Content",useDimensionConstraints:!1}),NodeSharedPortDefinitions.addAlignInputs(ButtonNode),NodeSharedPortDefinitions.addTransformInputs(ButtonNode),NodeSharedPortDefinitions.addMarginInputs(ButtonNode),NodeSharedPortDefinitions.addSharedVisualInputs(ButtonNode),Utils.addControlEventsAndStates(ButtonNode),ButtonNode=createNodeFromReactComponent(ButtonNode),ButtonNode.setup=function(e,t){t.on("nodeAdded.Button",function(n){n.parameters.fontFamily&&n.parameters.fontFamily.split(".").length>1&&FontLoader.instance.loadFont(n.parameters.fontFamily),n.on("parameterUpdated",function(o){o.name==="fontFamily"&&o.value&&o.value.split(".").length>1&&FontLoader.instance.loadFont(o.value)})})};const ButtonOld=ButtonNode;function _styleTemplate$2(e,t){return`
95
+ */function warn(e){console.error("[BScroll warn]: "+e)}var inBrowser=typeof window<"u",ua=inBrowser&&navigator.userAgent.toLowerCase();ua&&ua.indexOf("android")>0;function extend(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var o=0;o<t.length;o++){var r=t[o];for(var s in r)e[s]=r[s]}return e}function fixInboundValue(e,t,n){return e<t?t:e>n?n:e}var elementStyle=inBrowser&&document.createElement("div").style,vendor=function(){if(!inBrowser)return!1;var e={webkit:"webkitTransform",Moz:"MozTransform",O:"OTransform",ms:"msTransform",standard:"transform"};for(var t in e)if(elementStyle[e[t]]!==void 0)return t;return!1}();function prefixStyle(e){return vendor===!1?e:vendor==="standard"?e==="transitionEnd"?"transitionend":e:vendor+e.charAt(0).toUpperCase()+e.substr(1)}vendor&&vendor!=="standard"&&""+vendor.toLowerCase(),prefixStyle("transform"),prefixStyle("transition"),inBrowser&&prefixStyle("perspective")in elementStyle,prefixStyle("transitionTimingFunction"),prefixStyle("transitionDuration"),prefixStyle("transitionDelay"),prefixStyle("transformOrigin"),prefixStyle("transitionEnd");function getRect(e){if(e instanceof window.SVGElement){var t=e.getBoundingClientRect();return{top:t.top,left:t.left,width:t.width,height:t.height}}else return{top:e.offsetTop,left:e.offsetLeft,width:e.offsetWidth,height:e.offsetHeight}}function prepend(e,t){var n=t.firstChild;n?before(e,n):t.appendChild(e)}function before(e,t){t.parentNode.insertBefore(e,t)}function removeChild(e,t){e.removeChild(t)}var ease={bounce:{style:"cubic-bezier(0.165, 0.84, 0.44, 1)",fn:function(e){return 1- --e*e*e*e}}},PagesPos=function(){function e(t,n){this.scroll=t,this.slideOpt=n,this.slideEl=null,this.init()}return e.prototype.init=function(){var t=this.scroll.scroller,n=t.scrollBehaviorX,o=t.scrollBehaviorY,r=getRect(t.wrapper),s=getRect(t.content);this.wrapperWidth=r.width,this.wrapperHeight=r.height,this.scrollerHeight=o.hasScroll?s.height:r.height,this.scrollerWidth=n.hasScroll?s.width:r.width;var a=this.slideOpt.stepX||this.wrapperWidth,l=this.slideOpt.stepY||this.wrapperHeight,u=t.content,d=this.slideOpt.el;typeof d=="string"&&(this.slideEl=u.querySelectorAll(d)),this.pages=this.slideEl?this.computePagePosInfoByEl(this.slideEl):this.computePagePosInfo(a,l),this.xLen=this.pages?this.pages.length:0,this.yLen=this.pages&&this.pages[0]?this.pages[0].length:0},e.prototype.hasInfo=function(){return!(!this.pages||!this.pages.length)},e.prototype.getPos=function(t,n){return this.pages[t]?this.pages[t][n]:null},e.prototype.getNearestPage=function(t,n){if(this.hasInfo()){for(var o=0,r=0,s=this.pages.length;o<s-1&&!(t>=this.pages[o][0].cx);o++);for(s=this.pages[o].length;r<s-1&&!(n>=this.pages[0][r].cy);r++);return{pageX:o,pageY:r}}},e.prototype.computePagePosInfo=function(t,n){var o=[],r=0,s,a,l,u=0,d,h=this.scroll.scroller.scrollBehaviorX.maxScrollPos,f=this.scroll.scroller.scrollBehaviorY.maxScrollPos;for(a=Math.round(t/2),l=Math.round(n/2);r>-this.scrollerWidth;){for(o[u]=[],d=0,s=0;s>-this.scrollerHeight;)o[u][d]={x:Math.max(r,h),y:Math.max(s,f),width:t,height:n,cx:r-a,cy:s-l},s-=n,d++;r-=t,u++}return o},e.prototype.computePagePosInfoByEl=function(t){for(var n=[],o=0,r=0,s,a,l=0,u=t.length,d=0,h=-1,f,g=this.scroll.scroller.scrollBehaviorX.maxScrollPos,b=this.scroll.scroller.scrollBehaviorY.maxScrollPos;l<u;l++)f=getRect(t[l]),(l===0||f.left<=getRect(t[l-1]).left)&&(d=0,h++),n[d]||(n[d]=[]),o=Math.max(-f.left,g),r=Math.max(-f.top,b),s=o-Math.round(f.width/2),a=r-Math.round(f.height/2),n[d][h]={x:o,y:r,width:f.width,height:f.height,cx:s,cy:a},o>g&&d++;return n},e}(),PageInfo=function(){function e(t,n){this.scroll=t,this.slideOpt=n}return e.prototype.init=function(){this.currentPage={x:0,y:0,pageX:0,pageY:0},this.pagesPos=new PagesPos(this.scroll,this.slideOpt),this.checkSlideLoop()},e.prototype.changeCurrentPage=function(t){this.currentPage=t},e.prototype.change2safePage=function(t,n){if(this.pagesPos.hasInfo()){t>=this.pagesPos.xLen?t=this.pagesPos.xLen-1:t<0&&(t=0),n>=this.pagesPos.yLen?n=this.pagesPos.yLen-1:n<0&&(n=0);var o=this.pagesPos.getPos(t,n);return{pageX:t,pageY:n,x:o?o.x:0,y:o?o.y:0}}},e.prototype.getInitPage=function(){var t=this.loopX?1:0,n=this.loopY?1:0;return{pageX:t,pageY:n}},e.prototype.getRealPage=function(t){var n=function(r,s){for(var a=[],l=0;l<s;l++)a.push(l);return a.unshift(s-1),a.push(0),a[r]},o=t?extend({},t):extend({},this.currentPage);return this.loopX&&(o.pageX=n(o.pageX,this.pagesPos.xLen-2)),this.loopY&&(o.pageY=n(o.pageY,this.pagesPos.yLen-2)),{pageX:o.pageX,pageY:o.pageY}},e.prototype.getPageSize=function(){return this.pagesPos.getPos(this.currentPage.pageX,this.currentPage.pageY)},e.prototype.realPage2Page=function(t,n){if(this.pagesPos.hasInfo()){var o=this.pagesPos.xLen-1,r=this.pagesPos.yLen-1,s=0,a=0;return this.loopX&&(t+=1,s=s+1,o=o-1),this.loopY&&(n+=1,a=a+1,r=r-1),t=fixInboundValue(t,s,o),n=fixInboundValue(n,a,r),{realX:t,realY:n}}},e.prototype.nextPage=function(){return this.changedPageNum("positive")},e.prototype.prevPage=function(){return this.changedPageNum("negative")},e.prototype.nearestPage=function(t,n,o,r){var s=this.pagesPos.getNearestPage(t,n);if(!s)return{x:0,y:0,pageX:0,pageY:0};var a=s.pageX,l=s.pageY,u,d;return a===this.currentPage.pageX&&(a+=o,a=fixInboundValue(a,0,this.pagesPos.xLen-1)),l===this.currentPage.pageY&&(l+=r,l=fixInboundValue(s.pageY,0,this.pagesPos.yLen-1)),u=this.pagesPos.getPos(a,0).x,d=this.pagesPos.getPos(0,l).y,{x:u,y:d,pageX:a,pageY:l}},e.prototype.getLoopStage=function(){if(!this.needLoop)return"middle";if(this.loopX){if(this.currentPage.pageX===0)return"head";if(this.currentPage.pageX===this.pagesPos.xLen-1)return"tail"}if(this.loopY){if(this.currentPage.pageY===0)return"head";if(this.currentPage.pageY===this.pagesPos.yLen-1)return"tail"}return"middle"},e.prototype.resetLoopPage=function(){if(this.loopX){if(this.currentPage.pageX===0)return{pageX:this.pagesPos.xLen-2,pageY:this.currentPage.pageY};if(this.currentPage.pageX===this.pagesPos.xLen-1)return{pageX:1,pageY:this.currentPage.pageY}}if(this.loopY){if(this.currentPage.pageY===0)return{pageX:this.currentPage.pageX,pageY:this.pagesPos.yLen-2};if(this.currentPage.pageY===this.pagesPos.yLen-1)return{pageX:this.currentPage.pageX,pageY:1}}},e.prototype.isSameWithCurrent=function(t){return!(t.pageX!==this.currentPage.pageX||t.pageY!==this.currentPage.pageY)},e.prototype.changedPageNum=function(t){var n=this.currentPage.pageX,o=this.currentPage.pageY;return this.slideX&&(n=t==="negative"?n-1:n+1),this.slideY&&(o=t==="negative"?o-1:o+1),{pageX:n,pageY:o}},e.prototype.checkSlideLoop=function(){this.needLoop=this.slideOpt.loop,this.pagesPos.xLen>1&&(this.slideX=!0),this.pagesPos.pages[0]&&this.pagesPos.yLen>1&&(this.slideY=!0),this.loopX=this.needLoop&&this.slideX,this.loopY=this.needLoop&&this.slideY,this.slideX&&this.slideY&&warn("slide does not support two direction at the same time.")},e}(),sourcePrefix="plugins.slide",propertiesMap=[{key:"next",name:"next"},{key:"prev",name:"prev"},{key:"goToPage",name:"goToPage"},{key:"getCurrentPage",name:"getCurrentPage"}],propertiesConfig=propertiesMap.map(function(e){return{key:e.key,sourceKey:sourcePrefix+"."+e.name}}),Slide=function(){function e(t){this.scroll=t,this.resetLooping=!1,this.isTouching=!1,this.scroll.proxy(propertiesConfig),this.scroll.registerType(["slideWillChange"]),this.slideOpt=this.scroll.options.slide,this.page=new PageInfo(t,this.slideOpt),this.hooksFn=[],this.willChangeToPage={pageX:0,pageY:0},this.init()}return e.prototype.init=function(){var t=this,n=this.slideOpt,o=this.scroll.scroller.content,r=!1;if(n.loop){var s=o.children;s.length>1?(this.cloneSlideEleForLoop(o),r=!0):n.loop=!1}var a=this.setSlideWidth(o),l=this.setSlideHeight(this.scroll.scroller.wrapper,o),u=a||l,d=this.scroll.hooks,h=this.scroll.scroller.hooks;this.registorHooks(d,"refresh",this.initSlideState),this.registorHooks(d,"destroy",this.destroy),this.registorHooks(h,"momentum",this.modifyScrollMetaHandler),this.registorHooks(this.scroll,"scrollEnd",this.amendCurrentPage),this.registorHooks(h,"beforeStart",this.setTouchFlag),this.registorHooks(h,"scroll",this.scrollMoving),this.registorHooks(h,"resize",this.resize),this.scroll.eventTypes.mousewheelMove&&this.scroll.eventTypes.mousewheelEnd&&(this.registorHooks(this.scroll,"mousewheelMove",function(){return!0}),this.registorHooks(this.scroll,"mousewheelEnd",function(f){(f.directionX===1||f.directionY===1)&&t.next(),(f.directionX===-1||f.directionY===-1)&&t.prev()})),n.listenFlick!==!1&&this.registorHooks(h,"flick",this.flickHandler),!r&&!u?this.initSlideState():this.scroll.refresh()},e.prototype.resize=function(){var t=this,n=this.scroll.scroller.content,o=this.scroll.scroller.wrapper;return clearTimeout(this.resizeTimeout),this.resizeTimeout=window.setTimeout(function(){t.clearSlideWidth(n),t.clearSlideHeight(n),t.setSlideWidth(n),t.setSlideHeight(o,n),t.scroll.refresh()},this.scroll.options.resizePolling),!0},e.prototype.next=function(t,n){var o=this.page.nextPage(),r=o.pageX,s=o.pageY;this.goTo(r,s,t,n)},e.prototype.prev=function(t,n){var o=this.page.prevPage(),r=o.pageX,s=o.pageY;this.goTo(r,s,t,n)},e.prototype.goToPage=function(t,n,o,r){var s=this.page.realPage2Page(t,n);s&&this.goTo(s.realX,s.realY,o,r)},e.prototype.getCurrentPage=function(){return this.page.getRealPage()},e.prototype.nearestPage=function(t,n){var o=this.scroll.scroller.scrollBehaviorX,r=this.scroll.scroller.scrollBehaviorY,s=!0;return Math.abs(t-o.absStartPos)<=this.thresholdX&&Math.abs(n-r.absStartPos)<=this.thresholdY&&(s=!1),s?this.page.nearestPage(fixInboundValue(t,o.maxScrollPos,o.minScrollPos),fixInboundValue(n,r.maxScrollPos,r.minScrollPos),o.direction,r.direction):this.page.currentPage},e.prototype.destroy=function(){var t=this.scroll.scroller.content;if(this.slideOpt.loop){var n=t.children;n.length>2&&(removeChild(t,n[n.length-1]),removeChild(t,n[0]))}this.hooksFn.forEach(function(o){var r=o[0],s=o[1],a=o[2];r.eventTypes[s]&&r.off(s,a)}),this.hooksFn.length=0},e.prototype.initSlideState=function(){const t=this.page.currentPage;if(this.page.init(),t)this.page.currentPage=t;else{var n=this.page.getInitPage();this.goTo(n.pageX,n.pageY,0)}this.initThreshold()},e.prototype.initThreshold=function(){var t=this.slideOpt.threshold||.1;if(t%1===0)this.thresholdX=t,this.thresholdY=t;else{var n=this.page.getPageSize();n&&(this.thresholdX=Math.round(n.width*t),this.thresholdY=Math.round(n.height*t))}},e.prototype.cloneSlideEleForLoop=function(t){var n=t.children;prepend(n[n.length-1].cloneNode(!0),t),t.appendChild(n[1].cloneNode(!0))},e.prototype.amendCurrentPage=function(){if(this.isTouching=!1,!!this.slideOpt.loop){if(this.resetLooping){this.resetLooping=!1;return}var t=!1;if(this.page.loopX&&(this.scroll.x===this.scroll.scroller.scrollBehaviorX.minScrollPos||this.scroll.x===this.scroll.scroller.scrollBehaviorX.maxScrollPos)&&(t=!0),this.page.loopY&&(this.scroll.y===this.scroll.scroller.scrollBehaviorY.minScrollPos||this.scroll.y===this.scroll.scroller.scrollBehaviorY.maxScrollPos)&&(t=!0),t){var n=this.scroll.scroller.scrollBehaviorX,o=this.scroll.scroller.scrollBehaviorY,r=this.page.nearestPage(fixInboundValue(this.scroll.x,n.maxScrollPos,n.minScrollPos),fixInboundValue(this.scroll.y,o.maxScrollPos,o.minScrollPos),0,0),s={x:r.x,y:r.y,pageX:r.pageX,pageY:r.pageY};this.page.isSameWithCurrent(s)||this.page.changeCurrentPage(s)}var a=this.page.resetLoopPage();if(a)return this.resetLooping=!0,this.goTo(a.pageX,a.pageY,0),!0;this.pageWillChangeTo(this.page.currentPage)}},e.prototype.shouldSetWidthHeight=function(t){var n={width:["scrollX","disableSetWidth"],height:["scrollY","disableSetHeight"]},o=n[t];return!(!this.scroll.options[o[0]]||this.slideOpt[o[1]])},e.prototype.clearSlideWidth=function(t){if(this.shouldSetWidthHeight("width")){for(var n=t.children,o=0;o<n.length;o++){var r=n[o];r.removeAttribute("style")}t.removeAttribute("style")}},e.prototype.setSlideWidth=function(t){if(!this.shouldSetWidthHeight("width"))return!1;for(var n=t.children,o=n[0].clientWidth,r=0;r<n.length;r++){var s=n[r];s.style.width=o+"px"}return t.style.width=o*n.length+"px",!0},e.prototype.clearSlideHeight=function(t){if(this.shouldSetWidthHeight("height")){for(var n=t.children,o=0;o<n.length;o++){var r=n[o];r.removeAttribute("style")}t.removeAttribute("style")}},e.prototype.setSlideHeight=function(t,n){if(!this.shouldSetWidthHeight("height"))return!1;for(var o=t.clientHeight,r=n.children,s=0;s<r.length;s++){var a=r[s];a.style.height=o+"px"}return n.style.height=o*r.length+"px",!0},e.prototype.goTo=function(t,n,o,r){n===void 0&&(n=0);var s=this.page.change2safePage(t,n);if(s){var a=r||this.slideOpt.easing||ease.bounce,l=s.x,u=s.y,d=l-this.scroll.scroller.scrollBehaviorX.currentPos,h=u-this.scroll.scroller.scrollBehaviorY.currentPos;!d&&!h||(o=o===void 0?this.getAnimateTime(d,h):o,this.page.changeCurrentPage({x:l,y:u,pageX:s.pageX,pageY:s.pageY}),this.pageWillChangeTo(this.page.currentPage),this.scroll.scroller.scrollTo(l,u,o,a))}},e.prototype.flickHandler=function(){var t=this.scroll.scroller.scrollBehaviorX,n=this.scroll.scroller.scrollBehaviorY,o=t.currentPos-t.startPos,r=n.currentPos-n.startPos,s=this.getAnimateTime(o,r);this.goTo(this.page.currentPage.pageX+t.direction,this.page.currentPage.pageY+n.direction,s)},e.prototype.getAnimateTime=function(t,n){return this.slideOpt.speed?this.slideOpt.speed:Math.max(Math.max(Math.min(Math.abs(t),1e3),Math.min(Math.abs(n),1e3)),300)},e.prototype.modifyScrollMetaHandler=function(t){var n=this.nearestPage(t.newX,t.newY);t.time=this.getAnimateTime(t.newX-n.x,t.newY-n.y),t.newX=n.x,t.newY=n.y,t.easing=this.slideOpt.easing||ease.bounce,this.page.changeCurrentPage({x:t.newX,y:t.newY,pageX:n.pageX,pageY:n.pageY}),this.pageWillChangeTo(this.page.currentPage)},e.prototype.scrollMoving=function(t){if(this.isTouching){var n=this.nearestPage(t.x,t.y);this.pageWillChangeTo(n)}},e.prototype.pageWillChangeTo=function(t){var n=this.page.getRealPage(t);n.pageX===this.willChangeToPage.pageX&&n.pageY===this.willChangeToPage.pageY||(this.willChangeToPage=n,this.scroll.trigger("slideWillChange",this.willChangeToPage))},e.prototype.setTouchFlag=function(){this.isTouching=!0},e.prototype.registorHooks=function(t,n,o){t.on(n,o,this),this.hooksFn.push([t,n,o])},e.pluginName="slide",e}();BScroll.use(ScrollBar),BScroll.use(NestedScroll),BScroll.use(MouseWheel),BScroll.use(Slide);let Group$1=class extends React__namespace.Component{constructor(t){super(t),this.scrollNeedsToInit=!1,this.scrollRef=React__namespace.createRef()}componentDidMount(){this.props.scrollEnabled&&this.props.nativeScroll!==!0&&this.setupIScroll(),this.scrollRef.current.noodlNode=this.props.noodlNode}componentWillUnmount(){this.iScroll&&(this.iScroll.destroy(),this.iScroll=void 0),this.props.noodlNode.context.setNodeFocused(this.props.noodlNode,!1)}componentDidUpdate(){this.scrollNeedsToInit&&(this.setupIScroll(),this.scrollNeedsToInit=!1),this.iScroll&&setTimeout(()=>{this.iScroll&&this.iScroll.refresh()},0)}scrollToIndex(t,n){if(this.iScroll){const o=this.scrollRef.current.children[0].children[t];o&&this.iScroll.scrollToElement(o,n,0,0)}else{const o=this.scrollRef.current.children[t];o&&o.scrollIntoView({behavior:"smooth"})}}scrollToElement(t,n){if(!t)return;const o=ReactDOM.findDOMNode(t.getRef());o&&o.scrollIntoView&&(this.iScroll?this.iScroll.scrollToElement(o,n,0,0):o.scrollIntoView({behavior:"smooth"}))}setupIScroll(){const{scrollSnapEnabled:t}=this.props,n=this.getScrollDirection(),o={disableSetWidth:!0,disableSetHeight:!0,loop:!1},r=this.scrollRef.current;this.iScroll=new BScroll(r,{bounceTime:500,swipeBounceTime:300,scrollbar:this.props.showScrollbar?{}:void 0,momentum:t?!this.props.scrollSnapToEveryItem:!0,bounce:this.props.scrollBounceEnabled&&!(t&&o.loop),scrollX:n==="x"||n==="both",scrollY:n==="y"||n==="both",slide:t?o:void 0,probeType:this.props.onScrollPositionChanged?3:1,click:!0,nestedScroll:!0,useTransition:!1});const s=this.iScroll.scroller;s.scrollBehaviorX&&(s.scrollBehaviorX.momentum=patchedMomentum.bind(s.scrollBehaviorX)),s.scrollBehaviorY&&(s.scrollBehaviorY.momentum=patchedMomentum.bind(s.scrollBehaviorY)),this.iScroll.on("beforeScrollStart",()=>{this.iScroll.refresh()}),this.iScroll.on("scrollStart",()=>{this.props.onScrollStart&&this.props.onScrollStart()}),this.iScroll.on("scrollEnd",()=>{this.props.onScrollEnd&&this.props.onScrollEnd()}),this.props.onScrollPositionChanged&&this.iScroll.on("scroll",()=>{this.props.onScrollPositionChanged(n==="x"?-this.iScroll.x:-this.iScroll.y)})}UNSAFE_componentWillReceiveProps(t){(this.props.scrollSnapEnabled!==t.scrollSnapEnabled||this.props.onScrollPositionChanged!==t.onScrollPositionChanged||this.props.onScrollStart!==t.onScrollStart||this.props.onScrollEnd!==t.onScrollEnd||this.props.showScrollbar!==t.showScrollbar||this.props.scrollEnabled!==t.scrollEnabled||this.props.nativeScroll!==t.nativeScroll||this.props.scrollSnapToEveryItem!==t.scrollSnapToEveryItem||this.props.layout!==t.layout||this.props.flexWrap!==t.flexWrap||this.props.scrollBounceEnabled!==t.scrollBounceEnabled)&&(this.iScroll&&(this.iScroll.destroy(),this.iScroll=void 0),this.scrollNeedsToInit=t.scrollEnabled&&!t.nativeScroll)}renderIScroll(){const{flexDirection:t,flexWrap:n}=this.props.style,o={display:"inline-flex",flexShrink:0,flexDirection:t,flexWrap:n,touchAction:"none"};return t==="row"?n==="wrap"?o.width="100%":o.height="100%":n==="wrap"?o.height="100%":o.width="100%",React__namespace.createElement("div",{className:"scroll-wrapper-internal",style:o},this.props.children)}getScrollDirection(){return this.props.flexWrap==="wrap"||this.props.flexWrap==="wrap-reverse"?this.props.layout==="row"?"y":"x":this.props.layout==="row"?"x":"y"}render(){const{as:t="div",...n}=this.props,o=n.scrollEnabled&&!n.nativeScroll?this.renderIScroll():n.children,r={...n.style};if(Layout.size(r,n),Layout.align(r,n),n.clip&&(r.overflowX="hidden",r.overflowY="hidden"),n.scrollEnabled&&n.nativeScroll){const a=this.getScrollDirection();a==="y"?r.overflowY="auto":a==="x"?r.overflowX="auto":a==="both"&&(r.overflowX="auto",r.overflowY="auto")}r.opacity===0&&(r.pointerEvents="none");const s={className:n.className,...n.attrs,...n.dom,...pointerProps(n),style:r,ref:this.scrollRef};return React__namespace.createElement(t,{...s},o)}};const GroupNode={name:"Group",docs:"https://docs.noodl.net/nodes/basic-elements/group",connectionPanel:{groupPriority:["General","Style","Events","Mounted","Hover Events","Pointer Events","Focus","Scroll"]},initialize(){this.props.attrs={},this._internal={scrollElementDuration:500,scrollIndexDuration:500,scrollIndex:0},this.props.layout="column"},getReactComponent(){return Group$1},noodlNodeAsProp:!0,visualStates:[{name:"neutral",label:"Neutral"},{name:"hover",label:"Hover"}],defaultCss:{display:"flex",position:"relative",flexDirection:"column"},inputs:{flexDirection:{index:12,displayName:"Layout",group:"Layout",type:{name:"enum",enums:[{label:"None",value:"none"},{label:"Vertical",value:"column"},{label:"Horizontal",value:"row"}]},default:"column",set(e){this.props.layout=e,e!=="none"?this.setStyle({flexDirection:e}):this.removeStyle(["flexDirection"]),this.context.editorConnection&&(e!=="none"&&!flexDirectionValues.includes(e)?this.context.editorConnection.sendWarning(this.nodeScope.componentOwner.name,this.id,"layout-warning",{message:"Invalid Layout value has to be a valid flex-direction value."}):this.context.editorConnection.clearWarning(this.nodeScope.componentOwner.name,this.id,"layout-warning")),this.forceUpdate()}},"scrollToIndex.do":{displayName:"Scroll To Index - Do",group:"Scroll To Index",type:"signal",index:505,valueChangedToTrue(){this.scheduleAfterInputsHaveUpdated(()=>{if(!this.innerReactComponentRef)return;const e=this._internal.scrollIndex,t=this._internal.scrollIndexDuration;this.innerReactComponentRef.scrollToIndex(e,t)})}},"scrollToElement.do":{displayName:"Scroll To Element - Do",group:"Scroll To Element",type:"signal",index:500,valueChangedToTrue(){this.innerReactComponentRef&&this.scheduleAfterInputsHaveUpdated(()=>{const e=this._internal.scrollElement,t=this._internal.scrollElementDuration;this.innerReactComponentRef.scrollToElement(e,t)})}},"scrollToElement.element":{displayName:"Scroll To Element - Element",group:"Scroll To Element",type:"reference",index:501,set(e){this._internal.scrollElement=e}},"scrollToElement.duration":{displayName:"Scroll To Element - Duration",group:"Scroll To Element",type:"number",default:500,index:502,set(e){this._internal.scrollElementDuration=e}},"scrollToIndex.index":{displayName:"Scroll To Index - Index",group:"Scroll To Index",type:"number",default:0,index:506,set(e){this._internal.scrollIndex=e}},"scrollToIndex.duration":{displayName:"Scroll To Index - Duration",group:"Scroll To Index",type:"number",default:500,index:507,set(e){this._internal.scrollIndexDuration=e}},focus:{displayName:"Focus",type:"signal",group:"Focus",valueChangedToTrue(){this.context.setNodeFocused(this,!0)}},testId:{index:100009,displayName:"Test ID Attribute",group:"Advanced HTML",type:"string",set(e){this.props.attrs["data-testid"]=e,this.forceUpdate()}}},inputProps:{clip:{index:19,displayName:"Clip Content",type:"boolean",group:"Layout",default:!1},scrollEnabled:{index:54,group:"Scroll",displayName:"Enable Scroll",type:"boolean",default:!1},scrollSnapEnabled:{index:55,displayName:"Snap",group:"Scroll",type:"boolean",default:!1},scrollSnapToEveryItem:{index:56,displayName:"Snap To Every Item",group:"Scroll",type:"boolean",default:!1},showScrollbar:{index:57,displayName:"Show Scrollbar",group:"Scroll",type:"boolean",default:!1},scrollBounceEnabled:{index:58,displayName:"Bounce at boundaries",group:"Scroll",type:"boolean",default:!0},nativeScroll:{index:60,group:"Scroll",displayName:"Native platform scroll",type:"boolean",default:!0},as:{index:1e5,group:"Advanced HTML",displayName:"Tag",type:{name:"enum",enums:[{label:"<div>",value:"div"},{label:"<section>",value:"section"},{label:"<article>",value:"article"},{label:"<aside>",value:"aside"},{label:"<nav>",value:"nav"},{label:"<header>",value:"header"},{label:"<footer>",value:"footer"},{label:"<main>",value:"main"},{label:"<span>",value:"span"}]},default:"div"}},inputCss:{alignItems:{index:13,group:"Align and justify content",displayName:"Align Items",type:{name:"enum",enums:[{label:"Start",value:"flex-start"},{label:"End",value:"flex-end"},{label:"Center",value:"center"}],alignComp:"align-items"},default:"flex-start"},justifyContent:{index:14,group:"Align and justify content",displayName:"Justify Content",type:{name:"enum",enums:[{label:"Start",value:"flex-start"},{label:"End",value:"flex-end"},{label:"Center",value:"center"},{label:"Space Between",value:"space-between"},{label:"Space Around",value:"space-around"},{label:"Space Evenly",value:"space-evenly"}],alignComp:"justify-content"},default:"flex-start",applyDefault:!1},flexWrap:{index:15,displayName:"Multi Line Wrap",group:"Layout",type:{name:"enum",enums:[{label:"Off",value:"nowrap"},{label:"On",value:"wrap"},{label:"On Reverse",value:"wrap-reverse"}]},default:"nowrap",onChange(e){this.props.flexWrap=e,this.forceUpdate()},applyDefault:!1},alignContent:{index:16,group:"Layout",displayName:"Align Content",type:{name:"enum",enums:[{label:"Start",value:"flex-start"},{label:"End",value:"flex-end"},{label:"Center",value:"center"},{label:"Space Between",value:"space-between"},{label:"Space Around",value:"space-around"},{label:"Space Evenly",value:"space-evenly"}],alignComp:"align-content"}},rowGap:{index:17,displayName:"Vertical Gap",group:"Layout",type:{name:"number",units:["px","%","em"],defaultUnit:"px"},default:0,applyDefault:!1},columnGap:{index:18,displayName:"Horizontal Gap",group:"Layout",type:{name:"number",units:["px","%","em"],defaultUnit:"px"},default:0,applyDefault:!1},backgroundColor:{index:201,displayName:"Background Color",group:"Style",type:"color",default:"transparent",applyDefault:!1,allowVisualStates:!0}},outputProps:{onScrollPositionChanged:{displayName:"Scroll Position",type:"number",group:"Scroll"},onScrollStart:{displayName:"Scroll Start",type:"signal",group:"Scroll"},onScrollEnd:{displayName:"Scroll End",type:"signal",group:"Scroll"}},outputs:{focused:{displayName:"Focused",type:"signal",group:"Focus"},focusLost:{displayName:"Focus Lost",type:"signal",group:"Focus"}},dynamicports:[{condition:"flexDirection != none",inputs:["scrollEnabled"]},{condition:"flexDirection != none AND scrollEnabled = true",inputs:["nativeScroll"]},{condition:"flexDirection != none AND scrollEnabled = true AND nativeScroll = false",inputs:["scrollBounceEnabled","scrollSnapEnabled","showScrollbar","scrollToElement.do","scrollToElement.element","scrollToElement.duration","scrollToIndex.do","scrollToIndex.index","scrollToIndex.duration"]},{condition:"flexDirection != none AND scrollEnabled = true AND scrollSnapEnabled = true",inputs:["scrollSnapToEveryItem"]},{condition:"flexDirection != none",inputs:["flexWrap"]},{condition:"flexWrap = wrap OR flexWrap = wrap-reverse",inputs:["alignContent"]},{condition:"flexDirection = row OR flexWrap = wrap OR flexWrap = wrap-reverse",inputs:["columnGap"]},{condition:"flexDirection = column OR flexWrap = wrap OR flexWrap = wrap-reverse",inputs:["rowGap"]}],methods:{_focus(){this.sendSignalOnOutput("focused")},_blur(){this.sendSignalOnOutput("focusLost")}}};NodeSharedPortDefinitions.addDimensions(GroupNode),NodeSharedPortDefinitions.addTransformInputs(GroupNode),NodeSharedPortDefinitions.addSharedVisualInputs(GroupNode),NodeSharedPortDefinitions.addPaddingInputs(GroupNode),NodeSharedPortDefinitions.addMarginInputs(GroupNode),NodeSharedPortDefinitions.addAlignInputs(GroupNode),NodeSharedPortDefinitions.addPointerEventOutputs(GroupNode),NodeSharedPortDefinitions.addBorderInputs(GroupNode),NodeSharedPortDefinitions.addShadowInputs(GroupNode);function defineTooltips$1(e){e.inputProps.clip.tooltip=createTooltip({title:"Clip content",body:"Controls if elements that are too big to fit will be clipped",images:[{src:"clip-enabled.svg",label:"Enabled"},{src:"clip-disabled.svg",label:"Disabled"}]}),e.inputCss.flexWrap.tooltip=createTooltip({title:"Multiline wrap",body:"Elements will wrap to the next line when there's not enough space",images:[{src:"multiline-h.svg",body:"Using a horizontal layout"},{src:"multiline-v.svg",body:"Using a vertical layout"}]})}Noodl.runDeployed||defineTooltips$1(GroupNode);const Group=createNodeFromReactComponent(GroupNode);function Icon$1(e){const t={userSelect:"none",...e.style};Layout.size(t,e),Layout.align(t,e);function n(){const r={};if(e.iconSourceType==="image"&&e.iconImageSource!==void 0){r.width=e.iconSize,r.height=e.iconSize;let s=e.iconImageSource;if(typeof s=="string"&&s.startsWith("/")){const a=Noodl.Env.BaseUrl;a&&(s=a+s.substring(1))}return React.createElement("img",{alt:"",src:s,style:r})}else if(e.iconSourceType==="icon"&&e.iconIconSource!==void 0)return r.fontSize=e.iconSize,r.color=e.iconColor,r.lineHeight=1,React.createElement("div",{style:{lineHeight:0}},e.iconIconSource.codeAsClass===!0?React.createElement("span",{className:[e.iconIconSource.class,e.iconIconSource.code].join(" "),style:r}):React.createElement("span",{className:e.iconIconSource.class,style:r},e.iconIconSource.code));return null}let o="ndl-visual-icon";return e.className&&(o=o+" "+e.className),React.createElement("div",{className:o,style:t},n())}const IconNode={name:"net.noodl.visual.icon",displayName:"Icon",docs:"https://docs.noodl.net/nodes/basic-elements/icon",allowChildren:!1,noodlNodeAsProp:!0,connectionPanel:{groupPriority:["General","Style","Actions","Events","States","Mounted","Hover Events","Pointer Events","Focus Events"]},getReactComponent(){return Icon$1}};NodeSharedPortDefinitions.addAlignInputs(IconNode),NodeSharedPortDefinitions.addTransformInputs(IconNode),NodeSharedPortDefinitions.addPaddingInputs(IconNode,{defaults:{paddingTop:5,paddingRight:5,paddingBottom:5,paddingLeft:5}}),NodeSharedPortDefinitions.addMarginInputs(IconNode),NodeSharedPortDefinitions.addIconInputs(IconNode,{hideEnableIconInput:!0,defaults:{useIcon:!0}}),NodeSharedPortDefinitions.addSharedVisualInputs(IconNode);const Icon=createNodeFromReactComponent(IconNode);function Image$1(e){const t={...e.style};if(Layout.size(t,e),Layout.align(t,e),t.opacity===0&&(t.pointerEvents="none"),e.dom?.src?.startsWith("/")){const n=Noodl.Env.BaseUrl;n&&(e.dom.src=n+e.dom.src.substring(1))}return React__namespace.createElement("img",{...e.attrs,className:e.className,...e.dom,...pointerProps(e),style:t})}const ImageNode={name:"Image",docs:"https://docs.noodl.net/nodes/basic-elements/image",noodlNodeAsProp:!0,visualStates:[{name:"neutral",label:"Neutral"},{name:"hover",label:"Hover"}],connectionPanel:{groupPriority:["General","Image","Style","Actions","Events","Mounted","Pointer Events","Hover Events","Dimensions","Margin and padding"]},initialize(){this.props.attrs={},this.props.default=""},getReactComponent(){return Image$1},getInspectInfo(){if(this.props.dom.srcSet)return this.props.dom.srcSet;if(this.props.dom.src){const e=this.props.dom.src.toString();return[{type:"text",value:e},{type:"image",value:e}]}},allowChildren:!1,defaultCss:{display:"block",flexShrink:0},inputCss:{objectFit:{displayName:"Image Fit",group:"Dimensions",type:{name:"enum",enums:[{label:"Fill",value:"fill"},{label:"Contain",value:"contain"},{label:"Cover",value:"cover"},{label:"None",value:"none"},{label:"Scale Down",value:"scale-down"}]},default:"contain",allowVisualStates:!0}},dynamicports:[{condition:"sizeMode = explicit",inputs:["objectFit"]}],inputs:{src:{displayName:"Source",group:"Image",propPath:"dom",type:{name:"image"},index:30,allowVisualStates:!0,set(e){this.props.dom.src=getAbsoluteUrl(e),this.forceUpdate()}},testId:{index:100009,displayName:"Test ID Attribute",group:"Advanced HTML",type:"string",set(e){this.props.attrs["data-testid"]=e,this.forceUpdate()}}},inputProps:{srcSet:{displayName:"Source Set",group:"Image",propPath:"dom",type:{name:"string"},index:31,allowVisualStates:!0},alt:{displayName:"Alternate text",tooltip:"The alt text is used by screen readers, or if the image can't be downloaded or displayed",type:"string",propPath:"dom",index:1e3,default:""}},outputProps:{onLoad:{displayName:"On Load",propPath:"dom",type:"signal",group:"Events"},onError:{displayName:"On Error",propPath:"dom",type:"signal",group:"Events"}}};NodeSharedPortDefinitions.addDimensions(ImageNode,{defaultSizeMode:"contentSize",contentLabel:"Image"}),NodeSharedPortDefinitions.addTransformInputs(ImageNode),NodeSharedPortDefinitions.addMarginInputs(ImageNode),NodeSharedPortDefinitions.addSharedVisualInputs(ImageNode),NodeSharedPortDefinitions.addAlignInputs(ImageNode),NodeSharedPortDefinitions.addPointerEventOutputs(ImageNode),NodeSharedPortDefinitions.addBorderInputs(ImageNode),NodeSharedPortDefinitions.addShadowInputs(ImageNode);const Image=createNodeFromReactComponent(ImageNode);function Text(e){const{as:t="div"}=e,n={...e.textStyle,...e.style};return Layout.size(n,e),Layout.align(n,e),n.color=e.noodlNode.context.styles.resolveColor(n.color),e.sizeMode==="contentSize"||e.sizeMode==="contentWidth"?n.whiteSpace="pre":(n.whiteSpace="pre-wrap",n.overflowWrap="anywhere"),n.opacity===0&&(n.pointerEvents="none"),React.createElement(t,{className:["ndl-visual-text",e.className].join(" "),...e.attrs,...e.dom,...pointerProps(e),style:n},String(e.text))}const TextNode={name:"Text",docs:"https://docs.noodl.net/nodes/basic-elements/text",visualStates:[{name:"neutral",label:"Neutral"},{name:"hover",label:"Hover"}],allowChildren:!1,noodlNodeAsProp:!0,usePortAsLabel:"text",portLabelTruncationMode:"length",connectionPanel:{groupPriority:["General","Text","Text Style","Style","Events","Mounted","Hover Events","Pointer Events"]},nodeDoubleClickAction:{focusPort:"text"},initialize(){this.props.attrs={}},getReactComponent(){return Text},getInspectInfo(){return this.props.text},defaultCss:{position:"relative",display:"flex"},inputProps:{text:{index:19,group:"Text",displayName:"Text",default:"Text",type:{name:"string",multiline:!0}},as:{index:1e5,group:"Advanced HTML",displayName:"Tag",type:{name:"enum",enums:[{label:"<div>",value:"div"},{label:"<h1>",value:"h1"},{label:"<h2>",value:"h2"},{label:"<h3>",value:"h3"},{label:"<h4>",value:"h4"},{label:"<h5>",value:"h5"},{label:"<h6>",value:"h6"},{label:"<p>",value:"p"},{label:"<span>",value:"span"}]},default:"div"}},inputCss:{wordBreak:{index:27,group:"Text",displayName:"Word Break",applyDefault:!1,type:{name:"enum",enums:[{label:"Normal",value:"normal"},{label:"Break All",value:"break-all"}]},default:"normal"}},inputs:{textAlignX:{group:"Text Alignment",index:13,displayName:"Text Horizontal Align",type:{name:"enum",enums:[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}],alignComp:"justify"},default:"left",set(e){switch(e){case"left":this.setStyle({textAlign:"left",justifyContent:"flex-start"});break;case"center":this.setStyle({textAlign:"center",justifyContent:"center"});break;case"right":this.setStyle({textAlign:"right",justifyContent:"flex-end"});break}}},textAlignY:{group:"Text Alignment",index:14,displayName:"Text Vertical Align",type:{name:"enum",enums:[{label:"Top",value:"top"},{label:"Center",value:"center"},{label:"Bottom",value:"bottom"}],alignComp:"vertical"},default:"top",set(e){switch(e){case"top":this.setStyle({alignItems:"flex-start"});break;case"center":this.setStyle({alignItems:"center"});break;case"bottom":this.setStyle({alignItems:"flex-end"});break}}},testId:{index:100009,displayName:"Test ID Attribute",group:"Advanced HTML",type:"string",set(e){this.props.attrs["data-testid"]=e,this.forceUpdate()}}}};NodeSharedPortDefinitions.addDimensions(TextNode,{defaultSizeMode:"contentHeight",contentLabel:"Text"}),NodeSharedPortDefinitions.addTextStyleInputs(TextNode),NodeSharedPortDefinitions.addAlignInputs(TextNode),NodeSharedPortDefinitions.addTransformInputs(TextNode),NodeSharedPortDefinitions.addMarginInputs(TextNode),NodeSharedPortDefinitions.addSharedVisualInputs(TextNode),NodeSharedPortDefinitions.addPointerEventOutputs(TextNode);function defineTooltips(e){e.inputCss.wordBreak.tooltip=createTooltip({title:"Word break",body:["Control where line breaks are allowed","- Normal: Break on spaces and other whitespace characters","- Break All: Allow line breaks between any two characters, including inside words"]})}Noodl.runDeployed||defineTooltips(TextNode);const TextNode$1=createNodeFromReactComponent(TextNode);class CachedVideo extends React.PureComponent{componentDidUpdate(){this.video&&(this.video.muted=this.props.muted,this.video.loop=this.props.loop,this.video.volume=this.props.volume,this.video.autoplay=this.props.autoplay,this.video.controls=this.props.controls)}render(){let t=this.props.src?this.props.src.toString():void 0;if(t&&(t.indexOf("#t=")===-1&&(t+="#t=0.01"),t.startsWith("/"))){const n=Noodl.Env.BaseUrl;n&&(t=n+t.substring(1))}return React.createElement("video",{...this.props,playsInline:!0,src:t,...pointerProps(this.props),ref:n=>{this.video=n,this.props.innerRef(n)}})}}let Video$1=class extends React.Component{constructor(t){super(t),this.wantToPlay=!1,this.canPlay=!1}componentWillUnmount(){this.canPlay=!1}setSourceObject(t){this.video.srcObject!==t&&(this.video.srcObject=t,this.canPlay=!1)}play(){this.wantToPlay=!0,this.canPlay&&this.video.play()}restart(){this.wantToPlay=!0,this.canPlay&&(this.video.currentTime=0,this.video.play())}pause(){this.wantToPlay=!1,this.video&&this.video.pause()}reset(){this.wantToPlay=!1,this.video&&(this.video.currentTime=0,this.video.pause())}render(){const t=this.props,n={...t.style};return Layout.size(n,t),Layout.align(n,t),n.opacity===0&&(n.pointerEvents="none"),n.objectPosition=`${t.objectPositionX} ${t.objectPositionY}`,React.createElement(CachedVideo,{...t.dom,className:t.className,style:n,innerRef:o=>{this.video=o,this.props.onVideoElementCreated&&this.props.onVideoElementCreated(o)},onCanPlay:()=>{this.canPlay=!0,this.wantToPlay&&this.video.play(),this.props.onCanPlay&&this.props.onCanPlay(),this.props.videoWidth&&this.props.videoWidth(this.video.videoWidth),this.props.videoHeight&&this.props.videoHeight(this.video.videoHeight)}})}};const VideoNode={name:"Video",docs:"https://docs.noodl.net/nodes/basic-elements/video",connectionPanel:{groupPriority:["General","Video","Video Actions","Style","Actions","Events","Mounted","Playback","Pointer Events","Hover Events","Dimensions","Margin and padding"]},getReactComponent(){return Video$1},allowChildren:!1,noodlNodeAsProp:!0,defaultCss:{display:"block"},inputs:{srcObject:{displayName:"Source Object",group:"Video",type:"mediastream",default:null,set(e){this.innerReactComponentRef&&this.innerReactComponentRef.setSourceObject(e)}},play:{type:"signal",group:"Video Actions",displayName:"Play",tooltip:{standard:"Play the video"},valueChangedToTrue(){this.innerReactComponentRef&&this.innerReactComponentRef.play()}},restart:{type:"signal",group:"Video Actions",displayName:"Restart",tooltip:{standard:"Restart the video from the beginning"},valueChangedToTrue(){this.innerReactComponentRef&&this.innerReactComponentRef.restart()}},pause:{type:"boolean",group:"Video Actions",displayName:"Pause",valueChangedToTrue(){this.innerReactComponentRef&&this.innerReactComponentRef.pause()}},reset:{type:"boolean",group:"Video Actions",displayName:"Reset",valueChangedToTrue(){this.innerReactComponentRef&&this.innerReactComponentRef.reset()}},src:{displayName:"Source",group:"Video",type:"string",set(e){this.props.dom.src=getAbsoluteUrl(e),this.forceUpdate()}},poster:{displayName:"Poster",group:"Video",type:"image",set(e){this.props.dom.poster=getAbsoluteUrl(e),this.forceUpdate()}}},inputProps:{autoplay:{displayName:"Autoplay",propPath:"dom",group:"Video",type:"boolean"},controls:{displayName:"Controls",propPath:"dom",group:"Video",type:"boolean"},volume:{displayName:"Volume",propPath:"dom",group:"Video",type:"number",default:1},muted:{displayName:"Muted",propPath:"dom",group:"Video",type:"boolean"},loop:{displayName:"Loop",propPath:"dom",group:"Video",type:"boolean"},objectPositionX:{displayName:"Video Position X",group:"Video Layout",type:{name:"number",units:["%","px"],defaultUnit:"%"},default:50},objectPositionY:{displayName:"Video Position Y",group:"Video Layout",type:{name:"number",units:["%","px"],defaultUnit:"%"},default:50}},inputCss:{objectFit:{displayName:"Object Fit",group:"Video Layout",type:{name:"enum",enums:[{label:"Contain",value:"contain"},{label:"Cover",value:"cover"},{label:"Fill",value:"fill"},{label:"None",value:"none"}]},default:"contain"}},outputProps:{onCanPlay:{type:"signal",group:"Events",displayName:"On Can Play"},onTimeUpdate:{group:"Playback",displayName:"Playback Position",type:"number",propPath:"dom",getValue(e){return e.target.currentTime}},onPlay:{group:"Events",displayName:"On Play",type:"signal",propPath:"dom"},onPause:{group:"Events",displayName:"On Pause",type:"signal",propPath:"dom"},onVideoElementCreated:{type:"domelement",displayName:"DOM Element"},videoWidth:{group:"Playback",type:"number",displayName:"Video Width"},videoHeight:{group:"Playback",type:"number",displayName:"Video Height"}}};NodeSharedPortDefinitions.addDimensions(VideoNode,{defaultSizeMode:"contentSize",contentLabel:"Video"}),NodeSharedPortDefinitions.addTransformInputs(VideoNode),NodeSharedPortDefinitions.addMarginInputs(VideoNode),NodeSharedPortDefinitions.addSharedVisualInputs(VideoNode),NodeSharedPortDefinitions.addAlignInputs(VideoNode),NodeSharedPortDefinitions.addPointerEventOutputs(VideoNode),NodeSharedPortDefinitions.addBorderInputs(VideoNode);const Video=createNodeFromReactComponent(VideoNode);function _shallowCompare(e,t){for(var n in e)if(e.hasOwnProperty(n)&&e[n]!==t[n])return!1;for(var n in t)if(t.hasOwnProperty(n)&&e[n]!==t[n])return!1;return!0}const _styleSheets={};function updateStylesForClass(e,t,n){if(_styleSheets[e])_shallowCompare(t,_styleSheets[e].props)||(_styleSheets[e].style.innerHTML=n(e,t),_styleSheets[e].props=Object.assign({},t));else{var o=document.createElement("style");o.innerHTML=n(e,t),document.head.appendChild(o),_styleSheets[e]={style:o,props:Object.assign({},t)}}}function mergeAttribute(e,t,n){e[t]||(e[t]={});for(const o in n)e[t][o]=n[o]}function addInputProps(e,t){mergeAttribute(e,"inputProps",t)}function addOutputProps(e,t){mergeAttribute(e,"outputProps",t)}function addControlEventsAndStates(e){addInputProps(e,{blockTouch:{index:450,displayName:"Block Pointer Events",type:"boolean"}}),addOutputProps(e,{focusState:{displayName:"Focused",group:"States",type:"boolean",props:{onFocus(){this.outputPropValues.focusState=!0,this.flagOutputDirty("focusState"),this.hasOutput("onFocus")&&this.sendSignalOnOutput("onFocus")},onBlur(){this.outputPropValues.focusState=!1,this.flagOutputDirty("focusState"),this.hasOutput("onBlur")&&this.sendSignalOnOutput("onBlur")}}},onFocus:{displayName:"Focused",group:"Events",type:"signal",props:{onFocus(){this.outputPropValues.focusState=!0,this.flagOutputDirty("focusState"),this.sendSignalOnOutput("onFocus")}}},onBlur:{displayName:"Blurred",group:"Events",type:"signal",props:{onBlur(){this.outputPropValues.focusState=!1,this.flagOutputDirty("focusState"),this.sendSignalOnOutput("onBlur")}}},hoverState:{displayName:"Hover",group:"States",type:"boolean",props:{onMouseOver(){this.outputPropValues.hoverState=!0,this.flagOutputDirty("hoverState"),this.hasOutput("hoverStart")&&this.sendSignalOnOutput("hoverStart")},onMouseLeave(){this.outputPropValues.hoverState=!1,this.flagOutputDirty("hoverState"),this.hasOutput("hoverEnd")&&this.sendSignalOnOutput("hoverEnd")}}},hoverStart:{displayName:"Hover Start",group:"Events",type:"signal",props:{onMouseOver(){this.outputPropValues.hoverState=!0,this.flagOutputDirty("hoverState"),this.sendSignalOnOutput("hoverStart")}}},hoverEnd:{displayName:"Hover End",group:"Events",type:"signal",props:{onMouseLeave(){this.outputPropValues.hoverState=!1,this.flagOutputDirty("hoverState"),this.sendSignalOnOutput("hoverEnd")}}},pressedState:{displayName:"Pressed",group:"States",type:"boolean",props:{onMouseDown(){this.outputPropValues.pressedState=!0,this.flagOutputDirty("pressedState"),this.hasOutput("pointerDown")&&this.sendSignalOnOutput("pointerDown")},onTouchStart(){this.outputPropValues.pressedState=!0,this.flagOutputDirty("pressedState"),this.hasOutput("pointerDown")&&this.sendSignalOnOutput("pointerDown")},onMouseUp(){this.outputPropValues.pressedState=!1,this.flagOutputDirty("pressedState"),this.hasOutput("pointerUp")&&this.sendSignalOnOutput("pointerUp")},onTouchEnd(){this.outputPropValues.pressedState=!1,this.flagOutputDirty("pressedState"),this.hasOutput("pointerUp")&&this.sendSignalOnOutput("pointerUp")},onTouchCancel(){this.outputPropValues.pressedState=!1,this.flagOutputDirty("pressedState"),this.hasOutput("pointerUp")&&this.sendSignalOnOutput("pointerUp")}}},pointerDown:{displayName:"Pointer Down",group:"Events",type:"signal",props:{onMouseDown(){this.outputPropValues.pressedState=!0,this.flagOutputDirty("pressedState"),this.sendSignalOnOutput("pointerDown")},onTouchStart(){this.outputPropValues.pressedState=!0,this.flagOutputDirty("pressedState"),this.sendSignalOnOutput("pointerDown")}}},pointerUp:{displayName:"Pointer Up",group:"Events",type:"signal",props:{onMouseUp(){this.outputPropValues.pressedState=!1,this.flagOutputDirty("pressedState"),this.sendSignalOnOutput("pointerUp")},onTouchEnd(){this.outputPropValues.pressedState=!1,this.flagOutputDirty("pressedState"),this.sendSignalOnOutput("pointerUp")},onTouchCancel(){this.outputPropValues.pressedState=!1,this.flagOutputDirty("pressedState"),this.sendSignalOnOutput("pointerUp")}}}})}function controlEvents(e){return Object.assign({},{onFocus:e.onFocus,onBlur:e.onBlur},pointerProps(e))}const Utils={updateStylesForClass,addControlEventsAndStates,controlEvents};function Button(e){React.useEffect(()=>{e.focusChanged&&e.focusChanged(!1),e.hoverChanged&&e.hoverChanged(!1),e.pressedChanged&&e.pressedChanged(!1)},[]);var t={...e.style};Layout.size(t,e),Layout.align(t,e),e.textStyle!==void 0&&(t=Object.assign({},e.textStyle,t)),e.boxShadowEnabled&&(t.boxShadow=`${e.boxShadowInset?"inset ":""}${e.boxShadowOffsetX} ${e.boxShadowOffsetY} ${e.boxShadowBlurRadius} ${e.boxShadowSpreadRadius} ${e.boxShadowColor}`);let n="ndl-controls-button";return e.className&&(n=n+" "+e.className),React.createElement("button",{className:n,disabled:!e.enabled,...Utils.controlEvents(e),type:e.buttonType,style:t,onClick:e.onClick},e.label,e.children)}var ButtonNode={name:"Button",docs:"https://docs.noodl.net/nodes/visual/button",allowChildren:!0,noodlNodeAsProp:!0,initialize(){this.outputPropValues.hoverState=this.outputPropValues.focusState=this.outputPropValues.pressedState=!1,this.props.id=this._internal.controlId="input-"+guid(),this.props.enabled=this._internal.enabled=!0},getReactComponent(){return Button},inputs:{enabled:{type:"boolean",displayName:"Enabled",group:"General",default:!0,set:function(e){e=!!e;const t=e!==this._internal.enabled;this.props.enabled=this._internal.enabled=e,t&&(this.forceUpdate(),this.flagOutputDirty("enabled"))}},textStyle:{index:20,type:"textStyle",group:"Text",displayName:"Text Style",default:"None",set(e){this.props.textStyle=this.context.styles.getTextStyle(e),this.forceUpdate()}},fontFamily:{index:21,type:"font",group:"Text",displayName:"Font Family",set(e){if(e){let t=e;t.split(".").length>1&&(t=t.replace(/\.[^/.]+$/,""),t=t.split("/").pop()),this.setStyle({fontFamily:t})}else this.removeStyle(["fontFamily"]);this.props.textStyle&&this.forceUpdate()}}},outputs:{controlId:{type:"string",displayName:"Control Id",group:"General",getter:function(){return this._internal.controlId}},enabled:{type:"boolean",displayName:"Enabled",group:"States",getter:function(){return this._internal.enabled}}},inputCss:{fontSize:{index:21,group:"Text",displayName:"Font Size",type:{name:"number",units:["px"],defaultUnit:"px"},onChange(){this.props.textStyle&&this.forceUpdate()}},color:{index:24,group:"Text",displayName:"Color",type:"color",default:"#FFFFFF"},backgroundColor:{index:100,displayName:"Background Color",group:"Style",type:"color",default:"#000000"},paddingLeft:{index:64,group:"Margin and padding",default:20,applyDefault:!1,displayName:"Pad Left",type:{name:"number",units:["px"],defaultUnit:"px",marginPaddingComp:"padding-left"}},paddingRight:{index:65,group:"Margin and padding",default:20,applyDefault:!1,displayName:"Pad Right",type:{name:"number",units:["px"],defaultUnit:"px",marginPaddingComp:"padding-right"}},paddingTop:{index:66,group:"Margin and padding",displayName:"Pad Top",default:5,applyDefault:!1,type:{name:"number",units:["px"],defaultUnit:"px",marginPaddingComp:"padding-top"}},paddingBottom:{index:67,group:"Margin and padding",displayName:"Pad Bottom",default:5,applyDefault:!1,type:{name:"number",units:["px"],defaultUnit:"px",marginPaddingComp:"padding-bottom"}},borderRadius:{index:202,displayName:"Border Radius",group:"Style",type:{name:"number",units:["px"],defaultUnit:"px"},default:0,applyDefault:!1},borderStyle:{index:203,displayName:"Border Style",group:"Style",type:{name:"enum",enums:[{label:"None",value:"none"},{label:"Solid",value:"solid"},{label:"Dotted",value:"dotted"},{label:"Dashed",value:"dashed"}]},default:"none",applyDefault:!1},borderWidth:{index:204,displayName:"Border Width",group:"Style",type:{name:"number",units:["px"],defaultUnit:"px"},default:0,applyDefault:!1},borderColor:{index:205,displayName:"Border Color",group:"Style",type:"color",default:"#000000"}},inputProps:{label:{type:"string",displayName:"Label",group:"General",default:"Label"},buttonType:{type:{name:"enum",enums:[{label:"Button",value:"button"},{label:"Submit",value:"submit"}]},displayName:"Type",default:"button",group:"General"},boxShadowEnabled:{index:250,group:"Box Shadow",displayName:"Shadow Enabled",type:"boolean",default:!1},boxShadowOffsetX:{index:251,group:"Box Shadow",displayName:"Offset X",default:0,type:{name:"number",units:["px"],defaultUnit:"px"}},boxShadowOffsetY:{index:252,group:"Box Shadow",displayName:"Offset Y",default:0,type:{name:"number",units:["px"],defaultUnit:"px"}},boxShadowBlurRadius:{index:253,group:"Box Shadow",displayName:"Blur Radius",default:5,type:{name:"number",units:["px"],defaultUnit:"px"}},boxShadowSpreadRadius:{index:254,group:"Box Shadow",displayName:"Spread Radius",default:2,type:{name:"number",units:["px"],defaultUnit:"px"}},boxShadowInset:{index:255,group:"Box Shadow",displayName:"Inset",type:"boolean",default:!1},boxShadowColor:{index:256,group:"Box Shadow",displayName:"Shadow Color",type:"color",default:"rgba(0,0,0,0.2)"}},outputProps:{onClick:{displayName:"Click",group:"Events",type:"signal"}},dynamicports:[{condition:"boxShadowEnabled = true",inputs:["boxShadowOffsetX","boxShadowOffsetY","boxShadowInset","boxShadowBlurRadius","boxShadowSpreadRadius","boxShadowColor"]}],methods:{}};NodeSharedPortDefinitions.addDimensions(ButtonNode,{defaultSizeMode:"contentSize",contentLabel:"Content",useDimensionConstraints:!1}),NodeSharedPortDefinitions.addAlignInputs(ButtonNode),NodeSharedPortDefinitions.addTransformInputs(ButtonNode),NodeSharedPortDefinitions.addMarginInputs(ButtonNode),NodeSharedPortDefinitions.addSharedVisualInputs(ButtonNode),Utils.addControlEventsAndStates(ButtonNode),ButtonNode=createNodeFromReactComponent(ButtonNode),ButtonNode.setup=function(e,t){t.on("nodeAdded.Button",function(n){n.parameters.fontFamily&&n.parameters.fontFamily.split(".").length>1&&FontLoader.instance.loadFont(n.parameters.fontFamily),n.on("parameterUpdated",function(o){o.name==="fontFamily"&&o.value&&o.value.split(".").length>1&&FontLoader.instance.loadFont(o.value)})})};const ButtonOld=ButtonNode;function _styleTemplate$2(e,t){return`
96
96
  .${e}:checked {
97
97
  background-color: ${t.checkedBackgroundColor};
98
98
  }
@@ -182,4 +182,4 @@ map({
182
182
  `;function updatePorts$1(e,t,n,o){var r=[],s=t.properties;if(s){s=s?s.split(","):void 0;for(var a in s){var l=s[a];r.push({type:{name:"*",allowConnectionsOnly:!0},plug:"input/output",group:"Properties",name:l}),r.push({type:"signal",plug:"output",group:"Events",displayName:"Changed "+l,name:"changed-"+l})}var u=detectRename(previousProperties[e],s);if(previousProperties[e]=s,u)var d={plug:"input/output",patterns:["{{*}}"],before:u.before,after:u.after}}if(r.push({name:"$ndlCollectionName",displayName:"Class",group:"General",type:{name:"enum",enums:o!==void 0?o.map(P=>({value:P.name,label:P.name})):[],allowEditOnly:!0},plug:"input"}),t.$ndlCollectionName&&o){var h=o.find(P=>P.name===t.$ndlCollectionName);if(h&&h.schema&&h.schema.properties){var f=h.schema.properties;for(var g in f){var l=f[g];r.find(T=>T.name===g)||(l.type==="Relation"?(r.push({type:"signal",plug:"input",group:g+" Relation",name:"$relation-add-"+g,displayName:"Add",editorName:g+" | Add"}),r.push({type:"signal",plug:"input",group:g+" Relation",name:"$relation-remove-"+g,displayName:"Remove",editorName:g+" | Remove"}),r.push({type:{name:"string",allowConnectionsOnly:!0},plug:"input",group:g+" Relation",name:"$relation-modelid-"+g,displayName:"Model Id",editorName:g+" | Model Id"}),r.push({type:"signal",plug:"output",group:g+" Relation",name:"$relation-removed-"+g,displayName:"Removed",editorName:g+" | Removed"}),r.push({type:"signal",plug:"output",group:g+" Relation",name:"$relation-added-"+g,displayName:"Added",editorName:g+" | Added"})):(r.push({type:{name:"*",allowConnectionsOnly:!0},plug:"input/output",group:"Properties",name:g}),r.push({type:"signal",plug:"output",group:"Events",displayName:"Changed "+g,name:"changed-"+g})))}}}r.push({name:"$ndlModelInitCode",displayName:"Initialize",group:"Scripts",type:{name:"string",allowEditOnly:!0,codeeditor:"javascript"},default:defaultStorageInitCode,plug:"input"});var b=JSON.stringify(r);modelPortsHash[e]!==b&&(modelPortsHash[e]=b,n.sendDynamicPorts(e,r,{renamed:d}))}const DbModelNode={node:ModelNodeDefinition,setup:function(e,t){if(!e.editorConnection||!e.editorConnection.isRunningLocally())return;function n(o){updatePorts$1(o.id,o.parameters,e.editorConnection,t.getMetaData("dbCollections")),o.on("parameterUpdated",function(r){updatePorts$1(o.id,o.parameters,e.editorConnection,t.getMetaData("dbCollections"))}),t.on("metadataChanged.dbCollections",function(r){CloudStore.invalidateCollections(),updatePorts$1(o.id,o.parameters,e.editorConnection,r)})}t.on("editorImportComplete",()=>{t.on("nodeAdded.DbModel",function(o){n(o)});for(const o of t.getNodesWithType("DbModel"))n(o)})}};function _convertFilterOp(e,t){const n=Object.keys(e);if(n.length===0)return{};if(n.length!==1)return t.error("Filter must only have one key found "+n.join(","));const o={},r=n[0];if(e.and!==void 0&&Array.isArray(e.and))o.$and=e.and.map(g=>_convertFilterOp(g,t));else if(e.or!==void 0&&Array.isArray(e.or))o.$or=e.or.map(g=>_convertFilterOp(g,t));else if(e.idEqualTo!==void 0)o.objectId={$eq:e.idEqualTo};else if(e.idContainedIn!==void 0)o.objectId={$in:e.idContainedIn};else if(e.relatedTo!==void 0){var s=e.relatedTo.id;if(s===void 0)return t.error("Must provide id in relatedTo filter");var a=e.relatedTo.key;if(a===void 0)return t.error("Must provide key in relatedTo filter");var l=Model.get(s);o.$relatedTo={object:{__type:"Pointer",objectId:s,className:l._class},key:a}}else if(typeof e[r]=="object"){const g=e[r];if(g.equalTo!==void 0)o[r]={$eq:g.equalTo};else if(g.notEqualTo!==void 0)o[r]={$ne:g.notEqualTo};else if(g.lessThan!==void 0)o[r]={$lt:g.lessThan};else if(g.greaterThan!==void 0)o[r]={$gt:g.greaterThan};else if(g.lessThanOrEqualTo!==void 0)o[r]={$lte:g.lessThanOrEqualTo};else if(g.greaterThanOrEqualTo!==void 0)o[r]={$gte:g.greaterThanOrEqualTo};else if(g.exists!==void 0)o[r]={$exists:g.exists};else if(g.containedIn!==void 0)o[r]={$in:g.containedIn};else if(g.notContainedIn!==void 0)o[r]={$nin:g.notContainedIn};else if(g.pointsTo!==void 0){var l=Model.get(g.pointsTo);if(CloudStore._collections[t.collectionName])var u=CloudStore._collections[t.collectionName].schema;var d=u&&u.properties&&u.properties[r]?u.properties[r].targetClass:void 0,h=u&&u.properties&&u.properties[r]?u.properties[r].type:void 0;h==="Relation"?o[r]={__type:"Pointer",objectId:g.pointsTo,className:d}:Array.isArray(g.pointsTo)?o[r]={$in:g.pointsTo.map(P=>({__type:"Pointer",objectId:P,className:d}))}:o[r]={$eq:{__type:"Pointer",objectId:g.pointsTo,className:d}}}else if(g.matchesRegex!==void 0)o[r]={$regex:g.matchesRegex,$options:g.options};else if(g.text!==void 0&&g.text.search!==void 0){var f=g.text.search;typeof f=="string"?o[r]={$text:{$search:{$term:f,$caseSensitive:!1}}}:o[r]={$text:{$search:{$term:f.term,$language:f.language,$caseSensitive:f.caseSensitive,$diacriticSensitive:f.diacriticSensitive}}}}}else t.error("Unrecognized filter keys "+n.join(","));return o}var DbCollectionNode={name:"DbCollection",docs:"https://docs.noodl.net/nodes/cloud-services/collection",displayNodeName:"Query Collection",shortDesc:"A database collection.",category:"Cloud Services",usePortAsLabel:"collectionName",color:"data",deprecated:!0,initialize:function(){var e=this,t=!1;this._internal.collectionChangedCallback=function(){t||(t=!0,e.scheduleAfterInputsHaveUpdated(function(){e.sendSignalOnOutput("modified"),e.flagOutputDirty("count"),e.flagOutputDirty("firstItemId"),t=!1}))},this._internal.storageSettings={}},inputs:{},outputs:{id:{type:"string",displayName:"Name",group:"General",getter:function(){return this._internal.name}},items:{type:"array",displayName:"Result",group:"General",getter:function(){return this._internal.collection}},firstItemId:{type:"string",displayName:"First Item Id",group:"General",getter:function(){if(this._internal.collection){var e=this._internal.collection.get(0);if(e!==void 0)return e.getId()}}},count:{type:"number",displayName:"Count",group:"General",getter:function(){return this._internal.collection?this._internal.collection.size():0}},modified:{group:"Events",type:"signal",displayName:"Modified"},fetched:{group:"Events",type:"signal",displayName:"Fetched"},failure:{group:"Events",type:"signal",displayName:"Failure"},error:{type:"string",displayName:"Error",group:"Events",getter:function(){return this._internal.error}}},prototypeExtensions:{setCollectionName:function(e){this._internal.name=e,this.flagOutputDirty("id")},setCollection:function(e){this.bindCollection(e),this.flagOutputDirty("firstItemId"),this.flagOutputDirty("items"),this.flagOutputDirty("count")},unbindCurrentCollection:function(){var e=this._internal.collection;e&&(e.off("change",this._internal.collectionChangedCallback),this._internal.collection=void 0)},bindCollection:function(e){this.unbindCurrentCollection(),this._internal.collection=e,e&&e.on("change",this._internal.collectionChangedCallback)},_onNodeDeleted:function(){Node.prototype._onNodeDeleted.call(this),this.unbindCurrentCollection()},setError:function(e){this._internal.err=e,this.flagOutputDirty("error"),this.sendSignalOnOutput("failure")},fetch:function(){var e=this._internal;this.context.editorConnection&&(this._internal.name===void 0?this.context.editorConnection.sendWarning(this.nodeScope.componentOwner.name,this.id,"query-collection",{message:"No collection specified for query"}):this.context.editorConnection.clearWarning(this.nodeScope.componentOwner.name,this.id,"query-collection")),!e.fetchScheduled&&(e.fetchScheduled=!0,this.scheduleAfterInputsHaveUpdated(()=>{e.fetchScheduled=!1;const t=Collection.get(),n=this.getStorageFilter();CloudStore.instance.query({collection:this._internal.name,where:n.where,sort:n.sort,limit:this.getStorageLimit(),skip:this.getStorageSkip(),success:o=>{o!==void 0&&t.set(o.map(r=>{var s=CloudStore._fromJSON(r,this._internal.name);return s.on("delete",()=>t.remove(s)),s})),this.setCollection(t),this.sendSignalOnOutput("fetched")},error:o=>{this.setCollection(t),this.setError(o||"Failed to fetch.")}})}))},getStorageFilter:function(){const e=this._internal.storageSettings;if(e.storageFilterType===void 0||e.storageFilterType==="simple"){if(e.storageFilter){const f=e.storageFilter.split(",");var t=[];f.forEach(function(g){const b={};var P="$"+(e["storageFilterOp-"+g]||"eq");b[g]={},b[g][P]=e["storageFilterValue-"+g],t.push(b)});var n=t.length>1?{$and:t}:t[0]}if(e.storageSort){const f=e.storageSort.split(",");var o=[];f.forEach(function(g){o.push((e["storageSort-"+g]==="descending"?"-":"")+g)})}return{where:n,sort:o}}else if(e.storageFilterType==="json"){if(!this._internal.filterFunc)try{var r=e.storageJSONFilter;r=r.replace(/\/\*[\s\S]*?\*\/|\/\/.*/g,""),this._internal.filterVariables=r.match(/\$[A-Za-z0-9]+/g)||[];var s=["filter","where","sort","Inputs"].concat(this._internal.filterVariables).concat([r]);this._internal.filterFunc=Function.apply(null,s)}catch(b){this._internal.filterFunc=void 0,console.log("Error while parsing filter script: "+b)}if(!this._internal.filterFunc)return;var a={},o=[],l=this,u=function(b){a=_convertFilterOp(b,{collectionName:l._internal.name,error:function(P){l.context.editorConnection.sendWarning(l.nodeScope.componentOwner.name,l.id,"query-collection-filter",{message:P})}})},d=function(b){o=b};const g={};for(let b in e)b.startsWith("storageFilterValue-")&&(g[b.substring(19)]=e[b]);var h=[u,u,d,g];this._internal.filterVariables.forEach(b=>{h.push(e["storageFilterValue-"+b.substring(1)])});try{this._internal.filterFunc.apply(this,h)}catch(b){console.log("Error while running filter script: "+b)}return{where:a,sort:o}}},getStorageLimit:function(){const e=this._internal.storageSettings;if(e.storageEnableLimit)return e.storageLimit||10},getStorageSkip:function(){const e=this._internal.storageSettings;if(e.storageEnableLimit)return e.storageSkip||0},registerOutputIfNeeded:function(e){this.hasOutput(e)||this.registerOutput(e,{getter:userOutputGetter.bind(this,e)})},registerInputIfNeeded:function(e){if(this.hasInput(e))return;const t={storageFetch:this.fetch.bind(this)};if(t[e])return this.registerInput(e,{set:createSetter({valueChangedToTrue:t[e]})});const n={collectionName:this.setCollectionName.bind(this)};if(n[e])return this.registerInput(e,{set:n[e]});this.registerInput(e,{set:userInputSetter.bind(this,e)})}}};function userOutputGetter(e){return this._internal.storageSettings[e]}function userInputSetter(e,t){this._internal.storageSettings[e]=t}const _defaultJSONQuery=`// Write your query script here, check out the reference documentation for examples
183
183
  where({ })
184
184
  `;function updatePorts(e,t,n,o){var r=[];if(r.push({name:"collectionName",type:{name:"enum",enums:o!==void 0?o.map(u=>({value:u.name,label:u.name})):[],allowEditOnly:!0},displayName:"Collecton Name",plug:"input",group:"General"}),r.push({name:"storageFilterType",type:{name:"enum",allowEditOnly:!0,enums:[{value:"simple",label:"Simple"},{value:"json",label:"Advanced"}]},displayName:"Filter",default:"simple",plug:"input",group:"General"}),r.push({type:"boolean",plug:"input",group:"Limit",name:"storageEnableLimit",displayName:"Use limit"}),t.storageEnableLimit&&(r.push({type:"number",default:10,plug:"input",group:"Limit",name:"storageLimit",displayName:"Limit"}),r.push({type:"number",default:0,plug:"input",group:"Limit",name:"storageSkip",displayName:"Skip"})),r.push({type:"signal",plug:"input",group:"Storage",name:"storageFetch",displayName:"Fetch"}),t.storageFilterType===void 0||t.storageFilterType==="simple"){r.push({type:{name:"stringlist",allowEditOnly:!0},plug:"input",group:"Filter",name:"storageFilter",displayName:"Filter"});const u={string:[{value:"eq",label:"Equals"},{value:"ne",label:"Not Equals"}],boolean:[{value:"eq",label:"Equals"},{value:"ne",label:"Not Equals"}],number:[{value:"eq",label:"Equals"},{value:"ne",label:"Not Equals"},{value:"lt",label:"Less than"},{value:"gt",label:"Greater than"},{value:"gte",label:"Greater than or equal"},{value:"lte",label:"Less than or equal"}]};if(t.storageFilter){var s=t.storageFilter.split(",");s.forEach(d=>{r.push({type:{name:"enum",enums:[{value:"string",label:"String"},{value:"number",label:"Number"},{value:"boolean",label:"Boolean"}]},default:"string",plug:"input",group:d+" filter",displayName:"Type",editorName:d+" filter | Type",name:"storageFilterType-"+d});var h=t["storageFilterType-"+d];r.push({type:{name:"enum",enums:u[h||"string"]},default:"eq",plug:"input",group:d+" filter",displayName:"Op",editorName:d+" filter| Op",name:"storageFilterOp-"+d}),r.push({type:h||"string",plug:"input",group:d+" filter",displayName:"Value",editorName:d+" Filter Value",name:"storageFilterValue-"+d})})}if(r.push({type:{name:"stringlist",allowEditOnly:!0},plug:"input",group:"Sort",name:"storageSort",displayName:"Sort"}),t.storageSort){var s=t.storageSort.split(",");s.forEach(h=>{r.push({type:{name:"enum",enums:[{value:"ascending",label:"Ascending"},{value:"descending",label:"Descending"}]},default:"ascending",plug:"input",group:h+" sort",displayName:"Sort",editorName:h+" sorting",name:"storageSort-"+h})})}}else if(t.storageFilterType==="json"){r.push({type:{name:"string",allowEditOnly:!0,codeeditor:"javascript"},plug:"input",group:"Filter",name:"storageJSONFilter",default:_defaultJSONQuery,displayName:"Filter"});var a=t.storageJSONFilter;if(a){a=a.replace(/\/\*[\s\S]*?\*\/|\/\/.*/g,"");var l=a.match(/\$[A-Za-z0-9]+/g);if(l){const u={};l.forEach(d=>{u[d]=!0}),Object.keys(u).forEach(d=>{r.push({name:"storageFilterValue-"+d.substring(1),displayName:d.substring(1),group:"Filter Values",plug:"input",type:{name:"*",allowConnectionsOnly:!0}})})}JavascriptNodeParser.parseAndAddPortsFromScript(a,r,{inputPrefix:"storageFilterValue-",inputGroup:"Filter Values",inputType:{name:"*",allowConnectionsOnly:!0},skipOutputs:!0})}}n.sendDynamicPorts(e,r)}const DbCollectionNode$1={node:DbCollectionNode,setup:function(e,t){if(!e.editorConnection||!e.editorConnection.isRunningLocally())return;function n(o){updatePorts(o.id,o.parameters,e.editorConnection,t.getMetaData("dbCollections")),o.on("parameterUpdated",function(r){r.name.startsWith("storage")&&updatePorts(o.id,o.parameters,e.editorConnection,t.getMetaData("dbCollections"))}),t.on("metadataChanged.dbCollections",function(r){CloudStore.invalidateCollections(),updatePorts(o.id,o.parameters,e.editorConnection,r)}),t.on("metadataChanged.cloudservices",function(r){CloudStore.instance._initCloudServices()})}t.on("editorImportComplete",()=>{t.on("nodeAdded.DbCollection",function(o){n(o)});for(const o of t.getNodesWithType("DbCollection"))n(o)})}},CollectionNode={name:"Collection",docs:"https://docs.noodl.net/nodes/data/array",displayNodeName:"Array",shortDesc:"A collection of models, mainly used together with a For Each Node.",category:"Data",usePortAsLabel:"collectionId",color:"data",deprecated:!0,initialize:function(){var e=this,t=!1;this._internal.collectionChangedCallback=function(){e.isInputConnected("fetch")!==!0&&(t||(t=!0,e.scheduleAfterInputsHaveUpdated(function(){e.sendSignalOnOutput("changed"),e.flagOutputDirty("count"),t=!1})))},this._internal.sourceCollectionChangedCallback=function(){e.isInputConnected("store")!==!0&&e.scheduleCopyItems()}},getInspectInfo(){if(this._internal.collection)return"Count: "+this._internal.collection.size()},inputs:{collectionId:{type:{name:"string",identifierOf:"CollectionName",identifierDisplayName:"Array Ids"},displayName:"Id",group:"General",set:function(e){e instanceof Collection&&(e=e.getId()),this._internal.collectionId=e,this.isInputConnected("fetch")===!1?this.setCollectionID(e):this.flagOutputDirty("id")}},items:{type:"array",group:"General",displayName:"Items",set:function(e){var t=this;e!==void 0&&e!==this._internal.collection&&(this._internal.pendingSourceCollection=e,this.isInputConnected("store")===!1&&this.scheduleAfterInputsHaveUpdated(function(){t.setSourceCollection(e)}))}},modifyId:{type:{name:"string",allowConnectionsOnly:!0},displayName:"Item Id",group:"Modify",set:function(e){this._internal.modifyId=e}},store:{displayName:"Set",group:"Actions",valueChangedToTrue:function(){this.scheduleStore()}},add:{displayName:"Add",group:"Modify",valueChangedToTrue:function(){var e=this,t=this._internal;this.scheduleAfterInputsHaveUpdated(function(){if(t.modifyId!==void 0&&(t.collection===void 0&&this.isInputConnected("fetch")===!1&&e.setCollection(Collection.get()),t.collection!==void 0)){var n=Model.get(t.modifyId);t.collection.add(n),e.sendSignalOnOutput("modified")}})}},remove:{displayName:"Remove",group:"Modify",valueChangedToTrue:function(){var e=this,t=this._internal;this.scheduleAfterInputsHaveUpdated(function(){if(t.modifyId!==void 0&&(t.collection===void 0&&this.isInputConnected("fetch")===!1&&e.setCollection(Collection.get()),t.collection!==void 0)){var n=Model.get(t.modifyId);t.collection.remove(n),e.sendSignalOnOutput("modified")}})}},clear:{displayName:"Clear",group:"Modify",valueChangedToTrue:function(){var e=this,t=this._internal;this.scheduleAfterInputsHaveUpdated(function(){t.collection===void 0&&this.isInputConnected("fetch")===!1&&e.setCollection(Collection.get()),t.collection!==void 0&&(t.collection.set([]),e.sendSignalOnOutput("modified"),e.sendSignalOnOutput("count"))})}},fetch:{displayName:"Fetch",group:"Actions",valueChangedToTrue:function(){this.scheduleSetCollection()}},new:{displayName:"New",group:"Actions",valueChangedToTrue:function(){this.scheduleNew()}}},outputs:{id:{type:"string",displayName:"Id",group:"General",getter:function(){return this._internal.collection?this._internal.collection.getId():this._internal.collectionId}},items:{type:"array",displayName:"Items",group:"General",getter:function(){return this._internal.collection}},count:{type:"number",displayName:"Count",group:"General",getter:function(){return this._internal.collection?this._internal.collection.size():0}},modified:{group:"Events",type:"signal",displayName:"Modified"},changed:{group:"Events",type:"signal",displayName:"Changed"},stored:{group:"Events",type:"signal",displayName:"Stored"},fetched:{group:"Events",type:"signal",displayName:"Fetched"},created:{group:"Events",type:"signal",displayName:"Created"}},prototypeExtensions:{setCollectionID:function(e){this.setCollection(Collection.get(e))},setCollection:function(e){this._internal.collection&&this._internal.collection.off("change",this._internal.collectionChangedCallback),this._internal.collection=e,this.flagOutputDirty("id"),e.on("change",this._internal.collectionChangedCallback),this.flagOutputDirty("items"),this.flagOutputDirty("count")},setSourceCollection:function(e){var t=this._internal;t.sourceCollection&&t.sourceCollection instanceof Collection&&t.sourceCollection.off("change",t.sourceCollectionChangedCallback),t.sourceCollection=e,t.sourceCollection instanceof Collection&&t.sourceCollection.on("change",t.sourceCollectionChangedCallback),this._copySourceItems()},scheduleSetCollection:function(){var e=this;this.hasScheduledSetCollection||(this.hasScheduledSetCollection=!0,this.scheduleAfterInputsHaveUpdated(function(){e.hasScheduledSetCollection=!1,e.setCollectionID(e._internal.collectionId),e.sendSignalOnOutput("fetched")}))},scheduleStore:function(){var e=this;if(!this.hasScheduledStore){this.hasScheduledStore=!0;var t=this._internal;this.scheduleAfterInputsHaveUpdated(function(){e.hasScheduledStore=!1,e.setSourceCollection(t.pendingSourceCollection),e.sendSignalOnOutput("stored")})}},_copySourceItems:function(){var e=this._internal;e.collection===void 0&&this.isInputConnected("fetch")===!1&&this.setCollection(Collection.get()),e.collection&&e.collection.set(e.sourceCollection)},scheduleCopyItems:function(){var e=this;this._internal,!this.hasScheduledCopyItems&&(this.hasScheduledCopyItems=!0,this.scheduleAfterInputsHaveUpdated(function(){e.hasScheduledCopyItems=!1,e._copySourceItems()}))},scheduleNew:function(){var e=this;if(!this.hasScheduledNew){this.hasScheduledNew=!0;var t=this._internal;this.scheduleAfterInputsHaveUpdated(function(){e.hasScheduledNew=!1,e.setCollection(Collection.get()),t.sourceCollection&&t.collection.set(t.sourceCollection),e.sendSignalOnOutput("created")})}},_onNodeDeleted:function(){Node.prototype._onNodeDeleted.call(this),this._internal.collection&&this._internal.collection.off("change",this._internal.collectionChangedCallback)}}},CollectionNode$1={node:CollectionNode},ScriptDownloadDefinition={name:"Script Downloader",docs:"https://docs.noodl.net/nodes/javascript/script-downloader",shortDesc:"Script Downloader allows you load external Javascript libraries. ",category:"Javascript",color:"javascript",deprecated:!0,initialize:function(){var e=this._internal;e.loaded=!1,e.scripts=[],e.loadedScripts={},e.startLoad=!0},inputs:{startLoad:{type:"boolean",default:!0,displayName:"Load on start",group:"General",set:function(e){this._internal.startLoad=e}},load:{displayName:"Load",group:"Actions",valueChangedToTrue:function(){this.scheduleUpdateScripts()}}},outputs:{loaded:{type:"signal",displayName:"Loaded"}},numberedInputs:{input:{displayPrefix:"Script",group:"External scripts",type:"string",index:3008,createSetter:function(e){return function(t){t=t.toString(),this._internal.scripts[e]=t,this._internal.loadStarted||(this._internal.loadStarted=!0,this.scheduleAfterInputsHaveUpdated(function(){this._internal.loadStarted=!1,this._internal.startLoad&&this.updateScripts()}))}}}},methods:{removeLoadTerminator:function(){var e="sentinel_"+this.id,t=document.getElementById(e);t&&t.parentNode&&t.parentNode.removeChild(t)},scheduleUpdateScripts:function(){const e=this;this._internal.updateScriptsScheduled||(this._internal.updateScriptsScheduled=!0,this.scheduleAfterInputsHaveUpdated(function(){e._internal.updateScriptsScheduled=!1,e.updateScripts()}))},updateScripts:function(){var e="sentinel_"+this.id;this.removeLoadTerminator();var t=this._internal.scripts;t=t.filter(function(d){return d!==""});for(var n=document.head.getElementsByTagName("script"),o={},r=0;r<n.length;r++){var s=n[r];s.src!==void 0&&s.src!==""&&(o[s.src]=s)}for(var r=0;r<t.length;r++){var s=t[r].trim();if(!this._internal.loadedScripts.hasOwnProperty(s)){if(o.hasOwnProperty(s))continue;var a=document.createElement("script");a.src=s,a.async=!1,document.head.appendChild(a)}}var l=this,u=document.createElement("script");u.onload=u.onreadystatechange=function(d){(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")&&(l._internal.loaded=!0,l.sendSignalOnOutput("loaded"),l.removeLoadTerminator())},u.id=e,u.src="load_terminator.js",u.async=!1,document.head.appendChild(u)}}},ScriptDownloader={node:ScriptDownloadDefinition,setup:function(e,t){!e.editorConnection||e.editorConnection.isRunningLocally()}};function registerNodes(e){[Switch$1,Timer$1,Color,EventSender$1,EventReceiver$1,ScreenResolution$1,JavaScript,NumberRemapper,ValueChanged,States,ForEach,ForEachActions,ColorBlend,AnimateToValue$1,ComponentObject$1,ParentComponentObject$1,SetComponentObjectProperties,SetParentComponentObjectProperties,VariableNode2,SetVariableNode,CollectionNode2,CollectionNodeInsert,CollectionNodeRemove,CollectionNodeClear,CollectionNodeNew,FilterCollectionNode$1,StaticData,MapCollectionNode$1,CloudFunction2,OpenFilePicker$1,UploadFile$1,NavigateBack$1,NavigateToPath,Navigate$1,ShowPopup,ClosePopup,PageInputs,RouterNavigate$1,Login,Logout,Signup,VerifyEmail,SendEmailVerification,ResetPassword,RequestPasswordReset,CloudFunction,ComponentState$1,ParentComponentState$1,ModelNode,VariableNode,Gyroscope,Globals,SignalToIndex,NumberBlend$1,StringSelector,Animation,Transition,DbModelNode,DbCollectionNode$1,CollectionNode$1,ScriptDownloader].forEach(function(t){e.registerNode(t)}),e.registerNode(CSSDefinition$1),e.registerNode(Group),e.registerNode(TextNode$1),e.registerNode(Image),e.registerNode(Icon),e.registerNode(Circle),e.registerNode(Video),e.registerNode(DragNode$1),e.registerNode(ExternalLink),e.registerNode(Columns),e.registerNode(ButtonOld),e.registerNode(CheckBoxOld),e.registerNode(RadioButtonOld),e.registerNode(OptionsOld),e.registerNode(RangeOld),e.registerNode(Label$1),e.registerNode(definition),e.registerNode(Form$1),e.registerNode(FieldSet$1),e.registerNode(Button$1),e.registerNode(CheckBox$1),e.registerNode(RadioButtonGroup),e.registerNode(RadioButton$1),e.registerNode(Options$1),e.registerNode(Range$1),e.registerNode(TextInput$1),e.registerNode(NavigationStack),e.registerNode(Page),e.registerNode(Router)}function getInputsWithType(e,t){const n=[];return e.getAllNodesRecursive().forEach(r=>{const s=[];for(const a in r._inputs)r._inputs[a].type===t&&s.push(a);s.length&&n.push({node:r,inputs:s})}),n}class Styles{constructor({graphModel:t,nodeRegister:n,getNodeScope:o}){this.getNodeScope=o,this.graphModel=t,this.nodeRegister=n,this.setStyles(t.getMetaData("styles")||{}),t.on("metadataChanged.styles",r=>this.setStyles(r))}setStyles(t){this.styles=t;const n=t.text||{};Object.values(n).filter(s=>s.fontFamily).forEach(s=>{let a=s.fontFamily;a.split(".").length>1&&(FontLoader.instance.loadFont(a),a=a.replace(/\.[^/.]+$/,""),a=a.split("/").pop(),s.fontFamily=a)});for(const s in n){const a=n[s];for(const l in a){const u=a[l];typeof u=="object"&&(a[l]=u.value+u.unit)}}for(const s in n){const a=n[s];a.hasOwnProperty("color")&&!a.color&&delete a.color}const o=this.getNodeScope&&this.getNodeScope();if(!o)return;const r=this.graphModel.getVariants();for(const s of r)this._variantHasInputsWithTypes(s,["color","textStyle"])&&o.getAllNodesWithVariantRecursive(s).forEach(l=>l.setVariant(s));["color","textStyle"].forEach(s=>{getInputsWithType(o,s).forEach(({node:a,inputs:l})=>{l.forEach(u=>{a.getInputValue(u)&&a.setInputValue(u,a.getInputValue(u))})})})}resolveColor(t){if(!this.styles.colors)return t;const n=this.styles.colors[t];return n||t}getTextStyle(t){return this.styles.text?this.styles.text[t]||{}:{}}_variantHasInputsWithTypes(t,n){if(!this.nodeRegister.hasNode(t.typename))return;const o=this.nodeRegister.getNodeMetadata(t.typename),r=new Set(Object.keys(t.parameters));for(const s in t.stateParameters)Object.keys(t.stateParameters[s]).forEach(a=>r.add(a));for(const s of Array.from(r)){const a=o.inputs[s]&&o.inputs[s].type;if(n.includes(a))return!0}return!1}}typeof window<"u"&&window.NoodlEditor&&(window.NoodlEditorInspectorAPI={enabled:!1,inspector:null,setInspector(e){this.inspector=e,this.enabled?this.inspector.enable():this.inspector.disable()},setEnabled(e){this.enabled=e,this.inspector&&(this.enabled?this.inspector.enable():this.inspector.disable()),window.NoodlEditorHighlightAPI.highlighter&&window.NoodlEditorHighlightAPI.highlighter.setWindowSelected(e)}},window.NoodlEditorHighlightAPI={highlighter:null,setHighlighter(e){this.highlighter=e,this.highlighter.setWindowSelected(window.NoodlEditorInspectorAPI.enabled)},selectNode(e){this.highlighter.deselectNodes(),e&&e!=="null"?this.highlighter.selectNodesWithId(e):window.NoodlEditorInspectorAPI.enabled&&this.highlighter.setWindowSelected(!0)}});class Viewer extends React.Component{constructor(t){super(t),this.state={popups:[]};const{noodlRuntime:n}=t;this.runningDeployed=this.props.projectData!==void 0,this.focusedNoodlNodes=[],n.context.setNodeFocused=this.setNodeFocused.bind(this);const o=typeof document<"u"&&document.location.href.indexOf("forceDebugger=true")!==-1||Noodl.enableDebugInspectors;if(n.setDebugInspectorsEnabled(o),n.context.setPopupCallbacks({onShow:r=>{const s=this.state.popups.concat([r]);n.getProjectSettings().bodyScroll&&s.length===1&&(document.body.style.width=document.body.clientWidth+"px",document.body.style.top=`-${window.scrollY}px`,document.body.style.position="fixed"),this.setState({popups:s})},onClose:r=>{const s=this.state.popups.filter(l=>l!==r);if(this.setState({popups:s}),n.getProjectSettings().bodyScroll&&s.length===0){const l=document.body.style.top;document.body.style.position="",document.body.style.top="",document.body.style.width="100%",window.scrollTo(0,parseInt(l||"0")*-1)}}}),registerNodes(n),createNoodlAPI(n),n.setProjectSettings(projectSettings),this.props.noodlModules)for(const r of this.props.noodlModules){if(r.reactNodes){const s=[];for(const l of r.reactNodes)s.push(createNodeFromReactComponent(l));const a=r.nodes||[];r.nodes=a.concat(s)}n.registerModule(r)}if(n.eventEmitter.on("rootComponentUpdated",()=>{requestAnimationFrame(()=>this.forceUpdate())}),n.graphModel.on("projectSettingsChanged",r=>{typeof document>"u"||(r.bodyScroll?document.body.classList.add("body-scroll"):document.body.classList.remove("body-scroll"))}),this.styles=new Styles({graphModel:n.graphModel,getNodeScope:()=>n.context.rootComponent&&n.context.rootComponent.nodeScope,nodeRegister:n.context.nodeRegister}),n.context.styles=this.styles,this.state.waitingForExport=!this.runningDeployed,this.runningDeployed){this.props.noodlRuntime.setData(this.props.projectData);const r=Object.keys(this.props.projectData.componentIndex);r.length<30&&setTimeout(()=>{this.props.noodlRuntime.prefetchBundles(r,3)},1e4)}else n.graphModel.on("editorImportComplete",()=>{this.setState({waitingForExport:!1})}),this.connectToEditor();this.focusedNoodlNodes=[]}connectToEditor(){const{noodlRuntime:t}=this.props;var n=(Noodl.host||location.protocol+"//"+location.host)+location.pathname+(location.search?location.search:"");const o=n.replace("http","ws");t.connectToEditor(o),this.highlightedNodes=new Map,this.isUpdatingHighlights=!1,typeof window<"u"&&window.NoodlEditor&&(this.highlighter=new Highlighter(t),NoodlEditorHighlightAPI.setHighlighter(this.highlighter),t.editorConnection.on("hoverStart",r=>{this.highlighter.highlightNodesWithId(r)}),t.editorConnection.on("hoverEnd",r=>{this.highlighter.disableHighlight()}),this.inspector=new Inspector({onDisableHighlight:()=>this.highlighter.disableHighlight(),onHighlight:r=>this.highlighter.highlightNodesWithId(r),onInspect:r=>{NoodlEditor.inspectNodes(r)}}),NoodlEditorInspectorAPI.setInspector(this.inspector)),t.editorConnection.on("debuggingEnabledChanged",r=>{t.setDebugInspectorsEnabled(r)}),this.graphWarnings=new GraphWarnings(t.graphModel,t.editorConnection)}setNodeFocused(t,n){if(n&&this.focusedNoodlNodes.indexOf(t)===-1)this.focusedNoodlNodes.filter(o=>!o.contains(t)).forEach(o=>{o._blur()}),t._focus(),this.focusedNoodlNodes.push(t);else if(!n){const o=this.focusedNoodlNodes.indexOf(t);if(o!==-1)return;t._blur(),this.focusedNoodlNodes.filter(r=>r.contains(t)).forEach(r=>{r._blur()}),this.focusedNoodlNodes.splice(o,1)}}onClickCapture(t){const n=[];let o=t.target;for(;o;)o.noodlNode&&o.noodlNode._focus&&n.push(o.noodlNode),o=o.parentNode;this.focusedNoodlNodes.filter(r=>n.indexOf(r)===-1).forEach(r=>r._blur()),n.filter(r=>this.focusedNoodlNodes.indexOf(r)===-1).forEach(r=>r._focus()),this.focusedNoodlNodes=n}render(){const t=this.props.noodlRuntime.rootComponent;if(this.state.waitingForExport)return null;if(!t)return this.runningDeployed?null:NoHomeError();if(this.props.noodlRuntime.getProjectSettings().bodyScroll){const o={margin:0,padding:0,minHeight:"100vh",alignSelf:"stretch",display:"flex",flexDirection:"column"};return React.createElement("div",{style:o,onClickCapture:r=>this.onClickCapture(r)},React.createElement("div",{style:{...o,isolation:"isolate"}},t.render()),this.state.popups.length?React.createElement("div",{style:{...o,isolation:"isolate"}},this.state.popups.map(r=>r.render())):null)}else return React.createElement("div",{style:{margin:0,padding:0,overflow:"hidden",width:"100%",height:"100%"},onClickCapture:o=>this.onClickCapture(o)},t.render(),this.state.popups.map(o=>o.render()))}}registerPolyfills();function createArgs(){return typeof window>"u"?{type:"browser",platform:{requestUpdate:e=>setImmediate(e),getCurrentTime:()=>0,objectToString:e=>JSON.stringify(e,null,2)},componentFilter:e=>!e.name.startsWith("/#__cloud__/")}:{type:"browser",platform:{requestUpdate:e=>window.requestAnimationFrame(e),getCurrentTime:()=>window.performance.now(),objectToString:e=>JSON.stringify(e,null,2)},componentFilter:e=>!e.name.startsWith("/#__cloud__/")}}const NoodlViewerReact={render(e,t,{isLocal:n=!1}){const o=createArgs();n&&(o.platform.isRunningLocally=()=>!0);const r=new Runtime(o);ReactDOM.render(React.createElement(Viewer,{noodlRuntime:r,noodlModules:t},null),e)},renderDeployed(e,t,n){e.children.length>0&&e.children[0].hasAttribute("data-reactroot")?ReactDOM.hydrate(this.createElement(t,n),e):ReactDOM.render(this.createElement(t,n),e)},createElement(e,t){const n=new Runtime({...createArgs(),runDeployed:!0});return React.createElement(Viewer,{noodlRuntime:n,noodlModules:e,projectData:t},null)}};window.ELECTRON_DISABLE_SECURITY_WARNINGS=!0,window.Noodl._viewerReact=NoodlViewerReact})(React,ReactDOM);
185
- //# sourceMappingURL=fluxscape.viewer.js.map
185
+ //# sourceMappingURL=fluxscape.preview.js.map