camunda-bpmn-js 0.15.2 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/CHANGELOG.md +331 -280
  2. package/LICENSE +20 -20
  3. package/README.md +84 -84
  4. package/dist/assets/base-modeler.css +4 -4
  5. package/dist/assets/base-navigated-viewer.css +1 -1
  6. package/dist/assets/base-viewer.css +1 -1
  7. package/dist/assets/camunda-cloud-modeler.css +1 -1
  8. package/dist/assets/camunda-platform-modeler.css +1 -1
  9. package/dist/assets/properties-panel.css +93 -6
  10. package/dist/base-modeler.development.js +3968 -612
  11. package/dist/base-modeler.production.min.js +4 -4
  12. package/dist/base-navigated-viewer.development.js +7 -4
  13. package/dist/base-navigated-viewer.production.min.js +1 -1
  14. package/dist/base-viewer.development.js +7 -4
  15. package/dist/base-viewer.production.min.js +1 -1
  16. package/dist/camunda-cloud-modeler.development.js +5390 -1231
  17. package/dist/camunda-cloud-modeler.production.min.js +4 -4
  18. package/dist/camunda-cloud-navigated-viewer.development.js +42 -39
  19. package/dist/camunda-cloud-navigated-viewer.production.min.js +1 -1
  20. package/dist/camunda-cloud-viewer.development.js +42 -39
  21. package/dist/camunda-cloud-viewer.production.min.js +1 -1
  22. package/dist/camunda-platform-modeler.development.js +4077 -614
  23. package/dist/camunda-platform-modeler.production.min.js +4 -4
  24. package/dist/camunda-platform-navigated-viewer.development.js +26 -23
  25. package/dist/camunda-platform-navigated-viewer.production.min.js +1 -1
  26. package/dist/camunda-platform-viewer.development.js +26 -23
  27. package/dist/camunda-platform-viewer.production.min.js +1 -1
  28. package/lib/base/Modeler.js +46 -46
  29. package/lib/base/NavigatedViewer.js +2 -2
  30. package/lib/base/Viewer.js +2 -2
  31. package/lib/camunda-cloud/Modeler.js +68 -68
  32. package/lib/camunda-cloud/NavigatedViewer.js +34 -34
  33. package/lib/camunda-cloud/Viewer.js +34 -34
  34. package/lib/camunda-cloud/features/context-pad/ContextPadOptions.js +15 -15
  35. package/lib/camunda-cloud/features/context-pad/index.js +6 -6
  36. package/lib/camunda-cloud/features/drilldown/index.js +3 -3
  37. package/lib/camunda-cloud/features/palette/PaletteOptions.js +14 -14
  38. package/lib/camunda-cloud/features/palette/PaletteProvider.js +31 -31
  39. package/lib/camunda-cloud/features/palette/index.js +6 -6
  40. package/lib/camunda-cloud/features/popup-menu/ReplaceMenuProvider.js +71 -71
  41. package/lib/camunda-cloud/features/popup-menu/ReplaceOptions.js +46 -46
  42. package/lib/camunda-cloud/features/popup-menu/index.js +6 -6
  43. package/lib/camunda-cloud/features/rules/BpmnRules.js +137 -137
  44. package/lib/camunda-cloud/features/rules/index.js +5 -5
  45. package/lib/camunda-cloud/util/commonModules.js +13 -13
  46. package/lib/camunda-platform/Modeler.js +46 -46
  47. package/lib/camunda-platform/NavigatedViewer.js +25 -25
  48. package/lib/camunda-platform/Viewer.js +24 -24
  49. package/lib/camunda-platform/util/commonModules.js +6 -6
  50. package/lib/util/ExtensionElementsUtil.js +59 -59
  51. package/package.json +109 -110
  52. package/styles/base-modeler.css +4 -4
  53. package/styles/base-navigated-viewer.css +1 -1
  54. package/styles/base-viewer.css +1 -1
  55. package/styles/camunda-cloud-modeler.css +1 -1
  56. package/styles/camunda-platform-modeler.css +1 -1
  57. package/util/index.js +39 -39
@@ -1,25 +1,25 @@
1
- import inherits from 'inherits';
2
-
3
- import BaseViewer from '../base/NavigatedViewer';
4
-
5
- import { commonModdleExtensions } from './util/commonModules';
6
-
7
-
8
- /**
9
- *
10
- * @param {Object} options
11
- */
12
- export default function NavigatedViewer(options = {}) {
13
-
14
- options = {
15
- ...options,
16
- moddleExtensions: {
17
- ...commonModdleExtensions,
18
- ...options.moddleExtensions
19
- }
20
- };
21
-
22
- BaseViewer.call(this, options);
23
- }
24
-
25
- inherits(NavigatedViewer, BaseViewer);
1
+ import inherits from 'inherits';
2
+
3
+ import BaseViewer from '../base/NavigatedViewer';
4
+
5
+ import { commonModdleExtensions } from './util/commonModules';
6
+
7
+
8
+ /**
9
+ *
10
+ * @param {Object} options
11
+ */
12
+ export default function NavigatedViewer(options = {}) {
13
+
14
+ options = {
15
+ ...options,
16
+ moddleExtensions: {
17
+ ...commonModdleExtensions,
18
+ ...options.moddleExtensions
19
+ }
20
+ };
21
+
22
+ BaseViewer.call(this, options);
23
+ }
24
+
25
+ inherits(NavigatedViewer, BaseViewer);
@@ -1,24 +1,24 @@
1
- import inherits from 'inherits';
2
-
3
- import BaseViewer from '../base/Viewer';
4
-
5
- import { commonModdleExtensions } from './util/commonModules';
6
-
7
- /**
8
- *
9
- * @param {Object} options
10
- */
11
- export default function Viewer(options = {}) {
12
-
13
- options = {
14
- ...options,
15
- moddleExtensions: {
16
- ...commonModdleExtensions,
17
- ...options.moddleExtensions
18
- }
19
- };
20
-
21
- BaseViewer.call(this, options);
22
- }
23
-
24
- inherits(Viewer, BaseViewer);
1
+ import inherits from 'inherits';
2
+
3
+ import BaseViewer from '../base/Viewer';
4
+
5
+ import { commonModdleExtensions } from './util/commonModules';
6
+
7
+ /**
8
+ *
9
+ * @param {Object} options
10
+ */
11
+ export default function Viewer(options = {}) {
12
+
13
+ options = {
14
+ ...options,
15
+ moddleExtensions: {
16
+ ...commonModdleExtensions,
17
+ ...options.moddleExtensions
18
+ }
19
+ };
20
+
21
+ BaseViewer.call(this, options);
22
+ }
23
+
24
+ inherits(Viewer, BaseViewer);
@@ -1,7 +1,7 @@
1
- import camundaModdle from 'camunda-bpmn-moddle/resources/camunda.json';
2
-
3
- export const commonModules = [];
4
-
5
- export const commonModdleExtensions = {
6
- camunda: camundaModdle
1
+ import camundaModdle from 'camunda-bpmn-moddle/resources/camunda.json';
2
+
3
+ export const commonModules = [];
4
+
5
+ export const commonModdleExtensions = {
6
+ camunda: camundaModdle
7
7
  };
@@ -1,59 +1,59 @@
1
- import {
2
- getBusinessObject,
3
- is
4
- } from 'bpmn-js/lib/util/ModelUtil';
5
-
6
- import { isArray } from 'min-dash';
7
-
8
- /**
9
- * Get extension elements of business object. Optionally filter by type.
10
- *
11
- * @param {djs.model.Base|ModdleElement} element
12
- * @param {String} [type=undefined]
13
- * @returns {Array<ModdleElement>}
14
- */
15
- export function getExtensionElementsList(element, type = undefined) {
16
- const businessObject = getBusinessObject(element),
17
- extensionElements = businessObject.get('extensionElements');
18
-
19
- if (!extensionElements) {
20
- return [];
21
- }
22
-
23
- const values = extensionElements.get('values');
24
-
25
- if (!values || !values.length) {
26
- return [];
27
- }
28
-
29
- if (type) {
30
- return values.filter(value => is(value, type));
31
- }
32
-
33
- return values;
34
- }
35
-
36
- /**
37
- * Remove one or more extension elements. Remove bpmn:ExtensionElements afterwards if it's empty.
38
- *
39
- * @param {ModdleElement} element
40
- * @param {ModdleElement} businessObject
41
- * @param {ModdleElement|Array<ModdleElement>} extensionElementsToRemove
42
- * @param {CommandStack} commandStack
43
- */
44
- export function removeExtensionElements(element, businessObject, extensionElementsToRemove, commandStack) {
45
- if (!isArray(extensionElementsToRemove)) {
46
- extensionElementsToRemove = [ extensionElementsToRemove ];
47
- }
48
-
49
- const extensionElements = businessObject.get('extensionElements'),
50
- values = extensionElements.get('values').filter(value => !extensionElementsToRemove.includes(value));
51
-
52
- commandStack.execute('element.updateModdleProperties', {
53
- element,
54
- moddleElement: extensionElements,
55
- properties: {
56
- values
57
- }
58
- });
59
- }
1
+ import {
2
+ getBusinessObject,
3
+ is
4
+ } from 'bpmn-js/lib/util/ModelUtil';
5
+
6
+ import { isArray } from 'min-dash';
7
+
8
+ /**
9
+ * Get extension elements of business object. Optionally filter by type.
10
+ *
11
+ * @param {djs.model.Base|ModdleElement} element
12
+ * @param {String} [type=undefined]
13
+ * @returns {Array<ModdleElement>}
14
+ */
15
+ export function getExtensionElementsList(element, type = undefined) {
16
+ const businessObject = getBusinessObject(element),
17
+ extensionElements = businessObject.get('extensionElements');
18
+
19
+ if (!extensionElements) {
20
+ return [];
21
+ }
22
+
23
+ const values = extensionElements.get('values');
24
+
25
+ if (!values || !values.length) {
26
+ return [];
27
+ }
28
+
29
+ if (type) {
30
+ return values.filter(value => is(value, type));
31
+ }
32
+
33
+ return values;
34
+ }
35
+
36
+ /**
37
+ * Remove one or more extension elements. Remove bpmn:ExtensionElements afterwards if it's empty.
38
+ *
39
+ * @param {ModdleElement} element
40
+ * @param {ModdleElement} businessObject
41
+ * @param {ModdleElement|Array<ModdleElement>} extensionElementsToRemove
42
+ * @param {CommandStack} commandStack
43
+ */
44
+ export function removeExtensionElements(element, businessObject, extensionElementsToRemove, commandStack) {
45
+ if (!isArray(extensionElementsToRemove)) {
46
+ extensionElementsToRemove = [ extensionElementsToRemove ];
47
+ }
48
+
49
+ const extensionElements = businessObject.get('extensionElements'),
50
+ values = extensionElements.get('values').filter(value => !extensionElementsToRemove.includes(value));
51
+
52
+ commandStack.execute('element.updateModdleProperties', {
53
+ element,
54
+ moddleElement: extensionElements,
55
+ properties: {
56
+ values
57
+ }
58
+ });
59
+ }
package/package.json CHANGED
@@ -1,110 +1,109 @@
1
- {
2
- "name": "camunda-bpmn-js",
3
- "version": "0.15.2",
4
- "description": "Embeddable Camunda modeling distributions based on bpmn-js",
5
- "main": "lib/index.js",
6
- "scripts": {
7
- "all": "run-s clean lint test distro test:distro",
8
- "lint": "eslint .",
9
- "dev": "npm test -- --auto-watch --no-single-run",
10
- "test": "karma start karma.config.js",
11
- "clean": "del-cli dist",
12
- "distro": "rollup -c",
13
- "test:distro": "node tasks/test-distro.js",
14
- "start:base": "cross-env SINGLE_START=base-modeler npm run dev",
15
- "start:platform": "cross-env SINGLE_START=camunda-platform-modeler npm run dev",
16
- "start:cloud": "cross-env SINGLE_START=camunda-cloud-modeler npm run dev",
17
- "start:platform-viewer": "cross-env SINGLE_START=camunda-platform-viewer npm run dev",
18
- "start:cloud-viewer": "cross-env SINGLE_START=camunda-cloud-viewer npm run dev",
19
- "start:platform-navigated-viewer": "cross-env SINGLE_START=camunda-platform-navigated-viewer npm run dev",
20
- "start:cloud-navigated-viewer": "cross-env SINGLE_START=camunda-cloud-navigated-viewer npm run dev",
21
- "prepublishOnly": "run-s test:distro",
22
- "prepare": "run-s clean distro"
23
- },
24
- "repository": {
25
- "type": "git",
26
- "url": "https://github.com/camunda/camunda-bpmn-js"
27
- },
28
- "keywords": [
29
- "bpmn",
30
- "bpmn20",
31
- "camunda",
32
- "zeebe",
33
- "modeling",
34
- "bpmn-js"
35
- ],
36
- "author": {
37
- "name": "Niklas Kiefer",
38
- "url": "https://github.com/pinussilvestrus"
39
- },
40
- "contributors": [
41
- {
42
- "name": "bpmn.io contributors",
43
- "url": "https://github.com/bpmn-io"
44
- }
45
- ],
46
- "license": "MIT",
47
- "dependencies": {
48
- "@bpmn-io/align-to-origin": "^0.7.0",
49
- "@bpmn-io/element-templates-icons-renderer": "^0.2.0",
50
- "bpmn-js": "^9.3.1",
51
- "bpmn-js-disable-collapsed-subprocess": "^0.1.4",
52
- "bpmn-js-executable-fix": "^0.1.3",
53
- "camunda-bpmn-js-behaviors": "^0.1.0",
54
- "camunda-bpmn-moddle": "^6.1.2",
55
- "diagram-js": "^8.7.0",
56
- "diagram-js-minimap": "^2.1.0",
57
- "diagram-js-origin": "^1.3.2",
58
- "inherits": "^2.0.4",
59
- "min-dash": "^3.8.1",
60
- "zeebe-bpmn-moddle": "^0.12.1"
61
- },
62
- "devDependencies": {
63
- "@bpmn-io/element-template-chooser": "0.0.5",
64
- "@bpmn-io/properties-panel": "^0.15.0",
65
- "@rollup/plugin-commonjs": "^17.1.0",
66
- "@rollup/plugin-json": "^4.1.0",
67
- "@rollup/plugin-node-resolve": "^11.1.1",
68
- "bpmn-js-properties-panel": "^1.2.0",
69
- "chai": "^4.2.0",
70
- "cross-env": "^7.0.3",
71
- "del-cli": "^4.0.1",
72
- "eslint": "^7.32.0",
73
- "eslint-plugin-bpmn-io": "^0.13.0",
74
- "execa": "^5.0.0",
75
- "istanbul-instrumenter-loader": "^3.0.1",
76
- "karma": "^6.3.16",
77
- "karma-chai": "^0.1.0",
78
- "karma-chrome-launcher": "^3.1.0",
79
- "karma-coverage": "^2.0.3",
80
- "karma-debug-launcher": "0.0.4",
81
- "karma-env-preprocessor": "^0.1.1",
82
- "karma-firefox-launcher": "^2.1.0",
83
- "karma-mocha": "^2.0.1",
84
- "karma-safari-launcher": "^1.0.0",
85
- "karma-sinon-chai": "^2.0.2",
86
- "karma-webpack": "^5.0.0",
87
- "min-dom": "^3.2.1",
88
- "mocha": "^9.2.0",
89
- "mocha-test-container-support": "^0.2.0",
90
- "npm-run-all": "^4.1.5",
91
- "puppeteer": "^8.0.0",
92
- "raw-loader": "^4.0.2",
93
- "rollup": "^2.38.4",
94
- "rollup-plugin-copy": "^3.3.0",
95
- "rollup-plugin-terser": "^7.0.2",
96
- "sinon": "^9.2.4",
97
- "sinon-chai": "^3.5.0",
98
- "webpack": "^5.20.1"
99
- },
100
- "peerDependencies": {
101
- "@bpmn-io/properties-panel": "0.15.x",
102
- "bpmn-js-properties-panel": "1.x"
103
- },
104
- "files": [
105
- "dist",
106
- "lib",
107
- "styles",
108
- "util"
109
- ]
110
- }
1
+ {
2
+ "name": "camunda-bpmn-js",
3
+ "version": "0.16.1",
4
+ "description": "Embeddable Camunda modeling distributions based on bpmn-js",
5
+ "main": "lib/index.js",
6
+ "scripts": {
7
+ "all": "run-s clean lint test distro test:distro",
8
+ "lint": "eslint .",
9
+ "dev": "npm test -- --auto-watch --no-single-run",
10
+ "test": "karma start karma.config.js",
11
+ "clean": "del-cli dist",
12
+ "distro": "rollup -c",
13
+ "test:distro": "node tasks/test-distro.js",
14
+ "start:base": "cross-env SINGLE_START=base-modeler npm run dev",
15
+ "start:platform": "cross-env SINGLE_START=camunda-platform-modeler npm run dev",
16
+ "start:cloud": "cross-env SINGLE_START=camunda-cloud-modeler npm run dev",
17
+ "start:platform-viewer": "cross-env SINGLE_START=camunda-platform-viewer npm run dev",
18
+ "start:cloud-viewer": "cross-env SINGLE_START=camunda-cloud-viewer npm run dev",
19
+ "start:platform-navigated-viewer": "cross-env SINGLE_START=camunda-platform-navigated-viewer npm run dev",
20
+ "start:cloud-navigated-viewer": "cross-env SINGLE_START=camunda-cloud-navigated-viewer npm run dev",
21
+ "prepublishOnly": "run-s test:distro",
22
+ "prepare": "run-s clean distro"
23
+ },
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/camunda/camunda-bpmn-js"
27
+ },
28
+ "keywords": [
29
+ "bpmn",
30
+ "bpmn20",
31
+ "camunda",
32
+ "zeebe",
33
+ "modeling",
34
+ "bpmn-js"
35
+ ],
36
+ "author": {
37
+ "name": "Niklas Kiefer",
38
+ "url": "https://github.com/pinussilvestrus"
39
+ },
40
+ "contributors": [
41
+ {
42
+ "name": "bpmn.io contributors",
43
+ "url": "https://github.com/bpmn-io"
44
+ }
45
+ ],
46
+ "license": "MIT",
47
+ "dependencies": {
48
+ "@bpmn-io/align-to-origin": "^0.7.0",
49
+ "@bpmn-io/element-templates-icons-renderer": "^0.2.0",
50
+ "bpmn-js": "^9.3.2",
51
+ "bpmn-js-disable-collapsed-subprocess": "^0.1.5",
52
+ "bpmn-js-executable-fix": "^0.1.3",
53
+ "camunda-bpmn-js-behaviors": "^0.1.1",
54
+ "camunda-bpmn-moddle": "^6.1.2",
55
+ "diagram-js": "^8.7.1",
56
+ "diagram-js-minimap": "^2.1.0",
57
+ "diagram-js-origin": "^1.3.2",
58
+ "inherits": "^2.0.4",
59
+ "min-dash": "^3.8.1",
60
+ "zeebe-bpmn-moddle": "^0.12.1"
61
+ },
62
+ "devDependencies": {
63
+ "@bpmn-io/element-template-chooser": "0.0.5",
64
+ "@bpmn-io/properties-panel": "^0.18.0",
65
+ "@rollup/plugin-commonjs": "^17.1.0",
66
+ "@rollup/plugin-json": "^4.1.0",
67
+ "@rollup/plugin-node-resolve": "^11.1.1",
68
+ "bpmn-js-properties-panel": "^1.4.0",
69
+ "chai": "^4.2.0",
70
+ "cross-env": "^7.0.3",
71
+ "del-cli": "^4.0.1",
72
+ "eslint": "^7.32.0",
73
+ "eslint-plugin-bpmn-io": "^0.13.0",
74
+ "execa": "^5.0.0",
75
+ "istanbul-instrumenter-loader": "^3.0.1",
76
+ "karma": "^6.3.16",
77
+ "karma-chai": "^0.1.0",
78
+ "karma-chrome-launcher": "^3.1.0",
79
+ "karma-coverage": "^2.0.3",
80
+ "karma-debug-launcher": "0.0.4",
81
+ "karma-env-preprocessor": "^0.1.1",
82
+ "karma-firefox-launcher": "^2.1.0",
83
+ "karma-mocha": "^2.0.1",
84
+ "karma-safari-launcher": "^1.0.0",
85
+ "karma-sinon-chai": "^2.0.2",
86
+ "karma-webpack": "^5.0.0",
87
+ "min-dom": "^3.2.1",
88
+ "mocha": "^9.2.0",
89
+ "mocha-test-container-support": "^0.2.0",
90
+ "npm-run-all": "^4.1.5",
91
+ "puppeteer": "^8.0.0",
92
+ "raw-loader": "^4.0.2",
93
+ "rollup": "^2.38.4",
94
+ "rollup-plugin-copy": "^3.3.0",
95
+ "rollup-plugin-terser": "^7.0.2",
96
+ "sinon": "^9.2.4",
97
+ "sinon-chai": "^3.5.0",
98
+ "webpack": "^5.20.1"
99
+ },
100
+ "peerDependencies": {
101
+ "bpmn-js-properties-panel": "1.x"
102
+ },
103
+ "files": [
104
+ "dist",
105
+ "lib",
106
+ "styles",
107
+ "util"
108
+ ]
109
+ }
@@ -1,5 +1,5 @@
1
- @import './diagram-js.css';
2
- @import './bpmn-js.css';
3
- @import './bpmn-font/css/bpmn-embedded.css';
4
- @import './diagram-js-minimap.css';
1
+ @import './diagram-js.css';
2
+ @import './bpmn-js.css';
3
+ @import './bpmn-font/css/bpmn-embedded.css';
4
+ @import './diagram-js-minimap.css';
5
5
  @import './properties-panel.css';
@@ -1,2 +1,2 @@
1
- @import './diagram-js.css';
1
+ @import './diagram-js.css';
2
2
  @import './bpmn-js.css';
@@ -1,2 +1,2 @@
1
- @import './diagram-js.css';
1
+ @import './diagram-js.css';
2
2
  @import './bpmn-js.css';
@@ -1,2 +1,2 @@
1
- @import './base-modeler.css';
1
+ @import './base-modeler.css';
2
2
  @import './element-templates.css';
@@ -1,2 +1,2 @@
1
- @import './base-modeler.css';
1
+ @import './base-modeler.css';
2
2
  @import './element-templates.css';
package/util/index.js CHANGED
@@ -1,39 +1,39 @@
1
- /**
2
- * Generates all possible combinations of the items in the given arrays.
3
- *
4
- * @param {...Array} - arrays with options to combine
5
- * @returns {Array<Array>} array with all posible combinations of items
6
- */
7
- function getAllCombinations() {
8
- const [ first, ...rest ] = arguments;
9
-
10
- if (!first) {
11
- return;
12
- }
13
-
14
- const combinations = getAllCombinations(...rest);
15
-
16
- return first.reduce((acc, cur) => {
17
-
18
- const newCombination = combinations ? combinations.map(combination => [ cur, ...combination ]) : [ [ cur ] ];
19
-
20
- return acc.concat(
21
- newCombination
22
- );
23
- }, []);
24
- }
25
-
26
- function capitalize(string) {
27
- return string.charAt(0).toUpperCase() + string.slice(1);
28
- }
29
-
30
- function toKebabCase(string) {
31
- return string.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
32
- }
33
-
34
-
35
- module.exports = {
36
- getAllCombinations,
37
- capitalize,
38
- toKebabCase
39
- };
1
+ /**
2
+ * Generates all possible combinations of the items in the given arrays.
3
+ *
4
+ * @param {...Array} - arrays with options to combine
5
+ * @returns {Array<Array>} array with all posible combinations of items
6
+ */
7
+ function getAllCombinations() {
8
+ const [ first, ...rest ] = arguments;
9
+
10
+ if (!first) {
11
+ return;
12
+ }
13
+
14
+ const combinations = getAllCombinations(...rest);
15
+
16
+ return first.reduce((acc, cur) => {
17
+
18
+ const newCombination = combinations ? combinations.map(combination => [ cur, ...combination ]) : [ [ cur ] ];
19
+
20
+ return acc.concat(
21
+ newCombination
22
+ );
23
+ }, []);
24
+ }
25
+
26
+ function capitalize(string) {
27
+ return string.charAt(0).toUpperCase() + string.slice(1);
28
+ }
29
+
30
+ function toKebabCase(string) {
31
+ return string.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
32
+ }
33
+
34
+
35
+ module.exports = {
36
+ getAllCombinations,
37
+ capitalize,
38
+ toKebabCase
39
+ };