1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- define(['underscore'], function (_) {
- 'use strict';
- var baseUrls, sections, clientSideSections, canonize;
- /**
- * @param {String} url
- * @return {String}
- */
- canonize = function (url) {
- var route = url,
- key;
- for (key in baseUrls) { //eslint-disable-line guard-for-in
- route = url.replace(baseUrls[key], '');
- if (route != url) { //eslint-disable-line eqeqeq
- break;
- }
- }
- return route.replace(/^\/?index.php\/?/, '').toLowerCase();
- };
- return {
- /**
- * @param {String} url
- * @return {Array}
- */
- getAffectedSections: function (url) {
- var route = canonize(url),
- actions = _.find(sections, function (val, section) {
- var matched;
- if (section.indexOf('*') >= 0) {
- section = section.replace(/\*/g, '[^/]+') + '$';
- matched = route.match(section);
- return matched && matched[0] == route; //eslint-disable-line eqeqeq
- }
- return route.indexOf(section) === 0;
- });
- return _.union(_.toArray(actions), _.toArray(sections['*']));
- },
- /**
- * @param {*} allSections
- * @return {*}
- */
- filterClientSideSections: function (allSections) {
- if (Array.isArray(allSections)) {
- return _.difference(allSections, clientSideSections);
- }
- return allSections;
- },
- /**
- * @param {String} sectionName
- * @return {Boolean}
- */
- isClientSideSection: function (sectionName) {
- return _.contains(clientSideSections, sectionName);
- },
- /**
- * @param {Object} options
- * @constructor
- */
- 'Magento_Customer/js/section-config': function (options) {
- baseUrls = options.baseUrls;
- sections = options.sections;
- clientSideSections = options.clientSideSections;
- }
- };
- });
|