pillardash-ui-react 0.1.131 → 0.1.138
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.
- package/README.md +54 -46
- package/dist/cjs/_virtual/_commonjsHelpers.js +2 -0
- package/dist/cjs/_virtual/_commonjsHelpers.js.map +1 -0
- package/dist/cjs/_virtual/index.js +2 -0
- package/dist/cjs/_virtual/index.js.map +1 -0
- package/dist/cjs/_virtual/index2.js +2 -0
- package/dist/cjs/_virtual/index2.js.map +1 -0
- package/dist/cjs/components/Alert/Alert.js +2 -0
- package/dist/cjs/components/Alert/Alert.js.map +1 -0
- package/dist/cjs/components/Alert/AlertContext.js +2 -0
- package/dist/cjs/components/Alert/AlertContext.js.map +1 -0
- package/dist/cjs/components/Alert/ConfirmDialog.js +2 -0
- package/dist/cjs/components/Alert/ConfirmDialog.js.map +1 -0
- package/dist/cjs/components/Alert/ConfirmationAlert.js +2 -0
- package/dist/cjs/components/Alert/ConfirmationAlert.js.map +1 -0
- package/dist/cjs/components/Badge/Badge.js +2 -0
- package/dist/cjs/components/Badge/Badge.js.map +1 -0
- package/dist/cjs/components/Breadcrumb/Breadcrumb.js +2 -0
- package/dist/cjs/components/Breadcrumb/Breadcrumb.js.map +1 -0
- package/dist/cjs/components/Button/Button.js +2 -0
- package/dist/cjs/components/Button/Button.js.map +1 -0
- package/dist/cjs/components/Button/ExportButton.js +2 -0
- package/dist/cjs/components/Button/ExportButton.js.map +1 -0
- package/dist/cjs/components/Cards/Card.js +2 -0
- package/dist/cjs/components/Cards/Card.js.map +1 -0
- package/dist/cjs/components/Cards/EmptyStateCard.js +2 -0
- package/dist/cjs/components/Cards/EmptyStateCard.js.map +1 -0
- package/dist/cjs/components/Document/FileView.js +2 -0
- package/dist/cjs/components/Document/FileView.js.map +1 -0
- package/dist/cjs/components/Form/CheckBox/CheckBox.js +2 -0
- package/dist/cjs/components/Form/CheckBox/CheckBox.js.map +1 -0
- package/dist/cjs/components/Form/FileUpload/FileUpload.js +2 -0
- package/dist/cjs/components/Form/FileUpload/FileUpload.js.map +1 -0
- package/dist/cjs/components/Form/Input/DateTimePicker.js +2 -0
- package/dist/cjs/components/Form/Input/DateTimePicker.js.map +1 -0
- package/dist/cjs/components/Form/Input/Input.js +2 -0
- package/dist/cjs/components/Form/Input/Input.js.map +1 -0
- package/dist/cjs/components/Form/Input/InputWithPrefix.js +2 -0
- package/dist/cjs/components/Form/Input/InputWithPrefix.js.map +1 -0
- package/dist/cjs/components/Form/Input/TagInput.js +2 -0
- package/dist/cjs/components/Form/Input/TagInput.js.map +1 -0
- package/dist/cjs/components/Form/Search/Search.js +2 -0
- package/dist/cjs/components/Form/Search/Search.js.map +1 -0
- package/dist/cjs/components/Form/Select/Select.js +2 -0
- package/dist/cjs/components/Form/Select/Select.js.map +1 -0
- package/dist/cjs/components/Form/Select/SelectButton.js +2 -0
- package/dist/cjs/components/Form/Select/SelectButton.js.map +1 -0
- package/dist/cjs/components/Form/TextEditor/TextEditor.js +2 -0
- package/dist/cjs/components/Form/TextEditor/TextEditor.js.map +1 -0
- package/dist/cjs/components/Loading/Loading.js +2 -0
- package/dist/cjs/components/Loading/Loading.js.map +1 -0
- package/dist/cjs/components/Modal/Modal.js +2 -0
- package/dist/cjs/components/Modal/Modal.js.map +1 -0
- package/dist/cjs/components/SkeletonLoader/SkeletonLoader.js +2 -0
- package/dist/cjs/components/SkeletonLoader/SkeletonLoader.js.map +1 -0
- package/dist/cjs/components/SkeletonLoader/index.js +2 -0
- package/dist/cjs/components/SkeletonLoader/index.js.map +1 -0
- package/dist/cjs/components/Table/Pagination.js +2 -0
- package/dist/cjs/components/Table/Pagination.js.map +1 -0
- package/dist/cjs/components/Table/Table.js +2 -0
- package/dist/cjs/components/Table/Table.js.map +1 -0
- package/dist/cjs/components/Table/TableDropdown.js +2 -0
- package/dist/cjs/components/Table/TableDropdown.js.map +1 -0
- package/dist/cjs/components/Table/TableSkeleton.js +2 -0
- package/dist/cjs/components/Table/TableSkeleton.js.map +1 -0
- package/dist/cjs/components/Tooltip/Tooltip.js +2 -0
- package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/core/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/core/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js +2 -0
- package/dist/cjs/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-bold/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-bold/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-bullet-list/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-bullet-list/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-code/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-code/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-code-block/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-code-block/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-document/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-document/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-heading/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-heading/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-italic/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-italic/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-list/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-list/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-list-item/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-list-item/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-ordered-list/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-ordered-list/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-paragraph/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-paragraph/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-strike/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-strike/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/@tiptap/extension-text/dist/index.js +2 -0
- package/dist/cjs/node_modules/@tiptap/extension-text/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/classnames/index.js +7 -0
- package/dist/cjs/node_modules/classnames/index.js.map +1 -0
- package/dist/cjs/node_modules/orderedmap/dist/index.js +2 -0
- package/dist/cjs/node_modules/orderedmap/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/prosemirror-commands/dist/index.js +2 -0
- package/dist/cjs/node_modules/prosemirror-commands/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/prosemirror-model/dist/index.js +2 -0
- package/dist/cjs/node_modules/prosemirror-model/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/prosemirror-schema-list/dist/index.js +2 -0
- package/dist/cjs/node_modules/prosemirror-schema-list/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/prosemirror-state/dist/index.js +2 -0
- package/dist/cjs/node_modules/prosemirror-state/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/prosemirror-transform/dist/index.js +2 -0
- package/dist/cjs/node_modules/prosemirror-transform/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/tslib/tslib.es6.js +2 -0
- package/dist/cjs/node_modules/tslib/tslib.es6.js.map +1 -0
- package/dist/esm/_virtual/_commonjsHelpers.mjs +2 -0
- package/dist/esm/_virtual/_commonjsHelpers.mjs.map +1 -0
- package/dist/esm/_virtual/index.mjs +2 -0
- package/dist/esm/_virtual/index.mjs.map +1 -0
- package/dist/esm/_virtual/index2.mjs +2 -0
- package/dist/esm/_virtual/index2.mjs.map +1 -0
- package/dist/esm/components/Alert/Alert.mjs +2 -0
- package/dist/esm/components/Alert/Alert.mjs.map +1 -0
- package/dist/esm/components/Alert/AlertContext.mjs +2 -0
- package/dist/esm/components/Alert/AlertContext.mjs.map +1 -0
- package/dist/esm/components/Alert/ConfirmDialog.mjs +2 -0
- package/dist/esm/components/Alert/ConfirmDialog.mjs.map +1 -0
- package/dist/esm/components/Alert/ConfirmationAlert.mjs +2 -0
- package/dist/esm/components/Alert/ConfirmationAlert.mjs.map +1 -0
- package/dist/esm/components/Badge/Badge.mjs +2 -0
- package/dist/esm/components/Badge/Badge.mjs.map +1 -0
- package/dist/esm/components/Breadcrumb/Breadcrumb.mjs +2 -0
- package/dist/esm/components/Breadcrumb/Breadcrumb.mjs.map +1 -0
- package/dist/esm/components/Button/Button.mjs +2 -0
- package/dist/esm/components/Button/Button.mjs.map +1 -0
- package/dist/esm/components/Button/ExportButton.mjs +2 -0
- package/dist/esm/components/Button/ExportButton.mjs.map +1 -0
- package/dist/esm/components/Cards/Card.mjs +2 -0
- package/dist/esm/components/Cards/Card.mjs.map +1 -0
- package/dist/esm/components/Cards/EmptyStateCard.mjs +2 -0
- package/dist/esm/components/Cards/EmptyStateCard.mjs.map +1 -0
- package/dist/esm/components/Document/FileView.mjs +2 -0
- package/dist/esm/components/Document/FileView.mjs.map +1 -0
- package/dist/esm/components/Form/CheckBox/CheckBox.mjs +2 -0
- package/dist/esm/components/Form/CheckBox/CheckBox.mjs.map +1 -0
- package/dist/esm/components/Form/FileUpload/FileUpload.mjs +2 -0
- package/dist/esm/components/Form/FileUpload/FileUpload.mjs.map +1 -0
- package/dist/esm/components/Form/Input/DateTimePicker.mjs +2 -0
- package/dist/esm/components/Form/Input/DateTimePicker.mjs.map +1 -0
- package/dist/esm/components/Form/Input/Input.mjs +2 -0
- package/dist/esm/components/Form/Input/Input.mjs.map +1 -0
- package/dist/esm/components/Form/Input/InputWithPrefix.mjs +2 -0
- package/dist/esm/components/Form/Input/InputWithPrefix.mjs.map +1 -0
- package/dist/esm/components/Form/Input/TagInput.mjs +2 -0
- package/dist/esm/components/Form/Input/TagInput.mjs.map +1 -0
- package/dist/esm/components/Form/Search/Search.mjs +2 -0
- package/dist/esm/components/Form/Search/Search.mjs.map +1 -0
- package/dist/esm/components/Form/Select/Select.mjs +2 -0
- package/dist/esm/components/Form/Select/Select.mjs.map +1 -0
- package/dist/esm/components/Form/Select/SelectButton.mjs +2 -0
- package/dist/esm/components/Form/Select/SelectButton.mjs.map +1 -0
- package/dist/esm/components/Form/TextEditor/TextEditor.mjs +2 -0
- package/dist/esm/components/Form/TextEditor/TextEditor.mjs.map +1 -0
- package/dist/esm/components/Loading/Loading.mjs +2 -0
- package/dist/esm/components/Loading/Loading.mjs.map +1 -0
- package/dist/esm/components/Modal/Modal.mjs +2 -0
- package/dist/esm/components/Modal/Modal.mjs.map +1 -0
- package/dist/esm/components/SkeletonLoader/SkeletonLoader.mjs +2 -0
- package/dist/esm/components/SkeletonLoader/SkeletonLoader.mjs.map +1 -0
- package/dist/esm/components/SkeletonLoader/index.mjs +2 -0
- package/dist/esm/components/SkeletonLoader/index.mjs.map +1 -0
- package/dist/esm/components/Table/Pagination.mjs +2 -0
- package/dist/esm/components/Table/Pagination.mjs.map +1 -0
- package/dist/esm/components/Table/Table.mjs +2 -0
- package/dist/esm/components/Table/Table.mjs.map +1 -0
- package/dist/esm/components/Table/TableDropdown.mjs +2 -0
- package/dist/esm/components/Table/TableDropdown.mjs.map +1 -0
- package/dist/esm/components/Table/TableSkeleton.mjs +2 -0
- package/dist/esm/components/Table/TableSkeleton.mjs.map +1 -0
- package/dist/esm/components/Tooltip/Tooltip.mjs +2 -0
- package/dist/esm/components/Tooltip/Tooltip.mjs.map +1 -0
- package/dist/esm/index.mjs +2 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/core/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/core/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-bold/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-bold/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-bullet-list/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-bullet-list/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-code/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-code/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-code-block/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-code-block/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-document/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-document/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-heading/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-heading/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-italic/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-italic/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-list/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-list/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-list-item/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-list-item/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-ordered-list/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-ordered-list/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-paragraph/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-paragraph/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-strike/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-strike/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/@tiptap/extension-text/dist/index.mjs +2 -0
- package/dist/esm/node_modules/@tiptap/extension-text/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/classnames/index.mjs +7 -0
- package/dist/esm/node_modules/classnames/index.mjs.map +1 -0
- package/dist/esm/node_modules/orderedmap/dist/index.mjs +2 -0
- package/dist/esm/node_modules/orderedmap/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/prosemirror-commands/dist/index.mjs +2 -0
- package/dist/esm/node_modules/prosemirror-commands/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/prosemirror-model/dist/index.mjs +2 -0
- package/dist/esm/node_modules/prosemirror-model/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/prosemirror-schema-list/dist/index.mjs +2 -0
- package/dist/esm/node_modules/prosemirror-schema-list/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/prosemirror-state/dist/index.mjs +2 -0
- package/dist/esm/node_modules/prosemirror-state/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/prosemirror-transform/dist/index.mjs +2 -0
- package/dist/esm/node_modules/prosemirror-transform/dist/index.mjs.map +1 -0
- package/dist/esm/node_modules/tslib/tslib.es6.mjs +2 -0
- package/dist/esm/node_modules/tslib/tslib.es6.mjs.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/styles.css +1 -0
- package/package.json +63 -17
- package/dist/index.js +0 -51
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -51
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Table.js","sources":["../../../../src/components/Table/Table.tsx"],"sourcesContent":["import {ReactNode, useMemo, useState} from \"react\";\nimport {ArrowDown, ArrowUp, ArrowUpDown, ChevronDown, ChevronRight} from \"lucide-react\";\n\nimport { Pagination } from \"./Pagination\";\nimport {ExpandableTableProps, Column} from \"./types\";\nimport { TableSkeleton } from \"./TableSkeleton\";\nimport { EmptyStateCard } from \"../Cards\";\nimport React from \"react\";\n\ntype SortOrder = \"asc\" | \"desc\" | null;\n\nexport default function Table<T>({\n data,\n columns,\n itemsPerPage = 20,\n onViewChange,\n totalItems,\n currentPage = 1,\n onPageChange,\n loading = false,\n showPagination = true,\n onRowClick,\n useCardLayout = false,\n emptyState,\n expandableRows = false,\n expandedRowRender,\n onRowToggle,\n defaultExpandedRows = new Set(),\n getRowKey = (item: T, index: number) => index,\n paginationMeta,\n defaultSortKey,\n defaultSortOrder = \"asc\",\n onSort,\n}: ExpandableTableProps<T>) {\n const [expandedRows, setExpandedRows] =\n useState<Set<string | number>>(defaultExpandedRows);\n const [sortKey, setSortKey] = useState<string | null>(defaultSortKey || null);\n const [sortOrder, setSortOrder] = useState<SortOrder>(\n defaultSortKey ? defaultSortOrder : null,\n );\n\n // Pagination calculations\n const totalItemsCount = paginationMeta?.total || totalItems || data.length;\n const totalPages =\n paginationMeta?.last_page || Math.ceil(totalItemsCount / itemsPerPage);\n const currentPageNumber = paginationMeta?.current_page || currentPage;\n const perPage = paginationMeta?.per_page || itemsPerPage;\n\n // Sorting logic\n const sortedData = useMemo(() => {\n if (!sortKey || !sortOrder) return data;\n\n const sorted = [...data].sort((a, b) => {\n const column = columns.find(\n (col) => (col.sortKey || col.value) === sortKey,\n );\n if (!column) return 0;\n\n let aValue: any;\n let bValue: any;\n\n if (typeof column.value === \"function\") {\n // For function-based columns, use the sortKey to get raw values\n aValue = (a as any)[sortKey];\n bValue = (b as any)[sortKey];\n } else {\n aValue = a[column.value];\n bValue = b[column.value];\n }\n\n // Handle null/undefined\n if (aValue == null && bValue == null) return 0;\n if (aValue == null) return 1;\n if (bValue == null) return -1;\n\n // Handle different types\n if (typeof aValue === \"string\" && typeof bValue === \"string\") {\n return sortOrder === \"asc\"\n ? aValue.localeCompare(bValue)\n : bValue.localeCompare(aValue);\n }\n\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n return sortOrder === \"asc\" ? aValue - bValue : bValue - aValue;\n }\n\n // Default comparison\n return sortOrder === \"asc\"\n ? String(aValue).localeCompare(String(bValue))\n : String(bValue).localeCompare(String(aValue));\n });\n\n return sorted;\n }, [data, sortKey, sortOrder, columns]);\n\n const currentItems = sortedData;\n\n // Sorting handler\n const handleSort = (column: Column<T>) => {\n if (!column.sortable) return;\n\n const key = String(column.sortKey || column.value);\n let newOrder: SortOrder = \"asc\";\n\n if (sortKey === key) {\n if (sortOrder === \"asc\") newOrder = \"desc\";\n else if (sortOrder === \"desc\") newOrder = null;\n else newOrder = \"asc\";\n }\n\n setSortKey(newOrder ? key : null);\n setSortOrder(newOrder);\n\n if (onSort && newOrder) {\n onSort(key, newOrder);\n }\n };\n\n const getSortIcon = (column: Column<T>) => {\n if (!column.sortable) return null;\n\n const key = String(column.sortKey || column.value);\n if (sortKey !== key) {\n return <ArrowUpDown size={14} className=\"text-gray-400\" />;\n }\n\n return sortOrder === \"asc\" ? (\n <ArrowUp size={14} className=\"text-blue-600\" />\n ) : (\n <ArrowDown size={14} className=\"text-blue-600\" />\n );\n };\n\n // Row expansion logic\n const handleRowClick = (item: T, index: number) => {\n if (expandableRows && expandedRowRender) {\n toggleRow(item, index);\n } else if (onRowClick) {\n onRowClick(item);\n }\n };\n\n const toggleRow = (item: T, index: number) => {\n const rowKey = getRowKey(item, index);\n const newExpandedRows = new Set(expandedRows);\n const isCurrentlyExpanded = expandedRows.has(rowKey);\n\n if (isCurrentlyExpanded) {\n newExpandedRows.delete(rowKey);\n } else {\n newExpandedRows.add(rowKey);\n }\n\n setExpandedRows(newExpandedRows);\n\n if (onRowToggle) {\n onRowToggle(item, !isCurrentlyExpanded);\n }\n };\n\n const isRowExpanded = (item: T, index: number) => {\n const rowKey = getRowKey(item, index);\n return expandedRows.has(rowKey);\n };\n\n const defaultEmptyState = <EmptyStateCard title=\"No Record found\" />;\n\n const getAlignmentClass = (align?: \"left\" | \"center\" | \"right\") => {\n switch (align) {\n case \"center\":\n return \"text-center\";\n case \"right\":\n return \"text-right\";\n default:\n return \"text-left\";\n }\n };\n\n // Card Layout Renderer\n const renderCardLayout = () => (\n <div className=\"grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\">\n {loading &&\n Array.from({ length: perPage }).map((_, index) => (\n <div\n key={index}\n className=\"bg-white rounded-lg border border-gray-200 p-4 animate-pulse\"\n >\n <div className=\"space-y-3\">\n {columns.slice(0, 3).map((_, colIndex) => (\n <div\n key={colIndex}\n className=\"flex justify-between items-center\"\n >\n <div className=\"h-4 bg-gray-200 rounded w-1/3\"></div>\n <div className=\"h-4 bg-gray-200 rounded w-1/2\"></div>\n </div>\n ))}\n </div>\n </div>\n ))}\n {currentItems.length > 0\n ? currentItems.map((item: T, rowIndex) => {\n const expanded = isRowExpanded(item, rowIndex);\n return (\n <div\n key={rowIndex}\n className=\"bg-white rounded-lg border border-gray-200\"\n >\n <div\n onClick={() => handleRowClick(item, rowIndex)}\n className={`p-4 transition-all duration-200 hover:shadow-md hover:border-gray-300 ${\n onRowClick || expandableRows ? \"cursor-pointer\" : \"\"\n } ${loading ? \"opacity-50\" : \"\"} ${\n expandableRows\n ? \"border-b border-gray-100 last:border-b-0\"\n : \"\"\n }`}\n >\n <div className=\"space-y-3\">\n {expandableRows && (\n <div className=\"flex items-center justify-between mb-2\">\n <div className=\"flex items-center text-sm text-gray-500\">\n {expanded ? (\n <ChevronDown size={16} className=\"mr-1\" />\n ) : (\n <ChevronRight size={16} className=\"mr-1\" />\n )}\n <span>\n {expanded ? \"Hide details\" : \"Show details\"}\n </span>\n </div>\n </div>\n )}\n {columns.map((column, colIndex) => (\n <div\n key={colIndex}\n className=\"flex justify-between items-start\"\n >\n <span className=\"text-sm font-medium text-gray-500 flex-shrink-0 mr-3\">\n {column.title}:\n </span>\n <span className=\"text-sm text-gray-800 text-right\">\n {typeof column.value === \"function\"\n ? column.value(item)\n : (item[column.value] as ReactNode)}\n </span>\n </div>\n ))}\n </div>\n </div>\n {expandableRows && expanded && expandedRowRender && (\n <div className=\"p-4 bg-gray-50 border-t border-gray-100 rounded-b-lg\">\n {expandedRowRender(item)}\n </div>\n )}\n </div>\n );\n })\n : !loading && (\n <div className=\"col-span-full\">\n {emptyState || defaultEmptyState}\n </div>\n )}\n </div>\n );\n\n // Table Layout Renderer\n const renderTableLayout = () => (\n <div className=\"relative overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr>\n {expandableRows && (\n <th className=\"bg-gray-100 px-6 py-3 text-left text-sm font-semibold tracking-wider text-gray-500 w-12 rounded-bl-xl rounded-tl-xl\">\n {/* Toggle column */}\n </th>\n )}\n {columns.map((column, index) => (\n <th\n key={index}\n onClick={() => handleSort(column)}\n className={`bg-gray-100 px-6 py-3 text-sm font-semibold tracking-wider text-gray-500 ${\n column.width || \"\"\n } ${getAlignmentClass(column.align)} ${\n column.sortable\n ? \"cursor-pointer select-none hover:bg-gray-200\"\n : \"\"\n } ${!expandableRows && index === 0 ? \"rounded-bl-xl rounded-tl-xl\" : \"\"} ${\n index === columns.length - 1\n ? \"rounded-br-xl rounded-tr-xl\"\n : \"\"\n } ${column.className || \"\"}`}\n style={column.width ? { width: column.width } : undefined}\n >\n <div className=\"flex items-center gap-2 justify-between\">\n <span>{column.title}</span>\n {getSortIcon(column)}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody\n className={`divide-y divide-gray-200 bg-white ${loading ? \"opacity-50\" : \"\"} ${\n onRowClick || expandableRows ? \"cursor-pointer\" : \"\"\n }`}\n >\n {loading && (\n <TableSkeleton\n columns={columns.length + (expandableRows ? 1 : 0)}\n rows={perPage}\n />\n )}\n {currentItems.length > 0\n ? currentItems.map((item: T, rowIndex) => {\n const expanded = isRowExpanded(item, rowIndex);\n return (\n <React.Fragment key={rowIndex}>\n <tr\n onClick={() => handleRowClick(item, rowIndex)}\n className={`hover:bg-gray-50 transition-colors duration-150 ${\n expanded ? \"bg-blue-50\" : \"\"\n }`}\n >\n {expandableRows && (\n <td className=\"whitespace-nowrap px-6 py-4 text-sm font-medium text-gray-800\">\n <div className=\"flex items-center justify-center\">\n {expanded ? (\n <ChevronDown\n size={16}\n className=\"text-gray-500\"\n />\n ) : (\n <ChevronRight\n size={16}\n className=\"text-gray-500\"\n />\n )}\n </div>\n </td>\n )}\n {columns.map((column, colIndex) => (\n <td\n key={colIndex}\n className={`whitespace-nowrap px-6 py-4 text-sm font-medium text-gray-800 ${getAlignmentClass(\n column.align,\n )} ${column.className || \"\"}`}\n style={\n column.width ? { width: column.width } : undefined\n }\n >\n {typeof column.value === \"function\"\n ? column.value(item)\n : (item[column.value] as ReactNode)}\n </td>\n ))}\n </tr>\n {expandableRows && expanded && expandedRowRender && (\n <tr key={`${rowIndex}-expanded`} className=\"bg-gray-50\">\n <td colSpan={columns.length + 1} className=\"px-6 py-4\">\n <div className=\"animate-fade-in\">\n {expandedRowRender(item)}\n </div>\n </td>\n </tr>\n )}\n </React.Fragment>\n );\n })\n : !loading && (\n <tr>\n <td\n colSpan={columns.length + (expandableRows ? 1 : 0)}\n className=\"px-6 py-12 text-center\"\n >\n {emptyState || defaultEmptyState}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n );\n\n return (\n <>\n {useCardLayout ? (\n renderCardLayout()\n ) : (\n <>\n <div className=\"hidden md:block\">{renderTableLayout()}</div>\n <div className=\"block md:hidden\">{renderCardLayout()}</div>\n </>\n )}\n\n {showPagination && (\n <Pagination\n currentPage={currentPageNumber}\n totalPages={totalPages}\n totalItems={totalItemsCount}\n itemsPerPage={perPage}\n onPageChange={onPageChange}\n onViewChange={onViewChange}\n loading={loading}\n />\n )}\n </>\n );\n}\n"],"names":["_a","data","columns","_b","itemsPerPage","onViewChange","totalItems","_c","currentPage","onPageChange","_d","loading","_e","showPagination","onRowClick","_f","useCardLayout","emptyState","_g","expandableRows","expandedRowRender","onRowToggle","_h","defaultExpandedRows","Set","_j","getRowKey","item","index","paginationMeta","defaultSortKey","_k","defaultSortOrder","onSort","_l","useState","expandedRows","setExpandedRows","_m","sortKey","setSortKey","_o","sortOrder","setSortOrder","totalItemsCount","total","length","totalPages","last_page","Math","ceil","currentPageNumber","current_page","perPage","per_page","currentItems","useMemo","__spreadArray","sort","a","b","aValue","bValue","column","find","col","value","localeCompare","String","getSortIcon","sortable","key","_jsx","ArrowUpDown","size","className","ArrowUp","ArrowDown","handleRowClick","toggleRow","rowKey","newExpandedRows","isCurrentlyExpanded","has","delete","add","isRowExpanded","defaultEmptyState","EmptyStateCard","title","getAlignmentClass","align","renderCardLayout","_jsxs","children","Array","from","map","_","slice","colIndex","rowIndex","expanded","onClick","concat","ChevronDown","ChevronRight","_Fragment","newOrder","handleSort","width","style","undefined","TableSkeleton","rows","React","Fragment","colSpan","Pagination"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("react-dom"),r=require("lucide-react");module.exports=function(o){var i=o.actions,c=o.trigger,a=o.className,s=void 0===a?"":a,l=o.dropdownClassName,d=void 0===l?"":l,u=t.useState(!1),f=u[0],m=u[1],v=t.useState({top:0,left:0}),x=v[0],g=v[1],w=t.useRef(null),p=t.useRef(null),h=function(){m(!f)},b=function(){m(!1)};t.useEffect((function(){if(f&&p.current){var e=p.current.getBoundingClientRect(),t=window.innerHeight-e.bottom,n=e.top;g({top:t<300&&n>t?e.top-300+window.scrollY:e.bottom+window.scrollY,left:e.right-192+window.scrollX})}}),[f]),t.useEffect((function(){var e=function(e){w.current&&!w.current.contains(e.target)&&p.current&&!p.current.contains(e.target)&&b()};return f&&document.addEventListener("mousedown",e),function(){document.removeEventListener("mousedown",e)}}),[f]),t.useEffect((function(){var e=function(e){"Escape"===e.key&&b()};return f&&document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[f]),t.useEffect((function(){var e=function(){if(f&&p.current){var e=p.current.getBoundingClientRect(),t=window.innerHeight-e.bottom,n=e.top;g({top:t<300&&n>t?e.top-300+window.scrollY:e.bottom+window.scrollY,left:e.right-192+window.scrollX})}};return f&&window.addEventListener("scroll",e,!0),function(){window.removeEventListener("scroll",e,!0)}}),[f]);var y=f&&e.jsx("div",{ref:w,className:"fixed z-[9999] w-48 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none ".concat(d),style:{top:"".concat(x.top,"px"),left:"".concat(x.left,"px")},children:e.jsxs("div",{className:"py-1",role:"menu","aria-orientation":"vertical",children:[i.map((function(t,n){return e.jsxs("button",{className:"flex w-full items-center px-4 py-2 text-left text-sm transition-colors duration-150 ".concat(t.disabled?"cursor-not-allowed bg-gray-50 text-gray-400":"danger"===t.variant?"text-red-700 hover:bg-red-50 hover:text-red-900":"text-gray-700 hover:bg-gray-100 hover:text-gray-900"," "),onClick:function(){return function(e){e.disabled||(e.onClick(),b())}(t)},disabled:t.disabled,role:"menuitem",children:[t.icon&&e.jsx("span",{className:"mr-3 flex-shrink-0",children:t.icon}),t.label]},n)})),0===i.length&&e.jsx("div",{className:"px-4 py-2 text-sm text-gray-500",children:"No actions available"})]})});return e.jsxs("div",{className:"relative inline-block ".concat(s),children:[e.jsx("div",{ref:p,className:"flex",children:c?e.jsx("div",{onClick:h,className:"cursor-pointer",children:c}):e.jsx("button",{className:"rounded-md border-gray-300 bg-white px-2 py-2 text-sm font-medium text-gray-700 transition-colors duration-200 focus:ring-offset-2",onClick:h,"aria-expanded":f,"aria-haspopup":"true",children:e.jsx(r.MoreVertical,{className:"h-4 w-4"})})}),"undefined"!=typeof document&&y&&n.createPortal(y,document.body)]})};
|
|
2
|
+
//# sourceMappingURL=TableDropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableDropdown.js","sources":["../../../../src/components/Table/TableDropdown.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { MoreVertical } from \"lucide-react\";\nimport { TableDropdownProps } from \"./types\";\n\nexport default function TableDropdown({\n actions,\n trigger,\n className = \"\",\n dropdownClassName = \"\",\n}: TableDropdownProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({ top: 0, left: 0 });\n const dropdownRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n\n const toggleDropdown = () => {\n setIsOpen(!isOpen);\n };\n\n const closeDropdown = () => {\n setIsOpen(false);\n };\n\n // Calculate dropdown position when opened\n useEffect(() => {\n if (isOpen && triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect();\n const dropdownHeight = 300; // Approximate max height\n const spaceBelow = window.innerHeight - rect.bottom;\n const spaceAbove = rect.top;\n\n // Determine if dropdown should open above or below\n const shouldOpenAbove =\n spaceBelow < dropdownHeight && spaceAbove > spaceBelow;\n\n setDropdownPosition({\n top: shouldOpenAbove\n ? rect.top - dropdownHeight + window.scrollY\n : rect.bottom + window.scrollY,\n left: rect.right - 192 + window.scrollX, // 192px is the dropdown width (w-48)\n });\n }\n }, [isOpen]);\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n closeDropdown();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpen]);\n\n // Close dropdown on escape key\n useEffect(() => {\n const handleEscapeKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n closeDropdown();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscapeKey);\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscapeKey);\n };\n }, [isOpen]);\n\n // Handle scroll to reposition dropdown\n useEffect(() => {\n const handleScroll = () => {\n if (isOpen && triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect();\n const dropdownHeight = 300;\n const spaceBelow = window.innerHeight - rect.bottom;\n const spaceAbove = rect.top;\n const shouldOpenAbove =\n spaceBelow < dropdownHeight && spaceAbove > spaceBelow;\n\n setDropdownPosition({\n top: shouldOpenAbove\n ? rect.top - dropdownHeight + window.scrollY\n : rect.bottom + window.scrollY,\n left: rect.right - 192 + window.scrollX,\n });\n }\n };\n\n if (isOpen) {\n window.addEventListener(\"scroll\", handleScroll, true);\n }\n\n return () => {\n window.removeEventListener(\"scroll\", handleScroll, true);\n };\n }, [isOpen]);\n\n const handleActionClick = (action: (typeof actions)[0]) => {\n if (!action.disabled) {\n action.onClick();\n closeDropdown();\n }\n };\n\n const dropdownContent = isOpen && (\n <div\n ref={dropdownRef}\n className={`fixed z-[9999] w-48 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none ${dropdownClassName}`}\n style={{\n top: `${dropdownPosition.top}px`,\n left: `${dropdownPosition.left}px`,\n }}\n >\n <div className=\"py-1\" role=\"menu\" aria-orientation=\"vertical\">\n {actions.map((action, index) => (\n <button\n key={index}\n className={`flex w-full items-center px-4 py-2 text-left text-sm transition-colors duration-150 ${\n action.disabled\n ? \"cursor-not-allowed bg-gray-50 text-gray-400\"\n : action.variant === \"danger\"\n ? \"text-red-700 hover:bg-red-50 hover:text-red-900\"\n : \"text-gray-700 hover:bg-gray-100 hover:text-gray-900\"\n } `}\n onClick={() => handleActionClick(action)}\n disabled={action.disabled}\n role=\"menuitem\"\n >\n {action.icon && (\n <span className=\"mr-3 flex-shrink-0\">{action.icon}</span>\n )}\n {action.label}\n </button>\n ))}\n\n {actions.length === 0 && (\n <div className=\"px-4 py-2 text-sm text-gray-500\">\n No actions available\n </div>\n )}\n </div>\n </div>\n );\n\n return (\n <div className={`relative inline-block ${className}`}>\n {/* Trigger Button */}\n <div ref={triggerRef} className=\"flex\">\n {trigger ? (\n <div onClick={toggleDropdown} className=\"cursor-pointer\">\n {trigger}\n </div>\n ) : (\n <button\n className=\"rounded-md border-gray-300 bg-white px-2 py-2 text-sm font-medium text-gray-700 transition-colors duration-200 focus:ring-offset-2\"\n onClick={toggleDropdown}\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n >\n <MoreVertical className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n\n {/* Render dropdown in a portal */}\n {typeof document !== \"undefined\" &&\n dropdownContent &&\n createPortal(dropdownContent, document.body)}\n </div>\n );\n}\n"],"names":["_a","actions","trigger","_b","className","_c","dropdownClassName","_d","useState","isOpen","setIsOpen","_e","top","left","dropdownPosition","setDropdownPosition","dropdownRef","useRef","triggerRef","toggleDropdown","closeDropdown","useEffect","current","rect","getBoundingClientRect","spaceBelow","window","innerHeight","bottom","spaceAbove","scrollY","right","scrollX","handleClickOutside","event","contains","target","document","addEventListener","removeEventListener","handleEscapeKey","key","handleScroll","dropdownContent","_jsx","ref","concat","style","children","_jsxs","role","map","action","index","disabled","variant","onClick","handleActionClick","icon","label","length","MoreVertical","createPortal","body"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime");exports.TableSkeleton=function(r){var n=r.columns,t=void 0===n?5:n,a=r.rows,c=void 0===a?3:a;return e.jsx(e.Fragment,{children:Array.from({length:c}).map((function(r,n){return e.jsx("tr",{children:Array.from({length:t}).map((function(r,t){return e.jsx("td",{className:"whitespace-nowrap px-6 py-4",children:e.jsx("div",{className:"h-4 animate-pulse rounded bg-gray-200"})},"skeleton-cell-".concat(n,"-").concat(t))}))},"skeleton-row-".concat(n))}))})};
|
|
2
|
+
//# sourceMappingURL=TableSkeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableSkeleton.js","sources":["../../../../src/components/Table/TableSkeleton.tsx"],"sourcesContent":["export function TableSkeleton({ columns = 5, rows = 3 }: { columns?: number; rows?: number }) {\n return (\n <>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <tr key={`skeleton-row-${rowIndex}`}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <td\n key={`skeleton-cell-${rowIndex}-${colIndex}`}\n className='whitespace-nowrap px-6 py-4'\n >\n <div className='h-4 animate-pulse rounded bg-gray-200'></div>\n </td>\n ))}\n </tr>\n ))}\n </>\n );\n}\n"],"names":["_a","_b","columns","_c","rows","_jsx","_Fragment","children","Array","from","length","map","_","rowIndex","colIndex","className","concat"],"mappings":"sEAAM,SAAwBA,OAAEC,EAAAD,EAAAE,QAAAA,OAAO,IAAAD,EAAG,EAACA,EAAEE,EAAAH,EAAAI,KAAAA,OAAI,IAAAD,EAAG,EAACA,EACjD,OACIE,EAAAA,IAAAC,EAAAA,SAAA,CAAAC,SACKC,MAAMC,KAAK,CAAEC,OAAQN,IAAQO,KAAI,SAACC,EAAGC,GAAa,OAC/CR,EAAAA,IAAA,KAAA,CAAAE,SACKC,MAAMC,KAAK,CAAEC,OAAQR,IAAWS,KAAI,SAACC,EAAGE,GAAa,OAClDT,MAAA,KAAA,CAEIU,UAAU,8BAA6BR,SAEvCF,EAAAA,IAAA,MAAA,CAAKU,UAAU,2CAHV,wBAAiBF,EAAQ,KAAAG,OAAIF,GAFY,KADjD,gBAAAE,OAAgBH,GADsB,KAc/D"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var t=require("react/jsx-runtime"),r=require("react");module.exports=function(e){var o=e.children,n=e.content,a=e.position,l=void 0===a?"top":a,i=e.variant,d=void 0===i?"light":i,s=e.size,u=void 0===s?"md":s,b=e.delay,c=void 0===b?200:b,p=e.disabled,f=void 0!==p&&p,h=e.className,m=void 0===h?"":h,g=r.useState(!1),w=g[0],x=g[1],v=r.useState(l),y=v[0],j=v[1],N=r.useRef(null),R=r.useRef(null),k=r.useRef(null);r.useEffect((function(){if(w&&R.current&&k.current){var t=R.current,r=k.current.getBoundingClientRect(),e=t.getBoundingClientRect(),o=l;"top"===l&&r.top-e.height<10?o="bottom":"bottom"===l&&r.bottom+e.height>window.innerHeight-10?o="top":"left"===l&&r.left-e.width<10?o="right":"right"===l&&r.right+e.width>window.innerWidth-10&&(o="left"),j(o)}}),[w,l]);var T=function(){f||(N.current&&clearTimeout(N.current),N.current=setTimeout((function(){x(!0)}),c))},z=function(){N.current&&clearTimeout(N.current),x(!1)};r.useEffect((function(){return function(){N.current&&clearTimeout(N.current)}}),[]);var B={dark:{tooltip:"bg-gray-900 text-white border-gray-700",arrow:{top:"border-t-gray-900",bottom:"border-b-gray-900",left:"border-l-gray-900",right:"border-r-gray-900"}},light:{tooltip:"bg-white text-gray-900 border-gray-200 shadow-lg",arrow:{top:"border-t-white",bottom:"border-b-white",left:"border-l-white",right:"border-r-white"}},accent:{tooltip:"bg-blue-600 text-white border-blue-500",arrow:{top:"border-t-blue-600",bottom:"border-b-blue-600",left:"border-l-blue-600",right:"border-r-blue-600"}}};return f||!n?t.jsx(t.Fragment,{children:o}):t.jsxs("div",{className:"relative inline-block",children:[t.jsx("div",{ref:k,onMouseEnter:T,onMouseLeave:z,onFocus:T,onBlur:z,className:"cursor-help",children:o}),w&&t.jsxs("div",{ref:R,className:"absolute z-50 ".concat({top:"bottom-full left-1/2 -translate-x-1/2 mb-2",bottom:"top-full left-1/2 -translate-x-1/2 mt-2",left:"right-full top-1/2 -translate-y-1/2 mr-2",right:"left-full top-1/2 -translate-y-1/2 ml-2"}[y]," ").concat(B[d].tooltip," ").concat({sm:"px-2 py-1 text-xs",md:"px-3 py-2 text-sm",lg:"px-4 py-3 text-base"}[u]," animate-in fade-in-0 zoom-in-95 max-w-xs whitespace-nowrap break-words rounded-lg border font-medium backdrop-blur-sm duration-200 ").concat(m," "),role:"tooltip","aria-hidden":"false",children:[n,t.jsx("div",{className:"absolute h-0 w-0 border-4 ".concat({top:"top-full left-1/2 -translate-x-1/2 border-l-transparent border-r-transparent border-b-transparent",bottom:"bottom-full left-1/2 -translate-x-1/2 border-l-transparent border-r-transparent border-t-transparent",left:"left-full top-1/2 -translate-y-1/2 border-t-transparent border-b-transparent border-r-transparent",right:"right-full top-1/2 -translate-y-1/2 border-t-transparent border-b-transparent border-l-transparent"}[y]," ").concat(B[d].arrow[y]," ")})]})]})};
|
|
2
|
+
//# sourceMappingURL=Tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tooltip.js","sources":["../../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\n\nexport interface TooltipProps {\n children: React.ReactNode;\n content: string | React.ReactNode;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n variant?: \"dark\" | \"light\" | \"accent\";\n size?: \"sm\" | \"md\" | \"lg\";\n delay?: number;\n disabled?: boolean;\n className?: string;\n}\n\nconst Tooltip: React.FC<TooltipProps> = ({\n children,\n content,\n position = \"top\",\n variant = \"light\",\n size = \"md\",\n delay = 200,\n disabled = false,\n className = \"\",\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [actualPosition, setActualPosition] = useState(position);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n\n // Auto-adjust position based on viewport\n useEffect(() => {\n if (isVisible && tooltipRef.current && triggerRef.current) {\n const tooltip = tooltipRef.current;\n const trigger = triggerRef.current;\n const rect = trigger.getBoundingClientRect();\n const tooltipRect = tooltip.getBoundingClientRect();\n\n let newPosition = position;\n\n // Check if tooltip goes outside viewport and adjust\n if (position === \"top\" && rect.top - tooltipRect.height < 10) {\n newPosition = \"bottom\";\n } else if (\n position === \"bottom\" &&\n rect.bottom + tooltipRect.height > window.innerHeight - 10\n ) {\n newPosition = \"top\";\n } else if (position === \"left\" && rect.left - tooltipRect.width < 10) {\n newPosition = \"right\";\n } else if (\n position === \"right\" &&\n rect.right + tooltipRect.width > window.innerWidth - 10\n ) {\n newPosition = \"left\";\n }\n\n setActualPosition(newPosition);\n }\n }, [isVisible, position]);\n\n const handleMouseEnter = () => {\n if (disabled) return;\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n setIsVisible(true);\n }, delay);\n };\n\n const handleMouseLeave = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n setIsVisible(false);\n };\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n // Position classes\n const positionClasses = {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n };\n\n // Arrow classes\n const arrowClasses = {\n top: \"top-full left-1/2 -translate-x-1/2 border-l-transparent border-r-transparent border-b-transparent\",\n bottom: \"bottom-full left-1/2 -translate-x-1/2 border-l-transparent border-r-transparent border-t-transparent\",\n left: \"left-full top-1/2 -translate-y-1/2 border-t-transparent border-b-transparent border-r-transparent\",\n right: \"right-full top-1/2 -translate-y-1/2 border-t-transparent border-b-transparent border-l-transparent\",\n };\n\n // Variant styles\n const variantClasses = {\n dark: {\n tooltip: \"bg-gray-900 text-white border-gray-700\",\n arrow: {\n top: \"border-t-gray-900\",\n bottom: \"border-b-gray-900\",\n left: \"border-l-gray-900\",\n right: \"border-r-gray-900\",\n },\n },\n light: {\n tooltip: \"bg-white text-gray-900 border-gray-200 shadow-lg\",\n arrow: {\n top: \"border-t-white\",\n bottom: \"border-b-white\",\n left: \"border-l-white\",\n right: \"border-r-white\",\n },\n },\n accent: {\n tooltip: \"bg-blue-600 text-white border-blue-500\",\n arrow: {\n top: \"border-t-blue-600\",\n bottom: \"border-b-blue-600\",\n left: \"border-l-blue-600\",\n right: \"border-r-blue-600\",\n },\n },\n };\n\n // Size classes\n const sizeClasses = {\n sm: \"px-2 py-1 text-xs\",\n md: \"px-3 py-2 text-sm\",\n lg: \"px-4 py-3 text-base\",\n };\n\n if (disabled || !content) {\n return <>{children}</>;\n }\n\n return (\n <div className='relative inline-block'>\n <div\n ref={triggerRef}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleMouseEnter}\n onBlur={handleMouseLeave}\n className='cursor-help'\n >\n {children}\n </div>\n\n {isVisible && (\n <div\n ref={tooltipRef}\n className={`absolute z-50 ${positionClasses[actualPosition]} ${variantClasses[variant].tooltip} ${sizeClasses[size]} animate-in fade-in-0 zoom-in-95 max-w-xs whitespace-nowrap break-words rounded-lg border font-medium backdrop-blur-sm duration-200 ${className} `}\n role='tooltip'\n aria-hidden='false'\n >\n {content}\n\n {/* Arrow */}\n <div\n className={`absolute h-0 w-0 border-4 ${arrowClasses[actualPosition]} ${variantClasses[variant].arrow[actualPosition]} `}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default Tooltip;\n"],"names":["_a","children","content","_b","position","_c","variant","_d","size","_e","delay","_f","disabled","_g","className","_h","useState","isVisible","setIsVisible","_j","actualPosition","setActualPosition","timeoutRef","useRef","tooltipRef","triggerRef","useEffect","current","tooltip","rect","getBoundingClientRect","tooltipRect","newPosition","top","height","bottom","window","innerHeight","left","width","right","innerWidth","handleMouseEnter","clearTimeout","setTimeout","handleMouseLeave","variantClasses","dark","arrow","light","accent","_jsx","_Fragment","_jsxs","ref","onMouseEnter","onMouseLeave","onFocus","onBlur","concat","sm","md","lg","role"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("./components/Button/Button.js"),o=require("./components/Button/ExportButton.js"),t=require("./components/Cards/Card.js"),r=require("./components/Cards/EmptyStateCard.js"),n=require("./components/Form/CheckBox/CheckBox.js"),s=require("./components/Form/FileUpload/FileUpload.js"),p=require("./components/Form/Input/Input.js"),a=require("./components/Form/Input/InputWithPrefix.js"),l=require("./components/Form/Input/TagInput.js"),i=require("./components/Form/Input/DateTimePicker.js"),x=require("./components/Form/Search/Search.js"),u=require("./components/Form/Select/Select.js"),m=require("./components/Form/TextEditor/TextEditor.js"),S=require("./components/Form/Select/SelectButton.js"),d=require("./components/Alert/AlertContext.js"),c=require("./components/Alert/ConfirmationAlert.js"),T=require("./components/Modal/Modal.js"),k=require("./components/Table/Table.js"),E=require("./components/Table/Pagination.js"),j=require("./components/Table/TableSkeleton.js"),q=require("./components/Table/TableDropdown.js"),B=require("./components/SkeletonLoader/index.js"),L=require("./components/Loading/Loading.js"),C=require("./components/Breadcrumb/Breadcrumb.js"),g=require("./components/Tooltip/Tooltip.js"),A=require("./components/Badge/Badge.js"),D=require("./components/Document/FileView.js"),P=require("./components/SkeletonLoader/SkeletonLoader.js");exports.Button=e,exports.ExportButton=o.default,exports.Card=t,exports.EmptyStateCard=r,exports.CheckBox=n.default,exports.CheckBoxDemo=n.CheckBoxDemo,exports.RadioGroup=n.RadioGroup,exports.FileUpload=s,exports.Input=p,exports.InputWithPrefix=a,exports.TagInput=l.default,exports.TagInputDemo=l.TagInputDemo,exports.DateTimePicker=i.default,exports.DateTimePickerDemo=i.DateTimePickerDemo,exports.Search=x,exports.Select=u,exports.TextEditor=m,exports.SelectButton=S,exports.AlertContext=d.AlertContext,exports.AlertProvider=d.AlertProvider,exports.alert=d.default,exports.useAlert=d.useAlert,exports.ConfirmationAlert=c,exports.Modal=T.default,exports.ModalExample=T.ModalExample,exports.Table=k,exports.Pagination=E.Pagination,exports.TableSkeleton=j.TableSkeleton,exports.TableDropdown=q,exports.SKELETON_LOADER_VERSION=B.SKELETON_LOADER_VERSION,exports.SKELETON_PATTERNS=B.SKELETON_PATTERNS,exports.SKELETON_PRESETS=B.SKELETON_PRESETS,exports.Loading=L.default,exports.LoadingDemo=L.LoadingDemo,exports.Breadcrumb=C,exports.Tooltip=g,exports.Badge=A,exports.FileView=D,exports.CardStatsSkeleton=P.CardStatsSkeleton,exports.SkeletonAvatar=P.SkeletonAvatar,exports.SkeletonButton=P.SkeletonButton,exports.SkeletonCard=P.SkeletonCard,exports.SkeletonImage=P.SkeletonImage,exports.SkeletonList=P.SkeletonList,exports.SkeletonLoader=P.default,exports.SkeletonLoaderExample=P.SkeletonLoaderExample,exports.SkeletonProfile=P.SkeletonProfile,exports.SkeletonTable=P.SkeletonTable,exports.SkeletonText=P.SkeletonText;
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("../../../prosemirror-state/dist/index.js"),t=require("../../../prosemirror-transform/dist/index.js"),n=require("../../../prosemirror-model/dist/index.js"),r=require("../../../prosemirror-commands/dist/index.js"),o=require("../../../prosemirror-schema-list/dist/index.js"),s=Object.defineProperty,a=(e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})};function i(e){const{state:t,transaction:n}=e;let{selection:r}=n,{doc:o}=n,{storedMarks:s}=n;return{...t,apply:t.apply.bind(t),applyTransaction:t.applyTransaction.bind(t),plugins:t.plugins,schema:t.schema,reconfigure:t.reconfigure.bind(t),toJSON:t.toJSON.bind(t),get storedMarks(){return s},get selection(){return r},get doc(){return o},get tr(){return r=n.selection,o=n.doc,s=n.storedMarks,n}}}var c=class{constructor(e){this.editor=e.editor,this.rawCommands=this.editor.extensionManager.commands,this.customState=e.state}get hasCustomState(){return!!this.customState}get state(){return this.customState||this.editor.state}get commands(){const{rawCommands:e,editor:t,state:n}=this,{view:r}=t,{tr:o}=n,s=this.buildProps(o);return Object.fromEntries(Object.entries(e).map((([e,t])=>[e,(...e)=>{const n=t(...e)(s);return o.getMeta("preventDispatch")||this.hasCustomState||r.dispatch(o),n}])))}get chain(){return()=>this.createChain()}get can(){return()=>this.createCan()}createChain(e,t=!0){const{rawCommands:n,editor:r,state:o}=this,{view:s}=r,a=[],i=!!e,c=e||o.tr,d={...Object.fromEntries(Object.entries(n).map((([e,n])=>[e,(...e)=>{const r=this.buildProps(c,t),o=n(...e)(r);return a.push(o),d}]))),run:()=>(i||!t||c.getMeta("preventDispatch")||this.hasCustomState||s.dispatch(c),a.every((e=>!0===e)))};return d}createCan(e){const{rawCommands:t,state:n}=this,r=!1,o=e||n.tr,s=this.buildProps(o,r);return{...Object.fromEntries(Object.entries(t).map((([e,t])=>[e,(...e)=>t(...e)({...s,dispatch:void 0})]))),chain:()=>this.createChain(o,r)}}buildProps(e,t=!0){const{rawCommands:n,editor:r,state:o}=this,{view:s}=r,a={tr:e,editor:r,view:s,state:i({state:o,transaction:e}),dispatch:t?()=>{}:void 0,chain:()=>this.createChain(e,t),can:()=>this.createCan(e),get commands(){return Object.fromEntries(Object.entries(n).map((([e,t])=>[e,(...e)=>t(...e)(a)])))}};return a}};function d(e,n){const r=new t.Transform(e);return n.forEach((e=>{e.steps.forEach((e=>{r.step(e)}))})),r}var l=e=>{const t=e.childNodes;for(let n=t.length-1;n>=0;n-=1){const r=t[n];3===r.nodeType&&r.nodeValue&&/^(\n\s\s|\n)$/.test(r.nodeValue)?e.removeChild(r):1===r.nodeType&&l(r)}return e};function p(e){if("undefined"==typeof window)throw new Error("[tiptap error]: there is no window object available, so this function cannot be used");const t=`<body>${e}</body>`,n=(new window.DOMParser).parseFromString(t,"text/html").body;return l(n)}function m(e,t,r){if(e instanceof n.Node||e instanceof n.Fragment)return e;r={slice:!0,parseOptions:{},...r};const o="string"==typeof e;if("object"==typeof e&&null!==e)try{if(Array.isArray(e)&&e.length>0)return n.Fragment.fromArray(e.map((e=>t.nodeFromJSON(e))));const o=t.nodeFromJSON(e);return r.errorOnInvalidContent&&o.check(),o}catch(n){if(r.errorOnInvalidContent)throw new Error("[tiptap error]: Invalid JSON content",{cause:n});return console.warn("[tiptap warn]: Invalid content.","Passed value:",e,"Error:",n),m("",t,r)}if(o){if(r.errorOnInvalidContent){let o=!1,s="";const a=new n.Schema({topNode:t.spec.topNode,marks:t.spec.marks,nodes:t.spec.nodes.append({__tiptap__private__unknown__catch__all__node:{content:"inline*",group:"block",parseDOM:[{tag:"*",getAttrs:e=>(o=!0,s="string"==typeof e?e:e.outerHTML,null)}]}})});if(r.slice?n.DOMParser.fromSchema(a).parseSlice(p(e),r.parseOptions):n.DOMParser.fromSchema(a).parse(p(e),r.parseOptions),r.errorOnInvalidContent&&o)throw new Error("[tiptap error]: Invalid HTML content",{cause:new Error(`Invalid element found: ${s}`)})}const o=n.DOMParser.fromSchema(t);return r.slice?o.parseSlice(p(e),r.parseOptions).content:o.parse(p(e),r.parseOptions)}return m("",t,r)}function u(e,t,n={},r={}){return m(e,t,{slice:!1,parseOptions:n,errorOnInvalidContent:r.errorOnInvalidContent})}function f(e){for(let t=0;t<e.edgeCount;t+=1){const{type:n}=e.edge(t);if(n.isTextblock&&!n.hasRequiredAttrs())return n}return null}function h(e,t){for(let n=e.depth;n>0;n-=1){const r=e.node(n);if(t(r))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:r}}}function g(e){return t=>h(t.$from,e)}function y(e,t,n){if(void 0===e.config[t]&&e.parent)return y(e.parent,t,n);if("function"==typeof e.config[t]){return e.config[t].bind({...n,parent:e.parent?y(e.parent,t,n):null})}return e.config[t]}function k(e){return"function"==typeof e}function x(e,t=void 0,...n){return k(e)?t?e.bind(t)(...n):e(...n):e}function v(e){return{baseExtensions:e.filter((e=>"extension"===e.type)),nodeExtensions:e.filter((e=>"node"===e.type)),markExtensions:e.filter((e=>"mark"===e.type))}}function b(e,t,n){const{from:r,to:o}=t,{blockSeparator:s="\n\n",textSerializers:a={}}=n||{};let i="";return e.nodesBetween(r,o,((e,n,c,d)=>{var l;e.isBlock&&n>r&&(i+=s);const p=null==a?void 0:a[e.type.name];if(p)return c&&(i+=p({node:e,pos:n,parent:c,index:d,range:t})),!1;e.isText&&(i+=null==(l=null==e?void 0:e.text)?void 0:l.slice(Math.max(r,n)-n,o-n))})),i}function w(e){return Object.fromEntries(Object.entries(e.nodes).filter((([,e])=>e.spec.toText)).map((([e,t])=>[e,t.spec.toText])))}function M(e,t){if("string"==typeof e){if(!t.marks[e])throw Error(`There is no mark type named '${e}'. Maybe you forgot to add the extension?`);return t.marks[e]}return e}function S(e,t){const n=M(t,e.schema),{from:r,to:o,empty:s}=e.selection,a=[];s?(e.storedMarks&&a.push(...e.storedMarks),a.push(...e.selection.$head.marks())):e.doc.nodesBetween(r,o,(e=>{a.push(...e.marks)}));const i=a.find((e=>e.type.name===n.name));return i?{...i.attrs}:{}}function O(e,t){if("string"==typeof e){if(!t.nodes[e])throw Error(`There is no node type named '${e}'. Maybe you forgot to add the extension?`);return t.nodes[e]}return e}function C(e,t){return t.nodes[e]?"node":t.marks[e]?"mark":null}function E(e,t=JSON.stringify){const n={};return e.filter((e=>{const r=t(e);return!Object.prototype.hasOwnProperty.call(n,r)&&(n[r]=!0)}))}function T(e){const{mapping:t,steps:n}=e,r=[];return t.maps.forEach(((e,o)=>{const s=[];if(e.ranges.length)e.forEach(((e,t)=>{s.push({from:e,to:t})}));else{const{from:e,to:t}=n[o];if(void 0===e||void 0===t)return;s.push({from:e,to:t})}s.forEach((({from:e,to:n})=>{const s=t.slice(o).map(e,-1),a=t.slice(o).map(n),i=t.invert().map(s,-1),c=t.invert().map(a);r.push({oldRange:{from:i,to:c},newRange:{from:s,to:a}})}))})),function(e){const t=E(e);return 1===t.length?t:t.filter(((e,n)=>!t.filter(((e,t)=>t!==n)).some((t=>e.oldRange.from>=t.oldRange.from&&e.oldRange.to<=t.oldRange.to&&e.newRange.from>=t.newRange.from&&e.newRange.to<=t.newRange.to))))}(r)}function $(e){return"[object RegExp]"===Object.prototype.toString.call(e)}function P(e,t,n={strict:!0}){const r=Object.keys(t);return!r.length||r.every((r=>n.strict?t[r]===e[r]:$(t[r])?t[r].test(e[r]):t[r]===e[r]))}function j(e,t,n={}){return e.find((e=>e.type===t&&P(Object.fromEntries(Object.keys(n).map((t=>[t,e.attrs[t]]))),n)))}function A(e,t,n={}){return!!j(e,t,n)}function I(e,t,n){var r;if(!e||!t)return;let o=e.parent.childAfter(e.parentOffset);if(o.node&&o.node.marks.some((e=>e.type===t))||(o=e.parent.childBefore(e.parentOffset)),!o.node||!o.node.marks.some((e=>e.type===t)))return;n=n||(null==(r=o.node.marks[0])?void 0:r.attrs);if(!j([...o.node.marks],t,n))return;let s=o.index,a=e.start()+o.offset,i=s+1,c=a+o.node.nodeSize;for(;s>0&&A([...e.parent.child(s-1).marks],t,n);)s-=1,a-=e.parent.child(s).nodeSize;for(;i<e.parent.childCount&&A([...e.parent.child(i).marks],t,n);)c+=e.parent.child(i).nodeSize,i+=1;return{from:a,to:c}}function R(e,t,n){const r=[];return e===t?n.resolve(e).marks().forEach((t=>{const o=I(n.resolve(e),t.type);o&&r.push({mark:t,...o})})):n.nodesBetween(e,t,((e,t)=>{e&&void 0!==(null==e?void 0:e.nodeSize)&&r.push(...e.marks.map((n=>({from:t,to:t+e.nodeSize,mark:n}))))})),r}function N(e,t,n){return Object.fromEntries(Object.entries(n).filter((([n])=>{const r=e.find((e=>e.type===t&&e.name===n));return!!r&&r.attribute.keepOnSplit})))}function B(e,t,n={}){const{empty:r,ranges:o}=e.selection,s=t?M(t,e.schema):null;if(r)return!!(e.storedMarks||e.selection.$from.marks()).filter((e=>!s||s.name===e.type.name)).find((e=>P(e.attrs,n,{strict:!1})));let a=0;const i=[];if(o.forEach((({$from:t,$to:n})=>{const r=t.pos,o=n.pos;e.doc.nodesBetween(r,o,((e,t)=>{if(!e.isText&&!e.marks.length)return;const n=Math.max(r,t),s=Math.min(o,t+e.nodeSize);a+=s-n,i.push(...e.marks.map((e=>({mark:e,from:n,to:s}))))}))})),0===a)return!1;const c=i.filter((e=>!s||s.name===e.mark.type.name)).filter((e=>P(e.mark.attrs,n,{strict:!1}))).reduce(((e,t)=>e+t.to-t.from),0),d=i.filter((e=>!s||e.mark.type!==s&&e.mark.type.excludes(s))).reduce(((e,t)=>e+t.to-t.from),0);return(c>0?c+d:c)>=a}function z(e,t,n={}){const{from:r,to:o,empty:s}=e.selection,a=t?O(t,e.schema):null,i=[];e.doc.nodesBetween(r,o,((e,t)=>{if(e.isText)return;const n=Math.max(r,t),s=Math.min(o,t+e.nodeSize);i.push({node:e,from:n,to:s})}));const c=o-r,d=i.filter((e=>!a||a.name===e.node.type.name)).filter((e=>P(e.node.attrs,n,{strict:!1})));if(s)return!!d.length;return d.reduce(((e,t)=>e+t.to-t.from),0)>=c}function F(e,t){const{nodeExtensions:n}=v(t),r=n.find((t=>t.name===e));if(!r)return!1;const o=x(y(r,"group",{name:r.name,options:r.options,storage:r.storage}));return"string"==typeof o&&o.split(" ").includes("list")}function D(e,{checkChildren:t=!0,ignoreWhitespace:n=!1}={}){var r;if(n){if("hardBreak"===e.type.name)return!0;if(e.isText)return/^\s*$/m.test(null!=(r=e.text)?r:"")}if(e.isText)return!e.text;if(e.isAtom||e.isLeaf)return!1;if(0===e.content.childCount)return!0;if(t){let r=!0;return e.content.forEach((e=>{!1!==r&&(D(e,{ignoreWhitespace:n,checkChildren:t})||(r=!1))})),r}return!1}function L(t){return t instanceof e.TextSelection}function K(e=0,t=0,n=0){return Math.min(Math.max(e,t),n)}function V(t,n=null){if(!n)return null;const r=e.Selection.atStart(t),o=e.Selection.atEnd(t);if("start"===n||!0===n)return r;if("end"===n)return o;const s=r.from,a=o.to;return"all"===n?e.TextSelection.create(t,K(0,s,a),K(t.content.size,s,a)):e.TextSelection.create(t,K(n,s,a),K(n,s,a))}function q(n,r,o){const s=n.steps.length-1;if(s<r)return;const a=n.steps[s];if(!(a instanceof t.ReplaceStep||a instanceof t.ReplaceAroundStep))return;const i=n.mapping.maps[s];let c=0;i.forEach(((e,t,n,r)=>{0===c&&(c=r)})),n.setSelection(e.Selection.near(n.doc.resolve(c),o))}var _=class{constructor(e){this.find=e.find,this.handler=e.handler}};function W(e){return"Object"===function(e){return Object.prototype.toString.call(e).slice(8,-1)}(e)&&(e.constructor===Object&&Object.getPrototypeOf(e)===Object.prototype)}function J(e,t){const n={...e};return W(e)&&W(t)&&Object.keys(t).forEach((r=>{W(t[r])&&W(e[r])?n[r]=J(e[r],t[r]):n[r]=t[r]})),n}var U=class{constructor(e={}){this.type="extendable",this.parent=null,this.child=null,this.name="",this.config={name:this.name},this.config={...this.config,...e},this.name=this.config.name}get options(){return{...x(y(this,"addOptions",{name:this.name}))||{}}}get storage(){return{...x(y(this,"addStorage",{name:this.name,options:this.options}))||{}}}configure(e={}){const t=this.extend({...this.config,addOptions:()=>J(this.options,e)});return t.name=this.name,t.parent=this.parent,t}extend(e={}){const t=new this.constructor({...this.config,...e});return t.parent=this,this.child=t,t.name="name"in e?e.name:t.parent.name,t}},H=class{constructor(e){this.find=e.find,this.handler=e.handler}},G={};a(G,{ClipboardTextSerializer:()=>X,Commands:()=>lt,Delete:()=>pt,Drop:()=>mt,Editable:()=>ut,FocusEvents:()=>ht,Keymap:()=>gt,Paste:()=>yt,Tabindex:()=>kt,focusEventsPluginKey:()=>ft});var Q=class e extends U{constructor(){super(...arguments),this.type="extension"}static create(t={}){const n="function"==typeof t?t():t;return new e(n)}configure(e){return super.configure(e)}extend(e){const t="function"==typeof e?e():e;return super.extend(t)}},X=Q.create({name:"clipboardTextSerializer",addOptions:()=>({blockSeparator:void 0}),addProseMirrorPlugins(){return[new e.Plugin({key:new e.PluginKey("clipboardTextSerializer"),props:{clipboardTextSerializer:()=>{const{editor:e}=this,{state:t,schema:n}=e,{doc:r,selection:o}=t,{ranges:s}=o,a=Math.min(...s.map((e=>e.$from.pos))),i=Math.max(...s.map((e=>e.$to.pos))),c=w(n);return b(r,{from:a,to:i},{...void 0!==this.options.blockSeparator?{blockSeparator:this.options.blockSeparator}:{},textSerializers:c})}}})]}}),Y={};a(Y,{blur:()=>Z,clearContent:()=>ee,clearNodes:()=>te,command:()=>ne,createParagraphNear:()=>re,cut:()=>oe,deleteCurrentNode:()=>se,deleteNode:()=>ae,deleteRange:()=>ie,deleteSelection:()=>ce,enter:()=>de,exitCode:()=>le,extendMarkRange:()=>pe,first:()=>me,focus:()=>he,forEach:()=>ge,insertContent:()=>ye,insertContentAt:()=>ke,joinBackward:()=>be,joinDown:()=>ve,joinForward:()=>we,joinItemBackward:()=>Me,joinItemForward:()=>Se,joinTextblockBackward:()=>Oe,joinTextblockForward:()=>Ce,joinUp:()=>xe,keyboardShortcut:()=>Te,lift:()=>$e,liftEmptyBlock:()=>Pe,liftListItem:()=>je,newlineInCode:()=>Ae,resetAttributes:()=>Re,scrollIntoView:()=>Ne,selectAll:()=>Be,selectNodeBackward:()=>ze,selectNodeForward:()=>Fe,selectParentNode:()=>De,selectTextblockEnd:()=>Le,selectTextblockStart:()=>Ke,setContent:()=>Ve,setMark:()=>qe,setMeta:()=>_e,setNode:()=>We,setNodeSelection:()=>Je,setTextSelection:()=>Ue,sinkListItem:()=>He,splitBlock:()=>Qe,splitListItem:()=>Xe,toggleList:()=>et,toggleMark:()=>tt,toggleNode:()=>nt,toggleWrap:()=>rt,undoInputRule:()=>ot,unsetAllMarks:()=>st,unsetMark:()=>at,updateAttributes:()=>it,wrapIn:()=>ct,wrapInList:()=>dt});var Z=()=>({editor:e,view:t})=>(requestAnimationFrame((()=>{var n;e.isDestroyed||(t.dom.blur(),null==(n=null==window?void 0:window.getSelection())||n.removeAllRanges())})),!0),ee=(e=!0)=>({commands:t})=>t.setContent("",{emitUpdate:e}),te=()=>({state:e,tr:n,dispatch:r})=>{const{selection:o}=n,{ranges:s}=o;return!r||(s.forEach((({$from:r,$to:o})=>{e.doc.nodesBetween(r.pos,o.pos,((e,r)=>{if(e.type.isText)return;const{doc:o,mapping:s}=n,a=o.resolve(s.map(r)),i=o.resolve(s.map(r+e.nodeSize)),c=a.blockRange(i);if(!c)return;const d=t.liftTarget(c);if(e.type.isTextblock){const{defaultType:e}=a.parent.contentMatchAt(a.index());n.setNodeMarkup(c.start,e)}(d||0===d)&&n.lift(c,d)}))})),!0)},ne=e=>t=>e(t),re=()=>({state:e,dispatch:t})=>r.createParagraphNear(e,t),oe=(t,n)=>({editor:r,tr:o})=>{const{state:s}=r,a=s.doc.slice(t.from,t.to);o.deleteRange(t.from,t.to);const i=o.mapping.map(n);return o.insert(i,a.content),o.setSelection(new e.TextSelection(o.doc.resolve(Math.max(i-1,0)))),!0},se=()=>({tr:e,dispatch:t})=>{const{selection:n}=e,r=n.$anchor.node();if(r.content.size>0)return!1;const o=e.selection.$anchor;for(let n=o.depth;n>0;n-=1){if(o.node(n).type===r.type){if(t){const t=o.before(n),r=o.after(n);e.delete(t,r).scrollIntoView()}return!0}}return!1},ae=e=>({tr:t,state:n,dispatch:r})=>{const o=O(e,n.schema),s=t.selection.$anchor;for(let e=s.depth;e>0;e-=1){if(s.node(e).type===o){if(r){const n=s.before(e),r=s.after(e);t.delete(n,r).scrollIntoView()}return!0}}return!1},ie=e=>({tr:t,dispatch:n})=>{const{from:r,to:o}=e;return n&&t.delete(r,o),!0},ce=()=>({state:e,dispatch:t})=>r.deleteSelection(e,t),de=()=>({commands:e})=>e.keyboardShortcut("Enter"),le=()=>({state:e,dispatch:t})=>r.exitCode(e,t),pe=(t,n={})=>({tr:r,state:o,dispatch:s})=>{const a=M(t,o.schema),{doc:i,selection:c}=r,{$from:d,from:l,to:p}=c;if(s){const t=I(d,a,n);if(t&&t.from<=l&&t.to>=p){const n=e.TextSelection.create(i,t.from,t.to);r.setSelection(n)}}return!0},me=e=>t=>{const n="function"==typeof e?e(t):e;for(let e=0;e<n.length;e+=1)if(n[e](t))return!0;return!1};function ue(){return"Android"===navigator.platform||/android/i.test(navigator.userAgent)}function fe(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document}var he=(e=null,t={})=>({editor:n,view:r,tr:o,dispatch:s})=>{t={scrollIntoView:!0,...t};const a=()=>{(fe()||ue())&&r.dom.focus(),requestAnimationFrame((()=>{n.isDestroyed||(r.focus(),(null==t?void 0:t.scrollIntoView)&&n.commands.scrollIntoView())}))};if(r.hasFocus()&&null===e||!1===e)return!0;if(s&&null===e&&!L(n.state.selection))return a(),!0;const i=V(o.doc,e)||n.state.selection,c=n.state.selection.eq(i);return s&&(c||o.setSelection(i),c&&o.storedMarks&&o.setStoredMarks(o.storedMarks),a()),!0},ge=(e,t)=>n=>e.every(((e,r)=>t(e,{...n,index:r}))),ye=(e,t)=>({tr:n,commands:r})=>r.insertContentAt({from:n.selection.from,to:n.selection.to},e,t),ke=(e,t,r)=>({tr:o,dispatch:s,editor:a})=>{var i;if(s){let s;r={parseOptions:a.options.parseOptions,updateSelection:!0,applyInputRules:!1,applyPasteRules:!1,...r};const{selection:c}=a.state,d=e=>{a.emit("contentError",{editor:a,error:e,disableCollaboration:()=>{"collaboration"in a.storage&&"object"==typeof a.storage.collaboration&&a.storage.collaboration&&(a.storage.collaboration.isDisabled=!0)}})},l={preserveWhitespace:"full",...r.parseOptions};if(!r.errorOnInvalidContent&&!a.options.enableContentCheck&&a.options.emitContentError)try{m(t,a.schema,{parseOptions:l,errorOnInvalidContent:!0})}catch(e){d(e)}try{s=m(t,a.schema,{parseOptions:l,errorOnInvalidContent:null!=(i=r.errorOnInvalidContent)?i:a.options.enableContentCheck})}catch(e){return d(e),!1}let{from:p,to:u}="number"==typeof e?{from:e,to:e}:{from:e.from,to:e.to},f=!0,h=!0;if(("type"in s?[s]:s).forEach((e=>{e.check(),f=!!f&&(e.isText&&0===e.marks.length),h=!!h&&e.isBlock})),p===u&&h){const{parent:e}=o.doc.resolve(p);e.isTextblock&&!e.type.spec.code&&!e.childCount&&(p-=1,u+=1)}let g;if(f){if(Array.isArray(t))g=t.map((e=>e.text||"")).join("");else if(t instanceof n.Fragment){let e="";t.forEach((t=>{t.text&&(e+=t.text)})),g=e}else g="object"==typeof t&&t&&t.text?t.text:t;o.insertText(g,p,u)}else{g=s;const e=0===c.$from.parentOffset,t=c.$from.node().isText||c.$from.node().isTextblock,n=c.$from.node().content.size>0;e&&t&&n&&(p=Math.max(0,p-1)),o.replaceWith(p,u,g)}r.updateSelection&&q(o,o.steps.length-1,-1),r.applyInputRules&&o.setMeta("applyInputRules",{from:p,text:g}),r.applyPasteRules&&o.setMeta("applyPasteRules",{from:p,text:g})}return!0},xe=()=>({state:e,dispatch:t})=>r.joinUp(e,t),ve=()=>({state:e,dispatch:t})=>r.joinDown(e,t),be=()=>({state:e,dispatch:t})=>r.joinBackward(e,t),we=()=>({state:e,dispatch:t})=>r.joinForward(e,t),Me=()=>({state:e,dispatch:n,tr:r})=>{try{const o=t.joinPoint(e.doc,e.selection.$from.pos,-1);return null!=o&&(r.join(o,2),n&&n(r),!0)}catch{return!1}},Se=()=>({state:e,dispatch:n,tr:r})=>{try{const o=t.joinPoint(e.doc,e.selection.$from.pos,1);return null!=o&&(r.join(o,2),n&&n(r),!0)}catch{return!1}},Oe=()=>({state:e,dispatch:t})=>r.joinTextblockBackward(e,t),Ce=()=>({state:e,dispatch:t})=>r.joinTextblockForward(e,t);function Ee(){return"undefined"!=typeof navigator&&/Mac/.test(navigator.platform)}var Te=e=>({editor:t,view:n,tr:r,dispatch:o})=>{const s=function(e){const t=e.split(/-(?!$)/);let n,r,o,s,a=t[t.length-1];"Space"===a&&(a=" ");for(let e=0;e<t.length-1;e+=1){const a=t[e];if(/^(cmd|meta|m)$/i.test(a))s=!0;else if(/^a(lt)?$/i.test(a))n=!0;else if(/^(c|ctrl|control)$/i.test(a))r=!0;else if(/^s(hift)?$/i.test(a))o=!0;else{if(!/^mod$/i.test(a))throw new Error(`Unrecognized modifier name: ${a}`);fe()||Ee()?s=!0:r=!0}}return n&&(a=`Alt-${a}`),r&&(a=`Ctrl-${a}`),s&&(a=`Meta-${a}`),o&&(a=`Shift-${a}`),a}(e).split(/-(?!$)/),a=s.find((e=>!["Alt","Ctrl","Meta","Shift"].includes(e))),i=new KeyboardEvent("keydown",{key:"Space"===a?" ":a,altKey:s.includes("Alt"),ctrlKey:s.includes("Ctrl"),metaKey:s.includes("Meta"),shiftKey:s.includes("Shift"),bubbles:!0,cancelable:!0}),c=t.captureTransaction((()=>{n.someProp("handleKeyDown",(e=>e(n,i)))}));return null==c||c.steps.forEach((e=>{const t=e.map(r.mapping);t&&o&&r.maybeStep(t)})),!0},$e=(e,t={})=>({state:n,dispatch:o})=>!!z(n,O(e,n.schema),t)&&r.lift(n,o),Pe=()=>({state:e,dispatch:t})=>r.liftEmptyBlock(e,t),je=e=>({state:t,dispatch:n})=>{const r=O(e,t.schema);return o.liftListItem(r)(t,n)},Ae=()=>({state:e,dispatch:t})=>r.newlineInCode(e,t);function Ie(e,t){const n="string"==typeof t?[t]:t;return Object.keys(e).reduce(((t,r)=>(n.includes(r)||(t[r]=e[r]),t)),{})}var Re=(e,t)=>({tr:n,state:r,dispatch:o})=>{let s=null,a=null;const i=C("string"==typeof e?e:e.name,r.schema);return!!i&&("node"===i&&(s=O(e,r.schema)),"mark"===i&&(a=M(e,r.schema)),o&&n.selection.ranges.forEach((e=>{r.doc.nodesBetween(e.$from.pos,e.$to.pos,((e,r)=>{s&&s===e.type&&n.setNodeMarkup(r,void 0,Ie(e.attrs,t)),a&&e.marks.length&&e.marks.forEach((o=>{a===o.type&&n.addMark(r,r+e.nodeSize,a.create(Ie(o.attrs,t)))}))}))})),!0)},Ne=()=>({tr:e,dispatch:t})=>(t&&e.scrollIntoView(),!0),Be=()=>({tr:t,dispatch:n})=>{if(n){const n=new e.AllSelection(t.doc);t.setSelection(n)}return!0},ze=()=>({state:e,dispatch:t})=>r.selectNodeBackward(e,t),Fe=()=>({state:e,dispatch:t})=>r.selectNodeForward(e,t),De=()=>({state:e,dispatch:t})=>r.selectParentNode(e,t),Le=()=>({state:e,dispatch:t})=>r.selectTextblockEnd(e,t),Ke=()=>({state:e,dispatch:t})=>r.selectTextblockStart(e,t),Ve=(e,{errorOnInvalidContent:t,emitUpdate:n=!0,parseOptions:r={}}={})=>({editor:o,tr:s,dispatch:a,commands:i})=>{const{doc:c}=s;if("full"!==r.preserveWhitespace){const i=u(e,o.schema,r,{errorOnInvalidContent:null!=t?t:o.options.enableContentCheck});return a&&s.replaceWith(0,c.content.size,i).setMeta("preventUpdate",!n),!0}return a&&s.setMeta("preventUpdate",!n),i.insertContentAt({from:0,to:c.content.size},e,{parseOptions:r,errorOnInvalidContent:null!=t?t:o.options.enableContentCheck})};var qe=(e,t={})=>({tr:n,state:r,dispatch:o})=>{const{selection:s}=n,{empty:a,ranges:i}=s,c=M(e,r.schema);if(o)if(a){const e=S(r,c);n.addStoredMark(c.create({...e,...t}))}else i.forEach((e=>{const o=e.$from.pos,s=e.$to.pos;r.doc.nodesBetween(o,s,((e,r)=>{const a=Math.max(r,o),i=Math.min(r+e.nodeSize,s);e.marks.find((e=>e.type===c))?e.marks.forEach((e=>{c===e.type&&n.addMark(a,i,c.create({...e.attrs,...t}))})):n.addMark(a,i,c.create(t))}))}));return function(e,t,n){var r;const{selection:o}=t;let s=null;if(L(o)&&(s=o.$cursor),s){const t=null!=(r=e.storedMarks)?r:s.marks();return!!n.isInSet(t)||!t.some((e=>e.type.excludes(n)))}const{ranges:a}=o;return a.some((({$from:t,$to:r})=>{let o=0===t.depth&&e.doc.inlineContent&&e.doc.type.allowsMarkType(n);return e.doc.nodesBetween(t.pos,r.pos,((e,t,r)=>{if(o)return!1;if(e.isInline){const t=!r||r.type.allowsMarkType(n),s=!!n.isInSet(e.marks)||!e.marks.some((e=>e.type.excludes(n)));o=t&&s}return!o})),o}))}(r,n,c)},_e=(e,t)=>({tr:n})=>(n.setMeta(e,t),!0),We=(e,t={})=>({state:n,dispatch:o,chain:s})=>{const a=O(e,n.schema);let i;return n.selection.$anchor.sameParent(n.selection.$head)&&(i=n.selection.$anchor.parent.attrs),a.isTextblock?s().command((({commands:e})=>!!r.setBlockType(a,{...i,...t})(n)||e.clearNodes())).command((({state:e})=>r.setBlockType(a,{...i,...t})(e,o))).run():(console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.'),!1)},Je=t=>({tr:n,dispatch:r})=>{if(r){const{doc:r}=n,o=K(t,0,r.content.size),s=e.NodeSelection.create(r,o);n.setSelection(s)}return!0},Ue=t=>({tr:n,dispatch:r})=>{if(r){const{doc:r}=n,{from:o,to:s}="number"==typeof t?{from:t,to:t}:t,a=e.TextSelection.atStart(r).from,i=e.TextSelection.atEnd(r).to,c=K(o,a,i),d=K(s,a,i),l=e.TextSelection.create(r,c,d);n.setSelection(l)}return!0},He=e=>({state:t,dispatch:n})=>{const r=O(e,t.schema);return o.sinkListItem(r)(t,n)};function Ge(e,t){const n=e.storedMarks||e.selection.$to.parentOffset&&e.selection.$from.marks();if(n){const r=n.filter((e=>null==t?void 0:t.includes(e.type.name)));e.tr.ensureMarks(r)}}var Qe=({keepMarks:n=!0}={})=>({tr:r,state:o,dispatch:s,editor:a})=>{const{selection:i,doc:c}=r,{$from:d,$to:l}=i,p=N(a.extensionManager.attributes,d.node().type.name,d.node().attrs);if(i instanceof e.NodeSelection&&i.node.isBlock)return!(!d.parentOffset||!t.canSplit(c,d.pos))&&(s&&(n&&Ge(o,a.extensionManager.splittableMarks),r.split(d.pos).scrollIntoView()),!0);if(!d.parent.isBlock)return!1;const m=l.parentOffset===l.parent.content.size,u=0===d.depth?void 0:f(d.node(-1).contentMatchAt(d.indexAfter(-1)));let h=m&&u?[{type:u,attrs:p}]:void 0,g=t.canSplit(r.doc,r.mapping.map(d.pos),1,h);if(h||g||!t.canSplit(r.doc,r.mapping.map(d.pos),1,u?[{type:u}]:void 0)||(g=!0,h=u?[{type:u,attrs:p}]:void 0),s){if(g&&(i instanceof e.TextSelection&&r.deleteSelection(),r.split(r.mapping.map(d.pos),1,h),u&&!m&&!d.parentOffset&&d.parent.type!==u)){const e=r.mapping.map(d.before()),t=r.doc.resolve(e);d.node(-1).canReplaceWith(t.index(),t.index()+1,u)&&r.setNodeMarkup(r.mapping.map(d.before()),u)}n&&Ge(o,a.extensionManager.splittableMarks),r.scrollIntoView()}return g},Xe=(r,o={})=>({tr:s,state:a,dispatch:i,editor:c})=>{var d;const l=O(r,a.schema),{$from:p,$to:m}=a.selection,u=a.selection.node;if(u&&u.isBlock||p.depth<2||!p.sameParent(m))return!1;const f=p.node(-1);if(f.type!==l)return!1;const h=c.extensionManager.attributes;if(0===p.parent.content.size&&p.node(-1).childCount===p.indexAfter(-1)){if(2===p.depth||p.node(-3).type!==l||p.index(-2)!==p.node(-2).childCount-1)return!1;if(i){let t=n.Fragment.empty;const r=p.index(-1)?1:p.index(-2)?2:3;for(let e=p.depth-r;e>=p.depth-3;e-=1)t=n.Fragment.from(p.node(e).copy(t));const a=p.indexAfter(-1)<p.node(-2).childCount?1:p.indexAfter(-2)<p.node(-3).childCount?2:3,i={...N(h,p.node().type.name,p.node().attrs),...o},c=(null==(d=l.contentMatch.defaultType)?void 0:d.createAndFill(i))||void 0;t=t.append(n.Fragment.from(l.createAndFill(null,c)||void 0));const m=p.before(p.depth-(r-1));s.replace(m,p.after(-a),new n.Slice(t,4-r,0));let u=-1;s.doc.nodesBetween(m,s.doc.content.size,((e,t)=>{if(u>-1)return!1;e.isTextblock&&0===e.content.size&&(u=t+1)})),u>-1&&s.setSelection(e.TextSelection.near(s.doc.resolve(u))),s.scrollIntoView()}return!0}const g=m.pos===p.end()?f.contentMatchAt(0).defaultType:null,y={...N(h,f.type.name,f.attrs),...o},k={...N(h,p.node().type.name,p.node().attrs),...o};s.delete(p.pos,m.pos);const x=g?[{type:l,attrs:y},{type:g,attrs:k}]:[{type:l,attrs:y}];if(!t.canSplit(s.doc,p.pos,2))return!1;if(i){const{selection:e,storedMarks:t}=a,{splittableMarks:n}=c.extensionManager,r=t||e.$to.parentOffset&&e.$from.marks();if(s.split(p.pos,2,x).scrollIntoView(),!r||!i)return!0;const o=r.filter((e=>n.includes(e.type.name)));s.ensureMarks(o)}return!0},Ye=(e,n)=>{const r=g((e=>e.type===n))(e.selection);if(!r)return!0;const o=e.doc.resolve(Math.max(0,r.pos-1)).before(r.depth);if(void 0===o)return!0;const s=e.doc.nodeAt(o);return r.node.type!==(null==s?void 0:s.type)||!t.canJoin(e.doc,r.pos)||(e.join(r.pos),!0)},Ze=(e,n)=>{const r=g((e=>e.type===n))(e.selection);if(!r)return!0;const o=e.doc.resolve(r.start).after(r.depth);if(void 0===o)return!0;const s=e.doc.nodeAt(o);return r.node.type!==(null==s?void 0:s.type)||!t.canJoin(e.doc,o)||(e.join(o),!0)},et=(e,t,n,r={})=>({editor:o,tr:s,state:a,dispatch:i,chain:c,commands:d,can:l})=>{const{extensions:p,splittableMarks:m}=o.extensionManager,u=O(e,a.schema),f=O(t,a.schema),{selection:h,storedMarks:y}=a,{$from:k,$to:x}=h,v=k.blockRange(x),b=y||h.$to.parentOffset&&h.$from.marks();if(!v)return!1;const w=g((e=>F(e.type.name,p)))(h);if(v.depth>=1&&w&&v.depth-w.depth<=1){if(w.node.type===u)return d.liftListItem(f);if(F(w.node.type.name,p)&&u.validContent(w.node.content)&&i)return c().command((()=>(s.setNodeMarkup(w.pos,u),!0))).command((()=>Ye(s,u))).command((()=>Ze(s,u))).run()}return n&&b&&i?c().command((()=>{const e=l().wrapInList(u,r),t=b.filter((e=>m.includes(e.type.name)));return s.ensureMarks(t),!!e||d.clearNodes()})).wrapInList(u,r).command((()=>Ye(s,u))).command((()=>Ze(s,u))).run():c().command((()=>!!l().wrapInList(u,r)||d.clearNodes())).wrapInList(u,r).command((()=>Ye(s,u))).command((()=>Ze(s,u))).run()},tt=(e,t={},n={})=>({state:r,commands:o})=>{const{extendEmptyMarkRange:s=!1}=n,a=M(e,r.schema);return B(r,a,t)?o.unsetMark(a,{extendEmptyMarkRange:s}):o.setMark(a,t)},nt=(e,t,n={})=>({state:r,commands:o})=>{const s=O(e,r.schema),a=O(t,r.schema),i=z(r,s,n);let c;return r.selection.$anchor.sameParent(r.selection.$head)&&(c=r.selection.$anchor.parent.attrs),i?o.setNode(a,c):o.setNode(s,{...c,...n})},rt=(e,t={})=>({state:n,commands:r})=>{const o=O(e,n.schema);return z(n,o,t)?r.lift(o):r.wrapIn(o,t)},ot=()=>({state:e,dispatch:t})=>{const n=e.plugins;for(let r=0;r<n.length;r+=1){const o=n[r];let s;if(o.spec.isInputRules&&(s=o.getState(e))){if(t){const t=e.tr,n=s.transform;for(let e=n.steps.length-1;e>=0;e-=1)t.step(n.steps[e].invert(n.docs[e]));if(s.text){const n=t.doc.resolve(s.from).marks();t.replaceWith(s.from,s.to,e.schema.text(s.text,n))}else t.delete(s.from,s.to)}return!0}}return!1},st=()=>({tr:e,dispatch:t})=>{const{selection:n}=e,{empty:r,ranges:o}=n;return r||t&&o.forEach((t=>{e.removeMark(t.$from.pos,t.$to.pos)})),!0},at=(e,t={})=>({tr:n,state:r,dispatch:o})=>{var s;const{extendEmptyMarkRange:a=!1}=t,{selection:i}=n,c=M(e,r.schema),{$from:d,empty:l,ranges:p}=i;if(!o)return!0;if(l&&a){let{from:e,to:t}=i;const r=null==(s=d.marks().find((e=>e.type===c)))?void 0:s.attrs,o=I(d,c,r);o&&(e=o.from,t=o.to),n.removeMark(e,t,c)}else p.forEach((e=>{n.removeMark(e.$from.pos,e.$to.pos,c)}));return n.removeStoredMark(c),!0},it=(e,t={})=>({tr:n,state:r,dispatch:o})=>{let s=null,a=null;const i=C("string"==typeof e?e:e.name,r.schema);return!!i&&("node"===i&&(s=O(e,r.schema)),"mark"===i&&(a=M(e,r.schema)),o&&n.selection.ranges.forEach((e=>{const o=e.$from.pos,i=e.$to.pos;let c,d,l,p;n.selection.empty?r.doc.nodesBetween(o,i,((e,t)=>{s&&s===e.type&&(l=Math.max(t,o),p=Math.min(t+e.nodeSize,i),c=t,d=e)})):r.doc.nodesBetween(o,i,((e,r)=>{r<o&&s&&s===e.type&&(l=Math.max(r,o),p=Math.min(r+e.nodeSize,i),c=r,d=e),r>=o&&r<=i&&(s&&s===e.type&&n.setNodeMarkup(r,void 0,{...e.attrs,...t}),a&&e.marks.length&&e.marks.forEach((s=>{if(a===s.type){const c=Math.max(r,o),d=Math.min(r+e.nodeSize,i);n.addMark(c,d,a.create({...s.attrs,...t}))}})))})),d&&(void 0!==c&&n.setNodeMarkup(c,void 0,{...d.attrs,...t}),a&&d.marks.length&&d.marks.forEach((e=>{a===e.type&&n.addMark(l,p,a.create({...e.attrs,...t}))})))})),!0)},ct=(e,t={})=>({state:n,dispatch:o})=>{const s=O(e,n.schema);return r.wrapIn(s,t)(n,o)},dt=(e,t={})=>({state:n,dispatch:r})=>{const s=O(e,n.schema);return o.wrapInList(s,t)(n,r)},lt=Q.create({name:"commands",addCommands:()=>({...Y})}),pt=Q.create({name:"delete",onUpdate({transaction:e,appendedTransactions:n}){var r,o,s;const a=()=>{var r,o,s,a;if(null!=(a=null==(s=null==(o=null==(r=this.editor.options.coreExtensionOptions)?void 0:r.delete)?void 0:o.filterTransaction)?void 0:s.call(o,e))?a:e.getMeta("y-sync$"))return;const i=d(e.before,[e,...n]);T(i).forEach((t=>{i.mapping.mapResult(t.oldRange.from).deletedAfter&&i.mapping.mapResult(t.oldRange.to).deletedBefore&&i.before.nodesBetween(t.oldRange.from,t.oldRange.to,((n,r)=>{const o=r+n.nodeSize-2,s=t.oldRange.from<=r&&o<=t.oldRange.to;this.editor.emit("delete",{type:"node",node:n,from:r,to:o,newFrom:i.mapping.map(r),newTo:i.mapping.map(o),deletedRange:t.oldRange,newRange:t.newRange,partial:!s,editor:this.editor,transaction:e,combinedTransform:i})}))}));const c=i.mapping;i.steps.forEach(((n,r)=>{var o,s;if(n instanceof t.RemoveMarkStep){const t=c.slice(r).map(n.from,-1),a=c.slice(r).map(n.to),d=c.invert().map(t,-1),l=c.invert().map(a),p=null==(o=i.doc.nodeAt(t-1))?void 0:o.marks.some((e=>e.eq(n.mark))),m=null==(s=i.doc.nodeAt(a))?void 0:s.marks.some((e=>e.eq(n.mark)));this.editor.emit("delete",{type:"mark",mark:n.mark,from:n.from,to:n.to,deletedRange:{from:d,to:l},newRange:{from:t,to:a},partial:Boolean(m||p),editor:this.editor,transaction:e,combinedTransform:i})}}))};null==(s=null==(o=null==(r=this.editor.options.coreExtensionOptions)?void 0:r.delete)?void 0:o.async)||s?setTimeout(a,0):a()}}),mt=Q.create({name:"drop",addProseMirrorPlugins(){return[new e.Plugin({key:new e.PluginKey("tiptapDrop"),props:{handleDrop:(e,t,n,r)=>{this.editor.emit("drop",{editor:this.editor,event:t,slice:n,moved:r})}}})]}}),ut=Q.create({name:"editable",addProseMirrorPlugins(){return[new e.Plugin({key:new e.PluginKey("editable"),props:{editable:()=>this.editor.options.editable}})]}}),ft=new e.PluginKey("focusEvents"),ht=Q.create({name:"focusEvents",addProseMirrorPlugins(){const{editor:t}=this;return[new e.Plugin({key:ft,props:{handleDOMEvents:{focus:(e,n)=>{t.isFocused=!0;const r=t.state.tr.setMeta("focus",{event:n}).setMeta("addToHistory",!1);return e.dispatch(r),!1},blur:(e,n)=>{t.isFocused=!1;const r=t.state.tr.setMeta("blur",{event:n}).setMeta("addToHistory",!1);return e.dispatch(r),!1}}}})]}}),gt=Q.create({name:"keymap",addKeyboardShortcuts(){const t=()=>this.editor.commands.first((({commands:t})=>[()=>t.undoInputRule(),()=>t.command((({tr:n})=>{const{selection:r,doc:o}=n,{empty:s,$anchor:a}=r,{pos:i,parent:c}=a,d=a.parent.isTextblock&&i>0?n.doc.resolve(i-1):a,l=d.parent.type.spec.isolating,p=a.pos-a.parentOffset,m=l&&1===d.parent.childCount?p===a.pos:e.Selection.atStart(o).from===i;return!(!s||!c.type.isTextblock||c.textContent.length||!m||m&&"paragraph"===a.parent.type.name)&&t.clearNodes()})),()=>t.deleteSelection(),()=>t.joinBackward(),()=>t.selectNodeBackward()])),n=()=>this.editor.commands.first((({commands:e})=>[()=>e.deleteSelection(),()=>e.deleteCurrentNode(),()=>e.joinForward(),()=>e.selectNodeForward()])),r={Enter:()=>this.editor.commands.first((({commands:e})=>[()=>e.newlineInCode(),()=>e.createParagraphNear(),()=>e.liftEmptyBlock(),()=>e.splitBlock()])),"Mod-Enter":()=>this.editor.commands.exitCode(),Backspace:t,"Mod-Backspace":t,"Shift-Backspace":t,Delete:n,"Mod-Delete":n,"Mod-a":()=>this.editor.commands.selectAll()},o={...r},s={...r,"Ctrl-h":t,"Alt-Backspace":t,"Ctrl-d":n,"Ctrl-Alt-Backspace":n,"Alt-Delete":n,"Alt-d":n,"Ctrl-a":()=>this.editor.commands.selectTextblockStart(),"Ctrl-e":()=>this.editor.commands.selectTextblockEnd()};return fe()||Ee()?s:o},addProseMirrorPlugins(){return[new e.Plugin({key:new e.PluginKey("clearDocument"),appendTransaction:(t,n,r)=>{if(t.some((e=>e.getMeta("composition"))))return;const o=t.some((e=>e.docChanged))&&!n.doc.eq(r.doc),s=t.some((e=>e.getMeta("preventClearDocument")));if(!o||s)return;const{empty:a,from:d,to:l}=n.selection,p=e.Selection.atStart(n.doc).from,m=e.Selection.atEnd(n.doc).to;if(a||!(d===p&&l===m))return;if(!D(r.doc))return;const u=r.tr,f=i({state:r,transaction:u}),{commands:h}=new c({editor:this.editor,state:f});return h.clearNodes(),u.steps.length?u:void 0}})]}}),yt=Q.create({name:"paste",addProseMirrorPlugins(){return[new e.Plugin({key:new e.PluginKey("tiptapPaste"),props:{handlePaste:(e,t,n)=>{this.editor.emit("paste",{editor:this.editor,event:t,slice:n})}}})]}}),kt=Q.create({name:"tabindex",addProseMirrorPlugins(){return[new e.Plugin({key:new e.PluginKey("tabindex"),props:{attributes:()=>this.editor.isEditable?{tabindex:"0"}:{}}})]}});exports.CommandManager=c,exports.Extension=Q,exports.InputRule=_,exports.Mark=class e extends U{constructor(){super(...arguments),this.type="mark"}static create(t={}){const n="function"==typeof t?t():t;return new e(n)}static handleExit({editor:e,mark:t}){const{tr:n}=e.state,r=e.state.selection.$from;if(r.pos===r.end()){const o=r.marks();if(!!!o.find((e=>(null==e?void 0:e.type.name)===t.name)))return!1;const s=o.find((e=>(null==e?void 0:e.type.name)===t.name));return s&&n.removeStoredMark(s),n.insertText(" ",r.pos),e.view.dispatch(n),!0}return!1}configure(e){return super.configure(e)}extend(e){const t="function"==typeof e?e():e;return super.extend(t)}},exports.Node=class e extends U{constructor(){super(...arguments),this.type="node"}static create(t={}){const n="function"==typeof t?t():t;return new e(n)}configure(e){return super.configure(e)}extend(e){const t="function"==typeof e?e():e;return super.extend(t)}},exports.PasteRule=H,exports.callOrReturn=x,exports.combineTransactionSteps=d,exports.createChainableState=i,exports.createDocument=u,exports.createNodeFromContent=m,exports.defaultBlockAt=f,exports.deleteProps=Ie,exports.elementFromString=p,exports.extensions=G,exports.findParentNode=g,exports.findParentNodeClosestToPos=h,exports.getChangedRanges=T,exports.getExtensionField=y,exports.getMarkAttributes=S,exports.getMarkRange=I,exports.getMarkType=M,exports.getMarksBetween=R,exports.getNodeAtPosition=(e,t,n,r=20)=>{const o=e.doc.resolve(n);let s=r,a=null;for(;s>0&&null===a;){const e=o.node(s);(null==e?void 0:e.type.name)===t?a=e:s-=1}return[a,s]},exports.getNodeType=O,exports.getSchemaTypeNameByName=C,exports.getSplittedAttributes=N,exports.getTextBetween=b,exports.getTextSerializersFromSchema=w,exports.isAndroid=ue,exports.isAtEndOfNode=(e,t)=>{const{$from:n,$to:r,$anchor:o}=e.selection;if(t){const n=g((e=>e.type.name===t))(e.selection);if(!n)return!1;const r=e.doc.resolve(n.pos+1);return o.pos+1===r.end()}return!(r.parentOffset<r.parent.nodeSize-2||n.pos!==r.pos)},exports.isAtStartOfNode=e=>{const{$from:t,$to:n}=e.selection;return!(t.parentOffset>0||t.pos!==n.pos)},exports.isFunction=k,exports.isList=F,exports.isMacOS=Ee,exports.isMarkActive=B,exports.isNodeActive=z,exports.isNodeEmpty=D,exports.isPlainObject=W,exports.isRegExp=$,exports.isTextSelection=L,exports.isiOS=fe,exports.markInputRule=function(e){return new _({find:e.find,handler:({state:t,range:n,match:r})=>{const o=x(e.getAttributes,void 0,r);if(!1===o||null===o)return null;const{tr:s}=t,a=r[r.length-1],i=r[0];if(a){const r=i.search(/\S/),c=n.from+i.indexOf(a),d=c+a.length;if(R(n.from,n.to,t.doc).filter((t=>t.mark.type.excluded.find((n=>n===e.type&&n!==t.mark.type)))).filter((e=>e.to>c)).length)return null;d<n.to&&s.delete(d,n.to),c>n.from&&s.delete(n.from+r,c);const l=n.from+r+a.length;s.addMark(n.from+r,l,e.type.create(o||{})),s.removeStoredMark(e.type)}}})},exports.markPasteRule=function(e){return new H({find:e.find,handler:({state:t,range:n,match:r,pasteEvent:o})=>{const s=x(e.getAttributes,void 0,r,o);if(!1===s||null===s)return null;const{tr:a}=t,i=r[r.length-1],c=r[0];let d=n.to;if(i){const r=c.search(/\S/),o=n.from+c.indexOf(i),l=o+i.length;if(R(n.from,n.to,t.doc).filter((t=>t.mark.type.excluded.find((n=>n===e.type&&n!==t.mark.type)))).filter((e=>e.to>o)).length)return null;l<n.to&&a.delete(l,n.to),o>n.from&&a.delete(n.from+r,o),d=n.from+r+i.length,a.addMark(n.from+r,d,e.type.create(s||{})),a.removeStoredMark(e.type)}}})},exports.mergeAttributes=function(...e){return e.filter((e=>!!e)).reduce(((e,t)=>{const n={...e};return Object.entries(t).forEach((([e,t])=>{if(n[e])if("class"===e){const r=t?String(t).split(" "):[],o=n[e]?n[e].split(" "):[],s=r.filter((e=>!o.includes(e)));n[e]=[...o,...s].join(" ")}else if("style"===e){const r=t?t.split(";").map((e=>e.trim())).filter(Boolean):[],o=n[e]?n[e].split(";").map((e=>e.trim())).filter(Boolean):[],s=new Map;o.forEach((e=>{const[t,n]=e.split(":").map((e=>e.trim()));s.set(t,n)})),r.forEach((e=>{const[t,n]=e.split(":").map((e=>e.trim()));s.set(t,n)})),n[e]=Array.from(s.entries()).map((([e,t])=>`${e}: ${t}`)).join("; ")}else n[e]=t;else n[e]=t})),n}),{})},exports.mergeDeep=J,exports.minMax=K,exports.objectIncludes=P,exports.removeDuplicates=E,exports.resolveFocusPosition=V,exports.selectionToInsertionEnd=q,exports.splitExtensions=v,exports.textblockTypeInputRule=function(e){return new _({find:e.find,handler:({state:t,range:n,match:r})=>{const o=t.doc.resolve(n.from),s=x(e.getAttributes,void 0,r)||{};if(!o.node(-1).canReplaceWith(o.index(-1),o.indexAfter(-1),e.type))return null;t.tr.delete(n.from,n.to).setBlockType(n.from,n.from,e.type,s)}})},exports.wrappingInputRule=function(e){return new _({find:e.find,handler:({state:n,range:r,match:o,chain:s})=>{const a=x(e.getAttributes,void 0,o)||{},i=n.tr.delete(r.from,r.to),c=i.doc.resolve(r.from).blockRange(),d=c&&t.findWrapping(c,e.type,a);if(!d)return null;if(i.wrap(c,d),e.keepMarks&&e.editor){const{selection:t,storedMarks:r}=n,{splittableMarks:o}=e.editor.extensionManager,s=r||t.$to.parentOffset&&t.$from.marks();if(s){const e=s.filter((e=>o.includes(e.type.name)));i.ensureMarks(e)}}if(e.keepAttributes){const t="bulletList"===e.type.name||"orderedList"===e.type.name?"listItem":"taskList";s().updateAttributes(t,a).run()}const l=i.doc.resolve(r.from-1).nodeBefore;l&&l.type===e.type&&t.canJoin(i.doc,r.from-1)&&(!e.joinPredicate||e.joinPredicate(o,l))&&i.join(r.from-1)}})};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|