UNPKG

@spartacus/storefront

Version:

Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.

30 lines 4.76 kB
import { inject, InjectionToken } from '@angular/core'; import { DEFAULT_URL_MATCHER, UrlMatcherService, } from '@spartacus/core'; import { getSuffixUrlMatcher } from '../../cms-structure/routing/suffix-routes/suffix-url-matcher'; export function getProductListingUrlMatcherFactory(service, defaultMatcherFactory) { const factory = (route) => { const defaultMatcher = defaultMatcherFactory(route); const suffixPLPMatcher = getSuffixUrlMatcher({ marker: 'c', paramName: 'categoryCode', }); return service.getCombined([defaultMatcher, suffixPLPMatcher]); }; return factory; } /** * Injection token with url matcher factory for PLP. * The provided url matcher matches both: * - the configured `paths` from routing config and * - custom pattern `** / c / :categoryCode` * * If the this matcher doesn't fit the requirements, it can be replaced with the DEFAULT_URL_MATCHER * or additional matchers can be added for a specific route. * * Note: Matchers will "match" a route, but do not contribute to the creation of the route, nor do they guard routes. */ export const PRODUCT_LISTING_URL_MATCHER = new InjectionToken('PRODUCT_LISTING_URL_MATCHER', { providedIn: 'root', factory: () => getProductListingUrlMatcherFactory(inject(UrlMatcherService), inject(DEFAULT_URL_MATCHER)), }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1saXN0aW5nLXVybC1tYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RvcmVmcm9udGxpYi9jbXMtcGFnZXMvcHJvZHVjdC1saXN0aW5nLXBhZ2UvcHJvZHVjdC1saXN0aW5nLXVybC1tYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFDTCxtQkFBbUIsRUFFbkIsaUJBQWlCLEdBQ2xCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFFbkcsTUFBTSxVQUFVLGtDQUFrQyxDQUNoRCxPQUEwQixFQUMxQixxQkFBd0M7SUFFeEMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtRQUMvQixNQUFNLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDO1lBQzNDLE1BQU0sRUFBRSxHQUFHO1lBQ1gsU0FBUyxFQUFFLGNBQWM7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDLENBQUM7SUFDRixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUN0QyxJQUFJLGNBQWMsQ0FBb0IsNkJBQTZCLEVBQUU7SUFDbkUsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUNaLGtDQUFrQyxDQUNoQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFDekIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQzVCO0NBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9VUkxfTUFUQ0hFUixcbiAgVXJsTWF0Y2hlckZhY3RvcnksXG4gIFVybE1hdGNoZXJTZXJ2aWNlLFxufSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xuaW1wb3J0IHsgZ2V0U3VmZml4VXJsTWF0Y2hlciB9IGZyb20gJy4uLy4uL2Ntcy1zdHJ1Y3R1cmUvcm91dGluZy9zdWZmaXgtcm91dGVzL3N1ZmZpeC11cmwtbWF0Y2hlcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9kdWN0TGlzdGluZ1VybE1hdGNoZXJGYWN0b3J5KFxuICBzZXJ2aWNlOiBVcmxNYXRjaGVyU2VydmljZSxcbiAgZGVmYXVsdE1hdGNoZXJGYWN0b3J5OiBVcmxNYXRjaGVyRmFjdG9yeVxuKTogVXJsTWF0Y2hlckZhY3Rvcnkge1xuICBjb25zdCBmYWN0b3J5ID0gKHJvdXRlOiBSb3V0ZSkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRNYXRjaGVyID0gZGVmYXVsdE1hdGNoZXJGYWN0b3J5KHJvdXRlKTtcbiAgICBjb25zdCBzdWZmaXhQTFBNYXRjaGVyID0gZ2V0U3VmZml4VXJsTWF0Y2hlcih7XG4gICAgICBtYXJrZXI6ICdjJyxcbiAgICAgIHBhcmFtTmFtZTogJ2NhdGVnb3J5Q29kZScsXG4gICAgfSk7XG4gICAgcmV0dXJuIHNlcnZpY2UuZ2V0Q29tYmluZWQoW2RlZmF1bHRNYXRjaGVyLCBzdWZmaXhQTFBNYXRjaGVyXSk7XG4gIH07XG4gIHJldHVybiBmYWN0b3J5O1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB3aXRoIHVybCBtYXRjaGVyIGZhY3RvcnkgZm9yIFBMUC5cbiAqIFRoZSBwcm92aWRlZCB1cmwgbWF0Y2hlciBtYXRjaGVzIGJvdGg6XG4gKiAtIHRoZSBjb25maWd1cmVkIGBwYXRoc2AgZnJvbSByb3V0aW5nIGNvbmZpZyBhbmRcbiAqIC0gY3VzdG9tIHBhdHRlcm4gIGAqKiAvIGMgLyA6Y2F0ZWdvcnlDb2RlYFxuICpcbiAqIElmIHRoZSB0aGlzIG1hdGNoZXIgZG9lc24ndCBmaXQgdGhlIHJlcXVpcmVtZW50cywgaXQgY2FuIGJlIHJlcGxhY2VkIHdpdGggdGhlIERFRkFVTFRfVVJMX01BVENIRVJcbiAqIG9yIGFkZGl0aW9uYWwgbWF0Y2hlcnMgY2FuIGJlIGFkZGVkIGZvciBhIHNwZWNpZmljIHJvdXRlLlxuICpcbiAqIE5vdGU6IE1hdGNoZXJzIHdpbGwgXCJtYXRjaFwiIGEgcm91dGUsIGJ1dCBkbyBub3QgY29udHJpYnV0ZSB0byB0aGUgY3JlYXRpb24gb2YgdGhlIHJvdXRlLCBub3IgZG8gdGhleSBndWFyZCByb3V0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBQUk9EVUNUX0xJU1RJTkdfVVJMX01BVENIRVIgPVxuICBuZXcgSW5qZWN0aW9uVG9rZW48VXJsTWF0Y2hlckZhY3Rvcnk+KCdQUk9EVUNUX0xJU1RJTkdfVVJMX01BVENIRVInLCB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+XG4gICAgICBnZXRQcm9kdWN0TGlzdGluZ1VybE1hdGNoZXJGYWN0b3J5KFxuICAgICAgICBpbmplY3QoVXJsTWF0Y2hlclNlcnZpY2UpLFxuICAgICAgICBpbmplY3QoREVGQVVMVF9VUkxfTUFUQ0hFUilcbiAgICAgICksXG4gIH0pO1xuIl19