@peak-ai/canvas 1.4.17-rc.16 → 1.4.19
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/GrapesjsCanvas.d.ts +9 -1
- package/GrapesjsCanvas.js +5 -4
- package/GrapesjsCanvas.js.map +1 -1
- package/helpers/css.d.ts +1 -1
- package/helpers/css.js +1 -1
- package/helpers/css.js.map +1 -1
- package/helpers/filter-placeholder.d.ts +1 -0
- package/helpers/filter-placeholder.js +2 -0
- package/helpers/filter-placeholder.js.map +1 -0
- package/index.d.ts +5 -0
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/package.json +6 -2
- package/plugins/grapejs-plugin.d.ts +1 -1
- package/plugins/grapejs-plugin.js +3 -2
- package/plugins/grapejs-plugin.js.map +1 -1
- package/plugins/helpers/custom-modal.d.ts +11 -0
- package/plugins/helpers/custom-modal.js +2 -0
- package/plugins/helpers/custom-modal.js.map +1 -0
- package/plugins/helpers/data-table.d.ts +2 -1
- package/plugins/helpers/data-table.js +1 -1
- package/plugins/helpers/data-table.js.map +1 -1
- package/plugins/helpers/extra.js +1 -1
- package/plugins/helpers/extra.js.map +1 -1
- package/plugins/helpers/query-details-modal.d.ts +17 -0
- package/plugins/helpers/query-details-modal.js +4 -0
- package/plugins/helpers/query-details-modal.js.map +1 -0
- package/plugins/helpers/query-loading-modal.d.ts +5 -0
- package/plugins/helpers/query-loading-modal.js +2 -0
- package/plugins/helpers/query-loading-modal.js.map +1 -0
- package/plugins/helpers/render-components.js +7 -7
- package/plugins/helpers/render-components.js.map +1 -1
- package/plugins/helpers/styled-info-button.d.ts +28 -0
- package/plugins/helpers/styled-info-button.js +2 -0
- package/plugins/helpers/styled-info-button.js.map +1 -0
- package/shadcn/components/icons/AiAvatarIcon.d.ts +7 -0
- package/shadcn/components/icons/AiAvatarIcon.js +2 -0
- package/shadcn/components/icons/AiAvatarIcon.js.map +1 -0
- package/shadcn/components/ui/button.d.ts +1 -1
- package/shadcn/components/ui/component-wrapper.d.ts +26 -0
- package/shadcn/components/ui/component-wrapper.js +2 -0
- package/shadcn/components/ui/component-wrapper.js.map +1 -0
- package/shadcn/components/ui/date-filter.js +1 -1
- package/shadcn/components/ui/date-filter.js.map +1 -1
- package/shadcn/components/ui/error-container.d.ts +22 -0
- package/shadcn/components/ui/error-container.js +2 -0
- package/shadcn/components/ui/error-container.js.map +1 -0
- package/shadcn/components/ui/error-wrapper.d.ts +20 -0
- package/shadcn/components/ui/error-wrapper.js +2 -0
- package/shadcn/components/ui/error-wrapper.js.map +1 -0
- package/shadcn/components/ui/filter.js +1 -1
- package/shadcn/components/ui/filter.js.map +1 -1
- package/shadcn/components/ui/search.js +1 -1
- package/shadcn/components/ui/search.js.map +1 -1
- package/shadcn/components/ui/table.js +1 -1
- package/shadcn/components/ui/table.js.map +1 -1
- package/types/grapesjs-tailwind.d.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","names":["useCallback","useEffect","useRef","useState","ChevronDown","ChevronUp","ListFilter","FilterIcon","Loader2Icon","Button","Checkbox","ScrollArea","getAffectedComponentsWithLoader","renderDateFilter","jsx","_jsx","jsxs","_jsxs","FilterHeader","_ref","label","count","isDisabled","isDropdownOpen","isLoading","toggleOpen","ChevronIcon","variant","size","disabled","onClick","className","children","FilterActions","_ref2","selected","allSelected","onClear","onSelectAll","checked","onCheckedChange","length","type","onMouseDown","e","stopPropagation","preventDefault","FilterOptionList","_ref3","options","onToggle","viewportClassName","map","opt","value","includes","onChange","renderFilter","_ref4","gjsModel","performInteraction","_useState","_extends","get","componentData","setComponentData","_componentData$option","_componentData$value","_componentData$classN","_componentData$affect","affectedComponents","_componentData$text","text","_componentData$filter","filterType","wrapperRef","_useState2","attributes","setAttributes","_useState3","setIsDropdownOpen","_useState4","searchQuery","setSearchQuery","_useState5","isApplying","setIsApplying","_useState6","left","right","dropdownPosition","setDropdownPosition","defaultValue","_useState7","Array","isArray","selectedValues","setSelectedValues","isMultiSelect","isBusy","interactionApiInProgress","allOptionsSelected","_document$getElementB","current","filterRect","getBoundingClientRect","dropdownWidth","iframeViewportWidth","document","documentElement","clientWidth","iframeBodyWidth","getElementById","spaceToRight","spaceToLeft","shiftLeft","updateComponentData","updateAttributes","on","off","_wrapperRef$current$o","_wrapperRef$current","doc","ownerDocument","handleOutsideClick","contains","target","handleEscape","key","addEventListener","removeEventListener","filteredOptions","filter","String","toLowerCase","updateAndApply","_x","_updateAndApply","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","newValues","id","wrap","_callee$","_context","prev","next","set","interactionType","concat","finish","stop","handleOptionToggle","val","v","singleValue","handleClearAll","handleSelectAll","o","ref","style","color","backgroundColor","placeholder"],"sources":["../../../../src/shadcn/components/ui/filter.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { ChevronDown, ChevronUp, ListFilter as FilterIcon, Loader2Icon } from 'lucide-react';\n\nimport { Button } from './button';\nimport { Checkbox } from './checkbox';\nimport { ScrollArea } from './scroll-area';\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { renderDateFilter } from './date-filter';\n\ntype FilterOption = {\n label: string;\n value: string;\n};\n\ntype FilterProps = {\n isEditable?: boolean;\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\ntype FilterHeaderProps = {\n label: string;\n count: number;\n isDisabled: boolean;\n isDropdownOpen: boolean;\n isLoading: boolean;\n toggleOpen: () => void;\n};\n\ntype FilterActionsProps = {\n selected: string[];\n allSelected: boolean;\n onClear: () => void;\n onSelectAll: () => void;\n isDisabled: boolean;\n};\n\ntype FilterOptionListProps = {\n options: FilterOption[];\n selected: string[];\n onToggle: (value: string) => void;\n isDisabled: boolean;\n};\n\nfunction FilterHeader({\n label,\n count,\n isDisabled,\n isDropdownOpen,\n isLoading,\n toggleOpen,\n}: FilterHeaderProps) {\n const ChevronIcon = isDropdownOpen ? ChevronUp : ChevronDown;\n\n return (\n <Button variant=\"outline\" size=\"sm\" disabled={isDisabled} onClick={toggleOpen} className=\"px-2\">\n <FilterIcon size={16} />\n {count > 0 ? `${label} (${count})` : label}\n {isLoading ? (\n <Loader2Icon className=\"ml-2 animate-spin\" size={16} />\n ) : (\n <ChevronIcon size={16} className=\"ml-1\" />\n )}\n </Button>\n );\n}\n\nfunction FilterActions({\n selected,\n allSelected,\n onClear,\n onSelectAll,\n isDisabled,\n}: FilterActionsProps) {\n return (\n <div className=\"flex items-center mb-3\">\n <Checkbox\n checked={allSelected}\n onCheckedChange={() => (allSelected ? onClear() : onSelectAll())}\n disabled={isDisabled}\n />\n <span className=\"ml-2 text-sm text-gray-900\">Select All</span>\n {selected.length > 0 && (\n <button\n type=\"button\"\n className=\"ml-auto text-sm text-blue-600 hover:underline\"\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onClick={onClear}\n disabled={isDisabled}\n >\n Clear All\n </button>\n )}\n </div>\n );\n}\n\nfunction FilterOptionList({ options, selected, onToggle, isDisabled }: FilterOptionListProps) {\n return (\n <ScrollArea viewportClassName=\"max-h-48 overflow-y-auto mb-4 space-y-2\">\n {options.length > 0 ? (\n options.map((opt) => (\n <label\n key={opt.value}\n className=\"flex items-center space-x-2 hover:bg-gray-100 rounded p-1 transition hover:cursor-pointer\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!isDisabled) {\n onToggle(opt.value);\n }\n }}\n >\n <Checkbox\n checked={selected.includes(opt.value)}\n onChange={() => {\n // Prevent checkbox from toggling when clicking label\n }}\n disabled={isDisabled}\n />\n <span className=\"text-sm text-gray-900\">{opt.label}</span>\n </label>\n ))\n ) : (\n <div className=\"text-sm text-gray-500\">No results found</div>\n )}\n </ScrollArea>\n );\n}\n\nexport function renderFilter({ gjsModel, performInteraction }: FilterProps) {\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n\n const {\n options = [],\n value = [],\n className = '',\n affectedComponents = [],\n text: label = 'Filter',\n filterType = 'multiselect',\n } = componentData;\n\n if (filterType === 'date') {\n return renderDateFilter({ gjsModel, performInteraction });\n }\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [isApplying, setIsApplying] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({ left: 'auto', right: '0' });\n\n const defaultValue = componentData.default || [];\n\n const [selectedValues, setSelectedValues] = useState<string[]>(() => {\n return Array.isArray(value) && value.length > 0 ? value : defaultValue;\n });\n\n const isMultiSelect = filterType === 'multiselect';\n const isBusy = attributes.interactionApiInProgress || isApplying;\n const allOptionsSelected = selectedValues.length === options.length && options.length > 0;\n\n useEffect(() => {\n if (!isDropdownOpen || !wrapperRef.current) {return;}\n\n const filterRect = wrapperRef.current.getBoundingClientRect();\n const dropdownWidth = 256;\n const iframeViewportWidth = document.documentElement.clientWidth;\n const iframeBodyWidth =\n document.getElementById('dashboard-root')?.clientWidth || iframeViewportWidth;\n\n const spaceToRight = iframeBodyWidth - filterRect.right;\n const spaceToLeft = filterRect.left;\n \n if (spaceToLeft >= dropdownWidth) {\n setDropdownPosition({ left: 'auto', right: '0px' });\n } else if (spaceToRight < dropdownWidth && spaceToLeft < dropdownWidth) {\n const shiftLeft = dropdownWidth - spaceToRight + 16;\n setDropdownPosition({ left: `-${shiftLeft}px`, right: 'auto' });\n } else if (spaceToRight >= dropdownWidth) {\n setDropdownPosition({ left: '0px', right: 'auto' });\n }\n }, [isDropdownOpen]);\n\n useEffect(() => {\n function updateComponentData() {\n setComponentData({ ...gjsModel.get('componentProps') });\n }\n\n function updateAttributes() {\n setAttributes({ ...gjsModel.get('attributes') });\n }\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const doc = wrapperRef.current?.ownerDocument ?? document;\n\n function handleOutsideClick(e: PointerEvent) {\n if (isDropdownOpen && wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setIsDropdownOpen(false);\n }\n }\n\n function handleEscape(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n setIsDropdownOpen(false);\n }\n }\n\n doc.addEventListener('pointerdown', handleOutsideClick);\n doc.addEventListener('keydown', handleEscape);\n\n return () => {\n doc.removeEventListener('pointerdown', handleOutsideClick);\n doc.removeEventListener('keydown', handleEscape);\n };\n }, [isDropdownOpen]);\n\n const filteredOptions = options.filter((opt: FilterOption) =>\n String(opt.label).toLowerCase().includes(searchQuery.toLowerCase()),\n );\n\n async function updateAndApply(newValues: string[] = selectedValues) {\n setIsApplying(true);\n\n try {\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n value: newValues,\n });\n\n const id = gjsModel.get('id');\n\n await performInteraction({\n interactionType: 'filter',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n } finally {\n setIsApplying(false);\n setIsDropdownOpen(false);\n }\n }\n\n const handleOptionToggle = useCallback(\n (val: string) => {\n if (isMultiSelect) {\n setSelectedValues((prev) =>\n prev.includes(val) ? prev.filter((v) => v !== val) : [...prev, val],\n );\n } else {\n if (selectedValues.includes(val)) {\n setSelectedValues([]);\n updateAndApply([]);\n } else {\n const singleValue = [val];\n setSelectedValues(singleValue);\n updateAndApply(singleValue);\n }\n }\n },\n [isMultiSelect, selectedValues],\n );\n\n function handleClearAll() {\n setSelectedValues([]);\n }\n\n function handleSelectAll() {\n setSelectedValues(options.map((o: FilterOption) => o.value));\n }\n\n return (\n <div\n ref={wrapperRef}\n className={`relative inline-block ${className}`}\n style={{ color: '#2A44D4', backgroundColor: 'rgb(255 255 255)' }}\n >\n <FilterHeader\n label={label}\n count={selectedValues.length}\n isDisabled={isBusy}\n isDropdownOpen={isDropdownOpen}\n isLoading={isBusy}\n toggleOpen={() => setIsDropdownOpen((prev) => !prev)}\n />\n\n {isDropdownOpen && (\n <div className=\"absolute top-full mt-2 w-64 bg-white border rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-4 z-50\" style={dropdownPosition}>\n <input\n type=\"text\"\n placeholder=\"Search...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"w-full mb-3 px-2 py-1 border rounded focus:outline-none\"\n disabled={isBusy}\n />\n\n {isMultiSelect && (\n <FilterActions\n selected={selectedValues}\n allSelected={allOptionsSelected}\n onClear={handleClearAll}\n onSelectAll={handleSelectAll}\n isDisabled={isBusy}\n />\n )}\n\n <FilterOptionList\n options={filteredOptions}\n selected={selectedValues}\n onToggle={handleOptionToggle}\n isDisabled={isBusy}\n />\n\n {isMultiSelect && (\n <div className=\"flex justify-end space-x-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setIsDropdownOpen(false)}\n disabled={isApplying}\n >\n Cancel\n </Button>\n <Button\n variant=\"default\"\n size=\"sm\"\n onClick={() => updateAndApply(selectedValues)}\n disabled={isBusy}\n >\n {isApplying && <Loader2Icon className=\"animate-spin mr-2\" size={16} />}Apply\n </Button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"filter.js","names":["useCallback","useEffect","useRef","useState","ChevronDown","ChevronUp","ListFilter","FilterIcon","Loader2Icon","Button","Checkbox","ScrollArea","getAffectedComponentsWithLoader","renderDateFilter","jsx","_jsx","jsxs","_jsxs","FilterHeader","_ref","label","count","isDisabled","isDropdownOpen","isLoading","toggleOpen","ChevronIcon","variant","size","disabled","onClick","className","children","FilterActions","_ref2","selected","allSelected","onClear","onSelectAll","checked","onCheckedChange","length","type","onMouseDown","e","stopPropagation","preventDefault","FilterOptionList","_ref3","options","onToggle","viewportClassName","map","opt","value","includes","onChange","renderFilter","_ref4","gjsModel","performInteraction","_useState","_extends","get","componentData","setComponentData","_componentData$option","_componentData$value","_componentData$classN","_componentData$affect","affectedComponents","_componentData$text","text","_componentData$filter","filterType","actualOptions","name","Array","isArray","wrapperRef","_useState2","attributes","setAttributes","_useState3","setIsDropdownOpen","_useState4","searchQuery","setSearchQuery","_useState5","isApplying","setIsApplying","_useState6","left","right","dropdownPosition","setDropdownPosition","defaultValue","_useState7","selectedValues","setSelectedValues","isMultiSelect","hasPlaceholderOptions","hasError","error","interactionApiInProgress","loading","isBusy","allOptionsSelected","_document$getElementB","current","filterRect","getBoundingClientRect","dropdownWidth","iframeViewportWidth","document","documentElement","clientWidth","iframeBodyWidth","getElementById","spaceToRight","spaceToLeft","shiftLeft","updateComponentData","updateAttributes","on","off","_wrapperRef$current$o","_wrapperRef$current","doc","ownerDocument","handleOutsideClick","contains","target","handleEscape","key","addEventListener","removeEventListener","filteredOptions","filter","String","toLowerCase","updateAndApply","_x","_updateAndApply","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","newValues","id","wrap","_callee$","_context","prev","next","set","interactionType","concat","finish","stop","handleOptionToggle","val","v","singleValue","handleClearAll","handleSelectAll","o","ref","style","color","backgroundColor","placeholder"],"sources":["../../../../src/shadcn/components/ui/filter.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { ChevronDown, ChevronUp, ListFilter as FilterIcon, Loader2Icon } from 'lucide-react';\n\nimport { Button } from './button';\nimport { Checkbox } from './checkbox';\nimport { ScrollArea } from './scroll-area';\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { renderDateFilter } from './date-filter';\n\ntype FilterOption = {\n label: string;\n value: string;\n};\n\ntype FilterProps = {\n isEditable?: boolean;\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\ntype FilterHeaderProps = {\n label: string;\n count: number;\n isDisabled: boolean;\n isDropdownOpen: boolean;\n isLoading: boolean;\n toggleOpen: () => void;\n};\n\ntype FilterActionsProps = {\n selected: string[];\n allSelected: boolean;\n onClear: () => void;\n onSelectAll: () => void;\n isDisabled: boolean;\n};\n\ntype FilterOptionListProps = {\n options: FilterOption[];\n selected: string[];\n onToggle: (value: string) => void;\n isDisabled: boolean;\n};\n\nfunction FilterHeader({\n label,\n count,\n isDisabled,\n isDropdownOpen,\n isLoading,\n toggleOpen,\n}: FilterHeaderProps) {\n const ChevronIcon = isDropdownOpen ? ChevronUp : ChevronDown;\n\n return (\n <Button variant=\"outline\" size=\"sm\" disabled={isDisabled} onClick={toggleOpen} className=\"px-2\">\n <FilterIcon size={16} />\n {count > 0 ? `${label} (${count})` : label}\n {isLoading ? (\n <Loader2Icon className=\"ml-2 animate-spin\" size={16} />\n ) : (\n <ChevronIcon size={16} className=\"ml-1\" />\n )}\n </Button>\n );\n}\n\nfunction FilterActions({\n selected,\n allSelected,\n onClear,\n onSelectAll,\n isDisabled,\n}: FilterActionsProps) {\n return (\n <div className=\"flex items-center mb-3\">\n <Checkbox\n checked={allSelected}\n onCheckedChange={() => (allSelected ? onClear() : onSelectAll())}\n disabled={isDisabled}\n />\n <span className=\"ml-2 text-sm text-gray-900\">Select All</span>\n {selected.length > 0 && (\n <button\n type=\"button\"\n className=\"ml-auto text-sm text-blue-600 hover:underline\"\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onClick={onClear}\n disabled={isDisabled}\n >\n Clear All\n </button>\n )}\n </div>\n );\n}\n\nfunction FilterOptionList({ options, selected, onToggle, isDisabled }: FilterOptionListProps) {\n return (\n <ScrollArea viewportClassName=\"max-h-48 overflow-y-auto mb-4 space-y-2\">\n {options.length > 0 ? (\n options.map((opt) => (\n <label\n key={opt.value}\n className=\"flex items-center space-x-2 hover:bg-gray-100 rounded p-1 transition hover:cursor-pointer\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!isDisabled) {\n onToggle(opt.value);\n }\n }}\n >\n <Checkbox\n checked={selected.includes(opt.value)}\n onChange={() => {\n // Prevent checkbox from toggling when clicking label\n }}\n disabled={isDisabled}\n />\n <span className=\"text-sm text-gray-900\">{opt.label}</span>\n </label>\n ))\n ) : (\n <div className=\"text-sm text-gray-500\">No results found</div>\n )}\n </ScrollArea>\n );\n}\n\nexport function renderFilter({ gjsModel, performInteraction }: FilterProps) {\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n\n const {\n options = [],\n value = [],\n className = '',\n affectedComponents = [],\n text: label = 'Filter',\n filterType = 'multiselect',\n } = componentData;\n\n const actualOptions = (() => {\n if (options && typeof options === 'object' && options.name === '__peak_placeholder') {\n return [];\n }\n\n return Array.isArray(options) ? options : [];\n })();\n\n if (filterType === 'date') {\n return renderDateFilter({ gjsModel, performInteraction });\n }\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [isApplying, setIsApplying] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({ left: 'auto', right: '0' });\n\n const defaultValue = componentData.default || [];\n\n const [selectedValues, setSelectedValues] = useState<string[]>(() => {\n return Array.isArray(value) && value.length > 0 ? value : defaultValue;\n });\n\n const isMultiSelect = filterType === 'multiselect';\n const hasPlaceholderOptions = options && typeof options === 'object' && options.name === '__peak_placeholder';\n const hasError = attributes.error || componentData.error;\n const isLoading = !hasError && (attributes.interactionApiInProgress || isApplying || attributes.loading || hasPlaceholderOptions);\n const isBusy = isLoading || hasError;\n const allOptionsSelected = selectedValues.length === actualOptions.length && actualOptions.length > 0;\n\n useEffect(() => {\n if (!isDropdownOpen || !wrapperRef.current) {return;}\n\n const filterRect = wrapperRef.current.getBoundingClientRect();\n const dropdownWidth = 256;\n const iframeViewportWidth = document.documentElement.clientWidth;\n const iframeBodyWidth =\n document.getElementById('dashboard-root')?.clientWidth || iframeViewportWidth;\n\n const spaceToRight = iframeBodyWidth - filterRect.right;\n const spaceToLeft = filterRect.left;\n\n if (spaceToLeft >= dropdownWidth) {\n setDropdownPosition({ left: 'auto', right: '0px' });\n } else if (spaceToRight < dropdownWidth && spaceToLeft < dropdownWidth) {\n const shiftLeft = dropdownWidth - spaceToRight + 16;\n setDropdownPosition({ left: `-${shiftLeft}px`, right: 'auto' });\n } else if (spaceToRight >= dropdownWidth) {\n setDropdownPosition({ left: '0px', right: 'auto' });\n }\n }, [isDropdownOpen]);\n\n useEffect(() => {\n function updateComponentData() {\n setComponentData({ ...gjsModel.get('componentProps') });\n }\n\n function updateAttributes() {\n setAttributes({ ...gjsModel.get('attributes') });\n }\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const doc = wrapperRef.current?.ownerDocument ?? document;\n\n function handleOutsideClick(e: PointerEvent) {\n if (isDropdownOpen && wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setIsDropdownOpen(false);\n }\n }\n\n function handleEscape(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n setIsDropdownOpen(false);\n }\n }\n\n doc.addEventListener('pointerdown', handleOutsideClick);\n doc.addEventListener('keydown', handleEscape);\n\n return () => {\n doc.removeEventListener('pointerdown', handleOutsideClick);\n doc.removeEventListener('keydown', handleEscape);\n };\n }, [isDropdownOpen]);\n\n const filteredOptions = actualOptions.filter((opt: FilterOption) =>\n String(opt.label).toLowerCase().includes(searchQuery.toLowerCase()),\n );\n\n async function updateAndApply(newValues: string[] = selectedValues) {\n setIsApplying(true);\n\n try {\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n value: newValues,\n });\n\n const id = gjsModel.get('id');\n\n await performInteraction({\n interactionType: 'filter',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n } finally {\n setIsApplying(false);\n setIsDropdownOpen(false);\n }\n }\n\n const handleOptionToggle = useCallback(\n (val: string) => {\n if (isMultiSelect) {\n setSelectedValues((prev) =>\n prev.includes(val) ? prev.filter((v) => v !== val) : [...prev, val],\n );\n } else {\n if (selectedValues.includes(val)) {\n setSelectedValues([]);\n updateAndApply([]);\n } else {\n const singleValue = [val];\n setSelectedValues(singleValue);\n updateAndApply(singleValue);\n }\n }\n },\n [isMultiSelect, selectedValues],\n );\n\n function handleClearAll() {\n setSelectedValues([]);\n }\n\n function handleSelectAll() {\n setSelectedValues(actualOptions.map((o: FilterOption) => o.value));\n }\n\n return (\n <div\n ref={wrapperRef}\n className={`relative inline-block ${className}`}\n style={{ color: '#2A44D4', backgroundColor: 'rgb(255 255 255)' }}\n >\n <FilterHeader\n label={label}\n count={selectedValues.length}\n isDisabled={isBusy}\n isDropdownOpen={isDropdownOpen}\n isLoading={isLoading}\n toggleOpen={() => setIsDropdownOpen((prev) => !prev)}\n />\n\n {isDropdownOpen && (\n <div className=\"absolute top-full mt-2 w-64 bg-white border rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-4 z-50\" style={dropdownPosition}>\n <input\n type=\"text\"\n placeholder=\"Search...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"w-full mb-3 px-2 py-1 border rounded focus:outline-none\"\n disabled={isBusy}\n />\n\n {isMultiSelect && (\n <FilterActions\n selected={selectedValues}\n allSelected={allOptionsSelected}\n onClear={handleClearAll}\n onSelectAll={handleSelectAll}\n isDisabled={isBusy}\n />\n )}\n\n <FilterOptionList\n options={filteredOptions}\n selected={selectedValues}\n onToggle={handleOptionToggle}\n isDisabled={isBusy}\n />\n\n {isMultiSelect && (\n <div className=\"flex justify-end space-x-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setIsDropdownOpen(false)}\n disabled={isApplying}\n className=\"bg-[#EAECFB] border border-[#2A44D4] text-[#263DBF] hover:bg-[#EAECFB] hover:text-[#263DBF]\"\n >\n Cancel\n </Button>\n <Button\n variant=\"default\"\n size=\"sm\"\n onClick={() => updateAndApply(selectedValues)}\n disabled={isBusy}\n className=\"bg-[#2A44D4] text-white hover:bg-[#2A44D4] hover:text-white\"\n >\n {isApplying && <Loader2Icon className=\"animate-spin mr-2\" size={16} />}Apply\n </Button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import{useEffect,useRef,useState}from"react";import{Loader2Icon,Search as SearchIcon,X as ClearIcon,Info as InfoIcon}from"lucide-react";import{Input}from"./input";import{getAffectedComponentsWithLoader}from"../../../helpers";import{Tooltip,TooltipTrigger,TooltipContent}from"./tooltip";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var MAX_CHAR_LIMIT=140;var MaxCharLimitExceededMessage="Max 140 characters allowed.";export function renderSearch(_ref){var gjsModel=_ref.gjsModel,performInteraction=_ref.performInteraction;var wrapperRef=useRef(null);var _useState=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState[0],setComponentData=_useState[1];var placeholder=componentData.placeholder,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN;var initialSearchText=componentData.searchText||"";var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];var _useState3=useState(initialSearchText),searchQuery=_useState3[0],setSearchQuery=_useState3[1];var _useState4=useState(false),isApplying=_useState4[0],setIsApplying=_useState4[1];var isBusy=attributes.interactionApiInProgress||isApplying;var showClear=!!searchQuery&&!isBusy;useEffect(function(){function updateComponentData(){setComponentData(_extends({},gjsModel.get("componentProps")))}function updateAttributes(){setAttributes(_extends({},gjsModel.get("attributes")))}gjsModel.on("change:componentProps",updateComponentData);gjsModel.on("change:attributes",updateAttributes);return function(){gjsModel.off("change:componentProps",updateComponentData);gjsModel.off("change:attributes",updateAttributes)}},[gjsModel]);function applySearch(_x){return _applySearch.apply(this,arguments)}function _applySearch(){_applySearch=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(query.length>MAX_CHAR_LIMIT)){_context.next=2;break}return _context.abrupt("return");case 2:setIsApplying(true);_context.prev=3;gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{searchText:query}));id=gjsModel.get("id");_context.next=8;return performInteraction({interactionType:"search",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 8:_context.prev=8;setIsApplying(false);return _context.finish(8);case 11:case"end":return _context.stop()}},_callee,null,[[3,,8,11]])}));return _applySearch.apply(this,arguments)}function handleKeyDown(e){if(e.key==="Enter"){applySearch(searchQuery.trim())}}function handleSearchIconClick(){applySearch(searchQuery.trim())}function handleClear(){setSearchQuery("");applySearch("")}return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"flex items-center gap-2 p-2 "+className,children:[/*#__PURE__*/_jsxs("div",{className:"relative transition-all duration-200 ease-in-out "+(searchQuery?"w-[320px]":"w-[280px]"),style:{backgroundColor:"#fff"},children:[/*#__PURE__*/_jsxs("div",{children:[/*#__PURE__*/_jsx(Input,{type:"text",placeholder:"Search...",value:searchQuery,onChange:function onChange(e){return setSearchQuery(e.target.value)},onKeyDown:handleKeyDown,disabled:isBusy,className:"py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full"}),showClear&&/*#__PURE__*/_jsx("button",{type:"button",onClick:handleClear,className:"absolute right-10 top-7 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition","aria-label":"Clear search",children:/*#__PURE__*/_jsx(ClearIcon,{size:16})}),/*#__PURE__*/_jsx("button",{type:"button",onClick:handleSearchIconClick,disabled:isBusy,className:"absolute right-2 top-7 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors","aria-label":"Search",children:isBusy?/*#__PURE__*/_jsx(Loader2Icon,{size:18,className:"animate-spin"}):/*#__PURE__*/_jsx(SearchIcon,{size:18})})]}),searchQuery.length>MAX_CHAR_LIMIT&&/*#__PURE__*/_jsx("p",{className:"absolute left-1 text-xs text-red-600 pl-1 pt-1",children:MaxCharLimitExceededMessage})]}),placeholder&&/*#__PURE__*/_jsxs(Tooltip,{children:[/*#__PURE__*/_jsx(TooltipTrigger,{asChild:true,children:/*#__PURE__*/_jsx("span",{className:"cursor-pointer text-gray-400 hover:text-gray-600",children:/*#__PURE__*/_jsx(InfoIcon,{size:16})})}),/*#__PURE__*/_jsx(TooltipContent,{side:"bottom",children:placeholder})]})]})}
|
|
1
|
+
import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import{useEffect,useRef,useState}from"react";import{Loader2Icon,Search as SearchIcon,X as ClearIcon,Info as InfoIcon}from"lucide-react";import{Input}from"./input";import{getAffectedComponentsWithLoader}from"../../../helpers";import{Tooltip,TooltipTrigger,TooltipContent}from"./tooltip";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var MAX_CHAR_LIMIT=140;var MaxCharLimitExceededMessage="Max 140 characters allowed.";export function renderSearch(_ref){var gjsModel=_ref.gjsModel,performInteraction=_ref.performInteraction;var wrapperRef=useRef(null);var _useState=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState[0],setComponentData=_useState[1];var placeholder=componentData.placeholder,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN;var initialSearchText=componentData.searchText||"";var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];var _useState3=useState(initialSearchText),searchQuery=_useState3[0],setSearchQuery=_useState3[1];var _useState4=useState(false),isApplying=_useState4[0],setIsApplying=_useState4[1];var isBusy=attributes.interactionApiInProgress||isApplying;var showClear=!!searchQuery&&!isBusy;useEffect(function(){function updateComponentData(){setComponentData(_extends({},gjsModel.get("componentProps")))}function updateAttributes(){setAttributes(_extends({},gjsModel.get("attributes")))}gjsModel.on("change:componentProps",updateComponentData);gjsModel.on("change:attributes",updateAttributes);return function(){gjsModel.off("change:componentProps",updateComponentData);gjsModel.off("change:attributes",updateAttributes)}},[gjsModel]);function applySearch(_x){return _applySearch.apply(this,arguments)}function _applySearch(){_applySearch=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(query.length>MAX_CHAR_LIMIT)){_context.next=2;break}return _context.abrupt("return");case 2:setIsApplying(true);_context.prev=3;gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{searchText:query}));id=gjsModel.get("id");_context.next=8;return performInteraction({interactionType:"search",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 8:_context.prev=8;setIsApplying(false);return _context.finish(8);case 11:case"end":return _context.stop()}},_callee,null,[[3,,8,11]])}));return _applySearch.apply(this,arguments)}function handleKeyDown(e){if(e.key==="Enter"){applySearch(searchQuery.trim())}}function handleSearchIconClick(){applySearch(searchQuery.trim())}function handleClear(){setSearchQuery("");applySearch("")}return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"flex items-center gap-2 p-2 "+className,children:[/*#__PURE__*/_jsxs("div",{className:"relative transition-all duration-200 ease-in-out "+(searchQuery?"w-[320px]":"w-[280px]"),style:{backgroundColor:"#fff"},children:[/*#__PURE__*/_jsxs("div",{children:[/*#__PURE__*/_jsx(Input,{type:"text","data-slot":"search-input",placeholder:"Search...",value:searchQuery,onChange:function onChange(e){return setSearchQuery(e.target.value)},onKeyDown:handleKeyDown,disabled:isBusy,className:"py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full"}),showClear&&/*#__PURE__*/_jsx("button",{type:"button",onClick:handleClear,className:"absolute right-10 top-7 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition","aria-label":"Clear search",children:/*#__PURE__*/_jsx(ClearIcon,{size:16})}),/*#__PURE__*/_jsx("button",{type:"button",onClick:handleSearchIconClick,disabled:isBusy,className:"absolute right-2 top-7 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors","aria-label":"Search",children:isBusy?/*#__PURE__*/_jsx(Loader2Icon,{size:18,className:"animate-spin"}):/*#__PURE__*/_jsx(SearchIcon,{size:18})})]}),searchQuery.length>MAX_CHAR_LIMIT&&/*#__PURE__*/_jsx("p",{className:"absolute left-1 text-xs text-red-600 pl-1 pt-1",children:MaxCharLimitExceededMessage})]}),placeholder&&/*#__PURE__*/_jsxs(Tooltip,{children:[/*#__PURE__*/_jsx(TooltipTrigger,{asChild:true,children:/*#__PURE__*/_jsx("span",{className:"cursor-pointer text-gray-400 hover:text-gray-600",children:/*#__PURE__*/_jsx(InfoIcon,{size:16})})}),/*#__PURE__*/_jsx(TooltipContent,{side:"bottom",children:placeholder})]})]})}
|
|
2
2
|
//# sourceMappingURL=search.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","names":["useEffect","useRef","useState","Loader2Icon","Search","SearchIcon","X","ClearIcon","Info","InfoIcon","Input","getAffectedComponentsWithLoader","Tooltip","TooltipTrigger","TooltipContent","jsx","_jsx","jsxs","_jsxs","MAX_CHAR_LIMIT","MaxCharLimitExceededMessage","renderSearch","_ref","gjsModel","performInteraction","wrapperRef","_useState","_extends","get","componentData","setComponentData","placeholder","_componentData$affect","affectedComponents","_componentData$classN","className","initialSearchText","searchText","_useState2","attributes","setAttributes","_useState3","searchQuery","setSearchQuery","_useState4","isApplying","setIsApplying","isBusy","interactionApiInProgress","showClear","updateComponentData","updateAttributes","on","off","applySearch","_x","_applySearch","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","id","wrap","_callee$","_context","prev","next","length","abrupt","set","interactionType","concat","finish","stop","handleKeyDown","e","key","trim","handleSearchIconClick","handleClear","ref","children","style","backgroundColor","type","value","onChange","target","onKeyDown","disabled","onClick","size","asChild","side"],"sources":["../../../../src/shadcn/components/ui/search.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef, useState } from 'react';\nimport { Loader2Icon, Search as SearchIcon, X as ClearIcon, Info as InfoIcon } from 'lucide-react';\nimport { Input } from './input';\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { Tooltip, TooltipTrigger, TooltipContent } from './tooltip';\n\nconst MAX_CHAR_LIMIT = 140;\nconst MaxCharLimitExceededMessage = 'Max 140 characters allowed.';\n\ntype SearchProps = {\n isEditable?: boolean;\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\nexport function renderSearch({ gjsModel, performInteraction }: SearchProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n const { placeholder, affectedComponents = [], className = '' } = componentData;\n const initialSearchText = componentData.searchText || '';\n\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [searchQuery, setSearchQuery] = useState(initialSearchText);\n const [isApplying, setIsApplying] = useState(false);\n\n const isBusy = attributes.interactionApiInProgress || isApplying;\n const showClear = !!searchQuery && !isBusy;\n\n useEffect(() => {\n function updateComponentData() {\n setComponentData({ ...gjsModel.get('componentProps') });\n }\n\n function updateAttributes() {\n setAttributes({ ...gjsModel.get('attributes') });\n }\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel]);\n\n async function applySearch(query: string) {\n if (query.length > MAX_CHAR_LIMIT) {\n return;\n }\n\n setIsApplying(true);\n\n try {\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n searchText: query,\n });\n\n const id = gjsModel.get('id');\n\n await performInteraction({\n interactionType: 'search',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n } finally {\n setIsApplying(false);\n }\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'Enter') {\n applySearch(searchQuery.trim());\n }\n }\n\n function handleSearchIconClick() {\n applySearch(searchQuery.trim());\n }\n\n function handleClear() {\n setSearchQuery('');\n applySearch('');\n }\n\n return (\n <div ref={wrapperRef} className={`flex items-center gap-2 p-2 ${className}`}>\n <div\n className={`relative transition-all duration-200 ease-in-out ${\n searchQuery ? 'w-[320px]' : 'w-[280px]'\n }`}\n style={{ backgroundColor: '#fff' }}\n >\n <div>\n <Input\n type=\"text\"\n placeholder={'Search...'}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n disabled={isBusy}\n className={`py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full`}\n />\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-10 top-7 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition\"\n aria-label=\"Clear search\"\n >\n <ClearIcon size={16} />\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleSearchIconClick}\n disabled={isBusy}\n className=\"absolute right-2 top-7 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors\"\n aria-label=\"Search\"\n >\n {isBusy ? <Loader2Icon size={18} className=\"animate-spin\" /> : <SearchIcon size={18} />}\n </button>\n </div>\n\n {searchQuery.length > MAX_CHAR_LIMIT && (\n <p className=\"absolute left-1 text-xs text-red-600 pl-1 pt-1\">\n {MaxCharLimitExceededMessage}\n </p>\n )}\n </div>\n\n {placeholder && (\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"cursor-pointer text-gray-400 hover:text-gray-600\">\n <InfoIcon size={16} />\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{placeholder}</TooltipContent>\n </Tooltip>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"search.js","names":["useEffect","useRef","useState","Loader2Icon","Search","SearchIcon","X","ClearIcon","Info","InfoIcon","Input","getAffectedComponentsWithLoader","Tooltip","TooltipTrigger","TooltipContent","jsx","_jsx","jsxs","_jsxs","MAX_CHAR_LIMIT","MaxCharLimitExceededMessage","renderSearch","_ref","gjsModel","performInteraction","wrapperRef","_useState","_extends","get","componentData","setComponentData","placeholder","_componentData$affect","affectedComponents","_componentData$classN","className","initialSearchText","searchText","_useState2","attributes","setAttributes","_useState3","searchQuery","setSearchQuery","_useState4","isApplying","setIsApplying","isBusy","interactionApiInProgress","showClear","updateComponentData","updateAttributes","on","off","applySearch","_x","_applySearch","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","id","wrap","_callee$","_context","prev","next","length","abrupt","set","interactionType","concat","finish","stop","handleKeyDown","e","key","trim","handleSearchIconClick","handleClear","ref","children","style","backgroundColor","type","value","onChange","target","onKeyDown","disabled","onClick","size","asChild","side"],"sources":["../../../../src/shadcn/components/ui/search.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef, useState } from 'react';\nimport { Loader2Icon, Search as SearchIcon, X as ClearIcon, Info as InfoIcon } from 'lucide-react';\nimport { Input } from './input';\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { Tooltip, TooltipTrigger, TooltipContent } from './tooltip';\n\nconst MAX_CHAR_LIMIT = 140;\nconst MaxCharLimitExceededMessage = 'Max 140 characters allowed.';\n\ntype SearchProps = {\n isEditable?: boolean;\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\nexport function renderSearch({ gjsModel, performInteraction }: SearchProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n const { placeholder, affectedComponents = [], className = '' } = componentData;\n const initialSearchText = componentData.searchText || '';\n\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [searchQuery, setSearchQuery] = useState(initialSearchText);\n const [isApplying, setIsApplying] = useState(false);\n\n const isBusy = attributes.interactionApiInProgress || isApplying;\n const showClear = !!searchQuery && !isBusy;\n\n useEffect(() => {\n function updateComponentData() {\n setComponentData({ ...gjsModel.get('componentProps') });\n }\n\n function updateAttributes() {\n setAttributes({ ...gjsModel.get('attributes') });\n }\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel]);\n\n async function applySearch(query: string) {\n if (query.length > MAX_CHAR_LIMIT) {\n return;\n }\n\n setIsApplying(true);\n\n try {\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n searchText: query,\n });\n\n const id = gjsModel.get('id');\n\n await performInteraction({\n interactionType: 'search',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n } finally {\n setIsApplying(false);\n }\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'Enter') {\n applySearch(searchQuery.trim());\n }\n }\n\n function handleSearchIconClick() {\n applySearch(searchQuery.trim());\n }\n\n function handleClear() {\n setSearchQuery('');\n applySearch('');\n }\n\n return (\n <div ref={wrapperRef} className={`flex items-center gap-2 p-2 ${className}`}>\n <div\n className={`relative transition-all duration-200 ease-in-out ${\n searchQuery ? 'w-[320px]' : 'w-[280px]'\n }`}\n style={{ backgroundColor: '#fff' }}\n >\n <div>\n <Input\n type=\"text\"\n data-slot=\"search-input\"\n placeholder={'Search...'}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n disabled={isBusy}\n className={`py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full`}\n />\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-10 top-7 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition\"\n aria-label=\"Clear search\"\n >\n <ClearIcon size={16} />\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleSearchIconClick}\n disabled={isBusy}\n className=\"absolute right-2 top-7 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors\"\n aria-label=\"Search\"\n >\n {isBusy ? <Loader2Icon size={18} className=\"animate-spin\" /> : <SearchIcon size={18} />}\n </button>\n </div>\n\n {searchQuery.length > MAX_CHAR_LIMIT && (\n <p className=\"absolute left-1 text-xs text-red-600 pl-1 pt-1\">\n {MaxCharLimitExceededMessage}\n </p>\n )}\n </div>\n\n {placeholder && (\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"cursor-pointer text-gray-400 hover:text-gray-600\">\n <InfoIcon size={16} />\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{placeholder}</TooltipContent>\n </Tooltip>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _extends from"@babel/runtime/helpers/extends";import _objectWithoutPropertiesLoose from"@babel/runtime/helpers/objectWithoutPropertiesLoose";var _excluded=["className"],_excluded2=["className"],_excluded3=["className"],_excluded4=["className"],_excluded5=["className"],_excluded6=["className"],_excluded7=["className","children","sortDirection","onSort","sortable","isActive","isEditable","data-slot"],_excluded8=["className"],_excluded9=["className"];import*as React from"react";import{ArrowUp,ArrowDown}from"lucide-react";import{cn}from"../../utils";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function Table(_ref){var className=_ref.className,props=_objectWithoutPropertiesLoose(_ref,_excluded);return/*#__PURE__*/_jsx("table",_extends({"data-slot":"table",className:cn("w-[640px] caption-bottom text-
|
|
1
|
+
import _extends from"@babel/runtime/helpers/extends";import _objectWithoutPropertiesLoose from"@babel/runtime/helpers/objectWithoutPropertiesLoose";var _excluded=["className"],_excluded2=["className"],_excluded3=["className"],_excluded4=["className"],_excluded5=["className"],_excluded6=["className"],_excluded7=["className","children","sortDirection","onSort","sortable","isActive","isEditable","data-slot"],_excluded8=["className"],_excluded9=["className"];import*as React from"react";import{ArrowUp,ArrowDown}from"lucide-react";import{cn}from"../../utils";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function Table(_ref){var className=_ref.className,props=_objectWithoutPropertiesLoose(_ref,_excluded);return/*#__PURE__*/_jsx("table",_extends({"data-slot":"table",className:cn("w-[640px] caption-bottom text-[0.8rem] leading-4",className)},props))}function TableHeader(_ref2){var className=_ref2.className,props=_objectWithoutPropertiesLoose(_ref2,_excluded2);return/*#__PURE__*/_jsx("thead",_extends({"data-slot":"table-header",className:cn("[&_tr]:border-b font-bold bg-slate-100",className)},props))}function TableBody(_ref3){var className=_ref3.className,props=_objectWithoutPropertiesLoose(_ref3,_excluded3);return/*#__PURE__*/_jsx("tbody",_extends({"data-slot":"table-body",className:cn("[&_tr:last-child]:border-0",className)},props))}function TableFooter(_ref4){var className=_ref4.className,props=_objectWithoutPropertiesLoose(_ref4,_excluded4);return/*#__PURE__*/_jsx("tfoot",_extends({"data-slot":"table-footer",className:cn("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0",className)},props))}function TableRow(_ref5){var className=_ref5.className,props=_objectWithoutPropertiesLoose(_ref5,_excluded5);return/*#__PURE__*/_jsx("tr",_extends({"data-slot":"table-row",className:cn("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",className)},props))}function TableHead(_ref6){var className=_ref6.className,props=_objectWithoutPropertiesLoose(_ref6,_excluded6);return/*#__PURE__*/_jsx("th",_extends({"data-slot":"table-head",className:cn("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",className)},props))}function TableHeadSortable(_ref7){var className=_ref7.className,children=_ref7.children,_ref7$sortDirection=_ref7.sortDirection,sortDirection=_ref7$sortDirection===void 0?"asc":_ref7$sortDirection,onSort=_ref7.onSort,_ref7$sortable=_ref7.sortable,sortable=_ref7$sortable===void 0?true:_ref7$sortable,_ref7$isActive=_ref7.isActive,isActive=_ref7$isActive===void 0?false:_ref7$isActive,_ref7$isEditable=_ref7.isEditable,isEditable=_ref7$isEditable===void 0?false:_ref7$isEditable,dataSlot=_ref7["data-slot"],props=_objectWithoutPropertiesLoose(_ref7,_excluded7);var _React$useState=React.useState(false),isHovered=_React$useState[0],setIsHovered=_React$useState[1];function getSortIcon(){if(!sortable||!isActive&&!isHovered){return null}return sortDirection==="desc"?/*#__PURE__*/_jsx(ArrowDown,{className:"h-4 w-4"}):/*#__PURE__*/_jsx(ArrowUp,{className:"h-4 w-4"})}function handleSort(){if(!sortable){return}var newDirection="asc";if(sortDirection==="asc"){newDirection="desc"}else if(sortDirection==="desc"){newDirection="asc"}if(onSort){onSort(newDirection)}}var shouldApplyHeaderInteraction=sortable&&!isEditable;return/*#__PURE__*/_jsx("th",_extends({"data-slot":!isEditable?dataSlot:undefined,className:cn("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",shouldApplyHeaderInteraction&&"cursor-pointer hover:bg-muted/50 select-none",className),onClick:shouldApplyHeaderInteraction?handleSort:undefined,onMouseEnter:shouldApplyHeaderInteraction?function(){return setIsHovered(true)}:undefined,onMouseLeave:shouldApplyHeaderInteraction?function(){return setIsHovered(false)}:undefined},props,{children:/*#__PURE__*/_jsxs("div",{className:"flex items-center",children:[/*#__PURE__*/_jsx("span",{contentEditable:isEditable,className:isEditable?"outline-none focus:bg-blue-50 px-1 rounded":"",suppressContentEditableWarning:true,onClick:isEditable?function(e){return e.stopPropagation()}:undefined,"data-slot":isEditable?dataSlot:undefined,children:children}),sortable&&/*#__PURE__*/_jsx("div",{className:cn("ml-1 flex-shrink-0 w-4",isEditable&&"cursor-pointer hover:bg-muted/30 rounded p-0.5 -m-0.5"),onClick:isEditable?function(e){e.stopPropagation();handleSort()}:undefined,onMouseEnter:isEditable?function(){return setIsHovered(true)}:undefined,onMouseLeave:isEditable?function(){return setIsHovered(false)}:undefined,children:getSortIcon()})]})}))}function TableCell(_ref8){var className=_ref8.className,props=_objectWithoutPropertiesLoose(_ref8,_excluded8);return/*#__PURE__*/_jsx("td",_extends({"data-slot":"table-cell",className:cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",className)},props))}function TableCaption(_ref9){var className=_ref9.className,props=_objectWithoutPropertiesLoose(_ref9,_excluded9);return/*#__PURE__*/_jsx("caption",_extends({"data-slot":"table-caption",className:cn("text-muted-foreground mt-4 text-sm",className)},props))}export{Table,TableHeader,TableBody,TableFooter,TableHead,TableHeadSortable,TableRow,TableCell,TableCaption};
|
|
2
2
|
//# sourceMappingURL=table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","names":["React","ArrowUp","ArrowDown","cn","jsx","_jsx","jsxs","_jsxs","Table","_ref","className","props","_objectWithoutPropertiesLoose","_excluded","_extends","TableHeader","_ref2","_excluded2","TableBody","_ref3","_excluded3","TableFooter","_ref4","_excluded4","TableRow","_ref5","_excluded5","TableHead","_ref6","_excluded6","TableHeadSortable","_ref7","children","_ref7$sortDirection","sortDirection","onSort","_ref7$sortable","sortable","_ref7$isActive","isActive","_ref7$isEditable","isEditable","dataSlot","_excluded7","_React$useState","useState","isHovered","setIsHovered","getSortIcon","handleSort","newDirection","shouldApplyHeaderInteraction","undefined","onClick","onMouseEnter","onMouseLeave","contentEditable","suppressContentEditableWarning","e","stopPropagation","TableCell","_ref8","_excluded8","TableCaption","_ref9","_excluded9"],"sources":["../../../../src/shadcn/components/ui/table.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ArrowUp, ArrowDown } from 'lucide-react';\n\nimport { cn } from '../../utils';\n\nfunction Table({ className, ...props }: React.ComponentProps<'table'>) {\n return (\n <table\n data-slot=\"table\"\n className={cn('w-[640px] caption-bottom text-table', className)}\n {...props}\n />\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn('[&_tr]:border-b font-bold bg-slate-100', className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn('bg-muted/50 border-t font-medium [&>tr]:last:border-b-0', className)}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<'tr'>) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n 'hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<'th'>) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n 'text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport type SortDirection = 'asc' | 'desc' | null;\n\ntype TableHeadSortableProps = React.ComponentProps<'th'> & {\n sortDirection?: SortDirection;\n onSort?: (direction: SortDirection) => void;\n sortable?: boolean;\n isActive?: boolean;\n isEditable?: boolean;\n} & {\n 'data-slot'?: string;\n};\n\nfunction TableHeadSortable({ \n className, \n children, \n sortDirection = 'asc', \n onSort, \n sortable = true,\n isActive = false,\n isEditable = false,\n 'data-slot': dataSlot,\n ...props \n}: TableHeadSortableProps) {\n const [isHovered, setIsHovered] = React.useState(false);\n\n function getSortIcon() {\n if (!sortable || (!isActive && !isHovered)) {\n return null;\n }\n \n return sortDirection === 'desc' ? (\n <ArrowDown className=\"h-4 w-4\" />\n ) : (\n <ArrowUp className=\"h-4 w-4\" />\n );\n}\n\n function handleSort() {\n if (!sortable) {\n return;\n }\n \n let newDirection: SortDirection = 'asc';\n\n if (sortDirection === 'asc') {\n newDirection = 'desc';\n } else if (sortDirection === 'desc') {\n newDirection = 'asc';\n }\n \n if (onSort) {\n onSort(newDirection);\n }\n }\n\n const shouldApplyHeaderInteraction = sortable && !isEditable;\n\n return (\n <th\n data-slot={!isEditable ? dataSlot : undefined}\n className={cn(\n 'text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n shouldApplyHeaderInteraction && 'cursor-pointer hover:bg-muted/50 select-none',\n className,\n )}\n onClick={shouldApplyHeaderInteraction ? handleSort : undefined}\n onMouseEnter={shouldApplyHeaderInteraction ? () => setIsHovered(true) : undefined}\n onMouseLeave={shouldApplyHeaderInteraction ? () => setIsHovered(false) : undefined}\n {...props}\n >\n <div className=\"flex items-center\">\n <span \n contentEditable={isEditable}\n className={isEditable ? 'outline-none focus:bg-blue-50 px-1 rounded' : ''}\n suppressContentEditableWarning={true}\n onClick={isEditable ? (e) => e.stopPropagation() : undefined}\n data-slot={isEditable ? dataSlot : undefined}\n >\n {children}\n </span>\n {sortable && (\n <div \n className={cn(\n \"ml-1 flex-shrink-0 w-4\",\n isEditable && \"cursor-pointer hover:bg-muted/30 rounded p-0.5 -m-0.5\"\n )}\n onClick={isEditable ? (e) => {\n e.stopPropagation();\n handleSort();\n } : undefined}\n onMouseEnter={isEditable ? () => setIsHovered(true) : undefined}\n onMouseLeave={isEditable ? () => setIsHovered(false) : undefined}\n >\n {getSortIcon()}\n </div>\n )}\n </div>\n </th>\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<'td'>) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n 'p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<'caption'>) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn('text-muted-foreground mt-4 text-sm', className)}\n {...props}\n />\n );\n}\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableHeadSortable, TableRow, TableCell, TableCaption };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"table.js","names":["React","ArrowUp","ArrowDown","cn","jsx","_jsx","jsxs","_jsxs","Table","_ref","className","props","_objectWithoutPropertiesLoose","_excluded","_extends","TableHeader","_ref2","_excluded2","TableBody","_ref3","_excluded3","TableFooter","_ref4","_excluded4","TableRow","_ref5","_excluded5","TableHead","_ref6","_excluded6","TableHeadSortable","_ref7","children","_ref7$sortDirection","sortDirection","onSort","_ref7$sortable","sortable","_ref7$isActive","isActive","_ref7$isEditable","isEditable","dataSlot","_excluded7","_React$useState","useState","isHovered","setIsHovered","getSortIcon","handleSort","newDirection","shouldApplyHeaderInteraction","undefined","onClick","onMouseEnter","onMouseLeave","contentEditable","suppressContentEditableWarning","e","stopPropagation","TableCell","_ref8","_excluded8","TableCaption","_ref9","_excluded9"],"sources":["../../../../src/shadcn/components/ui/table.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ArrowUp, ArrowDown } from 'lucide-react';\n\nimport { cn } from '../../utils';\n\nfunction Table({ className, ...props }: React.ComponentProps<'table'>) {\n return (\n <table\n data-slot=\"table\"\n className={cn('w-[640px] caption-bottom text-[0.8rem] leading-4', className)}\n {...props}\n />\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn('[&_tr]:border-b font-bold bg-slate-100', className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn('bg-muted/50 border-t font-medium [&>tr]:last:border-b-0', className)}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<'tr'>) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n 'hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<'th'>) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n 'text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport type SortDirection = 'asc' | 'desc' | null;\n\ntype TableHeadSortableProps = React.ComponentProps<'th'> & {\n sortDirection?: SortDirection;\n onSort?: (direction: SortDirection) => void;\n sortable?: boolean;\n isActive?: boolean;\n isEditable?: boolean;\n} & {\n 'data-slot'?: string;\n};\n\nfunction TableHeadSortable({ \n className, \n children, \n sortDirection = 'asc', \n onSort, \n sortable = true,\n isActive = false,\n isEditable = false,\n 'data-slot': dataSlot,\n ...props \n}: TableHeadSortableProps) {\n const [isHovered, setIsHovered] = React.useState(false);\n\n function getSortIcon() {\n if (!sortable || (!isActive && !isHovered)) {\n return null;\n }\n \n return sortDirection === 'desc' ? (\n <ArrowDown className=\"h-4 w-4\" />\n ) : (\n <ArrowUp className=\"h-4 w-4\" />\n );\n}\n\n function handleSort() {\n if (!sortable) {\n return;\n }\n \n let newDirection: SortDirection = 'asc';\n\n if (sortDirection === 'asc') {\n newDirection = 'desc';\n } else if (sortDirection === 'desc') {\n newDirection = 'asc';\n }\n \n if (onSort) {\n onSort(newDirection);\n }\n }\n\n const shouldApplyHeaderInteraction = sortable && !isEditable;\n\n return (\n <th\n data-slot={!isEditable ? dataSlot : undefined}\n className={cn(\n 'text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n shouldApplyHeaderInteraction && 'cursor-pointer hover:bg-muted/50 select-none',\n className,\n )}\n onClick={shouldApplyHeaderInteraction ? handleSort : undefined}\n onMouseEnter={shouldApplyHeaderInteraction ? () => setIsHovered(true) : undefined}\n onMouseLeave={shouldApplyHeaderInteraction ? () => setIsHovered(false) : undefined}\n {...props}\n >\n <div className=\"flex items-center\">\n <span \n contentEditable={isEditable}\n className={isEditable ? 'outline-none focus:bg-blue-50 px-1 rounded' : ''}\n suppressContentEditableWarning={true}\n onClick={isEditable ? (e) => e.stopPropagation() : undefined}\n data-slot={isEditable ? dataSlot : undefined}\n >\n {children}\n </span>\n {sortable && (\n <div \n className={cn(\n \"ml-1 flex-shrink-0 w-4\",\n isEditable && \"cursor-pointer hover:bg-muted/30 rounded p-0.5 -m-0.5\"\n )}\n onClick={isEditable ? (e) => {\n e.stopPropagation();\n handleSort();\n } : undefined}\n onMouseEnter={isEditable ? () => setIsHovered(true) : undefined}\n onMouseLeave={isEditable ? () => setIsHovered(false) : undefined}\n >\n {getSortIcon()}\n </div>\n )}\n </div>\n </th>\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<'td'>) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n 'p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<'caption'>) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn('text-muted-foreground mt-4 text-sm', className)}\n {...props}\n />\n );\n}\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableHeadSortable, TableRow, TableCell, TableCaption };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grapesjs-tailwind.d.js","names":[],"sources":["../../src/types/grapesjs-tailwind.d.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\ndeclare module 'grapesjs-tailwind' {\n import { Plugin } from 'grapesjs';\n\n export type GrapesjsTailwindOptions = {\n blocks?: boolean;\n categories?: boolean;\n classesViewerOptions?: {\n appendTo?: string | HTMLElement;\n open?: boolean;\n showEmpty?: boolean;\n };\n config?: {\n plugins?: any[];\n presets?: any[];\n theme?: Record<string, any>;\n variants?: Record<string, any>;\n };\n customClasses?: string[];\n customTailwindViewerCSS?: string;\n gridDevicesPanel?: boolean;\n importTailwind?: boolean;\n includeLib?: boolean;\n purgeCss?: boolean;\n tailwindConfig?: string;\n tailwindCssPath?: string;\n tailwindExtendUi?: boolean;\n };\n\n // eslint-disable-next-line init-declarations\n declare const grapesjsTailwind: Plugin<GrapesjsTailwindOptions>;\n export default grapesjsTailwind;\n}\n\ndeclare module 'sherlockjs' {\n type ParseResult = {\n endDate?: Date;\n eventTitle?: string;\n isAllDay?: boolean;\n startDate?: Date;\n }\n\n type Sherlock = {\n parse(text: string): ParseResult;\n }\n\n // eslint-disable-next-line init-declarations\n const sherlock: Sherlock;\n export default sherlock;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"grapesjs-tailwind.d.js","names":[],"sources":["../../src/types/grapesjs-tailwind.d.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\ndeclare module 'grapesjs-tailwind' {\n import { Plugin } from 'grapesjs';\n\n export type GrapesjsTailwindOptions = {\n blocks?: boolean;\n categories?: boolean;\n classesViewerOptions?: {\n appendTo?: string | HTMLElement;\n open?: boolean;\n showEmpty?: boolean;\n };\n config?: {\n plugins?: any[];\n presets?: any[];\n theme?: Record<string, any>;\n variants?: Record<string, any>;\n };\n customClasses?: string[];\n customTailwindViewerCSS?: string;\n gridDevicesPanel?: boolean;\n importTailwind?: boolean;\n includeLib?: boolean;\n purgeCss?: boolean;\n tailwindConfig?: string;\n tailwindCssPath?: string;\n tailwindExtendUi?: boolean;\n };\n\n // eslint-disable-next-line init-declarations\n declare const grapesjsTailwind: Plugin<GrapesjsTailwindOptions>;\n export default grapesjsTailwind;\n}\n\ndeclare module 'sherlockjs' {\n type ParseResult = {\n endDate?: Date;\n eventTitle?: string;\n isAllDay?: boolean;\n startDate?: Date;\n }\n\n type Sherlock = {\n parse(text: string): ParseResult;\n }\n\n // eslint-disable-next-line init-declarations\n const sherlock: Sherlock;\n export default sherlock;\n}\n\ndeclare module 'recharts/lib' {\n export * from 'recharts';\n}\n\ndeclare module 'recharts/lib/util/DOMUtils' {\n export function getOffset(el: HTMLElement): {\n top: number;\n left: number;\n };\n}\n"],"mappings":"","ignoreList":[]}
|