@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.75 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 getProductDetailsUrlMatcherFactory(service, defaultMatcherFactory) {
const factory = (route) => {
const defaultMatcher = defaultMatcherFactory(route);
const suffixPDPMatcher = getSuffixUrlMatcher({
marker: 'p',
paramName: 'productCode',
});
return service.getCombined([defaultMatcher, suffixPDPMatcher]);
};
return factory;
}
/**
* Injection token with url matcher factory for PDP.
* The provided url matcher matches both:
* - the configured `paths` from routing config and
* - custom pattern `** / p / :productCode`
*
* 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_DETAILS_URL_MATCHER = new InjectionToken('PRODUCT_DETAILS_URL_MATCHER', {
providedIn: 'root',
factory: () => getProductDetailsUrlMatcherFactory(inject(UrlMatcherService), inject(DEFAULT_URL_MATCHER)),
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWxzLXVybC1tYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RvcmVmcm9udGxpYi9jbXMtcGFnZXMvcHJvZHVjdC1kZXRhaWxzLXBhZ2UvcHJvZHVjdC1kZXRhaWxzLXVybC1tYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFDTCxtQkFBbUIsRUFFbkIsaUJBQWlCLEdBQ2xCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFFbkcsTUFBTSxVQUFVLGtDQUFrQyxDQUNoRCxPQUEwQixFQUMxQixxQkFBd0M7SUFFeEMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtRQUMvQixNQUFNLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDO1lBQzNDLE1BQU0sRUFBRSxHQUFHO1lBQ1gsU0FBUyxFQUFFLGFBQWE7U0FDekIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDLENBQUM7SUFDRixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUN0QyxJQUFJLGNBQWMsQ0FBb0IsNkJBQTZCLEVBQUU7SUFDbkUsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUNaLGtDQUFrQyxDQUNoQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFDekIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQzVCO0NBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9VUkxfTUFUQ0hFUixcbiAgVXJsTWF0Y2hlckZhY3RvcnksXG4gIFVybE1hdGNoZXJTZXJ2aWNlLFxufSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xuaW1wb3J0IHsgZ2V0U3VmZml4VXJsTWF0Y2hlciB9IGZyb20gJy4uLy4uL2Ntcy1zdHJ1Y3R1cmUvcm91dGluZy9zdWZmaXgtcm91dGVzL3N1ZmZpeC11cmwtbWF0Y2hlcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9kdWN0RGV0YWlsc1VybE1hdGNoZXJGYWN0b3J5KFxuICBzZXJ2aWNlOiBVcmxNYXRjaGVyU2VydmljZSxcbiAgZGVmYXVsdE1hdGNoZXJGYWN0b3J5OiBVcmxNYXRjaGVyRmFjdG9yeVxuKTogVXJsTWF0Y2hlckZhY3Rvcnkge1xuICBjb25zdCBmYWN0b3J5ID0gKHJvdXRlOiBSb3V0ZSkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRNYXRjaGVyID0gZGVmYXVsdE1hdGNoZXJGYWN0b3J5KHJvdXRlKTtcbiAgICBjb25zdCBzdWZmaXhQRFBNYXRjaGVyID0gZ2V0U3VmZml4VXJsTWF0Y2hlcih7XG4gICAgICBtYXJrZXI6ICdwJyxcbiAgICAgIHBhcmFtTmFtZTogJ3Byb2R1Y3RDb2RlJyxcbiAgICB9KTtcbiAgICByZXR1cm4gc2VydmljZS5nZXRDb21iaW5lZChbZGVmYXVsdE1hdGNoZXIsIHN1ZmZpeFBEUE1hdGNoZXJdKTtcbiAgfTtcbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIHdpdGggdXJsIG1hdGNoZXIgZmFjdG9yeSBmb3IgUERQLlxuICogVGhlIHByb3ZpZGVkIHVybCBtYXRjaGVyIG1hdGNoZXMgYm90aDpcbiAqIC0gdGhlIGNvbmZpZ3VyZWQgYHBhdGhzYCBmcm9tIHJvdXRpbmcgY29uZmlnIGFuZFxuICogLSBjdXN0b20gcGF0dGVybiAgYCoqIC8gcCAvIDpwcm9kdWN0Q29kZWBcbiAqXG4gKiBJZiB0aGUgdGhpcyBtYXRjaGVyIGRvZXNuJ3QgZml0IHRoZSByZXF1aXJlbWVudHMsIGl0IGNhbiBiZSByZXBsYWNlZCB3aXRoIHRoZSBERUZBVUxUX1VSTF9NQVRDSEVSXG4gKiBvciBhZGRpdGlvbmFsIG1hdGNoZXJzIGNhbiBiZSBhZGRlZCBmb3IgYSBzcGVjaWZpYyByb3V0ZS5cbiAqXG4gKiBOb3RlOiBNYXRjaGVycyB3aWxsIFwibWF0Y2hcIiBhIHJvdXRlLCBidXQgZG8gbm90IGNvbnRyaWJ1dGUgdG8gdGhlIGNyZWF0aW9uIG9mIHRoZSByb3V0ZSwgbm9yIGRvIHRoZXkgZ3VhcmQgcm91dGVzLlxuICovXG5leHBvcnQgY29uc3QgUFJPRFVDVF9ERVRBSUxTX1VSTF9NQVRDSEVSID1cbiAgbmV3IEluamVjdGlvblRva2VuPFVybE1hdGNoZXJGYWN0b3J5PignUFJPRFVDVF9ERVRBSUxTX1VSTF9NQVRDSEVSJywge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiAoKSA9PlxuICAgICAgZ2V0UHJvZHVjdERldGFpbHNVcmxNYXRjaGVyRmFjdG9yeShcbiAgICAgICAgaW5qZWN0KFVybE1hdGNoZXJTZXJ2aWNlKSxcbiAgICAgICAgaW5qZWN0KERFRkFVTFRfVVJMX01BVENIRVIpXG4gICAgICApLFxuICB9KTtcbiJdfQ==