{"version":3,"file":"/Users/anthonygubler/development/dojo-org/parade/src/ActiveLink.ts","sourceRoot":"","sources":["../node_modules/@dojo/webpack-contrib/css-module-dts-loader/index.js?type=ts&instanceName=0_custom-elements!/Users/anthonygubler/development/dojo-org/parade/src/ActiveLink.ts"],"names":[],"mappings":"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","sourcesContent":["import { create, diffProperty, invalidator, w } from '@dojo/framework/core/vdom';\nimport { Handle } from '@dojo/framework/core/Destroyable';\nimport injector from '@dojo/framework/core/middleware/injector';\nimport icache from '@dojo/framework/core/middleware/icache';\nimport { SupportedClassName } from '@dojo/framework/core/interfaces';\nimport Link, { LinkProperties } from '@dojo/framework/routing/Link';\nimport Router from '@dojo/framework/routing/Router';\nimport { Params } from '@dojo/framework/routing/interfaces';\n\nexport interface ActiveLinkProperties extends LinkProperties {\n\tactiveClasses: SupportedClassName[];\n\tmatchParams?: Params;\n}\n\nfunction paramsEqual(linkParams: any = {}, contextParams: any = {}) {\n\treturn Object.keys(linkParams).every((key) => linkParams[key] === contextParams[key]);\n}\n\nconst factory = create({\n\tinjector,\n\tdiffProperty,\n\ticache,\n\tinvalidator\n}).properties<ActiveLinkProperties>();\n\nexport const ActiveLink = factory(function ActiveLink({\n\tmiddleware: { diffProperty, injector, icache, invalidator },\n\tproperties,\n\tchildren\n}) {\n\tconst { to, routerKey = 'router', params, matchParams = params } = properties();\n\tlet { activeClasses, classes = [], ...props } = properties();\n\n\tdiffProperty('to', (current: ActiveLinkProperties, next: ActiveLinkProperties) => {\n\t\tif (current.to !== next.to) {\n\t\t\tconst router = injector.get<Router>(routerKey);\n\t\t\tconst currentHandle = icache.get<Handle>('handle');\n\t\t\tif (currentHandle) {\n\t\t\t\tcurrentHandle.destroy();\n\t\t\t}\n\t\t\tif (router) {\n\t\t\t\tconst handle = router.on('outlet', ({ outlet }) => {\n\t\t\t\t\tif (outlet.id === to) {\n\t\t\t\t\t\tinvalidator();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ticache.set('handle', handle, false);\n\t\t\t}\n\t\t\tinvalidator();\n\t\t}\n\t});\n\n\tconst router = injector.get<Router>(routerKey);\n\tif (router) {\n\t\tif (!icache.get('handle')) {\n\t\t\tconst handle = router.on('outlet', ({ outlet }) => {\n\t\t\t\tif (outlet.id === to) {\n\t\t\t\t\tinvalidator();\n\t\t\t\t}\n\t\t\t});\n\t\t\ticache.set('handle', handle, false);\n\t\t}\n\t\tconst context = router.getRoute(to);\n\t\tconst isActive = context && paramsEqual(matchParams, context.params);\n\n\t\tclasses = Array.isArray(classes) ? classes : [classes];\n\t\tif (isActive) {\n\t\t\tclasses = [...classes, ...activeClasses];\n\t\t}\n\t\tprops = { ...props, classes };\n\t}\n\treturn w(Link, props, children());\n});\n\nexport default ActiveLink;\n"]}