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.75 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 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==