summaryrefslogtreecommitdiffstats
path: root/src/utils/hooks/use-add-prism-class-attr.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/hooks/use-add-prism-class-attr.tsx')
-rw-r--r--src/utils/hooks/use-add-prism-class-attr.tsx60
1 files changed, 0 insertions, 60 deletions
diff --git a/src/utils/hooks/use-add-prism-class-attr.tsx b/src/utils/hooks/use-add-prism-class-attr.tsx
deleted file mode 100644
index 7d33cc2..0000000
--- a/src/utils/hooks/use-add-prism-class-attr.tsx
+++ /dev/null
@@ -1,60 +0,0 @@
-import { useCallback, useEffect, useState } from 'react';
-
-export type AttributesMap = {
- [key: string]: string;
-};
-
-export type useAddPrismClassAttrProps = {
- attributes?: AttributesMap;
- classNames?: string;
-};
-
-/**
- * Add classnames and/or attributes to pre elements.
- *
- * @param props - An object of attributes and classnames.
- */
-const useAddPrismClassAttr = ({
- attributes,
- classNames,
-}: useAddPrismClassAttrProps) => {
- const [elements, setElements] = useState<HTMLPreElement[]>([]);
-
- useEffect(() => {
- const targetElements = document.querySelectorAll('pre');
- setElements(Array.from(targetElements));
- }, []);
-
- const setClassNameAndAttributes = useCallback(
- (array: HTMLElement[]) => {
- array.forEach((el) => {
- if (classNames) {
- const classNamesArray = classNames.split(' ');
- const isCommandLine = el.classList.contains('command-line');
- const removedClassName = isCommandLine
- ? 'line-numbers'
- : 'command-line';
- const filteredClassNames = classNamesArray.filter(
- (className) => className !== removedClassName
- );
- filteredClassNames.forEach((className) =>
- el.classList.add(className)
- );
- }
-
- if (attributes) {
- for (const [key, value] of Object.entries(attributes)) {
- el.setAttribute(key, value);
- }
- }
- });
- },
- [attributes, classNames]
- );
-
- useEffect(() => {
- if (elements.length > 0) setClassNameAndAttributes(elements);
- }, [elements, setClassNameAndAttributes]);
-};
-
-export default useAddPrismClassAttr;