{"version":3,"file":"/Users/anthonygubler/development/dojo-org/widgets/src/context-popup/index.tsx","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,MAAM,uCAAuC,CAAC;AAE1D,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAEhF,OAAO,KAAK,GAAG,MAAM,sCAAsC,CAAC;AAoB5D,MAAM,MAAM,GAAG,sBAAsB,EAAiB,CAAC;AAEvD,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;KAC9C,UAAU,EAA0B;KACpC,QAAQ,EAAwB,CAAC;AAEnC,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,YAAY,CAAC,EACzD,UAAU,EACV,QAAQ,EACR,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAC7B;IACA,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;IACjD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAElC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,GAAG,EAAE;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1B,OAAO,IAAI,OAAO,EAAE,CAAC;IACtB,CAAC,CAAC;IAEF,OAAO,CACN;QACC,aACC,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,GAAG,EAAC,SAAS,EACb,aAAa,EAAE,CAAC,KAAiB,EAAE,EAAE;gBACpC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gBAChC,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC;gBAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,CAAC;gBAC5C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzB,MAAM,IAAI,MAAM,EAAE,CAAC;YACpB,CAAC,IAEA,OAAO,CACH;QACN,IAAC,KAAK,IACL,GAAG,EAAC,OAAO,EACX,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC,YAAY,EACnF,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,KAAK,EACd,QAAQ,EAAC,OAAO,EAChB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YAExB,iBAAM,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAO,CACxD,CACC,CACV,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe,YAAY,CAAC","sourcesContent":["import { create, tsx } from '@dojo/framework/core/vdom';\nimport focus from '@dojo/framework/core/middleware/focus';\nimport { RenderResult } from '@dojo/framework/core/interfaces';\nimport Popup from '../popup';\nimport theme from '../middleware/theme';\nimport { createICacheMiddleware } from '@dojo/framework/core/middleware/icache';\n\nimport * as css from '../theme/default/context-popup.m.css';\n\nexport interface ContextPopupProperties {\n\tonClose?(): void;\n\tonOpen?(): void;\n}\n\nexport interface ContextPopupChildren {\n\ttrigger: RenderResult;\n\tcontent: (callbacks: { close(): void; shouldFocus(): boolean }) => RenderResult;\n}\n\ninterface ContextIcache {\n\tx: number;\n\ty: number;\n\tleft: number;\n\tright: number;\n\topen: boolean;\n}\n\nconst icache = createICacheMiddleware<ContextIcache>();\n\nconst factory = create({ icache, focus, theme })\n\t.properties<ContextPopupProperties>()\n\t.children<ContextPopupChildren>();\n\nconst CursorWidth = 2;\nconst CursorHeight = 4;\n\nexport const ContextPopup = factory(function ContextPopup({\n\tproperties,\n\tchildren,\n\tmiddleware: { icache, focus }\n}) {\n\tconst { variant, theme, classes } = properties();\n\tconst x = icache.getOrSet('x', 0);\n\tconst y = icache.getOrSet('y', 0);\n\n\tconst { trigger, content } = children()[0];\n\tconst close = () => {\n\t\tconst { onClose } = properties();\n\t\ticache.set('open', false);\n\t\tonClose && onClose();\n\t};\n\n\treturn (\n\t\t<virtual>\n\t\t\t<div\n\t\t\t\tclasses={css.trigger}\n\t\t\t\tkey=\"trigger\"\n\t\t\t\toncontextmenu={(event: MouseEvent) => {\n\t\t\t\t\tconst { onOpen } = properties();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tfocus.focus();\n\t\t\t\t\ticache.set('x', event.pageX - CursorWidth);\n\t\t\t\t\ticache.set('y', event.pageY - CursorHeight);\n\t\t\t\t\ticache.set('open', true);\n\t\t\t\t\tonOpen && onOpen();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{trigger}\n\t\t\t</div>\n\t\t\t<Popup\n\t\t\t\tkey=\"popup\"\n\t\t\t\ttheme={theme}\n\t\t\t\tvariant={variant}\n\t\t\t\tclasses={classes}\n\t\t\t\tyTop={y}\n\t\t\t\tyBottom={document.documentElement.scrollTop + document.documentElement.clientHeight}\n\t\t\t\txLeft={x}\n\t\t\t\txRight={x}\n\t\t\t\tonClose={close}\n\t\t\t\tposition=\"below\"\n\t\t\t\topen={icache.get('open')}\n\t\t\t>\n\t\t\t\t<div>{content({ close, shouldFocus: focus.shouldFocus })}</div>\n\t\t\t</Popup>\n\t\t</virtual>\n\t);\n});\n\nexport default ContextPopup;\n"]}