{"version":3,"file":"/Users/anthonygubler/development/dojo-org/widgets/src/slide-pane/index.tsx","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { create, tsx } from '@dojo/framework/core/vdom';\nimport { createICacheMiddleware } from '@dojo/framework/core/middleware/icache';\nimport { RenderResult } from '@dojo/framework/core/interfaces';\nimport theme from '../middleware/theme';\nimport i18n from '@dojo/framework/core/middleware/i18n';\nimport bundle from './nls/SlidePane';\nimport * as fixedCss from './styles/slide-pane.m.css';\nimport * as css from '../theme/default/slide-pane.m.css';\nimport { uuid } from '@dojo/framework/core/util';\nimport { formatAriaProperties } from '../common/util';\nimport Icon from '../icon';\nimport * as animations from '../common/styles/animations.m.css';\n\n/**\n * Enum for left / right alignment\n */\nexport type Align = 'bottom' | 'left' | 'right' | 'top';\n\nexport interface SlidePaneProperties {\n\t/** The position of the pane on the screen */\n\talign?: Align;\n\t/** Custom aria attributes */\n\taria?: { [key: string]: string | null };\n\t/** Hidden text used by screen readers to display for the close button */\n\tcloseText?: string;\n\n\t/** Called when the pane is swiped closed or the underlay is clicked or tapped */\n\tonRequestClose?(): void;\n\n\t/** Determines whether the pane is open or closed */\n\topen?: boolean;\n\n\t/** Determines whether a semi-transparent background shows behind the pane */\n\tunderlay?: boolean;\n\n\t/** Width of the pane in pixels */\n\twidth?: number;\n}\n\n/**\n * The default width of the slide pane\n */\nconst DEFAULT_WIDTH = 320;\n\nenum Plane {\n\tx,\n\ty\n}\n\nenum Slide {\n\tin,\n\tout\n}\n\nexport interface SlidePaneICache {\n\tinitialPosition: number;\n\tslide: Slide | undefined;\n\tswiping: boolean | undefined;\n\ttitleId: string;\n\ttransform: number;\n\thasMoved: boolean;\n\topen: boolean;\n}\n\nexport interface SlidePaneChildren {\n\t/** The title of the slide pane */\n\ttitle?: RenderResult;\n\t/** The slide pane content */\n\tcontent?: RenderResult;\n}\n\nconst factory = create({\n\ticache: createICacheMiddleware<SlidePaneICache>(),\n\ttheme,\n\ti18n\n})\n\t.properties<SlidePaneProperties>()\n\t.children<SlidePaneChildren | undefined>();\n\nexport const SlidePane = factory(function SlidePane({\n\tmiddleware: { icache, theme, i18n },\n\tproperties,\n\tchildren\n}) {\n\tlet {\n\t\taria = {},\n\t\tcloseText,\n\t\topen = false,\n\t\talign = 'left',\n\t\twidth = DEFAULT_WIDTH,\n\t\tunderlay = false,\n\t\ttheme: themeProp,\n\t\tvariant,\n\t\tclasses\n\t} = properties();\n\tconst themeCss = theme.classes(css);\n\tconst [slidePaneChildren = {}] = children();\n\tconst { title, content } = slidePaneChildren;\n\tif (icache.get('open') !== open) {\n\t\tconst wasOpen = icache.get('open');\n\t\ticache.set('open', open);\n\n\t\tif (open && !wasOpen) {\n\t\t\ticache.set('slide', Slide.in);\n\t\t} else if (!open && wasOpen) {\n\t\t\ticache.set('slide', Slide.out);\n\t\t}\n\t}\n\n\tconst plane = align === 'left' || align === 'right' ? Plane.x : Plane.y;\n\n\tlet translate = '';\n\tconst translateAxis = plane === Plane.x ? 'X' : 'Y';\n\n\tif (icache.get('swiping')) {\n\t\ttranslate =\n\t\t\talign === 'left' || align === 'top'\n\t\t\t\t? `-${icache.getOrSet('transform', 0)}`\n\t\t\t\t: `${icache.getOrSet('transform', 0)}`;\n\t}\n\n\tconst contentStyles = {\n\t\ttransform: translate ? `translate${translateAxis}(${translate}%)` : undefined,\n\t\twidth: plane === Plane.x ? `${width}px` : undefined,\n\t\theight: plane === Plane.y ? `${width}px` : undefined\n\t};\n\n\tconst alignCss: { [key: string]: any } = themeCss;\n\tconst slide = icache.get('slide');\n\n\tconst contentClasses = [\n\t\talignCss[align],\n\t\topen ? themeCss.open : null,\n\t\tslide === Slide.in ? themeCss.slideIn : null,\n\t\tslide === Slide.out ? themeCss.slideOut : null\n\t];\n\n\tconst fixedAlignCss: { [key: string]: any } = fixedCss;\n\tconst fixedContentClasses = [fixedAlignCss[`${align}Fixed`]];\n\n\tif (!closeText) {\n\t\tconst { messages } = i18n.localize(bundle);\n\t\tcloseText = `${messages.close} ${title}`;\n\t}\n\n\tconst getDelta = (event: PointerEvent, eventType: string) => {\n\t\tconst { align = 'left' } = properties();\n\t\tconst plane = align === 'left' || align === 'right' ? Plane.x : Plane.y;\n\n\t\tif (plane === Plane.x) {\n\t\t\tconst currentX = event.pageX;\n\t\t\treturn align === 'right'\n\t\t\t\t? currentX - icache.getOrSet('initialPosition', 0)\n\t\t\t\t: icache.getOrSet('initialPosition', 0) - currentX;\n\t\t} else {\n\t\t\tconst currentY = event.pageY;\n\t\t\treturn align === 'bottom'\n\t\t\t\t? currentY - icache.getOrSet('initialPosition', 0)\n\t\t\t\t: icache.getOrSet('initialPosition', 0) - currentY;\n\t\t}\n\t};\n\n\tconst swipeStart = (event: PointerEvent) => {\n\t\tconst { align = 'left' } = properties();\n\n\t\tconst plane = align === 'left' || align === 'right' ? Plane.x : Plane.y;\n\n\t\tevent.stopPropagation();\n\t\ticache.set('swiping', true);\n\t\t// Cache initial pointer position\n\t\tif (plane === Plane.x) {\n\t\t\ticache.set('initialPosition', event.pageX);\n\t\t} else {\n\t\t\ticache.set('initialPosition', event.pageY);\n\t\t}\n\n\t\t// Clear out the last transform applied\n\t\ticache.set('transform', 0);\n\t};\n\n\tconst swipeMove = (event: PointerEvent) => {\n\t\tevent.stopPropagation();\n\t\t// Ignore pointer movement when not swiping\n\t\tif (!icache.get('swiping')) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\ticache.set('hasMoved', true);\n\n\t\tconst { width = DEFAULT_WIDTH } = properties();\n\n\t\tconst delta = getDelta(event, 'touchmove');\n\n\t\t// Prevent pane from sliding past screen edge\n\t\tif (delta >= 0) {\n\t\t\ticache.set('transform', (100 * delta) / width);\n\t\t\ticache.set('slide', undefined);\n\t\t}\n\t};\n\n\tconst swipeEnd = (event: PointerEvent) => {\n\t\tevent.stopPropagation();\n\t\ticache.set('swiping', false);\n\t\ticache.set('hasMoved', false);\n\n\t\tconst { onRequestClose, width = DEFAULT_WIDTH } = properties();\n\n\t\tconst delta = getDelta(event, 'touchend');\n\n\t\t// If the pane was swiped far enough to close\n\t\tif (delta > width / 2) {\n\t\t\tonRequestClose && onRequestClose();\n\t\t}\n\t\t// If pane was not swiped far enough to close\n\t\telse if (delta > 0) {\n\t\t\t// Animate the pane back open\n\t\t\ticache.set('slide', Slide.in);\n\t\t}\n\t};\n\n\tconst onCloseClick = (event: MouseEvent) => {\n\t\tevent.stopPropagation();\n\t\tconst { onRequestClose } = properties();\n\t\tonRequestClose && onRequestClose();\n\t};\n\n\tconst onUnderlayMouseUp = () => {\n\t\tconst { onRequestClose } = properties();\n\t\tif (icache.getOrSet('hasMoved', false) === false) {\n\t\t\tonRequestClose && onRequestClose();\n\t\t}\n\t};\n\n\tconst titleId = icache.getOrSet('titleId', uuid());\n\n\treturn (\n\t\t<div\n\t\t\taria-labelledby={titleId}\n\t\t\tclasses={[theme.variant(), themeCss.root]}\n\t\t\tonpointerdown={swipeStart}\n\t\t\tonpointermove={swipeMove}\n\t\t\tonpointerup={swipeEnd}\n\t\t\tonpointercancel={swipeEnd}\n\t\t>\n\t\t\t{open ? (\n\t\t\t\t<div\n\t\t\t\t\tkey=\"underlay\"\n\t\t\t\t\tclasses={[underlay ? themeCss.underlayVisible : null, fixedCss.underlay]}\n\t\t\t\t\tenterAnimation={animations.fadeIn}\n\t\t\t\t\texitAnimation={animations.fadeOut}\n\t\t\t\t\tonpointerup={onUnderlayMouseUp}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t<div\n\t\t\t\t{...formatAriaProperties(aria)}\n\t\t\t\tkey=\"content\"\n\t\t\t\tclasses={[\n\t\t\t\t\tthemeCss.pane,\n\t\t\t\t\t...contentClasses,\n\t\t\t\t\tfixedCss.paneFixed,\n\t\t\t\t\t...fixedContentClasses\n\t\t\t\t]}\n\t\t\t\tstyles={contentStyles}\n\t\t\t>\n\t\t\t\t{title ? (\n\t\t\t\t\t<div classes={themeCss.title} key=\"title\">\n\t\t\t\t\t\t<div id={titleId} classes={themeCss.titleContent}>\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button classes={themeCss.close} type=\"button\" onclick={onCloseClick}>\n\t\t\t\t\t\t\t{closeText}\n\t\t\t\t\t\t\t<span classes={themeCss.closeIcon}>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\ttype=\"closeIcon\"\n\t\t\t\t\t\t\t\t\ttheme={themeProp}\n\t\t\t\t\t\t\t\t\tclasses={classes}\n\t\t\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t\t<div classes={[themeCss.content, fixedCss.contentFixed]}>{content}</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n});\n\nexport default SlidePane;\n"]}