PluginProbe
Block Animations, Motion & Scroll Effects – Ghost Kit / 3.3.2
Block Animations, Motion & Scroll Effects – Ghost Kit v3.3.2
3.7.2 3.7.1 3.7.0 3.6.1 trunk 1.6.3 2.25.0 3.3.0 3.3.1 3.3.2 3.3.3 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.5.0 3.5.1 3.6.0
ghostkit / gutenberg / utils / classes-replacer / index.js

index.js in Block Animations, Motion & Scroll Effects – Ghost Kit 3.3.2, at gutenberg/utils/classes-replacer/index.js

117 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import TokenList from '@wordpress/token-list';
2
3 /**
4 * Returns the active style from the given className.
5 *
6 * @param {string} className Class name
7 * @param {string} namespace The replacing class namespace.
8 * @param {bool} suffixOnly Return suffix of the class only.
9 *
10 * @return {string} The active style.
11 */
12 export function getActiveClass(className, namespace, suffixOnly) {
13 const list = new TokenList(className);
14
15 for (const activeClass of list.values()) {
16 if (activeClass.indexOf(`${namespace}-`) === -1) {
17 continue;
18 }
19
20 if (suffixOnly) {
21 return activeClass.replace(`${namespace}-`, '');
22 }
23
24 return activeClass;
25 }
26
27 return '';
28 }
29
30 /**
31 * Replaces the active class with namespace in the className.
32 *
33 * @param {string} className Class name.
34 * @param {string} namespace The replacing class namespace.
35 * @param {string} newClass The replacing class.
36 *
37 * @return {string} The updated className.
38 */
39 export function replaceClass(className, namespace, newClass) {
40 const list = new TokenList(className);
41 const namespaceRegExp = new RegExp(`${namespace}-`);
42
43 // remove classes with the same namespace.
44 for (const activeClass of list.values()) {
45 if (namespaceRegExp.test(activeClass)) {
46 list.remove(activeClass);
47 }
48 }
49
50 // add new class.
51 if (newClass) {
52 list.add(`${namespace}-${newClass}`);
53 }
54
55 return list.value;
56 }
57
58 /**
59 * Add class to the className.
60 *
61 * @param {string} className Class name.
62 * @param {string} newClass The replacing class.
63 *
64 * @return {string} The updated newClass.
65 */
66 export function addClass(className, newClass) {
67 const list = new TokenList(className);
68
69 if (newClass) {
70 list.add(newClass);
71 }
72
73 return list.value;
74 }
75
76 /**
77 * Remove class from the className.
78 *
79 * @param {string} className Class name.
80 * @param {string} classToRemove Class to remove.
81 *
82 * @return {string} The updated className.
83 */
84 export function removeClass(className, classToRemove) {
85 const list = new TokenList(className);
86
87 // remove classes with the same namespace.
88 for (const activeClass of list.values()) {
89 if (classToRemove === activeClass) {
90 list.remove(activeClass);
91 }
92 }
93
94 return list.value;
95 }
96
97 /**
98 * Check if classname exist.
99 *
100 * @param {string} className Class name.
101 * @param {string} checkClassName Class to check.
102 *
103 * @return {boolean} Is class exists.
104 */
105 export function hasClass(className, checkClassName) {
106 const list = new TokenList(className);
107
108 // remove classes with the same namespace.
109 for (const activeClass of list.values()) {
110 if (checkClassName === activeClass) {
111 return true;
112 }
113 }
114
115 return false;
116 }
117