@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
JavaScript
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