preprocessor.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing,
  13. * software distributed under the License is distributed on an
  14. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15. * KIND, either express or implied. See the License for the
  16. * specific language governing permissions and limitations
  17. * under the License.
  18. */
  19. var zrUtil = require("zrender/lib/core/util");
  20. /*
  21. * Licensed to the Apache Software Foundation (ASF) under one
  22. * or more contributor license agreements. See the NOTICE file
  23. * distributed with this work for additional information
  24. * regarding copyright ownership. The ASF licenses this file
  25. * to you under the Apache License, Version 2.0 (the
  26. * "License"); you may not use this file except in compliance
  27. * with the License. You may obtain a copy of the License at
  28. *
  29. * http://www.apache.org/licenses/LICENSE-2.0
  30. *
  31. * Unless required by applicable law or agreed to in writing,
  32. * software distributed under the License is distributed on an
  33. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  34. * KIND, either express or implied. See the License for the
  35. * specific language governing permissions and limitations
  36. * under the License.
  37. */
  38. var DEFAULT_TOOLBOX_BTNS = ['rect', 'polygon', 'keep', 'clear'];
  39. function _default(option, isNew) {
  40. var brushComponents = option && option.brush;
  41. if (!zrUtil.isArray(brushComponents)) {
  42. brushComponents = brushComponents ? [brushComponents] : [];
  43. }
  44. if (!brushComponents.length) {
  45. return;
  46. }
  47. var brushComponentSpecifiedBtns = [];
  48. zrUtil.each(brushComponents, function (brushOpt) {
  49. var tbs = brushOpt.hasOwnProperty('toolbox') ? brushOpt.toolbox : [];
  50. if (tbs instanceof Array) {
  51. brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs);
  52. }
  53. });
  54. var toolbox = option && option.toolbox;
  55. if (zrUtil.isArray(toolbox)) {
  56. toolbox = toolbox[0];
  57. }
  58. if (!toolbox) {
  59. toolbox = {
  60. feature: {}
  61. };
  62. option.toolbox = [toolbox];
  63. }
  64. var toolboxFeature = toolbox.feature || (toolbox.feature = {});
  65. var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {});
  66. var brushTypes = toolboxBrush.type || (toolboxBrush.type = []);
  67. brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns);
  68. removeDuplicate(brushTypes);
  69. if (isNew && !brushTypes.length) {
  70. brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS);
  71. }
  72. }
  73. function removeDuplicate(arr) {
  74. var map = {};
  75. zrUtil.each(arr, function (val) {
  76. map[val] = 1;
  77. });
  78. arr.length = 0;
  79. zrUtil.each(map, function (flag, val) {
  80. arr.push(val);
  81. });
  82. }
  83. module.exports = _default;