import { afterTransition, getClassProperty } from "../utils"; import HSCopyMarkup from "../plugins/copy-markup/core"; import HSAccordion from "../plugins/accordion/core"; import HSCarousel from "../plugins/carousel/core"; import HSCollapse from "../plugins/collapse/core"; import HSComboBox from "../plugins/combobox/core"; import HSDataTable from "../plugins/datatable/core"; import HSDatepicker from "../plugins/datepicker/core"; import HSDropdown from "../plugins/dropdown/core"; import HSFileUpload from "../plugins/file-upload/core"; import HSInputNumber from "../plugins/input-number/core"; import HSLayoutSplitter from "../plugins/layout-splitter/core"; import HSOverlay from "../plugins/overlay/core"; import HSPinInput from "../plugins/pin-input/core"; import HSRangeSlider from "../plugins/range-slider/core"; import HSRemoveElement from "../plugins/remove-element/core"; import HSScrollNav from "../plugins/scroll-nav/core"; import HSScrollspy from "../plugins/scrollspy/core"; import HSSelect from "../plugins/select/core"; import HSStepper from "../plugins/stepper/core"; import HSStrongPassword from "../plugins/strong-password/core"; import HSTabs from "../plugins/tabs/core"; import HSTextareaAutoHeight from "../plugins/textarea-auto-height/core"; import HSThemeSwitch from "../plugins/theme-switch/core"; import HSToggleCount from "../plugins/toggle-count/core"; import HSTogglePassword from "../plugins/toggle-password/core"; import HSTooltip from "../plugins/tooltip/core"; import HSTreeView from "../plugins/tree-view/core"; import { TCollectionItem } from "./types"; const getGlobal = () => globalThis as any; const isDataTableAvailable = () => { const g = getGlobal(); return typeof g.DataTable !== "undefined" && typeof g.jQuery !== "undefined"; }; const isFileUploadAvailable = () => { const g = getGlobal(); return typeof g._ !== "undefined" && typeof g.Dropzone !== "undefined"; }; const isRangeSliderAvailable = () => { const g = getGlobal(); return typeof g.noUiSlider !== "undefined"; }; const isDatepickerAvailable = () => { const g = getGlobal(); return typeof g.VanillaCalendarPro !== "undefined"; }; export const COLLECTIONS: TCollectionItem[] = [ { key: "copy-markup", fn: HSCopyMarkup, collection: "$hsCopyMarkupCollection" }, { key: "accordion", fn: HSAccordion, collection: "$hsAccordionCollection" }, { key: "carousel", fn: HSCarousel, collection: "$hsCarouselCollection" }, { key: "collapse", fn: HSCollapse, collection: "$hsCollapseCollection" }, { key: "combobox", fn: HSComboBox, collection: "$hsComboBoxCollection" }, { key: "datatable", fn: isDataTableAvailable() ? HSDataTable : null, collection: "$hsDataTableCollection", }, { key: "datepicker", fn: isDatepickerAvailable() ? HSDatepicker : null, collection: "$hsDatepickerCollection", }, { key: "dropdown", fn: HSDropdown, collection: "$hsDropdownCollection" }, { key: "file-upload", fn: isFileUploadAvailable() ? HSFileUpload : null, collection: "$hsFileUploadCollection", }, { key: "input-number", fn: HSInputNumber, collection: "$hsInputNumberCollection" }, { key: "layout-splitter", fn: HSLayoutSplitter, collection: "$hsLayoutSplitterCollection", }, { key: "overlay", fn: HSOverlay, collection: "$hsOverlayCollection" }, { key: "pin-input", fn: HSPinInput, collection: "$hsPinInputCollection" }, { key: "range-slider", fn: isRangeSliderAvailable() ? HSRangeSlider : null, collection: "$hsRangeSliderCollection", }, { key: "remove-element", fn: HSRemoveElement, collection: "$hsRemoveElementCollection", }, { key: "scroll-nav", fn: HSScrollNav, collection: "$hsScrollNavCollection" }, { key: "scrollspy", fn: HSScrollspy, collection: "$hsScrollspyCollection" }, { key: "select", fn: HSSelect, collection: "$hsSelectCollection" }, { key: "stepper", fn: HSStepper, collection: "$hsStepperCollection" }, { key: "strong-password", fn: HSStrongPassword, collection: "$hsStrongPasswordCollection", }, { key: "tabs", fn: HSTabs, collection: "$hsTabsCollection" }, { key: "textarea-auto-height", fn: HSTextareaAutoHeight, collection: "$hsTextareaAutoHeightCollection", }, { key: "theme-switch", fn: HSThemeSwitch, collection: "$hsThemeSwitchCollection", }, { key: "toggle-count", fn: HSToggleCount, collection: "$hsToggleCountCollection" }, { key: "toggle-password", fn: HSTogglePassword, collection: "$hsTogglePasswordCollection", }, { key: "tooltip", fn: HSTooltip, collection: "$hsTooltipCollection" }, { key: "tree-view", fn: HSTreeView, collection: "$hsTreeViewCollection" }, ]; export const HSStaticMethods = { getClassProperty, afterTransition, autoInit(collection: string | string[] = "all") { if (collection === "all") { COLLECTIONS.forEach(({ fn }) => { fn?.autoInit?.(); }); return; } const target = Array.isArray(collection) ? collection : [collection]; COLLECTIONS.forEach(({ key, fn }) => { if (target.includes(key)) fn?.autoInit?.(); }); }, cleanCollection(name: string | string[] = "all") { if (typeof window === "undefined") return; if (name === "all") { COLLECTIONS.forEach(({ collection }) => { if ((window as any)[collection] instanceof Array) { (window as any)[collection] = []; } }); return; } const target = Array.isArray(name) ? name : [name]; COLLECTIONS.forEach(({ key, collection }) => { if (target.includes(key) && (window as any)[collection] instanceof Array) { (window as any)[collection] = []; } }); }, }; export default HSStaticMethods;