carbon-components-angular
Version:
Next generation components
1 lines • 35.6 kB
JavaScript
"use strict";(self.webpackChunkcarbon_components_angular=self.webpackChunkcarbon_components_angular||[]).push([[6026],{"./node_modules/@carbon/utils-position/index.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{var _a,PLACEMENTS;__webpack_require__.d(__webpack_exports__,{FK:()=>position,ZP:()=>__WEBPACK_DEFAULT_EXPORT__}),function(PLACEMENTS){PLACEMENTS.LEFT="left",PLACEMENTS.RIGHT="right",PLACEMENTS.TOP="top",PLACEMENTS.BOTTOM="bottom"}(PLACEMENTS||(PLACEMENTS={}));var defaultPositions=((_a={})[PLACEMENTS.LEFT]=function(referenceOffset,target,referenceRect){return{top:referenceOffset.top-Math.round(target.offsetHeight/2)+Math.round(referenceRect.height/2),left:Math.round(referenceOffset.left-target.offsetWidth)}},_a[PLACEMENTS.RIGHT]=function(referenceOffset,target,referenceRect){return{top:referenceOffset.top-Math.round(target.offsetHeight/2)+Math.round(referenceRect.height/2),left:Math.round(referenceOffset.left+referenceRect.width)}},_a[PLACEMENTS.TOP]=function(referenceOffset,target,referenceRect){return{top:Math.round(referenceOffset.top-target.offsetHeight),left:referenceOffset.left-Math.round(target.offsetWidth/2)+Math.round(referenceRect.width/2)}},_a[PLACEMENTS.BOTTOM]=function(referenceOffset,target,referenceRect){return{top:Math.round(referenceOffset.top+referenceRect.height),left:referenceOffset.left-Math.round(target.offsetWidth/2)+Math.round(referenceRect.width/2)}},_a),windowRef="undefined"!=typeof window?window:{innerHeight:0,scrollY:0,innerWidth:0,scrollX:0},Position=function(){function Position(positions){void 0===positions&&(positions={}),this.positions=defaultPositions,this.positions=Object.assign({},defaultPositions,positions)}return Position.prototype.getRelativeOffset=function(target){for(var offsets={left:target.offsetLeft,top:target.offsetTop};target.offsetParent&&"static"===getComputedStyle(target.offsetParent).position;)offsets.left+=target.offsetLeft,offsets.top+=target.offsetTop,target=target.offsetParent;return offsets},Position.prototype.getAbsoluteOffset=function(target){for(var currentNode=target,margins={top:0,left:0};currentNode.offsetParent;){var computed=getComputedStyle(currentNode.offsetParent);"static"===computed.position&&computed.marginLeft&&computed.marginTop&&(parseInt(computed.marginTop,10)&&(margins.top+=parseInt(computed.marginTop,10)),parseInt(computed.marginLeft,10)&&(margins.left+=parseInt(computed.marginLeft,10))),currentNode=currentNode.offsetParent}var targetRect=target.getBoundingClientRect(),relativeRect=document.body.getBoundingClientRect();return{top:targetRect.top-relativeRect.top+margins.top,left:targetRect.left-relativeRect.left+margins.left}},Position.prototype.findRelative=function(reference,target,placement){var referenceOffset=this.getRelativeOffset(reference),referenceRect=reference.getBoundingClientRect();return this.calculatePosition(referenceOffset,referenceRect,target,placement)},Position.prototype.findAbsolute=function(reference,target,placement){var referenceOffset=this.getAbsoluteOffset(reference),referenceRect=reference.getBoundingClientRect();return this.calculatePosition(referenceOffset,referenceRect,target,placement)},Position.prototype.findPosition=function(reference,target,placement,offsetFunction){void 0===offsetFunction&&(offsetFunction=this.getAbsoluteOffset.bind(this));var referenceOffset=offsetFunction(reference),referenceRect=reference.getBoundingClientRect();return this.calculatePosition(referenceOffset,referenceRect,target,placement)},Position.prototype.findPositionAt=function(offset,target,placement){return this.calculatePosition(offset,{top:0,left:0,height:0,width:0},target,placement)},Position.prototype.getPlacementBox=function(target,position){var targetBottom=target.offsetHeight+position.top,targetRight=target.offsetWidth+position.left;return{top:position.top,bottom:targetBottom,left:position.left,right:targetRight}},Position.prototype.addOffset=function(position,top,left){return void 0===top&&(top=0),void 0===left&&(left=0),Object.assign({},position,{top:position.top+top,left:position.left+left})},Position.prototype.setElement=function(element,position){element.style.top=position.top+"px",element.style.left=position.left+"px"},Position.prototype.findBestPlacement=function(reference,target,placements,containerFunction,positionFunction){var _this=this;void 0===containerFunction&&(containerFunction=this.defaultContainerFunction.bind(this)),void 0===positionFunction&&(positionFunction=this.findPosition.bind(this));var weightedPlacements=placements.map((function(placement){var pos=positionFunction(reference,target,placement),box=_this.getPlacementBox(target,pos),hiddenHeight=0,hiddenWidth=0,container=containerFunction();box.top<container.top?hiddenHeight=container.top-box.top:box.bottom>container.height&&(hiddenHeight=box.bottom-container.height),box.left<container.left?hiddenWidth=container.left-box.left:box.right>container.width&&(hiddenWidth=box.right-container.width),hiddenHeight&&!hiddenWidth?hiddenWidth=1:hiddenWidth&&!hiddenHeight&&(hiddenHeight=1);var area=target.offsetHeight*target.offsetWidth;return{placement,weight:(area-hiddenHeight*hiddenWidth)/area}}));return weightedPlacements.sort((function(a,b){return b.weight-a.weight})),weightedPlacements[0].placement},Position.prototype.findBestPlacementAt=function(offset,target,placements,containerFunction){var _this=this;void 0===containerFunction&&(containerFunction=this.defaultContainerFunction.bind(this));return this.findBestPlacement(null,target,placements,containerFunction,(function(_,target,placement){return _this.findPositionAt(offset,target,placement)}))},Position.prototype.defaultContainerFunction=function(){return{top:0,left:0,height:windowRef.innerHeight,width:windowRef.innerWidth}},Position.prototype.calculatePosition=function(referenceOffset,referenceRect,target,placement){return this.positions[placement]?this.positions[placement](referenceOffset,target,referenceRect):(console.error("No function found for placement, defaulting to 0,0"),{left:0,top:0})},Position}(),position=new Position;const __WEBPACK_DEFAULT_EXPORT__=Position},"./src/utils/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{NV:()=>AnimationFrameService,d2:()=>ElementService,PO:()=>EventService,As:()=>UtilsModule,d9:()=>clone,_K:()=>closestAttr,O3:()=>getScrollableParents,np:()=>getScrollbarWidth,OQ:()=>hasScrollableParents,TS:()=>object_merge});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),Subject=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Subject.js"),from=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/from.js");let AnimationFrameServiceSingleton=class AnimationFrameServiceSingleton{constructor(ngZone){this.ngZone=ngZone,this.frameSource=new Subject.x,this.tick=this.frameSource.asObservable(),this.ngZone.runOutsideAngular((()=>{this.animationFrameId=requestAnimationFrame(this.doTick.bind(this))}))}ngOnDestroy(){cancelAnimationFrame(this.animationFrameId)}doTick(frame){this.frameSource.next(frame),this.ngZone.runOutsideAngular((()=>{requestAnimationFrame(this.doTick.bind(this))}))}};AnimationFrameServiceSingleton.ctorParameters=()=>[{type:core.NgZone}],AnimationFrameServiceSingleton=(0,tslib_es6.gn)([(0,core.Injectable)()],AnimationFrameServiceSingleton);let AnimationFrameService=class AnimationFrameService{constructor(singleton){this.singleton=singleton,this.tick=(0,from.D)(this.singleton.tick)}};AnimationFrameService.ctorParameters=()=>[{type:AnimationFrameServiceSingleton}],AnimationFrameService=(0,tslib_es6.gn)([(0,core.Injectable)()],AnimationFrameService);const object_merge=(target,...objects)=>{for(const object of objects)for(const key in object)object.hasOwnProperty(key)&&(object[key]instanceof Object?(target[key]||(target[key]={}),target[key]=object_merge(target[key],object[key])):target[key]=object[key]);return target};__webpack_require__("./node_modules/@carbon/utils-position/index.js");const isScrollableElement=element=>{const computedStyle=getComputedStyle(element);return"auto"===computedStyle.overflow||"scroll"===computedStyle.overflow||"auto"===computedStyle["overflow-y"]||"scroll"===computedStyle["overflow-y"]||"auto"===computedStyle["overflow-x"]||"scroll"===computedStyle["overflow-x"]},isVisibleInContainer=(element,container)=>{const elementRect=element.getBoundingClientRect(),containerRect=container.getBoundingClientRect();if("BODY"===container.tagName||"HTML"===container.tagName){const isAboveViewport=elementRect.top<0&&elementRect.top+element.clientHeight<0,isLeftOfViewport=elementRect.left<0,isBelowViewport=elementRect.bottom-element.clientHeight>(window.innerHeight||document.documentElement.clientHeight),isRightOfViewport=elementRect.right>(window.innerWidth||document.documentElement.clientWidth);return!(isAboveViewport||isBelowViewport||isLeftOfViewport||isRightOfViewport)}return elementRect.bottom-element.clientHeight<=containerRect.bottom+(container.offsetHeight-container.clientHeight)/2&&elementRect.top>=-element.clientHeight},getScrollableParents=node=>{const elements=[document.body];for(;node.parentElement&&node!==document.body;)isScrollableElement(node)&&elements.push(node),node=node.parentElement;return elements},hasScrollableParents=node=>{for(;node.parentElement&&node!==document.body;){if(isScrollableElement(node))return!0;node=node.parentElement}return!1};function clone(obj){return JSON.parse(JSON.stringify(obj))}function matchesAttr(el,attr,val){const styles=window.getComputedStyle(el);return val.includes(styles[attr])}function closestAttr(s,t,element){let el=element;if(!element)return null;do{if(matchesAttr(el,s,t))return el;el=el.parentElement||el.parentNode}while(null!==el&&1===el.nodeType);return null}var operators_map=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/map.js");let ElementService=class ElementService{constructor(singleton){this.singleton=singleton,this.tick=(0,from.D)(this.singleton.tick)}visibility(target,parentElement=target){const scrollableParents=getScrollableParents(parentElement);return this.tick.pipe((0,operators_map.U)((()=>{for(const parent of scrollableParents)if(!isVisibleInContainer(target,parent))return{visible:!1};return{visible:!0}})))}};ElementService.ctorParameters=()=>[{type:AnimationFrameServiceSingleton}],ElementService=(0,tslib_es6.gn)([(0,core.Injectable)()],ElementService);var Subscription=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Subscription.js"),Observable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),observable_fromEvent=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js");const getEventObservable=(targetElement,eventType)=>{switch(eventType){case"scroll":case"resize":case"touchstart":case"touchmove":case"touchend":return(0,observable_fromEvent.R)(targetElement,eventType,{passive:!0});default:return(0,observable_fromEvent.R)(targetElement,eventType)}};let DocumentService=class DocumentService{constructor(){this.globalEvents=new Map,this.documentRef=document,this.subscriptions=new Subscription.w0}handleEvent(eventType,callback){this.globalEvents.has(eventType)||(this.documentRef?this.globalEvents.set(eventType,getEventObservable(this.documentRef,eventType)):this.globalEvents.set(eventType,new Observable.y));const observable=this.globalEvents.get(eventType);this.subscriptions.add(observable.subscribe(callback))}handleClick(callback){this.handleEvent("click",callback)}ngOnDestroy(){this.subscriptions.unsubscribe(),this.globalEvents=null}};DocumentService=(0,tslib_es6.gn)([(0,core.Injectable)()],DocumentService);let EventService=class EventService{constructor(documentService){this.documentService=documentService,this.subscriptions=new Subscription.w0,this.targets=new WeakMap}on(targetElement,eventType,callback){this.targets.has(targetElement)||this.targets.set(targetElement,new Map);const eventMap=this.targets.get(targetElement);eventMap.has(eventType)||eventMap.set(eventType,getEventObservable(targetElement,eventType));const subscription=eventMap.get(eventType).subscribe(callback);this.subscriptions.add(subscription)}onDocument(eventType,callback){this.documentService.handleEvent(eventType,callback)}ngOnDestroy(){this.subscriptions.unsubscribe()}};EventService.ctorParameters=()=>[{type:DocumentService}],EventService=(0,tslib_es6.gn)([(0,core.Injectable)()],EventService);const DOCUMENT_SERVICE_PROVIDER={provide:DocumentService,deps:[[new core.Optional,new core.SkipSelf,DocumentService]],useFactory:function DOCUMENT_SERVICE_PROVIDER_FACTORY(parentService){return parentService||new DocumentService}};const ANIMATION_FRAME_SERVICE_SINGLETON_PROVIDER={provide:AnimationFrameServiceSingleton,deps:[[new core.Optional,new core.SkipSelf,AnimationFrameServiceSingleton],core.NgZone],useFactory:function ANIMATION_FRAME_SERVICE_SINGLETON_PROVIDER_FACTORY(parentService,ngZone){return parentService||new AnimationFrameServiceSingleton(ngZone)}};let UtilsModule=class UtilsModule{};UtilsModule=(0,tslib_es6.gn)([(0,core.NgModule)({providers:[DOCUMENT_SERVICE_PROVIDER,ANIMATION_FRAME_SERVICE_SINGLETON_PROVIDER,AnimationFrameServiceSingleton,DocumentService,AnimationFrameService,ElementService,EventService]})],UtilsModule);let _scrollbarWidth=-1;function getScrollbarWidth(){if(_scrollbarWidth>=0)return _scrollbarWidth;const outer=document.createElement("div");outer.style.visibility="hidden",outer.style.width="100px",outer.style.msOverflowStyle="scrollbar",document.body.appendChild(outer);const widthNoScroll=outer.offsetWidth;outer.style.overflow="scroll";const inner=document.createElement("div");inner.style.width="100%",outer.appendChild(inner);const widthWithScroll=inner.offsetWidth;return outer.parentNode.removeChild(outer),_scrollbarWidth=widthNoScroll-widthWithScroll,_scrollbarWidth}},"./node_modules/@storybook/angular/dist/client/argsToTemplate.js":(__unused_webpack_module,exports)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.argsToTemplate=void 0,exports.argsToTemplate=function argsToTemplate(args,options={}){const includeSet=options.include?new Set(options.include):null,excludeSet=options.exclude?new Set(options.exclude):null;return Object.entries(args).filter((([key])=>void 0!==args[key])).filter((([key])=>includeSet?includeSet.has(key):!excludeSet||!excludeSet.has(key))).map((([key,value])=>"function"==typeof value?`(${key})="${key}($event)"`:`[${key}]="${key}"`)).join(" ")}},"./node_modules/@storybook/angular/dist/client/decorators.js":(__unused_webpack_module,exports,__webpack_require__)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.componentWrapperDecorator=exports.applicationConfig=exports.moduleMetadata=void 0;const ComputesTemplateFromComponent_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/angular-beta/ComputesTemplateFromComponent.js"),NgComponentAnalyzer_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/angular-beta/utils/NgComponentAnalyzer.js");exports.moduleMetadata=metadata=>storyFn=>{const story=storyFn(),storyMetadata=story.moduleMetadata||{};return metadata=metadata||{},{...story,moduleMetadata:{declarations:[...metadata.declarations||[],...storyMetadata.declarations||[]],entryComponents:[...metadata.entryComponents||[],...storyMetadata.entryComponents||[]],imports:[...metadata.imports||[],...storyMetadata.imports||[]],schemas:[...metadata.schemas||[],...storyMetadata.schemas||[]],providers:[...metadata.providers||[],...storyMetadata.providers||[]]}}},exports.applicationConfig=function applicationConfig(config){return storyFn=>{const story=storyFn(),storyConfig=story.applicationConfig;return{...story,applicationConfig:storyConfig||config?{...config,...storyConfig,providers:[...config?.providers||[],...storyConfig?.providers||[]]}:void 0}}};exports.componentWrapperDecorator=(element,props)=>(storyFn,storyContext)=>{const story=storyFn(),currentProps="function"==typeof props?props(storyContext):props,template=(0,NgComponentAnalyzer_1.isComponent)(element)?(0,ComputesTemplateFromComponent_1.computesTemplateFromComponent)(element,currentProps??{},story.template):element(story.template);return{...story,template,...currentProps||story.props?{props:{...currentProps,...story.props}}:{}}}},"./node_modules/@storybook/angular/dist/client/index.js":function(__unused_webpack_module,exports,__webpack_require__){var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){void 0===k2&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);desc&&!("get"in desc?!m.__esModule:desc.writable||desc.configurable)||(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}:function(o,m,k,k2){void 0===k2&&(k2=k),o[k2]=m[k]}),__exportStar=this&&this.__exportStar||function(m,exports){for(var p in m)"default"===p||Object.prototype.hasOwnProperty.call(exports,p)||__createBinding(exports,m,p)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.argsToTemplate=exports.applicationConfig=exports.componentWrapperDecorator=exports.moduleMetadata=void 0,__webpack_require__("./node_modules/@storybook/angular/dist/client/globals.js"),__exportStar(__webpack_require__("./node_modules/@storybook/angular/dist/client/public-api.js"),exports),__exportStar(__webpack_require__("./node_modules/@storybook/angular/dist/client/public-types.js"),exports);var decorators_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/decorators.js");Object.defineProperty(exports,"moduleMetadata",{enumerable:!0,get:function(){return decorators_1.moduleMetadata}}),Object.defineProperty(exports,"componentWrapperDecorator",{enumerable:!0,get:function(){return decorators_1.componentWrapperDecorator}}),Object.defineProperty(exports,"applicationConfig",{enumerable:!0,get:function(){return decorators_1.applicationConfig}});var argsToTemplate_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/argsToTemplate.js");Object.defineProperty(exports,"argsToTemplate",{enumerable:!0,get:function(){return argsToTemplate_1.argsToTemplate}})},"./node_modules/@storybook/angular/dist/client/public-api.js":function(__unused_webpack_module,exports,__webpack_require__){var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){void 0===k2&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);desc&&!("get"in desc?!m.__esModule:desc.writable||desc.configurable)||(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}:function(o,m,k,k2){void 0===k2&&(k2=k),o[k2]=m[k]}),__exportStar=this&&this.__exportStar||function(m,exports){for(var p in m)"default"===p||Object.prototype.hasOwnProperty.call(exports,p)||__createBinding(exports,m,p)},__importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.raw=exports.forceReRender=exports.configure=exports.storiesOf=void 0;const preview_api_1=__webpack_require__("@storybook/preview-api"),render_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/render.js"),decorateStory_1=__importDefault(__webpack_require__("./node_modules/@storybook/angular/dist/client/decorateStory.js"));__exportStar(__webpack_require__("./node_modules/@storybook/angular/dist/client/public-types.js"),exports);const api=(0,preview_api_1.start)(render_1.renderToCanvas,{decorateStory:decorateStory_1.default,render:render_1.render});exports.storiesOf=(kind,m)=>api.clientApi.storiesOf(kind,m).addParameters({renderer:"angular"});exports.configure=(...args)=>api.configure("angular",...args),exports.forceReRender=api.forceReRender,exports.raw=api.clientApi.raw},"./node_modules/@storybook/angular/dist/client/public-types.js":(__unused_webpack_module,exports)=>{Object.defineProperty(exports,"__esModule",{value:!0})},"./node_modules/@storybook/angular/dist/index.mjs":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{var _client_index__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@storybook/angular/dist/client/index.js");__webpack_require__.o(_client_index__WEBPACK_IMPORTED_MODULE_0__,"applicationConfig")&&__webpack_require__.d(__webpack_exports__,{applicationConfig:function(){return _client_index__WEBPACK_IMPORTED_MODULE_0__.applicationConfig}}),__webpack_require__.o(_client_index__WEBPACK_IMPORTED_MODULE_0__,"componentWrapperDecorator")&&__webpack_require__.d(__webpack_exports__,{componentWrapperDecorator:function(){return _client_index__WEBPACK_IMPORTED_MODULE_0__.componentWrapperDecorator}}),__webpack_require__.o(_client_index__WEBPACK_IMPORTED_MODULE_0__,"moduleMetadata")&&__webpack_require__.d(__webpack_exports__,{moduleMetadata:function(){return _client_index__WEBPACK_IMPORTED_MODULE_0__.moduleMetadata}})},"./src/slider/slider.stories.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Basic:()=>Basic,Range:()=>Range,__namedExportsOrder:()=>__namedExportsOrder,default:()=>slider_stories});var dist=__webpack_require__("./node_modules/@storybook/angular/dist/index.mjs"),tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),fesm2020_forms=__webpack_require__("./node_modules/@angular/forms/fesm2020/forms.mjs"),utils=__webpack_require__("./src/utils/index.ts");let Slider=class Slider{constructor(elementRef,eventService,changeDetection){this.elementRef=elementRef,this.eventService=eventService,this.changeDetection=changeDetection,this.step=1,this.id="slider-"+Slider.count++,this.shiftMultiplier=4,this.skeleton=!1,this.disableArrowKeys=!1,this.valueChange=new core.EventEmitter,this.hostClass=!0,this.labelId=`${this.id}-label`,this.bottomRangeId=`${this.id}-bottom-range`,this.topRangeId=`${this.id}-top-range`,this.fractionComplete=0,this.isMouseDown=!1,this._min=0,this._max=100,this._value=[this.min],this._previousValue=[this.min],this._disabled=!1,this._readonly=!1,this._focusedThumbIndex=0,this.propagateChange=_=>{},this.onTouched=()=>{}}set min(v){v&&(this._min=v,this.value=this.value)}get min(){return this._min}set max(v){v&&(this._max=v,this.value=this.value)}get max(){return this._max}set value(v){v||(v=[this.min]),"number"!=typeof v&&"string"!=typeof v||(v=[Number(v)]),v[0]<this.min&&(v[0]=this.min),v[0]>this.max&&(v[0]=this.max),this.isRange()&&(this._previousValue[0]!==v[0]&&(v[0]>v[1]-this.step?v[0]=v[1]-this.step:v[0]>this.max?v[0]=this.max:v[0]<this.min&&(v[0]=this.min)),this._previousValue[1]!==v[1]&&(v[1]>this.max?v[1]=this.max:v[1]<this._value[0]+this.step?v[1]=this._value[0]+this.step:v[1]<this.min&&(v[1]=this.min))),this._previousValue=[...this._value],this._value=[...v],this.isRange()&&this.filledTrack?this.updateTrackRangeWidth():this.filledTrack&&(this.filledTrack.nativeElement.style.transform=`translate(0%, -50%) ${this.scaleX(this.getFractionComplete(v[0]))}`),this.inputs&&this.inputs.length&&this.inputs.forEach(((input,index)=>{input.value=this._value[index].toString()}));const valueToEmit=this.isRange()?v:v[0];this.propagateChange(valueToEmit),this.valueChange.emit(valueToEmit)}get value(){return this.isRange()?this._value:this._value[0]}set disabled(v){this._disabled=v;const inputs=this.getInputs();inputs&&inputs.length>0&&inputs.forEach((input=>input.disabled=v))}get disabled(){return this._disabled}set readonly(v){this._readonly=v;const inputs=this.getInputs();inputs&&inputs.length>0&&inputs.forEach((input=>input.readOnly=v))}get readonly(){return this._readonly}ngAfterViewInit(){this.eventService.onDocument("mousemove",this.onMouseMove.bind(this)),this.eventService.onDocument("mouseup",this.onMouseUp.bind(this)),this.changeDetection.detectChanges(),this.inputs=this.getInputs(),this.inputs&&this.inputs.length>0&&this.inputs.forEach(((input,index)=>{input.type="number",input.classList.add("cds--slider-text-input"),input.classList.add("cds--text-input"),input.setAttribute("aria-labelledby",`${this.bottomRangeId} ${this.topRangeId}`),input.value=index<this._value.length?this._value[index].toString():this.max.toString(),this.eventService.on(input,"change",(event=>this.onChange(event,index))),0===index&&this.eventService.on(input,"focus",this.onFocus.bind(this))}))}trackThumbsBy(index,item){return index}registerOnChange(fn){this.propagateChange=fn}registerOnTouched(fn){this.onTouched=fn}writeValue(v){this.value=v}getFractionComplete(value){if(!this.track)return 0;const trackWidth=this.track.nativeElement.getBoundingClientRect().width;return this.convertToPx(value)/trackWidth}scaleX(complete){return`scaleX(${complete})`}convertToValue(pxAmount){const range=this.max-this.min,unrounded=pxAmount/this.track.nativeElement.getBoundingClientRect().width;return Math.round(range*unrounded/this.step)*this.step+this.min}convertToPx(value){if(!this.track)return 0;const trackWidth=this.track.nativeElement.getBoundingClientRect().width;return value>=this.max?trackWidth:value<=this.min?0:Math.round(trackWidth*((value-this.min)/(this.max-this.min)))}incrementValue(multiplier=1,index=0){this._value[index]=this._value[index]+this.step*multiplier,this.value=this.value}decrementValue(multiplier=1,index=0){this._value[index]=this._value[index]-this.step*multiplier,this.value=this.value}isRange(){return this._value.length>1}updateTrackRangeWidth(){const fraction=this.getFractionComplete(this._value[0]),fraction2=this.getFractionComplete(this._value[1]);this.filledTrack.nativeElement.style.transform=`translate(${100*fraction}%, -50%) ${this.scaleX(fraction2-fraction)}`}onChange(event,index){this._value[index]=Number(event.target.value),this.value=this.value}onClick(event){if(this.disabled||this.readonly)return;const trackLeft=this.track.nativeElement.getBoundingClientRect().left,trackValue=this.convertToValue(event.clientX-trackLeft);this.isRange()?Math.abs(this._value[0]-trackValue)<Math.abs(this._value[1]-trackValue)?this._value[0]=trackValue:this._value[1]=trackValue:this._value[0]=trackValue,this.value=this.value}onFocus({target}){target.select()}onMouseMove(event){if(this.disabled||this.readonly||!this.isMouseDown)return;const track=this.track.nativeElement.getBoundingClientRect();let value;event.clientX-track.left<=track.width&&event.clientX-track.left>=0&&(value=this.convertToValue(event.clientX-track.left)),event.clientX-track.left>track.width&&(value=this.max),event.clientX-track.left<0&&(value=this.min),void 0!==value&&(this._value[this._focusedThumbIndex]=value,this.value=this.value)}onMouseDown(event,index=0){event.preventDefault(),this.disabled||this.readonly||(this._focusedThumbIndex=index,this.thumbs.toArray()[index].nativeElement.focus(),this.isMouseDown=!0)}onMouseUp(){this.isMouseDown=!1}onKeyDown(event,index=0){if(this.disableArrowKeys||this.readonly)return;const multiplier=event.shiftKey?this.shiftMultiplier:1;"ArrowLeft"===event.key||"ArrowDown"===event.key?(this.decrementValue(multiplier,index),this.thumbs.toArray()[index].nativeElement.focus(),event.preventDefault()):"ArrowRight"!==event.key&&"ArrowUp"!==event.key||(this.incrementValue(multiplier,index),this.thumbs.toArray()[index].nativeElement.focus(),event.preventDefault())}isTemplate(value){return value instanceof core.TemplateRef}getInputs(){return this.elementRef.nativeElement.querySelectorAll("input:not([type=range])")}};Slider.count=0,Slider.ctorParameters=()=>[{type:core.ElementRef},{type:utils.PO},{type:core.ChangeDetectorRef}],Slider.propDecorators={min:[{type:core.Input}],max:[{type:core.Input}],step:[{type:core.Input}],value:[{type:core.Input}],id:[{type:core.Input}],shiftMultiplier:[{type:core.Input}],skeleton:[{type:core.Input}],label:[{type:core.Input}],disableArrowKeys:[{type:core.Input}],disabled:[{type:core.Input}],readonly:[{type:core.Input}],valueChange:[{type:core.Output}],hostClass:[{type:core.HostBinding,args:["class.cds--form-item"]}],thumbs:[{type:core.ViewChildren,args:["thumbs"]}],track:[{type:core.ViewChild,args:["track"]}],filledTrack:[{type:core.ViewChild,args:["filledTrack"]}],range:[{type:core.ViewChild,args:["range"]}]},Slider=(0,tslib_es6.gn)([(0,core.Component)({selector:"cds-slider, ibm-slider",template:'\n\t\t<ng-container *ngIf="!skeleton; else skeletonTemplate">\n\t\t\t<label\n\t\t\t\t*ngIf="label"\n\t\t\t\t[for]="id"\n\t\t\t\t[id]="labelId"\n\t\t\t\tclass="cds--label"\n\t\t\t\t[ngClass]="{\'cds--label--disabled\': disabled}">\n\t\t\t\t<ng-container *ngIf="!isTemplate(label)">{{label}}</ng-container>\n\t\t\t\t<ng-template *ngIf="isTemplate(label)" [ngTemplateOutlet]="label"></ng-template>\n\t\t\t</label>\n\t\t\t<div\n\t\t\t\tclass="cds--slider-container"\n\t\t\t\t[ngClass]="{ \'cds--slider-container--readonly\': readonly }">\n\t\t\t\t<label [id]="bottomRangeId" class="cds--slider__range-label">\n\t\t\t\t\t<ng-content select="[minLabel]"></ng-content>\n\t\t\t\t</label>\n\t\t\t\t<div\n\t\t\t\t\tclass="cds--slider"\n\t\t\t\t\t(click)="onClick($event)"\n\t\t\t\t\t[ngClass]="{\n\t\t\t\t\t\t\'cds--slider--disabled\': disabled,\n\t\t\t\t\t\t\'cds--slider--readonly\': readonly\n\t\t\t\t\t}">\n\t\t\t\t\t<ng-container *ngIf="!isRange()">\n\t\t\t\t\t\t<div class="cds--slider__thumb-wrapper"\n\t\t\t\t\t\t\t[ngStyle]="{insetInlineStart: getFractionComplete(value) * 100 + \'%\'}">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t#thumbs\n\t\t\t\t\t\t\t\trole="slider"\n\t\t\t\t\t\t\t\t[id]="id"\n\t\t\t\t\t\t\t\t[attr.aria-labelledby]="labelId"\n\t\t\t\t\t\t\t\tclass="cds--slider__thumb"\n\t\t\t\t\t\t\t\ttabindex="0"\n\t\t\t\t\t\t\t\t(mousedown)="onMouseDown($event)"\n\t\t\t\t\t\t\t\t(keydown)="onKeyDown($event)">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-container *ngIf="isRange()">\n\t\t\t\t\t\t<div class="cds--slider__thumb-wrapper"\n\t\t\t\t\t\t [ngStyle]="{insetInlineStart: getFractionComplete(thumb) * 100 + \'%\'}"\n\t\t\t\t\t\t *ngFor="let thumb of value; let i = index; trackBy: trackThumbsBy">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t#thumbs\n\t\t\t\t\t\t\t\trole="slider"\n\t\t\t\t\t\t\t\t[id]="id + (i > 0 ? \'-\' + i : \'\')"\n\t\t\t\t\t\t\t\t[attr.aria-labelledby]="labelId"\n\t\t\t\t\t\t\t\tclass="cds--slider__thumb"\n\t\t\t\t\t\t\t\ttabindex="0"\n\t\t\t\t\t\t\t\t(mousedown)="onMouseDown($event, i)"\n\t\t\t\t\t\t\t\t(keydown)="onKeyDown($event, i)">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<div\n\t\t\t\t\t\t#track\n\t\t\t\t\t\tclass="cds--slider__track">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div\n\t\t\t\t\t\t#filledTrack\n\t\t\t\t\t\tclass="cds--slider__filled-track">\n\t\t\t\t\t</div>\n\t\t\t\t\t<input\n\t\t\t\t\t\t#range\n\t\t\t\t\t\taria-label="slider"\n\t\t\t\t\t\tclass="cds--slider__input"\n\t\t\t\t\t\ttype="range"\n\t\t\t\t\t\t[step]="step"\n\t\t\t\t\t\t[min]="min"\n\t\t\t\t\t\t[max]="max"\n\t\t\t\t\t\t[value]="value.toString()">\n\t\t\t\t</div>\n\t\t\t\t<label [id]="topRangeId" class="cds--slider__range-label">\n\t\t\t\t\t<ng-content select="[maxLabel]"></ng-content>\n\t\t\t\t</label>\n\t\t\t\t<ng-content select="input"></ng-content>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<ng-template #skeletonTemplate>\n\t\t\t<label *ngIf="label" class="cds--label cds--skeleton"></label>\n\t\t\t<div class="cds--slider-container cds--skeleton">\n\t\t\t\t<span class="cds--slider__range-label"></span>\n\t\t\t\t<div class="cds--slider">\n\t\t\t\t\t<div class="cds--slider__thumb"></div>\n\t\t\t\t\t<div class="cds--slider__track"></div>\n\t\t\t\t\t<div class="cds--slider__filled-track"></div>\n\t\t\t\t</div>\n\t\t\t\t<span class="cds--slider__range-label"></span>\n\t\t\t</div>\n\t\t</ng-template>\n\t',providers:[{provide:fesm2020_forms.JU,useExisting:Slider,multi:!0}]})],Slider);var common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs");let SliderModule=class SliderModule{};SliderModule=(0,tslib_es6.gn)([(0,core.NgModule)({declarations:[Slider],exports:[Slider],imports:[common.CommonModule,utils.As]})],SliderModule);const slider_stories={title:"Components/Slider",decorators:[(0,dist.moduleMetadata)({imports:[SliderModule]})],component:Slider},Basic=(args=>({props:args,template:'\n <cds-slider\n [label]="label"\n [min]="min"\n [max]="max"\n [step]="step"\n [value]="value"\n [skeleton]="skeleton"\n [shiftMultiplier]="shiftMultiplier"\n [disabled]="disabled"\n [readonly]="readonly"\n aria-Label="Label for slider value"\n (valueChange)="valueChange($event)">\n <span minLabel>{{minLabel}}</span>\n <span maxLabel>{{maxLabel}}</span>\n <input [ngClass]="{\'cds--text-input--light\': theme === \'light\'}"/>\n </cds-slider>\n '})).bind({});Basic.args={min:0,max:100,step:1,value:0,minLabel:"0",maxLabel:"100",disabled:!1,readonly:!1,shiftMultiplier:4,theme:"dark"},Basic.argTypes={valueChange:{control:"Value changed!"},theme:{options:["light","dark"],control:"radio"}};const Range=(args=>({props:args,template:'\n <cds-slider\n [label]="label"\n [min]="min"\n [max]="max"\n [step]="step"\n [value]="value"\n [shiftMultiplier]="shiftMultiplier"\n [disabled]="disabled"\n [readonly]="readonly"\n aria-Label="Label for slider value"\n (valueChange)="valueChange($event)">\n <span minLabel>{{minLabel}}</span>\n <span maxLabel>{{maxLabel}}</span>\n <input [ngClass]="{\'cds--text-input--light\': theme === \'light\'}"/>\n <input [ngClass]="{\'cds--text-input--light\': theme === \'light\'}"/>\n </cds-slider>\n '})).bind({});Range.args={...Basic.args,value:[20,80]},Range.argTypes={...Basic.argTypes},Basic.parameters={...Basic.parameters,docs:{...Basic.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <cds-slider\n [label]="label"\n [min]="min"\n [max]="max"\n [step]="step"\n [value]="value"\n [skeleton]="skeleton"\n [shiftMultiplier]="shiftMultiplier"\n [disabled]="disabled"\n [readonly]="readonly"\n aria-Label="Label for slider value"\n (valueChange)="valueChange($event)">\n <span minLabel>{{minLabel}}</span>\n <span maxLabel>{{maxLabel}}</span>\n <input [ngClass]="{\'cds--text-input--light\': theme === \'light\'}"/>\n </cds-slider>\n `\n})',...Basic.parameters?.docs?.source}}},Range.parameters={...Range.parameters,docs:{...Range.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <cds-slider\n [label]="label"\n [min]="min"\n [max]="max"\n [step]="step"\n [value]="value"\n [shiftMultiplier]="shiftMultiplier"\n [disabled]="disabled"\n [readonly]="readonly"\n aria-Label="Label for slider value"\n (valueChange)="valueChange($event)">\n <span minLabel>{{minLabel}}</span>\n <span maxLabel>{{maxLabel}}</span>\n <input [ngClass]="{\'cds--text-input--light\': theme === \'light\'}"/>\n <input [ngClass]="{\'cds--text-input--light\': theme === \'light\'}"/>\n </cds-slider>\n `\n})',...Range.parameters?.docs?.source}}};const __namedExportsOrder=["Basic","Range"]}}]);