diff --git a/charts.ts b/charts.ts index 762839f..5070b96 100755 --- a/charts.ts +++ b/charts.ts @@ -1,6 +1,6 @@ -export { AreaChart } from "@/comps/charts/area"; -export { BarChart } from "@/comps/charts/bar"; -export { DoughnutChart } from "@/comps/charts/doughnut"; -export { LineChart } from "@/comps/charts/line"; -export { PieChart } from "@/comps/charts/pie"; -export { PolarAreaChart } from "@/comps/charts/polar"; +export { AreaChart } from "lib/comps/charts/area"; +export { BarChart } from "lib/comps/charts/bar"; +export { DoughnutChart } from "lib/comps/charts/doughnut"; +export { LineChart } from "lib/comps/charts/line"; +export { PieChart } from "lib/comps/charts/pie"; +export { PolarAreaChart } from "lib/comps/charts/polar"; diff --git a/comps/charts/area.tsx b/comps/charts/area.tsx index e45d6ed..dcca000 100755 --- a/comps/charts/area.tsx +++ b/comps/charts/area.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, useEffect } from "react"; import { loadChart } from "./loader"; import type { Line } from "react-chartjs-2"; diff --git a/comps/charts/bar.tsx b/comps/charts/bar.tsx index 0fb2cbd..30b344a 100755 --- a/comps/charts/bar.tsx +++ b/comps/charts/bar.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, useEffect } from "react"; import { loadChart } from "./loader"; import type { Bar } from "react-chartjs-2"; diff --git a/comps/charts/doughnut.tsx b/comps/charts/doughnut.tsx index e3a1ce2..7f14f0c 100755 --- a/comps/charts/doughnut.tsx +++ b/comps/charts/doughnut.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, useEffect } from "react"; import { loadChart } from "./loader"; import type { Doughnut } from "react-chartjs-2"; diff --git a/comps/charts/line.tsx b/comps/charts/line.tsx index c8f768c..53f0b66 100755 --- a/comps/charts/line.tsx +++ b/comps/charts/line.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, useEffect } from "react"; import { loadChart } from "./loader"; import type { Line } from "react-chartjs-2"; diff --git a/comps/charts/pie.tsx b/comps/charts/pie.tsx index 321bf30..d03e2e7 100755 --- a/comps/charts/pie.tsx +++ b/comps/charts/pie.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, useEffect } from "react"; import { loadChart } from "./loader"; import type { Pie } from "react-chartjs-2"; diff --git a/comps/charts/polar.tsx b/comps/charts/polar.tsx index 0152e70..976f6ca 100755 --- a/comps/charts/polar.tsx +++ b/comps/charts/polar.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, useEffect } from "react"; import { loadChart } from "./loader"; import type { PolarArea } from "react-chartjs-2"; diff --git a/comps/custom/Breadcrumb.tsx b/comps/custom/Breadcrumb.tsx index 09e2672..e1640a5 100755 --- a/comps/custom/Breadcrumb.tsx +++ b/comps/custom/Breadcrumb.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, ReactNode, useEffect } from "react"; import { FieldLoading } from "../ui/field-loading"; import { ChevronLeft } from "lucide-react"; diff --git a/comps/custom/Card.tsx b/comps/custom/Card.tsx index 1903227..5cae1d6 100755 --- a/comps/custom/Card.tsx +++ b/comps/custom/Card.tsx @@ -1,7 +1,7 @@ import { FC, ReactNode, isValidElement, useEffect } from "react"; import * as card from "../ui/card"; -import { cn } from "@/utils"; -import { useLocal } from "@/utils/use-local"; +import { cn } from "lib/utils"; +import { useLocal } from "lib/utils/use-local"; import { Skeleton } from "../ui/skeleton"; export const Card: FC<{ diff --git a/comps/custom/Carousel.tsx b/comps/custom/Carousel.tsx index edae531..a96e2b9 100755 --- a/comps/custom/Carousel.tsx +++ b/comps/custom/Carousel.tsx @@ -4,7 +4,7 @@ import { CarouselNext, CarouselPrevious, Carousel as SCarousel, -} from "@/comps/ui/carousel"; +} from "lib/comps/ui/carousel"; import { FC } from "react"; export const Carousel: FC<{ list: any[] }> = ({ list }) => { diff --git a/comps/custom/Detail.tsx b/comps/custom/Detail.tsx index 48055d8..4c43cd7 100755 --- a/comps/custom/Detail.tsx +++ b/comps/custom/Detail.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { cx } from "class-variance-authority"; import { ArrowRight } from "lucide-react"; import { FC } from "react"; diff --git a/comps/custom/Header.tsx b/comps/custom/Header.tsx index 1a1b38e..3f9ddf5 100755 --- a/comps/custom/Header.tsx +++ b/comps/custom/Header.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, ReactNode, useEffect } from "react"; import { Skeleton } from "../ui/skeleton"; diff --git a/comps/custom/HeaderProfile.tsx b/comps/custom/HeaderProfile.tsx index 9230a63..bdabc95 100755 --- a/comps/custom/HeaderProfile.tsx +++ b/comps/custom/HeaderProfile.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, ReactNode, useEffect } from "react"; import { Skeleton } from "../ui/skeleton"; diff --git a/comps/custom/NavMenu.tsx b/comps/custom/NavMenu.tsx index 9c308fb..b00028a 100755 --- a/comps/custom/NavMenu.tsx +++ b/comps/custom/NavMenu.tsx @@ -6,8 +6,8 @@ import { NavigationMenuList, NavigationMenuTrigger, navigationMenuTriggerStyle, -} from "@/comps/ui/navigation-menu"; -import { useLocal } from "@/utils/use-local"; +} from "lib/comps/ui/navigation-menu"; +import { useLocal } from "lib/utils/use-local"; import get from "lodash.get"; import { FC, forwardRef } from "react"; diff --git a/comps/custom/ShowHidePanel.tsx b/comps/custom/ShowHidePanel.tsx index 0f83ddb..2e50946 100755 --- a/comps/custom/ShowHidePanel.tsx +++ b/comps/custom/ShowHidePanel.tsx @@ -1,6 +1,6 @@ import { FC, ReactNode, useEffect } from "react"; import { Tabs, TabsList, TabsTrigger } from "../ui/tabs"; -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; export const ShowHidePanel: FC<{ head: ReactNode; diff --git a/comps/custom/Tab.tsx b/comps/custom/Tab.tsx index 3b96797..56d3f5b 100755 --- a/comps/custom/Tab.tsx +++ b/comps/custom/Tab.tsx @@ -1,6 +1,6 @@ import { FC, useEffect } from "react"; import { Tabs, TabsList, TabsTrigger } from "../ui/tabs"; -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; export const Tab: FC<{ tabs: (arg: { count: (string | number)[] }) => { diff --git a/comps/custom/TitleBack.tsx b/comps/custom/TitleBack.tsx index 6de8f8a..6068b7e 100755 --- a/comps/custom/TitleBack.tsx +++ b/comps/custom/TitleBack.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { icon } from "../icon"; import { FC } from "react"; diff --git a/comps/dialog/Dialog.tsx b/comps/dialog/Dialog.tsx index 1ec6143..6b2d594 100755 --- a/comps/dialog/Dialog.tsx +++ b/comps/dialog/Dialog.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { glb } from "app/lib/goal"; import { Button } from "lib/comps/ui/button"; import { diff --git a/comps/filter/FilterContent.tsx b/comps/filter/FilterContent.tsx index a792df8..8e4ecc7 100755 --- a/comps/filter/FilterContent.tsx +++ b/comps/filter/FilterContent.tsx @@ -3,7 +3,7 @@ import { BaseForm } from "../form/base/BaseForm"; import { FilterLocal } from "./utils/types"; import { useLocal } from "lib/utils/use-local"; import { getFilter } from "./utils/get-filter"; -import { FieldLoading, FMLocal } from "lib/exports"; +import { FMLocal } from "../form/typings"; export const FilterContent: FC<{ mode: string; diff --git a/comps/filter/MasterFilter.tsx b/comps/filter/MasterFilter.tsx index 28fb173..40da57b 100755 --- a/comps/filter/MasterFilter.tsx +++ b/comps/filter/MasterFilter.tsx @@ -1,10 +1,10 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, ReactNode } from "react"; import { FMLocal, GenField } from "../form/typings"; import { FilterContent } from "./FilterContent"; import { getFilter } from "./utils/get-filter"; import { default_filter_local } from "./utils/types"; -import { FieldLoading } from "lib/exports"; +import { FieldLoading } from "../ui/field-loading"; type FilterMode = "raw" | "inline"; diff --git a/comps/filter/parser/soft-delete-filter.ts b/comps/filter/parser/soft-delete-filter.ts index 1862fd6..d0bcf68 100755 --- a/comps/filter/parser/soft-delete-filter.ts +++ b/comps/filter/parser/soft-delete-filter.ts @@ -1,4 +1,4 @@ -import { isEmptyString } from "../../../utils/is-empty-string"; +import { isEmptyString } from "lib/utils/is-empty-string"; export const softDeleteFilter = ( where: any, diff --git a/comps/form/Form.tsx b/comps/form/Form.tsx index 47018ec..e81cea3 100755 --- a/comps/form/Form.tsx +++ b/comps/form/Form.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, useEffect, useRef } from "react"; import { createPortal } from "react-dom"; import { Toaster } from "sonner"; diff --git a/comps/form/base/BaseForm.tsx b/comps/form/base/BaseForm.tsx index f09c3d2..1de2b02 100755 --- a/comps/form/base/BaseForm.tsx +++ b/comps/form/base/BaseForm.tsx @@ -1,8 +1,8 @@ -import { ReactNode, useCallback, useEffect, useState } from "react"; -import { BaseFormLocal, default_base_form_local } from "./types"; import { useLocal } from "lib/utils/use-local"; -import { FieldLocal, FieldProp, fieldType, FMLocal } from "../typings"; -import { FieldLoading } from "lib/exports"; +import { ReactNode, useCallback, useEffect } from "react"; +import { FieldLocal, FieldProp, FMLocal } from "../typings"; +import { BaseFormLocal, default_base_form_local } from "./types"; +import { FieldLoading } from "lib/comps/ui/field-loading"; export type BaseFormProps = { data: T; diff --git a/comps/form/field/Field.tsx b/comps/form/field/Field.tsx index 75ba261..2eafded 100755 --- a/comps/form/field/Field.tsx +++ b/comps/form/field/Field.tsx @@ -1,5 +1,4 @@ -import { useLocal } from "@/utils/use-local"; -import { call_prasi_events } from "lib/exports"; +import { useLocal } from "lib/utils/use-local"; import { hashSum } from "lib/utils/hash-sum"; import { FC, useEffect } from "react"; import { FieldProp } from "../typings"; @@ -7,6 +6,7 @@ import { useField } from "../utils/use-field"; import { validate } from "../utils/validate"; import { FieldInput } from "./FieldInput"; import { Label } from "./Label"; +import { call_prasi_events } from "lib/utils/prasi-events"; const prepForSum = (obj: any): any => { if (Array.isArray(obj)) { diff --git a/comps/form/field/type/TypeButton.tsx b/comps/form/field/type/TypeButton.tsx index 920b1b6..0969daf 100755 --- a/comps/form/field/type/TypeButton.tsx +++ b/comps/form/field/type/TypeButton.tsx @@ -1,6 +1,6 @@ import { FC, useEffect } from "react"; import { FMLocal, FieldLocal, FieldProp } from "../../typings"; -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import get from "lodash.get"; export const FieldButton: FC<{ diff --git a/comps/form/field/type/TypeCheckbox.tsx b/comps/form/field/type/TypeCheckbox.tsx index 12824d6..5513ea0 100755 --- a/comps/form/field/type/TypeCheckbox.tsx +++ b/comps/form/field/type/TypeCheckbox.tsx @@ -1,8 +1,7 @@ -import { useLocal } from "@/utils/use-local"; -import get from "lodash.get"; +import { useLocal } from "lib/utils/use-local"; import { FC, useEffect } from "react"; import { FMLocal, FieldLocal, FieldProp } from "../../typings"; -import { Button } from "../../../../.."; +import { Button } from "lib/comps/ui/button"; export const FieldCheckbox: FC<{ field: FieldLocal; diff --git a/comps/form/field/type/TypeCustom.tsx b/comps/form/field/type/TypeCustom.tsx index 1e52662..524ef6b 100755 --- a/comps/form/field/type/TypeCustom.tsx +++ b/comps/form/field/type/TypeCustom.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, isValidElement } from "react"; import { FMLocal, FieldLocal } from "../../typings"; diff --git a/comps/form/field/type/TypeDropdown.tsx b/comps/form/field/type/TypeDropdown.tsx index c0d4e8a..75e7c2f 100755 --- a/comps/form/field/type/TypeDropdown.tsx +++ b/comps/form/field/type/TypeDropdown.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FieldLoading } from "lib/comps/ui/field-loading"; import { Typeahead } from "lib/comps/ui/typeahead"; import { FC, useEffect } from "react"; diff --git a/comps/form/field/type/TypeInput.tsx b/comps/form/field/type/TypeInput.tsx index 931a37c..0e06365 100755 --- a/comps/form/field/type/TypeInput.tsx +++ b/comps/form/field/type/TypeInput.tsx @@ -1,5 +1,5 @@ -import { AutoHeightTextarea } from "@/comps/custom/AutoHeightTextarea"; -import { useLocal } from "@/utils/use-local"; +import { AutoHeightTextarea } from "lib/comps/custom/AutoHeightTextarea"; +import { useLocal } from "lib/utils/use-local"; import parser from "any-date-parser"; import Datepicker from "lib/comps/custom/Datepicker"; import { EyeIcon, EyeOff } from "lucide-react"; diff --git a/comps/form/field/type/TypeLink.tsx b/comps/form/field/type/TypeLink.tsx index 1d05c72..3d85e78 100755 --- a/comps/form/field/type/TypeLink.tsx +++ b/comps/form/field/type/TypeLink.tsx @@ -4,11 +4,10 @@ import { FieldLoading, Spinner } from "lib/comps/ui/field-loading"; import { hashSum } from "lib/utils/hash-sum"; import { getPathname } from "lib/utils/pathname"; import { useLocal } from "lib/utils/use-local"; -import { ArrowUpRight, Construction, Cuboid, Loader } from "lucide-react"; +import { ArrowUpRight, Construction } from "lucide-react"; import { FC, ReactNode, useEffect } from "react"; import { FMLocal, FieldLocal, FieldProp } from "../../typings"; - -const link_cache = {} as Record; +import { link_cache } from "lib/utils/fetch-link-params"; export const FieldLink: FC<{ field: FieldLocal; @@ -235,42 +234,3 @@ const navigateLink = async ( navigate(`${link.url}#lnk=${prev_link + vhash}`); return true; }; - -export const parseLink = () => { - const lnk = location.hash.split("#").find((e) => e.startsWith("lnk=")); - - if (lnk) { - const res = lnk.split("=").pop() || ""; - if (res) { - return res.split("+"); - } - } - return []; -}; - -export const lastParams = async () => { - const parsed = parseLink(); - if (parsed.length > 0) { - const res = await fetchLinkParams([parsed.pop() || ""]); - return res[0]; - } - return null; -}; - -export const fetchLinkParams = async ( - parsed_link?: ReturnType -) => { - const parsed = parsed_link || parseLink(); - - return await Promise.all( - parsed.map(async (e) => { - if (link_cache[e]) { - return link_cache[e] as LinkParam; - } - - const result = await api._kv("get", e); - link_cache[e] = result; - return result as unknown as LinkParam; - }) - ); -}; diff --git a/comps/form/field/type/TypeMoney.tsx b/comps/form/field/type/TypeMoney.tsx index 597e69e..dbd0899 100755 --- a/comps/form/field/type/TypeMoney.tsx +++ b/comps/form/field/type/TypeMoney.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, useEffect } from "react"; import { FMLocal, FieldLocal, FieldProp } from "../../typings"; import { PropTypeInput } from "./TypeInput"; diff --git a/comps/form/field/type/TypeRadio.tsx b/comps/form/field/type/TypeRadio.tsx index d6e410a..7e20b29 100755 --- a/comps/form/field/type/TypeRadio.tsx +++ b/comps/form/field/type/TypeRadio.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import get from "lodash.get"; import { FC, useEffect } from "react"; import { FMLocal, FieldLocal, FieldProp } from "../../typings"; diff --git a/comps/form/field/type/TypeRichText.tsx b/comps/form/field/type/TypeRichText.tsx index ac5af2e..3d8ec3d 100755 --- a/comps/form/field/type/TypeRichText.tsx +++ b/comps/form/field/type/TypeRichText.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import Quill from "quill"; import "quill/dist/quill.snow.css"; // Import CSS untuk tema Quill import { FC, useEffect } from "react"; diff --git a/comps/form/field/type/TypeSingleCheckbox.tsx b/comps/form/field/type/TypeSingleCheckbox.tsx index 889bd29..6cb331d 100755 --- a/comps/form/field/type/TypeSingleCheckbox.tsx +++ b/comps/form/field/type/TypeSingleCheckbox.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import get from "lodash.get"; import { FC, useEffect } from "react"; import { FMLocal, FieldLocal, FieldProp } from "../../typings"; diff --git a/comps/form/field/type/TypeSwitch.tsx b/comps/form/field/type/TypeSwitch.tsx index 5eb210b..06f0a6f 100755 --- a/comps/form/field/type/TypeSwitch.tsx +++ b/comps/form/field/type/TypeSwitch.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC } from "react"; export type PropTypeSwitch = {}; diff --git a/comps/form/field/type/TypeTag.tsx b/comps/form/field/type/TypeTag.tsx index 8a4eea5..e69a196 100755 --- a/comps/form/field/type/TypeTag.tsx +++ b/comps/form/field/type/TypeTag.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { Typeahead } from "lib/comps/ui/typeahead"; import { FC } from "react"; import { FMLocal, FieldLocal, FieldProp } from "../../typings"; diff --git a/comps/form/field/type/TypeToggle.tsx b/comps/form/field/type/TypeToggle.tsx index 27b6644..09bd3cc 100755 --- a/comps/form/field/type/TypeToggle.tsx +++ b/comps/form/field/type/TypeToggle.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import get from "lodash.get"; import { FC, useEffect } from "react"; import { FMLocal, FieldLocal, FieldProp } from "../../typings"; diff --git a/comps/form/field/type/TypeUploadMulti.tsx b/comps/form/field/type/TypeUploadMulti.tsx index 5a1235c..be4b40a 100755 --- a/comps/form/field/type/TypeUploadMulti.tsx +++ b/comps/form/field/type/TypeUploadMulti.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { Spinner } from "lib/comps/ui/field-loading"; import { Tooltip } from "lib/comps/ui/tooltip"; import get from "lodash.get"; diff --git a/comps/form/field/type/TypeUploadSingle.tsx b/comps/form/field/type/TypeUploadSingle.tsx index 558878c..1035813 100755 --- a/comps/form/field/type/TypeUploadSingle.tsx +++ b/comps/form/field/type/TypeUploadSingle.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import get from "lodash.get"; import { Loader2, Paperclip, Trash2, Upload } from "lucide-react"; import { ChangeEvent, FC } from "react"; diff --git a/comps/form/typings.ts b/comps/form/typings.ts index ce73f8e..782eb85 100755 --- a/comps/form/typings.ts +++ b/comps/form/typings.ts @@ -1,7 +1,6 @@ -import { GFCol } from "@/gen/utils"; -import { FC, MutableRefObject, ReactElement, ReactNode } from "react"; +import { GFCol } from "lib/gen/utils"; +import { FC, ReactElement, ReactNode } from "react"; import { editorFormData } from "./utils/ed-data"; -import { MDLocal } from "../md/utils/typings"; export type FMProps = { on_init: (arg: { fm: FMLocal; submit: any; reload: any }) => any; diff --git a/comps/form/utils/init.tsx b/comps/form/utils/init.tsx index 4302ea6..6d1c3f5 100755 --- a/comps/form/utils/init.tsx +++ b/comps/form/utils/init.tsx @@ -1,4 +1,4 @@ -import { parseGenField } from "@/gen/utils"; +import { parseGenField } from "lib/gen/utils"; import { MDLocal } from "lib/comps/md/utils/typings"; import { Button } from "lib/comps/ui/button"; import { toast } from "lib/comps/ui/toast"; diff --git a/comps/form/utils/use-field.tsx b/comps/form/utils/use-field.tsx index c77296b..0a0b6d7 100755 --- a/comps/form/utils/use-field.tsx +++ b/comps/form/utils/use-field.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { useEffect, useRef } from "react"; import { FieldInternal, FieldProp } from "../typings"; diff --git a/comps/import/Import.tsx b/comps/import/Import.tsx index bef5221..259d499 100755 --- a/comps/import/Import.tsx +++ b/comps/import/Import.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, useEffect } from "react"; import * as XLSX from "xlsx"; diff --git a/comps/list/ExportExcel.tsx b/comps/list/ExportExcel.tsx index bf38cb3..c05864a 100755 --- a/comps/list/ExportExcel.tsx +++ b/comps/list/ExportExcel.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { FC, MouseEvent } from "react"; // import ExcelJS from "exceljs"; diff --git a/comps/list/ImportExcel.tsx b/comps/list/ImportExcel.tsx index 8207dc9..ff7bfd7 100755 --- a/comps/list/ImportExcel.tsx +++ b/comps/list/ImportExcel.tsx @@ -1,5 +1,5 @@ -import { GFCol } from "@/gen/utils"; -import { useLocal } from "@/utils/use-local"; +import { GFCol } from "lib/gen/utils"; +import { useLocal } from "lib/utils/use-local"; import { ChangeEvent, FC, MouseEvent } from "react"; // import { Workbook } from 'exceljs'; // import * as XLSX from "xlsx"; diff --git a/comps/list/TableList.tsx b/comps/list/TableList.tsx index 1a7987e..c65d03c 100755 --- a/comps/list/TableList.tsx +++ b/comps/list/TableList.tsx @@ -1,7 +1,7 @@ -import { GFCol, parseGenField } from "@/gen/utils"; -import { cn } from "@/utils"; -import { fields_map } from "@/utils/format-value"; -import { useLocal } from "@/utils/use-local"; +import { GFCol, parseGenField } from "lib/gen/utils"; +import { cn } from "lib/utils"; +import { fields_map } from "lib/utils/format-value"; +import { useLocal } from "lib/utils/use-local"; import { set } from "lib/utils/set"; import get from "lodash.get"; import { @@ -29,17 +29,16 @@ import DataGrid, { import "react-data-grid/lib/styles.css"; import { createPortal } from "react-dom"; import { Toaster } from "sonner"; -import { call_prasi_events } from "../../.."; import { filterWhere } from "../filter/parser/filter-where"; import { getFilter } from "../filter/utils/get-filter"; import { MDLocal } from "../md/utils/typings"; import { Skeleton } from "../ui/skeleton"; import { toast } from "../ui/toast"; -import { sortTree } from "./utils/sort-tree"; import { TLList } from "./TLList"; -import { OnRowClick } from "./utils/type"; import { TLSlider } from "./TLSlider"; -import { getPathname } from "lib/exports"; +import { sortTree } from "./utils/sort-tree"; +import { OnRowClick } from "./utils/type"; +import { call_prasi_events } from "lib/utils/prasi-events"; let EMPTY_SET = new Set() as ReadonlySet; diff --git a/comps/list/Tree.tsx b/comps/list/Tree.tsx index 1c17681..cceca2d 100755 --- a/comps/list/Tree.tsx +++ b/comps/list/Tree.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { ElementType, FC, ReactElement, ReactNode, useEffect } from "react"; import { NodeRendererProps, Tree as Arborist, NodeApi } from "react-arborist"; diff --git a/comps/list/utils/export_excel.tsx b/comps/list/utils/export_excel.tsx index 74d3207..431726b 100755 --- a/comps/list/utils/export_excel.tsx +++ b/comps/list/utils/export_excel.tsx @@ -1,5 +1,5 @@ import { filterWhere } from "lib/comps/filter/parser/filter-where"; -import { call_prasi_events } from "lib/exports"; +import { call_prasi_events } from "lib/utils/prasi-events"; export const export_excel = async ({ list, diff --git a/comps/md/MasterDetail.tsx b/comps/md/MasterDetail.tsx index 24f5038..1592972 100755 --- a/comps/md/MasterDetail.tsx +++ b/comps/md/MasterDetail.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import { parseGenField } from "lib/gen/utils"; import { FC, useEffect, useRef } from "react"; import { ModeFull } from "./mode/full"; diff --git a/comps/md/gen/gen-table-list.ts b/comps/md/gen/gen-table-list.ts index 9afbd7d..81116a0 100755 --- a/comps/md/gen/gen-table-list.ts +++ b/comps/md/gen/gen-table-list.ts @@ -1,8 +1,8 @@ import { GFCol } from "lib/comps/form/gen/fields"; +import { createItem, parseGenField } from "lib/gen/utils"; import { set } from "lib/utils/set"; import capitalize from "lodash.capitalize"; import get from "lodash.get"; -import { createItem, parseGenField } from "../../../gen/utils"; import { generateSelect } from "./md-select"; import { on_load } from "./tbl-list/on_load"; diff --git a/comps/md/gen/md-gen.ts b/comps/md/gen/md-gen.ts index 5e92e81..3d21fb9 100755 --- a/comps/md/gen/md-gen.ts +++ b/comps/md/gen/md-gen.ts @@ -1,9 +1,7 @@ import { formatName, GenFn } from "lib/gen/utils"; import { generateMDForm } from "./md-form"; import { generateMDList } from "./md-list"; -import { getValueProp } from "lib/comps/form/gen/gen-rel"; -import { getProp } from "lib/utils/get-prop"; -import { propFromItem } from "lib/utils/diff-gen"; + const w = window as any; export const generateMasterDetail: GenFn<{ item: PrasiItem; diff --git a/comps/md/mode/h-split.tsx b/comps/md/mode/h-split.tsx index 442c0a0..f96510f 100755 --- a/comps/md/mode/h-split.tsx +++ b/comps/md/mode/h-split.tsx @@ -3,7 +3,7 @@ import { Panel, PanelGroup, PanelResizeHandle } from "react-resizable-panels"; import { MDMaster } from "../parts/MDMaster"; import { MDDetail } from "../parts/MDDetail"; import { MDLocal, MDRef } from "../utils/typings"; -import { getPathname } from "@/utils/pathname"; +import { getPathname } from "lib/utils/pathname"; export const ModeHSplit: FC<{ md: MDLocal; mdr: MDRef }> = ({ md, mdr }) => { return ( diff --git a/comps/md/mode/v-split.tsx b/comps/md/mode/v-split.tsx index ef487f3..7aeee88 100755 --- a/comps/md/mode/v-split.tsx +++ b/comps/md/mode/v-split.tsx @@ -3,7 +3,7 @@ import { Panel, PanelGroup, PanelResizeHandle } from "react-resizable-panels"; import { MDDetail } from "../parts/MDDetail"; import { MDMaster } from "../parts/MDMaster"; import { MDLocal, MDRef } from "../utils/typings"; -import { getPathname } from "@/utils/pathname"; +import { getPathname } from "lib/utils/pathname"; export const ModeVSplit: FC<{ md: MDLocal; mdr: MDRef }> = ({ md, mdr }) => { return ( diff --git a/comps/md/utils/md-hash.ts b/comps/md/utils/md-hash.ts index cd662ca..70a381d 100755 --- a/comps/md/utils/md-hash.ts +++ b/comps/md/utils/md-hash.ts @@ -1,4 +1,4 @@ -import { fetchLinkParams, parseLink } from "lib/comps/form/field/type/TypeLink"; +import { fetchLinkParams, parseLink } from "lib/utils/fetch-link-params"; import { MDLocal } from "./typings"; import { BreadItem } from "lib/comps/custom/Breadcrumb"; @@ -37,7 +37,7 @@ export const masterDetailParseHash = (md: MDLocal) => { } } - if (changed) { + if (changed) { md.params.links = []; md.header.loading = true; fetchLinkParams(parsed_link).then((links) => { diff --git a/comps/md/utils/typings.ts b/comps/md/utils/typings.ts index 037d63e..c81a8dd 100755 --- a/comps/md/utils/typings.ts +++ b/comps/md/utils/typings.ts @@ -1,6 +1,6 @@ -import { BreadItem } from "@/comps/custom/Breadcrumb"; -import { FMLocal } from "@/comps/form/typings"; -import { GFCol } from "@/gen/utils"; +import { BreadItem } from "lib/comps/custom/Breadcrumb"; +import { FMLocal } from "lib/comps/form/typings"; +import { GFCol } from "lib/gen/utils"; import { LinkParam } from "lib/comps/form/field/type/TypeLink"; import { ReactNode } from "react"; diff --git a/comps/sheet/sheet.tsx b/comps/sheet/sheet.tsx index 9e5d8ea..5b80125 100755 --- a/comps/sheet/sheet.tsx +++ b/comps/sheet/sheet.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import * as SheetPrimitive from "@radix-ui/react-dialog"; import { X } from "lucide-react"; import { FC, useEffect } from "react"; diff --git a/comps/ui/alert-dialog.tsx b/comps/ui/alert-dialog.tsx index eb2c28f..7ab2e96 100755 --- a/comps/ui/alert-dialog.tsx +++ b/comps/ui/alert-dialog.tsx @@ -1,8 +1,8 @@ import * as React from "react" import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog" -import { cn } from "@/utils" -import { buttonVariants } from "@/comps//ui/button" +import { cn } from "lib/utils" +import { buttonVariants } from "lib/comps//ui/button" const AlertDialog = AlertDialogPrimitive.Root diff --git a/comps/ui/badge.tsx b/comps/ui/badge.tsx index 58fef6e..6fda08b 100755 --- a/comps/ui/badge.tsx +++ b/comps/ui/badge.tsx @@ -1,7 +1,7 @@ import * as React from "react" import { cva, type VariantProps } from "class-variance-authority" -import { cn } from "@/utils" +import { cn } from "lib/utils" const badgeVariants = cva( "c-inline-flex c-items-center c-rounded-full c-border c-px-2.5 c-py-0.5 c-font-semibold c-transition-colors focus:c-outline-none focus:c-ring-2 focus:c-ring-ring focus:c-ring-offset-2", diff --git a/comps/ui/button.tsx b/comps/ui/button.tsx index 481e818..eb167a7 100755 --- a/comps/ui/button.tsx +++ b/comps/ui/button.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import { Slot } from "@radix-ui/react-slot"; import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "@/utils"; +import { cn } from "lib/utils"; const buttonVariants = cva( "button c-inline-flex c-items-center c-justify-center c-whitespace-nowrap c-rounded-md c-text-sm c-font-medium c-ring-offset-background c-transition-colors focus-visible:c-outline-none focus-visible:c-ring-2 focus-visible:c-ring-ring focus-visible:c-ring-offset-2 disabled:c-pointer-events-none disabled:c-opacity-50", diff --git a/comps/ui/card.tsx b/comps/ui/card.tsx index ed8525e..081ca9a 100755 --- a/comps/ui/card.tsx +++ b/comps/ui/card.tsx @@ -1,6 +1,6 @@ import * as React from "react" -import { cn } from "@/utils" +import { cn } from "lib/utils" const Card = React.forwardRef< HTMLDivElement, diff --git a/comps/ui/carousel.tsx b/comps/ui/carousel.tsx index 7d51928..2df8f25 100755 --- a/comps/ui/carousel.tsx +++ b/comps/ui/carousel.tsx @@ -4,8 +4,8 @@ import useEmblaCarousel, { } from "embla-carousel-react" import { ArrowLeft, ArrowRight } from "lucide-react" -import { cn } from "@/utils" -import { Button } from "@/comps/ui/button" +import { cn } from "lib/utils" +import { Button } from "lib/comps/ui/button" type CarouselApi = UseEmblaCarouselType[1] type UseCarouselParameters = Parameters diff --git a/comps/ui/dialog.tsx b/comps/ui/dialog.tsx index a597acb..c342f9a 100755 --- a/comps/ui/dialog.tsx +++ b/comps/ui/dialog.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import * as DialogPrimitive from "@radix-ui/react-dialog"; import { X } from "lucide-react"; -import { cn } from "@/utils"; +import { cn } from "lib/utils"; const Dialog = DialogPrimitive.Root; diff --git a/comps/ui/dropdown-menu.tsx b/comps/ui/dropdown-menu.tsx index 5022c1d..913c4c9 100755 --- a/comps/ui/dropdown-menu.tsx +++ b/comps/ui/dropdown-menu.tsx @@ -2,7 +2,7 @@ import * as React from "react" import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu" import { Check, ChevronRight, Circle } from "lucide-react" -import { cn } from "@/utils" +import { cn } from "lib/utils" const DropdownMenu = DropdownMenuPrimitive.Root diff --git a/comps/ui/field-loading.tsx b/comps/ui/field-loading.tsx index abdc07f..b35c5f2 100755 --- a/comps/ui/field-loading.tsx +++ b/comps/ui/field-loading.tsx @@ -1,4 +1,4 @@ -import { Skeleton } from "@/comps/ui/skeleton"; +import { Skeleton } from "lib/comps/ui/skeleton"; import { Loader2 } from "lucide-react"; import { FC } from "react"; diff --git a/comps/ui/input.tsx b/comps/ui/input.tsx index 2140747..7c065d4 100755 --- a/comps/ui/input.tsx +++ b/comps/ui/input.tsx @@ -1,6 +1,6 @@ import * as React from "react" -import { cn } from "@/utils" +import { cn } from "lib/utils" export interface InputProps extends React.InputHTMLAttributes {} diff --git a/comps/ui/label.tsx b/comps/ui/label.tsx index 33d634e..09b910b 100755 --- a/comps/ui/label.tsx +++ b/comps/ui/label.tsx @@ -2,7 +2,7 @@ import * as React from "react" import * as LabelPrimitive from "@radix-ui/react-label" import { cva, type VariantProps } from "class-variance-authority" -import { cn } from "@/utils" +import { cn } from "lib/utils" const labelVariants = cva( "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" diff --git a/comps/ui/navigation-menu.tsx b/comps/ui/navigation-menu.tsx index 6b6d76c..4d09676 100755 --- a/comps/ui/navigation-menu.tsx +++ b/comps/ui/navigation-menu.tsx @@ -3,7 +3,7 @@ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"; import { cva } from "class-variance-authority"; import { ChevronDown } from "lucide-react"; -import { cn } from "@/utils"; +import { cn } from "lib/utils"; const NavigationMenu = React.forwardRef< React.ElementRef, diff --git a/comps/ui/popover.tsx b/comps/ui/popover.tsx index a8eb193..9aebf4c 100755 --- a/comps/ui/popover.tsx +++ b/comps/ui/popover.tsx @@ -1,7 +1,7 @@ import * as React from "react" import * as PopoverPrimitive from "@radix-ui/react-popover" -import { cn } from "@/utils" +import { cn } from "lib/utils" const Popover = PopoverPrimitive.Root diff --git a/comps/ui/progress.tsx b/comps/ui/progress.tsx index 3d948b8..9ad67a4 100755 --- a/comps/ui/progress.tsx +++ b/comps/ui/progress.tsx @@ -3,7 +3,7 @@ import * as React from "react" import * as ProgressPrimitive from "@radix-ui/react-progress" -import { cn } from "@/utils" +import { cn } from "lib/utils" const Progress = React.forwardRef< React.ElementRef, diff --git a/comps/ui/scroll-area.tsx b/comps/ui/scroll-area.tsx index a748abb..dfded24 100755 --- a/comps/ui/scroll-area.tsx +++ b/comps/ui/scroll-area.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area"; -import { cn } from "@/utils"; +import { cn } from "lib/utils"; const ScrollArea = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef diff --git a/comps/ui/sheet.tsx b/comps/ui/sheet.tsx index 8f8bfde..ec94409 100755 --- a/comps/ui/sheet.tsx +++ b/comps/ui/sheet.tsx @@ -4,7 +4,7 @@ import * as React from "react"; import * as SheetPrimitive from "@radix-ui/react-dialog"; import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "@/utils"; +import { cn } from "lib/utils"; const Sheet = SheetPrimitive.Root; diff --git a/comps/ui/skeleton.tsx b/comps/ui/skeleton.tsx index bb2d84c..c7dd0b7 100755 --- a/comps/ui/skeleton.tsx +++ b/comps/ui/skeleton.tsx @@ -1,4 +1,4 @@ -import { cn } from "@/utils" +import { cn } from "lib/utils" function Skeleton({ className, diff --git a/comps/ui/slider.tsx b/comps/ui/slider.tsx index bc0c39b..262679a 100755 --- a/comps/ui/slider.tsx +++ b/comps/ui/slider.tsx @@ -1,7 +1,7 @@ import * as React from "react" import * as SliderPrimitive from "@radix-ui/react-slider" -import { cn } from "@/utils" +import { cn } from "lib/utils" const Slider = React.forwardRef< React.ElementRef, diff --git a/comps/ui/switch.tsx b/comps/ui/switch.tsx index b8b5ecc..2bc71ad 100755 --- a/comps/ui/switch.tsx +++ b/comps/ui/switch.tsx @@ -1,7 +1,7 @@ import * as React from "react" import * as SwitchPrimitives from "@radix-ui/react-switch" -import { cn } from "@/utils" +import { cn } from "lib/utils" const Switch = React.forwardRef< React.ElementRef, diff --git a/comps/ui/table.tsx b/comps/ui/table.tsx index f0442a3..9b1dbc3 100755 --- a/comps/ui/table.tsx +++ b/comps/ui/table.tsx @@ -1,6 +1,6 @@ import * as React from "react" -import { cn } from "@/utils" +import { cn } from "lib/utils" const Table = React.forwardRef< HTMLTableElement, diff --git a/comps/ui/tabs.tsx b/comps/ui/tabs.tsx index 96739a9..79ff7fa 100755 --- a/comps/ui/tabs.tsx +++ b/comps/ui/tabs.tsx @@ -1,7 +1,7 @@ import * as React from "react"; import * as TabsPrimitive from "@radix-ui/react-tabs"; -import { cn } from "@/utils"; +import { cn } from "lib/utils"; const Tabs = TabsPrimitive.Root; diff --git a/comps/ui/textarea.tsx b/comps/ui/textarea.tsx index 323e8cf..d2ff628 100755 --- a/comps/ui/textarea.tsx +++ b/comps/ui/textarea.tsx @@ -1,6 +1,6 @@ import * as React from "react" -import { cn } from "@/utils" +import { cn } from "lib/utils" export interface TextareaProps extends React.TextareaHTMLAttributes {} diff --git a/exports.tsx b/exports.tsx index aa6d33b..8b7d8aa 100755 --- a/exports.tsx +++ b/exports.tsx @@ -1,51 +1,60 @@ -import { lazify, lazifyMany } from "@/utils/lazify"; +import { lazify, lazifyMany } from "lib/utils/lazify"; export const Accordion = lazify( - async () => (await import("@/comps/ui/accordion")).Accordion + async () => (await import("lib/comps/ui/accordion")).Accordion ); export const Popover = lazify( - async () => (await import("@/comps/custom/Popover")).Popover + async () => (await import("lib/comps/custom/Popover")).Popover ); export const Progress = lazify( - async () => (await import("@/comps/ui/progress")).Progress + async () => (await import("lib/comps/ui/progress")).Progress ); export const Dialog = lazify( - async () => (await import("@/comps/ui/dialog")).Dialog + async () => (await import("lib/comps/ui/dialog")).Dialog ); export const Typeahead = lazify( - async () => (await import("@/comps/ui/typeahead")).Typeahead + async () => (await import("lib/comps/ui/typeahead")).Typeahead ); /** Master - Detail - List - Form */ export const MasterDetail = lazify( - async () => (await import("@/comps/md/MasterDetail")).MasterDetail + async () => (await import("lib/comps/md/MasterDetail")).MasterDetail ); export const MDRenderMaster = lazify( - async () => (await import("@/comps/md/parts/MDMaster")).MDRenderMaster + async () => (await import("lib/comps/md/parts/MDMaster")).MDRenderMaster ); export const MDRenderTab = lazify( - async () => (await import("@/comps/md/parts/MDDetail")).MDRenderTab + async () => (await import("lib/comps/md/parts/MDDetail")).MDRenderTab ); export const MDAction = lazify( - async () => (await import("@/comps/md/parts/MDAction")).MDAction + async () => (await import("lib/comps/md/parts/MDAction")).MDAction ); export const Breadcrumb = lazify( - async () => (await import("@/comps/custom/Breadcrumb")).Breadcrumb + async () => (await import("lib/comps/custom/Breadcrumb")).Breadcrumb ); export const TableList = lazify( - async () => (await import("@/comps/list/TableList")).TableList + async () => (await import("lib/comps/list/TableList")).TableList ); export const TableEdit = lazify( async () => - (await import("@/comps/form/field/table-edit/TableEdit")).TableEdit + (await import("lib/comps/form/field/table-edit/TableEdit")).TableEdit ); +const loading = lazifyMany({ + FieldLoading: async () => + (await import("lib/comps/ui/field-loading")).FieldLoading, + Spinner: async () => (await import("lib/comps/ui/field-loading")).Spinner, +}); + +export const FieldLoading = loading.FieldLoading; +export const Spinner = loading.Spinner; + const form = lazifyMany({ - Form: async () => (await import("@/comps/form/Form")).Form, - Field: async () => (await import("@/comps/form/field/Field")).Field, + Form: async () => (await import("lib/comps/form/Form")).Form, + Field: async () => (await import("lib/comps/form/field/Field")).Field, }); export const Form = form.Form; @@ -53,68 +62,71 @@ export const Field = form.Field; /** Export - Import */ export const ImportExcel = lazify( - async () => (await import("@/comps/list/ImportExcel")).ImportExcel + async () => (await import("lib/comps/list/ImportExcel")).ImportExcel ); export const ExportExcel = lazify( - async () => (await import("@/comps/list/ExportExcel")).ExportExcel + async () => (await import("lib/comps/list/ExportExcel")).ExportExcel ); /** Filter */ export const MasterFilter = lazify( - async () => (await import("@/comps/filter/MasterFilter")).MasterFilter + async () => (await import("lib/comps/filter/MasterFilter")).MasterFilter ); export const FilterField = lazify( - async () => (await import("@/comps/filter/FilterField")).FilterField + async () => (await import("lib/comps/filter/FilterField")).FilterField ); export const HeaderProfile = lazify( - async () => (await import("@/comps/custom/HeaderProfile")).HeaderProfile + async () => (await import("lib/comps/custom/HeaderProfile")).HeaderProfile ); /** charts */ export const BarChart = lazify( - async () => (await import("@/comps/charts/bar")).BarChart + async () => (await import("lib/comps/charts/bar")).BarChart ); export const PieChart = lazify( - async () => (await import("@/comps/charts/pie")).PieChart + async () => (await import("lib/comps/charts/pie")).PieChart ); export const DoughnutChart = lazify( - async () => (await import("@/comps/charts/doughnut")).DoughnutChart + async () => (await import("lib/comps/charts/doughnut")).DoughnutChart ); export const LineChart = lazify( - async () => (await import("@/comps/charts/line")).LineChart + async () => (await import("lib/comps/charts/line")).LineChart ); export const ScrollArea = lazify( - async () => (await import("@/comps/ui/scroll-area")).ScrollArea + async () => (await import("lib/comps/ui/scroll-area")).ScrollArea ); export const KeyValue = lazify( - async () => (await import("@/comps/form/field/type/KeyValue")).KeyValue + async () => (await import("lib/comps/form/field/type/KeyValue")).KeyValue ); export const Pop = lazify( - async () => (await import("@/comps/dialog/Dialog")).Pop + async () => (await import("lib/comps/dialog/Dialog")).Pop ); export const Import = lazify( - async () => (await import("@/comps/import/Import")).Import + async () => (await import("lib/comps/import/Import")).Import ); export const Sheet = lazify( - async () => (await import("@/comps/sheet/sheet")).SheetCn + async () => (await import("lib/comps/sheet/sheet")).SheetCn ); -export { formatBytes } from "@/comps/import/lib/formatBytes"; -export { fetchLinkParams } from "@/comps/form/field/type/TypeLink"; -export { FieldLoading, Spinner } from "@/comps/ui/field-loading"; + +export const Layout = lazify( + async () => (await import("lib/preset/menu/Layout")).Layout +); + +export { formatBytes } from "lib/comps/import/lib/formatBytes"; +export { fetchLinkParams, lastParams } from "lib/utils/fetch-link-params"; export { lang } from "lib/lang"; export { prasi_gen } from "./gen/prasi_gen"; export { guessLabel } from "./utils/guess-label"; import __get from "lodash.get"; import { sum } from "./utils/sum"; -export { ImgThumb } from "@/comps/form/field/type/FilePreview"; -export { lastParams } from "@/comps/form/field/type/TypeLink"; +export { ImgThumb } from "lib/comps/form/field/type/FilePreview"; export { _post } from "./utils/post"; export { toast, Toaster } from "./comps/ui/toast"; export { NavLink } from "./comps/popup/NavLink"; @@ -126,70 +138,56 @@ export const _sum = sum; export const _get = __get; /** Generator */ -export { generateFilter as genereteFilter } from "@/comps/filter/gen/gen-filter"; -export { generateRelation } from "@/comps/form/gen/gen-rel"; -export { genTableEdit } from "@/comps/form/gen/gen-table-edit"; -export { generateMasterDetail } from "@/comps/md/gen/md-gen"; -export { parseGenField } from "@/gen/utils"; +export { generateFilter as genereteFilter } from "lib/comps/filter/gen/gen-filter"; +export { generateRelation } from "lib/comps/form/gen/gen-rel"; +export { genTableEdit } from "lib/comps/form/gen/gen-table-edit"; +export { generateMasterDetail } from "lib/comps/md/gen/md-gen"; +export { parseGenField } from "lib/gen/utils"; -/** ETC */ -export { filterModifier } from "@/comps/filter/utils/filter-modifier"; -export { generateField } from "@/comps/form/gen/gen-field"; -export { generateForm } from "@/comps/form/gen/gen-form"; -export { validate as validateField } from "@/comps/form/utils/validate"; -export { sortTree, treePrefix } from "@/comps/list/utils/sort-tree"; - -export { getFilter } from "@/comps/filter/utils/get-filter"; +/** ETC */ +export { filterModifier } from "lib/comps/filter/utils/filter-modifier"; +export { generateField } from "lib/comps/form/gen/gen-field"; +export { generateForm } from "lib/comps/form/gen/gen-form"; +export { validate as validateField } from "lib/comps/form/utils/validate"; +export { sortTree, treePrefix } from "lib/comps/list/utils/sort-tree"; + +export { getFilter } from "lib/comps/filter/utils/get-filter"; export type { fieldType, FieldTypeCustom, FMLocal, formType, -} from "@/comps/form/typings"; -export type { TableListType } from "@/comps/list/utils/typings"; -export { generateTableList as generateTableList } from "@/comps/md/gen/gen-table-list"; -export { generateSelect } from "@/comps/md/gen/md-select"; -export { MasterDetailType } from "@/comps/md/utils/typings"; -export { Button, FloatButton } from "@/comps/ui/button"; -export { baseurl, imgThumb } from "@/utils/baseurl"; -export { FormatValue } from "@/utils/format-value"; -export { GetValue } from "@/utils/get-value"; -export { password } from "@/utils/password"; +} from "lib/comps/form/typings"; +export type { TableListType } from "lib/comps/list/utils/typings"; +export { generateTableList as generateTableList } from "lib/comps/md/gen/gen-table-list"; +export { generateSelect } from "lib/comps/md/gen/md-select"; +export { MasterDetailType } from "lib/comps/md/utils/typings"; +export { Button, FloatButton } from "lib/comps/ui/button"; +export { baseurl, imgThumb } from "lib/utils/baseurl"; +export { FormatValue } from "lib/utils/format-value"; +export { GetValue } from "lib/utils/get-value"; +export { password } from "lib/utils/password"; export { call_prasi_events, prasi_events } from "lib/utils/prasi-events"; - -/** Session */ -export { Login } from "@/preset/login/Login"; -export { generateLogin } from "@/preset/login/utils/generate"; -export { logout } from "@/preset/login/utils/logout"; -export type { RG } from "@/preset/login/utils/register"; -export { registerSession } from "@/preset/login/utils/register"; -export type { UserSession } from "@/preset/login/utils/register"; - -export { Card } from "@/comps/custom/Card"; - -/** Layout */ -export { Layout } from "@/preset/menu/Layout"; +export { Card } from "lib/comps/custom/Card"; /* MENU */ -export { Menu, MenuIcon } from "@/preset/menu/Menu"; +export { Menu, MenuIcon } from "lib/preset/menu/Menu"; /*Panel Tab*/ -export { ShowHidePanel } from "@/comps/custom/ShowHidePanel"; -export { PanelBody } from "@/comps/tab/parts/PanelBody"; -export { PanelHeader } from "@/comps/tab/parts/PanelHead"; -export { PanelTab } from "@/comps/tab/parts/PanelTab"; +export { ShowHidePanel } from "lib/comps/custom/ShowHidePanel"; +export { PanelBody } from "lib/comps/tab/parts/PanelBody"; +export { PanelHeader } from "lib/comps/tab/parts/PanelHead"; +export { PanelTab } from "lib/comps/tab/parts/PanelTab"; /*Popup*/ -export { Popup } from "@/comps/popup/PopUp"; +export { Popup } from "lib/comps/popup/PopUp"; -export { Detail } from "@/comps/custom/Detail"; -export * from "@/comps/ui/input"; -export { ButtonUpload } from "@/preset/profile/ButtonUpload"; -export { Profile } from "@/preset/profile/Profile"; -export { generateProfile } from "@/preset/profile/utils/generate"; -export { formatTime, longDate, shortDate, timeAgo } from "@/utils/date"; -export { getBasename, getPathname } from "@/utils/pathname"; +export { Detail } from "lib/comps/custom/Detail"; +export * from "lib/comps/ui/input"; +export { ButtonUpload } from "lib/preset/profile/ButtonUpload"; +export { Profile } from "lib/preset/profile/Profile"; +export { generateProfile } from "lib/preset/profile/utils/generate"; +export { formatTime, longDate, shortDate, timeAgo } from "lib/utils/date"; +export { getBasename, getPathname } from "lib/utils/pathname"; -export { Flow } from "@/comps/ui/flow"; - -export { formatMoney } from "@/comps/form/field/type/TypeMoney"; +export { formatMoney } from "lib/comps/form/field/type/TypeMoney"; diff --git a/gen/prop/gen_prop_fields.ts b/gen/prop/gen_prop_fields.ts index 4b4e797..b86ec65 100755 --- a/gen/prop/gen_prop_fields.ts +++ b/gen/prop/gen_prop_fields.ts @@ -1,4 +1,4 @@ -import { get as kget, set as kset } from "@/utils/idb-keyval"; +import { get as kget, set as kset } from "lib/utils/idb-keyval"; const single = {} as Record< string, diff --git a/preset/login/Login.tsx b/preset/login/Login.tsx index d78f637..ace5ab2 100755 --- a/preset/login/Login.tsx +++ b/preset/login/Login.tsx @@ -1,8 +1,8 @@ -import { getBasename } from "lib/exports"; import { useLocal } from "lib/utils/use-local"; import { FC } from "react"; import { FieldLoading } from "../../.."; import { loadSession } from "./utils/load"; +import { getBasename } from "lib/utils/pathname"; const w = window as unknown as { user: any; diff --git a/preset/menu/Layout.tsx b/preset/menu/Layout.tsx index 60f691e..d639f24 100755 --- a/preset/menu/Layout.tsx +++ b/preset/menu/Layout.tsx @@ -1,11 +1,9 @@ -import { LinkParam } from "lib/comps/form/field/type/TypeLink"; -import { FieldLoading } from "lib/exports"; -import { hashSum } from "lib/utils/hash-sum"; +import { overrideNav } from "lib/utils/override-nav"; import { getPathname } from "lib/utils/pathname"; import { useLocal } from "lib/utils/use-local"; import { FC, ReactNode, useLayoutEffect } from "react"; import { loadSession } from "../login/utils/load"; -import { overrideNav } from "lib/utils/override-nav"; +import { FieldLoading } from "lib/comps/ui/field-loading"; const w = window as any; const initResponsive = function () { diff --git a/preset/profile/ButtonUpload.tsx b/preset/profile/ButtonUpload.tsx index cb8121a..5e4156c 100755 --- a/preset/profile/ButtonUpload.tsx +++ b/preset/profile/ButtonUpload.tsx @@ -1,4 +1,4 @@ -import { useLocal } from "@/utils/use-local"; +import { useLocal } from "lib/utils/use-local"; import get from "lodash.get"; import { FC, ReactNode } from "react"; export const ButtonUpload: FC<{ diff --git a/preset/profile/utils/generate.ts b/preset/profile/utils/generate.ts index e4d7a8b..35edb60 100755 --- a/preset/profile/utils/generate.ts +++ b/preset/profile/utils/generate.ts @@ -1,4 +1,4 @@ -import { select } from "@/preset/login/utils/select"; +import { select } from "lib/preset/login/utils/select"; import { set } from "lib/utils/set"; import get from "lodash.get"; diff --git a/utils/fetch-link-params.ts b/utils/fetch-link-params.ts new file mode 100644 index 0000000..a40beef --- /dev/null +++ b/utils/fetch-link-params.ts @@ -0,0 +1,41 @@ +import type { LinkParam } from "lib/comps/form/field/type/TypeLink"; +export const link_cache = {} as Record; + +export const fetchLinkParams = async ( + parsed_link?: ReturnType +) => { + const parsed = parsed_link || parseLink(); + + return await Promise.all( + parsed.map(async (e) => { + if (link_cache[e]) { + return link_cache[e] as LinkParam; + } + + const result = await api._kv("get", e); + link_cache[e] = result; + return result as unknown as LinkParam; + }) + ); +}; + +export const parseLink = () => { + const lnk = location.hash.split("#").find((e) => e.startsWith("lnk=")); + + if (lnk) { + const res = lnk.split("=").pop() || ""; + if (res) { + return res.split("+"); + } + } + return []; +}; + +export const lastParams = async () => { + const parsed = parseLink(); + if (parsed.length > 0) { + const res = await fetchLinkParams([parsed.pop() || ""]); + return res[0]; + } + return null; +}; diff --git a/utils/format-value.tsx b/utils/format-value.tsx index ec60443..dc40f7b 100755 --- a/utils/format-value.tsx +++ b/utils/format-value.tsx @@ -1,4 +1,4 @@ -import { GFCol } from "@/gen/utils"; +import { GFCol } from "lib/gen/utils"; import dayjs from "dayjs"; import { formatDate } from "lib/comps/custom/Datepicker/helpers"; import { FilePreview } from "lib/comps/form/field/type/FilePreview"; diff --git a/utils/get-value.tsx b/utils/get-value.tsx index a67d5dc..ed72ab0 100755 --- a/utils/get-value.tsx +++ b/utils/get-value.tsx @@ -1,4 +1,4 @@ -import { GFCol } from "@/gen/utils"; +import { GFCol } from "lib/gen/utils"; import get from "lodash.get"; import { FC } from "react"; diff --git a/utils/password.ts b/utils/password.ts index 7ce37f9..d5fa1fb 100755 --- a/utils/password.ts +++ b/utils/password.ts @@ -1,4 +1,4 @@ -import * as _bcrypt from "@/utils/bcrypt"; +import * as _bcrypt from "lib/utils/bcrypt"; export const bcrypt = _bcrypt; export const hashPassword = (pass: string) => {