{"version":3,"sources":["../src/client.ts","../src/features/textColor/feature.client.tsx","../src/features/textColor/command.ts","../src/features/textColor/components/TextColorDropdown.tsx","../src/features/textColor/components/TextColorPicker.tsx","../src/utils/usePreventInlineToolbarClose.ts","../src/features/textColor/components/TextColorIcon.tsx","../src/utils/getSelection.ts","../src/features/textSize/feature.client.tsx","../src/features/textSize/command.ts","../src/features/textSize/components/TextSizeDropdown.tsx","../src/features/textSize/components/TextSizePicker.tsx","../src/features/textSize/components/TextSizeIcon.tsx","../src/features/textLetterSpacing/feature.client.tsx","../src/features/textLetterSpacing/command.ts","../src/features/textLetterSpacing/components/TextLetterSpacingDropdown.tsx","../src/features/textLetterSpacing/components/TextLetterSpacingPicker.tsx","../src/features/textLetterSpacing/components/TextLetterSpacingIcon.tsx","../src/features/textLineHeight/feature.client.tsx","../src/features/textLineHeight/command.ts","../src/features/textLineHeight/components/TextLineHeightDropdown.tsx","../src/features/textLineHeight/components/TextLineHeightPicker.tsx","../src/features/textLineHeight/components/TextLineHeightIcon.tsx","../src/features/textFontFamily/feature.client.tsx","../src/features/textFontFamily/command.ts","../src/features/textFontFamily/components/TextFontFamilyDropdown.tsx","../src/features/textFontFamily/components/TextFontFamilyPicker.tsx","../src/features/textFontFamily/components/TextFontFamilyIcon.tsx"],"sourcesContent":["\"use client\";\n\nexport { TextColorClientFeature } from \"./features/textColor/feature.client\";\nexport { TextSizeClientFeature } from \"./features/textSize/feature.client\";\nexport { TextLetterSpacingClientFeature } from \"./features/textLetterSpacing/feature.client\";\nexport { TextLineHeightClientFeature } from \"./features/textLineHeight/feature.client\";\nexport { TextFontFamilyClientFeature } from \"./features/textFontFamily/feature.client\";\n","\"use client\";\n\nimport { type ToolbarGroup, type ToolbarGroupItem } from \"@payloadcms/richtext-lexical\";\nimport { createClientFeature } from \"@payloadcms/richtext-lexical/client\";\nimport { COMMAND_PRIORITY_CRITICAL, type BaseSelection } from \"@payloadcms/richtext-lexical/lexical\";\nimport { useLexicalComposerContext } from \"@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext\";\nimport {\n  $getSelectionStyleValueForProperty,\n  $patchStyleText,\n} from \"@payloadcms/richtext-lexical/lexical/selection\";\n\nimport { useEffect } from \"react\";\n\nimport { TEXT_COLOR_COMMAND } from \"./command\";\nimport { TextColorDropdown } from \"./components/TextColorDropdown\";\nimport { TextColorIcon } from \"./components/TextColorIcon\";\n\nimport { getSelection } from \"../../utils/getSelection\";\n\nexport type TextColorFeatureProps = {\n  colors?: string[] | { value: string; label: string }[];\n  colorPicker?: boolean;\n  hideAttribution?: boolean;\n  listView?: boolean;\n};\n\nexport type TextColorItem = ToolbarGroupItem & {\n  command: Record<string, unknown>;\n  current: () => string | null;\n} & TextColorFeatureProps;\n\nexport const TextColorClientFeature = createClientFeature<TextColorFeatureProps, TextColorItem>(\n  ({ props }) => {\n    const colors =\n      props?.colors && props?.colors.length > 0\n        ? props.colors\n        : [\"#FF0000\", \"#00FF00\", \"#0000FF\", \"#FFFF00\", \"#FF00FF\"];\n\n    const DropdownComponent: ToolbarGroup = {\n      type: \"dropdown\",\n      ChildComponent: TextColorIcon,\n      isEnabled({ selection }: { selection: BaseSelection }) {\n        return !!getSelection(selection);\n      },\n      items: [\n        {\n          Component: () => {\n            const [editor] = useLexicalComposerContext();\n            return TextColorDropdown({\n              editor,\n              item: {\n                command: TEXT_COLOR_COMMAND,\n                current() {\n                  const selection = getSelection();\n                  return selection ? $getSelectionStyleValueForProperty(selection, \"color\", \"\") : null;\n                },\n                colors,\n                listView: props?.listView,\n                hideAttribution: props?.hideAttribution,\n                colorPicker: props?.colorPicker,\n                key: \"textColor\",\n              },\n            });\n          },\n          key: \"textColor\",\n        },\n      ],\n      key: \"textColorDropdown\",\n      order: 60,\n    };\n\n    return {\n      plugins: [\n        {\n          Component: () => {\n            const [editor] = useLexicalComposerContext();\n\n            useEffect(() => {\n              return editor.registerCommand(\n                TEXT_COLOR_COMMAND,\n                (payload) => {\n                  editor.update(() => {\n                    const selection = getSelection();\n                    if (selection) {\n                      $patchStyleText(selection, { color: payload.color || \"\" });\n                    }\n                  });\n                  return true;\n                },\n                COMMAND_PRIORITY_CRITICAL,\n              );\n            }, [editor]);\n\n            return null;\n          },\n          position: \"normal\",\n        },\n      ],\n      toolbarFixed: {\n        groups: [DropdownComponent],\n      },\n      toolbarInline: {\n        groups: [DropdownComponent],\n      },\n    };\n  },\n);\n","import { createCommand } from \"@payloadcms/richtext-lexical/lexical\";\n\nexport const TEXT_COLOR_COMMAND = createCommand<{ color: string }>(\"TEXT_COLOR_COMMAND\");\n","import { type LexicalEditor } from \"@payloadcms/richtext-lexical/lexical\";\n\nimport { useEffect, useState } from \"react\";\n\nimport { TextColorPicker } from \"./TextColorPicker\";\n\nimport { type TextColorItem } from \"../feature.client\";\n\nexport const TextColorDropdown = ({ editor, item }: { editor: LexicalEditor; item: TextColorItem }) => {\n  const [activeColor, setActiveColor] = useState<string>(\"\");\n\n  const onChange = (color: string) => {\n    setActiveColor(color || \"\");\n  };\n\n  const applyColor = (color?: string) => {\n    editor.dispatchCommand(item.command, { color: color ?? activeColor });\n  };\n\n  const handleReset = () => {\n    editor.dispatchCommand(item.command, { color: \"\" });\n    setActiveColor(\"\");\n  };\n\n  useEffect(() => {\n    editor.read(() => {\n      const current = item.current ? item.current() : null;\n      if (current) setActiveColor(current);\n    });\n  }, [editor, item]);\n\n  return (\n    <TextColorPicker\n      color={activeColor}\n      applyColor={applyColor}\n      onChange={onChange}\n      colors={item.colors}\n      hideAttribution={item.hideAttribution}\n      colorPicker={item.colorPicker}\n      listView={item.listView}\n      handleReset={handleReset}\n    />\n  );\n};\n","import { useEffect, useState } from \"react\";\nimport { HexColorPicker } from \"react-colorful\";\n\nimport { usePreventInlineToolbarClose } from \"../../../utils/usePreventInlineToolbarClose\";\nimport { type TextColorFeatureProps } from \"../feature.client\";\n\nconst injectStyles = () => {\n  const style = document.createElement(\"style\");\n  style.innerHTML = `\n        div.react-colorful .react-colorful__pointer {\n            width: 20px;\n            height: 20px;\n        }\n        div.react-colorful .react-colorful__hue {\n            height: 22px;\n        }\n    `;\n  document.head.appendChild(style);\n};\n\nexport const TextColorPicker = ({\n  color,\n  applyColor,\n  onChange,\n  colors = [],\n  hideAttribution = false,\n  colorPicker = true,\n  listView,\n  handleReset,\n}: {\n  color: string;\n  applyColor: (color?: string) => void;\n  onChange: (color: string) => void;\n  handleReset: () => void;\n} & TextColorFeatureProps) => {\n  const { containerProps, inputProps } = usePreventInlineToolbarClose();\n  const [predefinedColors, setPredefinedColors] = useState(true);\n\n  useEffect(() => {\n    injectStyles();\n  }, []);\n\n  const isGridView = listView === false || (listView !== true && typeof colors[0] === \"string\");\n\n  return (\n    <div\n      {...containerProps}\n      style={{\n        display: \"flex\",\n        flexDirection: \"column\",\n        maxWidth: \"165px\",\n        width: \"100%\",\n      }}\n    >\n      {!predefinedColors && colorPicker ? (\n        <div\n          onClick={(e) => {\n            e.preventDefault();\n            e.stopPropagation();\n          }}\n          style={{\n            width: \"100%\",\n            paddingTop: \"8px\",\n            paddingLeft: \"8px\",\n            paddingRight: \"8px\",\n            paddingBottom: \"0px\",\n            display: \"flex\",\n            flexDirection: \"column\",\n            alignItems: \"center\",\n          }}\n        >\n          <HexColorPicker\n            style={{\n              maxWidth: \"100%\",\n              height: \"min-content\",\n              aspectRatio: \"1\",\n            }}\n            color={color}\n            onChange={onChange}\n          />\n          <div className=\"field-type text\">\n            <input\n              style={{\n                width: \"100%\",\n                margin: \"8px 0\",\n                height: \"25px\",\n                paddingTop: \"0\",\n                paddingBottom: \"1px\",\n                paddingLeft: \"10px\",\n              }}\n              type=\"text\"\n              value={color}\n              onChange={(e) => {\n                e.preventDefault();\n                e.stopPropagation();\n                onChange(e.target.value);\n              }}\n              {...inputProps}\n            />\n          </div>\n        </div>\n      ) : (\n        <div\n          style={{\n            display: isGridView ? \"grid\" : \"flex\",\n            gridTemplateColumns: isGridView ? \"repeat(5, 1fr)\" : undefined,\n            flexDirection: isGridView ? undefined : \"column\",\n            gap: isGridView ? \"4px\" : \"6px\",\n            padding: \"8px\",\n            overflowY: isGridView ? undefined : \"auto\",\n            maxHeight: isGridView ? undefined : \"266px\",\n          }}\n        >\n          {colors.map((unionC) => {\n            const c = typeof unionC === \"string\" ? unionC : unionC.value;\n            return (\n              <button\n                key={c}\n                onClick={() => {\n                  applyColor(c);\n                }}\n                style={{\n                  display: \"flex\",\n                  gap: isGridView ? \"4px\" : \"6px\",\n                  alignItems: \"center\",\n                  cursor: \"pointer\",\n                  background: \"transparent\",\n                  border: \"none\",\n                  padding: \"0\",\n                }}\n              >\n                <div\n                  style={{\n                    backgroundColor: c,\n                    width: \"26px\",\n                    height: \"26px\",\n                    borderRadius: \"50%\",\n                    border:\n                      color === c\n                        ? \"2px solid var(--theme-elevation-900)\"\n                        : \"2px solid var(--theme-elevation-150)\",\n                  }}\n                />\n                {!isGridView && <span>{typeof unionC === \"string\" ? unionC : unionC.label}</span>}\n              </button>\n            );\n          })}\n          <button\n            onClick={() => handleReset()}\n            style={{\n              display: \"flex\",\n              gap: isGridView ? \"4px\" : \"6px\",\n              alignItems: \"center\",\n              cursor: \"pointer\",\n              background: \"transparent\",\n              border: \"none\",\n              padding: \"0\",\n            }}\n          >\n            <div\n              style={{\n                width: \"26px\",\n                height: \"26px\",\n                borderRadius: \"50%\",\n                border: \"2px solid var(--theme-elevation-150)\",\n                position: \"relative\",\n                cursor: \"pointer\",\n              }}\n            >\n              <div\n                style={{\n                  position: \"absolute\",\n                  width: \"100%\",\n                  height: \"2px\",\n                  backgroundColor: \"#FF0000\",\n                  top: \"50%\",\n                  left: \"50%\",\n                  transform: \"translate(-50%,-50%) rotate(45deg)\",\n                }}\n              />\n            </div>\n            {!isGridView && <span>Reset</span>}\n          </button>\n        </div>\n      )}\n      {!predefinedColors && (\n        <div style={{ display: \"flex\", gap: \"8px\" }}>\n          <button\n            onClick={(e) => {\n              e.preventDefault();\n              e.stopPropagation();\n              handleReset();\n            }}\n            className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n            style={{ marginLeft: \"auto\", margin: \"0\", cursor: \"pointer\", flex: 1 }}\n          >\n            Reset\n          </button>\n          <button\n            onClick={(e) => {\n              e.preventDefault();\n              e.stopPropagation();\n              applyColor();\n            }}\n            className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n            style={{ marginLeft: \"auto\", margin: \"0\", cursor: \"pointer\", flex: 1 }}\n          >\n            Apply\n          </button>\n        </div>\n      )}\n      <div\n        style={{\n          width: \"100%\",\n          padding: \"8px\",\n          display: \"flex\",\n          gap: \"8px\",\n          flexDirection: \"column\",\n          alignItems: \"center\",\n        }}\n      >\n        {colorPicker && (\n          <button\n            onClick={(e) => {\n              e.preventDefault();\n              e.stopPropagation();\n              setPredefinedColors((prev) => !prev);\n            }}\n            className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n            style={{\n              margin: 0,\n            }}\n          >\n            {predefinedColors ? \"Color picker\" : \"Predefined colors\"}\n          </button>\n        )}\n        {!hideAttribution && (\n          <p\n            style={{\n              color: \"var(--theme-elevation-650)\",\n              fontSize: \"10px\",\n            }}\n          >\n            Made with ❤️ by{\" \"}\n            <a target=\"_blank\" href=\"https://github.com/AdrianMaj\">\n              @AdrianMaj\n            </a>\n          </p>\n        )}\n      </div>\n    </div>\n  );\n};\n","import { useEffect, useRef } from \"react\";\n\nexport const usePreventInlineToolbarClose = () => {\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    const container = containerRef.current;\n    if (!container) return;\n\n    const handleSelectionChange = (e: Event) => {\n      const activeElement = document.activeElement;\n      if (activeElement && container.contains(activeElement)) {\n        e.stopImmediatePropagation();\n      }\n    };\n\n    const handleMouseUp = (e: MouseEvent) => {\n      if (container.contains(e.target as Node)) {\n        e.stopImmediatePropagation();\n      }\n    };\n\n    document.addEventListener(\"selectionchange\", handleSelectionChange, true);\n    document.addEventListener(\"mouseup\", handleMouseUp, true);\n\n    return () => {\n      document.removeEventListener(\"selectionchange\", handleSelectionChange, true);\n      document.removeEventListener(\"mouseup\", handleMouseUp, true);\n    };\n  }, []);\n\n  const handleInputInteraction = (e: React.FocusEvent | React.MouseEvent) => {\n    e.stopPropagation();\n\n    const selection = window.getSelection();\n    if (selection && selection.rangeCount > 0) {\n      const range = selection.getRangeAt(0);\n      (e.currentTarget as HTMLElement).dataset.editorRange = JSON.stringify({\n        startContainer: range.startContainer.textContent,\n        startOffset: range.startOffset,\n        endContainer: range.endContainer.textContent,\n        endOffset: range.endOffset,\n      });\n    }\n  };\n\n  const handleInputBlur = (e: React.FocusEvent) => {\n    setTimeout(() => {\n      const activeElement = document.activeElement;\n      if (!containerRef.current?.contains(activeElement)) {\n        const rangeData = (e.currentTarget as HTMLElement).dataset.editorRange;\n        if (rangeData) {\n          delete (e.currentTarget as HTMLElement).dataset.editorRange;\n        }\n      }\n    }, 10);\n  };\n\n  const containerProps = {\n    ref: containerRef,\n    onMouseDown: (e: React.MouseEvent) => e.stopPropagation(),\n    onMouseMove: (e: React.MouseEvent) => e.stopPropagation(),\n  };\n\n  const inputProps = {\n    onFocus: handleInputInteraction,\n    onBlur: handleInputBlur,\n    onMouseDown: handleInputInteraction,\n  };\n\n  return {\n    containerProps,\n    inputProps,\n  };\n};\n","import { COMMAND_PRIORITY_CRITICAL, SELECTION_CHANGE_COMMAND } from \"@payloadcms/richtext-lexical/lexical\";\nimport { useLexicalComposerContext } from \"@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext\";\nimport {\n  $getSelectionStyleValueForProperty,\n  $patchStyleText,\n} from \"@payloadcms/richtext-lexical/lexical/selection\";\n\nimport { useEffect, useState } from \"react\";\n\nimport { getSelection } from \"../../../utils/getSelection\";\nimport { TEXT_COLOR_COMMAND } from \"../command\";\n\nexport const TextColorIcon = () => {\n  const [color, setColor] = useState<string>(\"\");\n  const [editor] = useLexicalComposerContext();\n\n  const updateCurrentColor = () => {\n    const selection = getSelection();\n    if (selection) setColor($getSelectionStyleValueForProperty(selection, \"color\", \"\"));\n    return false;\n  };\n\n  useEffect(() => {\n    return editor.registerCommand(\n      TEXT_COLOR_COMMAND,\n      (payload) => {\n        setColor(payload.color);\n        editor.update(() => {\n          const selection = getSelection();\n          if (selection) $patchStyleText(selection, { color: payload.color || \"\" });\n        });\n        return false;\n      },\n      COMMAND_PRIORITY_CRITICAL,\n    );\n  }, [editor]);\n\n  useEffect(() => {\n    setTimeout(() => {\n      return editor.read(updateCurrentColor);\n    });\n    return editor.registerCommand(SELECTION_CHANGE_COMMAND, updateCurrentColor, COMMAND_PRIORITY_CRITICAL);\n  }, [editor]);\n\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"16\"\n      height=\"16\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    >\n      <path d=\"M4 20h16\" style={{ color }} />\n      <path d=\"m6 16 6-12 6 12\" />\n      <path d=\"M8 12h8\" />\n    </svg>\n  );\n};\n","import { $getSelection, $isRangeSelection } from \"@payloadcms/richtext-lexical/lexical\";\n\nexport const getSelection = (selection = $getSelection()) => {\n  if ($isRangeSelection(selection)) {\n    return selection;\n  }\n  return null;\n};\n","\"use client\";\n\nimport { type ToolbarGroup, type ToolbarGroupItem } from \"@payloadcms/richtext-lexical\";\nimport { createClientFeature } from \"@payloadcms/richtext-lexical/client\";\nimport { COMMAND_PRIORITY_CRITICAL, type BaseSelection } from \"@payloadcms/richtext-lexical/lexical\";\nimport { useLexicalComposerContext } from \"@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext\";\nimport {\n  $getSelectionStyleValueForProperty,\n  $patchStyleText,\n} from \"@payloadcms/richtext-lexical/lexical/selection\";\n\nimport { useEffect } from \"react\";\n\nimport { TEXT_SIZE_COMMAND } from \"./command\";\nimport { Dropdown } from \"./components/TextSizeDropdown\";\nimport { TextSizeIcon } from \"./components/TextSizeIcon\";\n\nimport { getSelection } from \"../../utils/getSelection\";\n\nexport type TextSizeFeatureProps = {\n  hideAttribution?: boolean;\n  sizes?: { value: string; label: string }[];\n  method?: \"replace\" | \"combine\";\n  customSize?: boolean;\n  scroll?: boolean;\n};\n\nexport type TextSizeItem = ToolbarGroupItem & {\n  command: Record<string, unknown>;\n  current: () => string | null;\n} & TextSizeFeatureProps;\n\nexport const TextSizeClientFeature = createClientFeature<TextSizeFeatureProps, TextSizeItem>(({ props }) => {\n  const DropdownComponent: ToolbarGroup = {\n    type: \"dropdown\",\n    ChildComponent: TextSizeIcon,\n    isEnabled({ selection }: { selection: BaseSelection }) {\n      return !!getSelection(selection);\n    },\n    items: [\n      {\n        Component: () => {\n          const [editor] = useLexicalComposerContext();\n          return Dropdown({\n            editor,\n            item: {\n              command: TEXT_SIZE_COMMAND,\n              current() {\n                const selection = getSelection();\n                return selection ? $getSelectionStyleValueForProperty(selection, \"font-size\", \"\") : null;\n              },\n              hideAttribution: props?.hideAttribution,\n              sizes: props?.sizes,\n              method: props?.method,\n              scroll: props?.scroll,\n              customSize: props?.customSize,\n              key: \"textSize\",\n            },\n          });\n        },\n        key: \"textSize\",\n      },\n    ],\n    key: \"textSizeDropdown\",\n    order: 60,\n  };\n\n  return {\n    plugins: [\n      {\n        Component: () => {\n          const [editor] = useLexicalComposerContext();\n\n          useEffect(() => {\n            return editor.registerCommand(\n              TEXT_SIZE_COMMAND,\n              (payload) => {\n                editor.update(() => {\n                  const selection = getSelection();\n                  if (selection) {\n                    $patchStyleText(selection, { \"font-size\": payload.size || \"\" });\n                  }\n                });\n                return true;\n              },\n              COMMAND_PRIORITY_CRITICAL,\n            );\n          }, [editor]);\n\n          return null;\n        },\n        position: \"normal\",\n      },\n    ],\n    toolbarFixed: {\n      groups: [DropdownComponent],\n    },\n    toolbarInline: {\n      groups: [DropdownComponent],\n    },\n  };\n});\n","import { createCommand } from \"@payloadcms/richtext-lexical/lexical\";\n\nexport const TEXT_SIZE_COMMAND = createCommand<{ size: string }>(\"TEXT_SIZE_COMMAND\");\n","import { type LexicalEditor } from \"@payloadcms/richtext-lexical/lexical\";\n\nimport { useEffect, useState } from \"react\";\n\nimport { SizePicker } from \"./TextSizePicker\";\n\nimport { type TextSizeItem } from \"../feature.client\";\n\nexport const Dropdown = ({ editor, item }: { editor: LexicalEditor; item: TextSizeItem }) => {\n  const [activeSize, setActiveSize] = useState<string>(\"\");\n\n  const onChange = (size: string) => {\n    editor.dispatchCommand(item.command, { size });\n    setActiveSize(size || \"\");\n  };\n\n  useEffect(() => {\n    editor.read(() => {\n      const current = item.current ? item.current() : null;\n      if (current) setActiveSize(current);\n    });\n  }, [editor, item]);\n\n  return (\n    <SizePicker\n      size={activeSize}\n      onChange={onChange}\n      hideAttribution={item.hideAttribution}\n      method={item.method}\n      scroll={item.scroll}\n      sizes={item.sizes}\n      customSize={item.customSize}\n    />\n  );\n};\n","import { useState, useEffect, useRef, type ChangeEvent } from \"react\";\n\nimport { usePreventInlineToolbarClose } from \"../../../utils/usePreventInlineToolbarClose\";\nimport { type TextSizeFeatureProps } from \"../feature.client\";\n\nexport const SizePicker = ({\n  size,\n  onChange,\n  hideAttribution,\n  sizes,\n  method = \"replace\",\n  scroll = true,\n  customSize = true,\n}: {\n  size: string;\n  onChange: (size: string) => void;\n} & TextSizeFeatureProps) => {\n  const isEditingRef = useRef(false);\n  const { containerProps, inputProps } = usePreventInlineToolbarClose();\n\n  const defaultSizeOptions = [\n    { value: \"0.875rem\", label: \"Small\" },\n    { value: \"1.25rem\", label: \"Normal\" },\n    { value: \"1.875rem\", label: \"Large\" },\n    { value: \"3rem\", label: \"Huge\" },\n  ];\n\n  const options =\n    method === \"replace\" ? (sizes ?? defaultSizeOptions) : [...defaultSizeOptions, ...(sizes ?? [])];\n\n  const units = [\"px\", \"rem\", \"em\", \"vh\", \"vw\", \"%\"];\n\n  const [displayValue, setDisplayValue] = useState(size || \"\");\n  const [appliedValue, setAppliedValue] = useState(size || \"\");\n\n  const [isCustomMode, setIsCustomMode] = useState(false);\n  const [customNumberValue, setCustomNumberValue] = useState(\"\");\n  const [customUnit, setCustomUnit] = useState(\"px\");\n\n  const parseSizeValue = (sizeVal: string) => {\n    const numericPart = parseFloat(sizeVal.replace(/[^0-9.]/g, \"\"));\n    const unitPart = sizeVal.replace(/[0-9.]/g, \"\");\n    return {\n      number: isNaN(numericPart) ? \"\" : numericPart.toString(),\n      unit: units.includes(unitPart) ? unitPart : \"px\",\n    };\n  };\n\n  useEffect(() => {\n    if (isEditingRef.current) return;\n\n    if (!size) {\n      setDisplayValue(\"\");\n      setAppliedValue(\"\");\n      setIsCustomMode(true);\n      setCustomNumberValue(\"\");\n      setCustomUnit(\"px\");\n      return;\n    }\n\n    setDisplayValue(size);\n    setAppliedValue(size);\n    const { number, unit } = parseSizeValue(size);\n    setCustomNumberValue(number);\n    setCustomUnit(unit);\n\n    const matchingOption = options.find((option) => option.value === size);\n    setIsCustomMode(!matchingOption);\n  }, [size, options]);\n\n  const handleSizeSelect = (value: string) => {\n    setDisplayValue(value);\n    setAppliedValue(value);\n    onChange(value);\n    setIsCustomMode(false);\n\n    const { number, unit } = parseSizeValue(value);\n    setCustomNumberValue(number);\n    setCustomUnit(unit);\n  };\n\n  const handleCustomNumberChange = (e: ChangeEvent<HTMLInputElement>) => {\n    e.preventDefault();\n    e.stopPropagation();\n\n    isEditingRef.current = true;\n\n    const numValue = e.target.value;\n    setCustomNumberValue(numValue);\n\n    const newValue = `${numValue}${customUnit}`;\n    setDisplayValue(newValue);\n    setIsCustomMode(true);\n  };\n\n  const handleCustomUnitChange = (e: ChangeEvent<HTMLSelectElement>) => {\n    e.preventDefault();\n    e.stopPropagation();\n\n    isEditingRef.current = true;\n\n    const unitValue = e.target.value;\n    setCustomUnit(unitValue);\n\n    const newValue = `${customNumberValue}${unitValue}`;\n    setDisplayValue(newValue);\n    setIsCustomMode(true);\n  };\n\n  const applyCustomSize = () => {\n    isEditingRef.current = false;\n    setAppliedValue(displayValue);\n    onChange(displayValue);\n  };\n\n  const handleReset = () => {\n    isEditingRef.current = false;\n    setDisplayValue(\"\");\n    setAppliedValue(\"\");\n    setCustomNumberValue(\"\");\n    setCustomUnit(\"px\");\n    onChange(\"\");\n  };\n\n  return (\n    <div\n      {...containerProps}\n      style={{\n        padding: \"8px\",\n        display: \"flex\",\n        flexDirection: \"column\",\n        gap: \"8px\",\n      }}\n    >\n      <div\n        style={{\n          display: \"grid\",\n          gridTemplateColumns: \"1fr 1fr\",\n          gap: \"12px\",\n          maxHeight: scroll && options.length > 4 ? \"64px\" : \"none\",\n          overflowY: scroll && options.length > 4 ? \"auto\" : \"visible\",\n          paddingRight: scroll && options.length > 4 ? \"8px\" : \"0\",\n        }}\n      >\n        {options.map((option, index) => (\n          <button\n            key={`${option.value}-${index}`}\n            className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n            style={{\n              cursor: \"pointer\",\n              margin: \"0\",\n              border:\n                appliedValue === option.value && !isCustomMode\n                  ? \"1px solid var(--theme-elevation-900)\"\n                  : \"1px solid transparent\",\n            }}\n            onClick={(e) => {\n              e.preventDefault();\n              e.stopPropagation();\n              handleSizeSelect(option.value);\n            }}\n          >\n            {option.label}\n          </button>\n        ))}\n      </div>\n\n      {customSize && (\n        <div style={{ display: \"flex\", alignItems: \"center\" }}>\n          <div style={{ marginRight: \"8px\" }}>Custom: </div>\n          <div\n            style={{\n              display: \"flex\",\n              alignItems: \"center\",\n              width: \"140px\",\n            }}\n          >\n            <div\n              className=\"field-type number\"\n              onClick={(e) => {\n                e.stopPropagation();\n              }}\n              style={{ flex: 1 }}\n            >\n              <input\n                style={{\n                  width: \"100%\",\n                  margin: \"8px 0\",\n                  borderRight: \"0\",\n                  height: \"25px\",\n                  borderTopRightRadius: \"0\",\n                  borderBottomRightRadius: \"0\",\n                  paddingTop: \"0\",\n                  paddingBottom: \"1px\",\n                  paddingLeft: \"4px\",\n                  paddingRight: \"4px\",\n                }}\n                type=\"number\"\n                min={1}\n                max={999}\n                value={customNumberValue}\n                onChange={handleCustomNumberChange}\n                onClick={(e) => e.stopPropagation()}\n                {...inputProps}\n              />\n            </div>\n            <select\n              value={customUnit}\n              onChange={handleCustomUnitChange}\n              onClick={(e) => e.stopPropagation()}\n              style={{\n                paddingLeft: \"4px\",\n                paddingRight: \"4px\",\n                width: \"56px\",\n                boxShadow: \"0 2px 2px -1px #0000001a\",\n                fontFamily: \"var(--font-body)\",\n                border: \"1px solid var(--theme-elevation-150)\",\n                borderRadius: \"var(--style-radius-s)\",\n                background: \"var(--theme-input-bg)\",\n                color: \"var(--theme-elevation-800)\",\n                fontSize: \"1rem\",\n                height: \"25px\",\n                lineHeight: \"20px\",\n                transitionProperty: \"border, box-shadow, background-color\",\n                transitionDuration: \".1s, .1s, .5s\",\n                transitionTimingFunction: \"cubic-bezier(0,.2,.2,1)\",\n                borderLeft: \"0\",\n                transform: \"translateX(-1px)\",\n                borderTopLeftRadius: \"0\",\n                borderBottomLeftRadius: \"0\",\n                outline: \"none\",\n              }}\n            >\n              {units.map((unit, index) => (\n                <option key={`${unit}-${index}`} value={unit}>\n                  {unit}\n                </option>\n              ))}\n            </select>\n          </div>\n        </div>\n      )}\n      <div style={{ display: \"flex\", gap: \"8px\" }}>\n        <button\n          onClick={(e) => {\n            e.preventDefault();\n            e.stopPropagation();\n            handleReset();\n          }}\n          className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n          style={{ marginLeft: \"auto\", margin: \"0\", cursor: \"pointer\", flex: 1 }}\n        >\n          Reset\n        </button>\n        {customSize && (\n          <button\n            onClick={(e) => {\n              e.preventDefault();\n              e.stopPropagation();\n              applyCustomSize();\n            }}\n            className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n            style={{ marginLeft: \"auto\", margin: \"0\", cursor: \"pointer\", flex: 1 }}\n          >\n            Apply\n          </button>\n        )}\n      </div>\n\n      {!hideAttribution && (\n        <p\n          style={{\n            color: \"var(--theme-elevation-650)\",\n            fontSize: \"10px\",\n            textAlign: \"center\",\n          }}\n        >\n          Made with ❤️ by{\" \"}\n          <a target=\"_blank\" href=\"https://github.com/AdrianMaj\">\n            @AdrianMaj\n          </a>\n        </p>\n      )}\n    </div>\n  );\n};\n","import { COMMAND_PRIORITY_CRITICAL } from \"@payloadcms/richtext-lexical/lexical\";\nimport { useLexicalComposerContext } from \"@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext\";\nimport { $patchStyleText } from \"@payloadcms/richtext-lexical/lexical/selection\";\n\nimport { useEffect } from \"react\";\n\nimport { getSelection } from \"../../../utils/getSelection\";\nimport { TEXT_SIZE_COMMAND } from \"../command\";\n\nexport const TextSizeIcon = () => {\n  const [editor] = useLexicalComposerContext();\n\n  useEffect(() => {\n    return editor.registerCommand(\n      TEXT_SIZE_COMMAND,\n      (payload) => {\n        editor.update(() => {\n          const selection = getSelection();\n          if (selection) $patchStyleText(selection, { size: payload.size || \"\" });\n        });\n        return false;\n      },\n      COMMAND_PRIORITY_CRITICAL,\n    );\n  }, [editor]);\n\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"16\"\n      height=\"16\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    >\n      <path d=\"M21 14h-5\" />\n      <path d=\"M16 16v-3.5a2.5 2.5 0 0 1 5 0V16\" />\n      <path d=\"M4.5 13h6\" />\n      <path d=\"m3 16 4.5-9 4.5 9\" />\n    </svg>\n  );\n};\n","\"use client\";\n\nimport { type ToolbarGroup, type ToolbarGroupItem } from \"@payloadcms/richtext-lexical\";\nimport { createClientFeature } from \"@payloadcms/richtext-lexical/client\";\nimport { COMMAND_PRIORITY_CRITICAL, type BaseSelection } from \"@payloadcms/richtext-lexical/lexical\";\nimport { useLexicalComposerContext } from \"@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext\";\nimport {\n  $getSelectionStyleValueForProperty,\n  $patchStyleText,\n} from \"@payloadcms/richtext-lexical/lexical/selection\";\n\nimport { useEffect } from \"react\";\n\nimport { TEXT_LETTER_SPACING_COMMAND } from \"./command\";\nimport { Dropdown } from \"./components/TextLetterSpacingDropdown\";\nimport { TextLetterSpacingIcon } from \"./components/TextLetterSpacingIcon\";\n\nimport { getSelection } from \"../../utils/getSelection\";\n\nexport type TextLetterSpacingFeatureProps = {\n  hideAttribution?: boolean;\n  spacings?: { value: string; label: string }[];\n  method?: \"replace\" | \"combine\";\n  customSpacing?: boolean;\n  scroll?: boolean;\n};\n\nexport type TextLetterSpacingItem = ToolbarGroupItem & {\n  command: Record<string, unknown>;\n  current: () => string | null;\n} & TextLetterSpacingFeatureProps;\n\nexport const TextLetterSpacingClientFeature = createClientFeature<TextLetterSpacingFeatureProps, TextLetterSpacingItem>(({ props }) => {\n  const DropdownComponent: ToolbarGroup = {\n    type: \"dropdown\",\n    ChildComponent: TextLetterSpacingIcon,\n    isEnabled({ selection }: { selection: BaseSelection }) {\n      return !!getSelection(selection);\n    },\n    items: [\n      {\n        Component: () => {\n          const [editor] = useLexicalComposerContext();\n          return Dropdown({\n            editor,\n            item: {\n              command: TEXT_LETTER_SPACING_COMMAND,\n              current() {\n                const selection = getSelection();\n                return selection ? $getSelectionStyleValueForProperty(selection, \"letter-spacing\", \"\") : null;\n              },\n              hideAttribution: props?.hideAttribution,\n              spacings: props?.spacings,\n              method: props?.method,\n              scroll: props?.scroll,\n              customSpacing: props?.customSpacing,\n              key: \"textLetterSpacing\",\n            },\n          });\n        },\n        key: \"textLetterSpacing\",\n      },\n    ],\n    key: \"textLetterSpacingDropdown\",\n    order: 62,\n  };\n\n  return {\n    plugins: [\n      {\n        Component: () => {\n          const [editor] = useLexicalComposerContext();\n\n          useEffect(() => {\n            return editor.registerCommand(\n              TEXT_LETTER_SPACING_COMMAND,\n              (payload) => {\n                editor.update(() => {\n                  const selection = getSelection();\n                  if (selection) {\n                    $patchStyleText(selection, { \"letter-spacing\": payload.spacing || \"\" });\n                  }\n                });\n                return true;\n              },\n              COMMAND_PRIORITY_CRITICAL,\n            );\n          }, [editor]);\n\n          return null;\n        },\n        position: \"normal\",\n      },\n    ],\n    toolbarFixed: {\n      groups: [DropdownComponent],\n    },\n    toolbarInline: {\n      groups: [DropdownComponent],\n    },\n  };\n});","import { createCommand } from \"@payloadcms/richtext-lexical/lexical\";\n\nexport const TEXT_LETTER_SPACING_COMMAND = createCommand<{ spacing: string }>(\"TEXT_LETTER_SPACING_COMMAND\");","import { type LexicalEditor } from \"@payloadcms/richtext-lexical/lexical\";\n\nimport { useEffect, useState } from \"react\";\n\nimport { SpacingPicker } from \"./TextLetterSpacingPicker\";\n\nimport { type TextLetterSpacingItem } from \"../feature.client\";\n\nexport const Dropdown = ({ editor, item }: { editor: LexicalEditor; item: TextLetterSpacingItem }) => {\n  const [activeSpacing, setActiveSpacing] = useState<string>(\"\");\n\n  const onChange = (spacing: string) => {\n    editor.dispatchCommand(item.command, { spacing });\n    setActiveSpacing(spacing || \"\");\n  };\n\n  useEffect(() => {\n    editor.read(() => {\n      const current = item.current ? item.current() : null;\n      if (current) setActiveSpacing(current);\n    });\n  }, [editor, item]);\n\n  return (\n    <SpacingPicker\n      spacing={activeSpacing}\n      onChange={onChange}\n      hideAttribution={item.hideAttribution}\n      method={item.method}\n      scroll={item.scroll}\n      spacings={item.spacings}\n      customSpacing={item.customSpacing}\n    />\n  );\n};","import { useState, useEffect, useRef, type ChangeEvent } from \"react\";\n\nimport { usePreventInlineToolbarClose } from \"../../../utils/usePreventInlineToolbarClose\";\nimport { type TextLetterSpacingFeatureProps } from \"../feature.client\";\n\nexport const SpacingPicker = ({\n  spacing,\n  onChange,\n  hideAttribution,\n  spacings,\n  method = \"replace\",\n  scroll = true,\n  customSpacing = true,\n}: {\n  spacing: string;\n  onChange: (spacing: string) => void;\n} & TextLetterSpacingFeatureProps) => {\n  const { containerProps, inputProps } = usePreventInlineToolbarClose();\n  const isEditingRef = useRef(false);\n\n  // Tailwind spacing values\n  const defaultSpacingOptions = [\n    { value: \"-0.05em\", label: \"Tighter\" },\n    { value: \"-0.025em\", label: \"Tight\" },\n    { value: \"0em\", label: \"Normal\" },\n    { value: \"0.025em\", label: \"Wide\" },\n    { value: \"0.05em\", label: \"Wider\" },\n    { value: \"0.1em\", label: \"Widest\" },\n  ];\n\n  const options =\n    method === \"replace\"\n      ? (spacings ?? defaultSpacingOptions)\n      : [...defaultSpacingOptions, ...(spacings ?? [])];\n\n  const units = [\"px\", \"rem\", \"em\", \"%\"];\n\n  const [displayValue, setDisplayValue] = useState(spacing || \"\");\n  const [appliedValue, setAppliedValue] = useState(spacing || \"\");\n\n  const [isCustomMode, setIsCustomMode] = useState(false);\n  const [customNumberValue, setCustomNumberValue] = useState(\"\");\n  const [customUnit, setCustomUnit] = useState(\"em\");\n\n  const parseSpacingValue = (spacingVal: string) => {\n    const sign = spacingVal.startsWith(\"-\") ? \"-\" : \"\";\n    const cleanedVal = spacingVal.replace(/^-?/, \"\").replace(/[^0-9.]/g, \"\");\n    const numericPart = parseFloat(sign + cleanedVal);\n    const unitPart = spacingVal.replace(/^-?[0-9.]/g, \"\");\n\n    return {\n      number: isNaN(numericPart) ? \"\" : numericPart.toString(),\n      unit: units.includes(unitPart) ? unitPart : \"em\",\n    };\n  };\n\n  useEffect(() => {\n    if (isEditingRef.current) return;\n\n    if (!spacing) {\n      setDisplayValue(\"\");\n      setAppliedValue(\"\");\n      setIsCustomMode(true);\n      setCustomNumberValue(\"\");\n      setCustomUnit(\"em\");\n      return;\n    }\n\n    setDisplayValue(spacing);\n    setAppliedValue(spacing);\n    const { number, unit } = parseSpacingValue(spacing);\n    setCustomNumberValue(number);\n    setCustomUnit(unit);\n\n    const matchingOption = options.find((option) => option.value === spacing);\n    setIsCustomMode(!matchingOption);\n  }, [spacing, options]);\n\n  const handleSpacingSelect = (value: string) => {\n    setDisplayValue(value);\n    setAppliedValue(value);\n    onChange(value);\n    setIsCustomMode(false);\n\n    const { number, unit } = parseSpacingValue(value);\n    setCustomNumberValue(number);\n    setCustomUnit(unit);\n  };\n\n  const handleCustomNumberChange = (e: ChangeEvent<HTMLInputElement>) => {\n    e.preventDefault();\n    e.stopPropagation();\n\n    isEditingRef.current = true;\n\n    const numValue = e.target.value;\n    setCustomNumberValue(numValue);\n\n    const newValue = `${numValue}${customUnit}`;\n    setDisplayValue(newValue);\n    setIsCustomMode(true);\n  };\n\n  const handleCustomUnitChange = (e: ChangeEvent<HTMLSelectElement>) => {\n    e.preventDefault();\n    e.stopPropagation();\n\n    isEditingRef.current = true;\n\n    const unitValue = e.target.value;\n    setCustomUnit(unitValue);\n\n    const newValue = `${customNumberValue}${unitValue}`;\n    setDisplayValue(newValue);\n    setIsCustomMode(true);\n  };\n\n  const applyCustomSpacing = () => {\n    isEditingRef.current = false;\n    setAppliedValue(displayValue);\n    onChange(displayValue);\n  };\n\n  const handleReset = () => {\n    isEditingRef.current = false;\n    setDisplayValue(\"\");\n    setAppliedValue(\"\");\n    setCustomNumberValue(\"\");\n    setCustomUnit(\"em\");\n    onChange(\"\");\n  };\n\n  return (\n    <div\n      {...containerProps}\n      style={{\n        padding: \"8px\",\n        display: \"flex\",\n        flexDirection: \"column\",\n        gap: \"8px\",\n      }}\n    >\n      <div\n        style={{\n          display: \"grid\",\n          gridTemplateColumns: \"1fr 1fr\",\n          gap: \"12px\",\n          maxHeight: scroll && options.length > 4 ? \"64px\" : \"none\",\n          overflowY: scroll && options.length > 4 ? \"auto\" : \"visible\",\n          paddingRight: scroll && options.length > 4 ? \"8px\" : \"0\",\n        }}\n      >\n        {options.map((option, index) => (\n          <button\n            key={`${option.value}-${index}`}\n            className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n            style={{\n              cursor: \"pointer\",\n              margin: \"0\",\n              border:\n                appliedValue === option.value && !isCustomMode\n                  ? \"1px solid var(--theme-elevation-900)\"\n                  : \"1px solid transparent\",\n            }}\n            onClick={(e) => {\n              e.preventDefault();\n              e.stopPropagation();\n              handleSpacingSelect(option.value);\n            }}\n          >\n            {option.label}\n          </button>\n        ))}\n      </div>\n\n      {customSpacing && (\n        <div style={{ display: \"flex\", alignItems: \"center\" }}>\n          <div style={{ marginRight: \"8px\" }}>Custom: </div>\n          <div\n            style={{\n              display: \"flex\",\n              alignItems: \"center\",\n              width: \"140px\",\n            }}\n          >\n            <div\n              className=\"field-type number\"\n              onClick={(e) => {\n                e.stopPropagation();\n              }}\n              style={{ flex: 1 }}\n            >\n              <input\n                style={{\n                  width: \"100%\",\n                  margin: \"8px 0\",\n                  borderRight: \"0\",\n                  height: \"25px\",\n                  borderTopRightRadius: \"0\",\n                  borderBottomRightRadius: \"0\",\n                  paddingTop: \"0\",\n                  paddingBottom: \"1px\",\n                  paddingLeft: \"4px\",\n                  paddingRight: \"4px\",\n                }}\n                type=\"number\"\n                min={0}\n                step={0.01}\n                max={10}\n                value={customNumberValue}\n                onChange={handleCustomNumberChange}\n                onClick={(e) => e.stopPropagation()}\n                {...inputProps}\n              />\n            </div>\n            <select\n              value={customUnit}\n              onChange={handleCustomUnitChange}\n              onClick={(e) => e.stopPropagation()}\n              style={{\n                paddingLeft: \"4px\",\n                paddingRight: \"4px\",\n                width: \"56px\",\n                boxShadow: \"0 2px 2px -1px #0000001a\",\n                fontFamily: \"var(--font-body)\",\n                border: \"1px solid var(--theme-elevation-150)\",\n                borderRadius: \"var(--style-radius-s)\",\n                background: \"var(--theme-input-bg)\",\n                color: \"var(--theme-elevation-800)\",\n                fontSize: \"1rem\",\n                height: \"25px\",\n                lineHeight: \"20px\",\n                transitionProperty: \"border, box-shadow, background-color\",\n                transitionDuration: \".1s, .1s, .5s\",\n                transitionTimingFunction: \"cubic-bezier(0,.2,.2,1)\",\n                borderLeft: \"0\",\n                transform: \"translateX(-1px)\",\n                borderTopLeftRadius: \"0\",\n                borderBottomLeftRadius: \"0\",\n                outline: \"none\",\n              }}\n            >\n              {units.map((unit, index) => (\n                <option key={`${unit}-${index}`} value={unit}>\n                  {unit}\n                </option>\n              ))}\n            </select>\n          </div>\n        </div>\n      )}\n      <div style={{ display: \"flex\", gap: \"8px\" }}>\n        <button\n          onClick={(e) => {\n            e.preventDefault();\n            e.stopPropagation();\n            handleReset();\n          }}\n          className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n          style={{ marginLeft: \"auto\", margin: \"0\", cursor: \"pointer\", flex: 1 }}\n        >\n          Reset\n        </button>\n        {customSpacing && (\n          <button\n            onClick={(e) => {\n              e.preventDefault();\n              e.stopPropagation();\n              applyCustomSpacing();\n            }}\n            className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n            style={{ marginLeft: \"auto\", margin: \"0\", cursor: \"pointer\", flex: 1 }}\n          >\n            Apply\n          </button>\n        )}\n      </div>\n\n      {!hideAttribution && (\n        <p\n          style={{\n            color: \"var(--theme-elevation-650)\",\n            fontSize: \"10px\",\n            textAlign: \"center\",\n          }}\n        >\n          Made with ❤️ by{\" \"}\n          <a target=\"_blank\" href=\"https://github.com/AdrianMaj\">\n            @AdrianMaj\n          </a>\n        </p>\n      )}\n    </div>\n  );\n};\n","import { COMMAND_PRIORITY_CRITICAL } from \"@payloadcms/richtext-lexical/lexical\";\nimport { useLexicalComposerContext } from \"@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext\";\nimport { $patchStyleText } from \"@payloadcms/richtext-lexical/lexical/selection\";\n\nimport { useEffect } from \"react\";\n\nimport { getSelection } from \"../../../utils/getSelection\";\nimport { TEXT_LETTER_SPACING_COMMAND } from \"../command\";\n\nexport const TextLetterSpacingIcon = () => {\n  const [editor] = useLexicalComposerContext();\n\n  useEffect(() => {\n    return editor.registerCommand(\n      TEXT_LETTER_SPACING_COMMAND,\n      (payload) => {\n        editor.update(() => {\n          const selection = getSelection();\n          if (selection) $patchStyleText(selection, { \"letter-spacing\": payload.spacing || \"\" });\n        });\n        return false;\n      },\n      COMMAND_PRIORITY_CRITICAL,\n    );\n  }, [editor]);\n\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"16\"\n      height=\"16\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    >\n      <path d=\"M2 18h2\" />\n      <path d=\"M20 18h2\" />\n      <path d=\"M4 7v11\" />\n      <path d=\"M20 7v11\" />\n      <path d=\"M12 20v2\" />\n      <path d=\"M12 14v2\" />\n      <path d=\"M12 8v2\" />\n      <path d=\"M12 2v2\" />\n    </svg>\n  );\n};","\"use client\";\n\nimport { type ToolbarGroup, type ToolbarGroupItem } from \"@payloadcms/richtext-lexical\";\nimport { createClientFeature } from \"@payloadcms/richtext-lexical/client\";\nimport { COMMAND_PRIORITY_CRITICAL, type BaseSelection } from \"@payloadcms/richtext-lexical/lexical\";\nimport { useLexicalComposerContext } from \"@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext\";\nimport {\n  $getSelectionStyleValueForProperty,\n  $patchStyleText,\n} from \"@payloadcms/richtext-lexical/lexical/selection\";\n\nimport { useEffect } from \"react\";\n\nimport { TEXT_LINE_HEIGHT_COMMAND } from \"./command\";\nimport { Dropdown } from \"./components/TextLineHeightDropdown\";\nimport { TextLineHeightIcon } from \"./components/TextLineHeightIcon\";\n\nimport { getSelection } from \"../../utils/getSelection\";\n\nexport type TextLineHeightFeatureProps = {\n  hideAttribution?: boolean;\n  lineHeights?: { value: string; label: string }[];\n  customLineHeight?: boolean;\n  scroll?: boolean;\n  method?: \"replace\" | \"combine\";\n};\n\nexport type TextLineHeightItem = ToolbarGroupItem & {\n  command: Record<string, unknown>;\n  current: () => string | null;\n} & TextLineHeightFeatureProps;\n\nexport const TextLineHeightClientFeature = createClientFeature<\n  TextLineHeightFeatureProps,\n  TextLineHeightItem\n>(({ props }) => {\n  const DropdownComponent: ToolbarGroup = {\n    type: \"dropdown\",\n    ChildComponent: TextLineHeightIcon,\n    isEnabled({ selection }: { selection: BaseSelection }) {\n      return !!getSelection(selection);\n    },\n    items: [\n      {\n        Component: () => {\n          const [editor] = useLexicalComposerContext();\n          return Dropdown({\n            editor,\n            item: {\n              command: TEXT_LINE_HEIGHT_COMMAND,\n              current() {\n                const selection = getSelection();\n                return selection ? $getSelectionStyleValueForProperty(selection, \"line-height\", \"\") : null;\n              },\n              hideAttribution: props?.hideAttribution,\n              lineHeights: props?.lineHeights,\n              scroll: props?.scroll,\n              customLineHeight: props?.customLineHeight,\n              method: props?.method,\n              key: \"textLineHeight\",\n            },\n          });\n        },\n        key: \"textLineHeight\",\n      },\n    ],\n    key: \"textLineHeightDropdown\",\n    order: 60,\n  };\n\n  return {\n    plugins: [\n      {\n        Component: () => {\n          const [editor] = useLexicalComposerContext();\n\n          useEffect(() => {\n            return editor.registerCommand(\n              TEXT_LINE_HEIGHT_COMMAND,\n              (payload) => {\n                editor.update(() => {\n                  const selection = getSelection();\n                  if (selection) {\n                    $patchStyleText(selection, { \"line-height\": payload.lineHeight || \"\" });\n                  }\n                });\n                return true;\n              },\n              COMMAND_PRIORITY_CRITICAL,\n            );\n          }, [editor]);\n\n          return null;\n        },\n        position: \"normal\",\n      },\n    ],\n    toolbarFixed: {\n      groups: [DropdownComponent],\n    },\n    toolbarInline: {\n      groups: [DropdownComponent],\n    },\n  };\n});\n","import { createCommand } from \"@payloadcms/richtext-lexical/lexical\";\n\nexport const TEXT_LINE_HEIGHT_COMMAND = createCommand<{ lineHeight: string }>(\"TEXT_LINE_HEIGHT_COMMAND\");","import { type LexicalEditor } from \"@payloadcms/richtext-lexical/lexical\";\n\nimport { useEffect, useState } from \"react\";\n\nimport { TextLineHeightPicker } from \"./TextLineHeightPicker\";\n\nimport { TEXT_LINE_HEIGHT_COMMAND } from \"../command\";\n\nimport type { TextLineHeightItem } from \"../feature.client\";\n\nexport const Dropdown = ({ editor, item }: { editor: LexicalEditor; item: TextLineHeightItem }) => {\n  const [activeLineHeight, setActiveLineHeight] = useState<string>(\"\");\n\n  const onChange = (lineHeight: string) => {\n    editor.dispatchCommand(TEXT_LINE_HEIGHT_COMMAND, { lineHeight });\n    setActiveLineHeight(lineHeight || \"\");\n  };\n\n  useEffect(() => {\n    editor.read(() => {\n      const current = item.current ? item.current() : null;\n      if (current) setActiveLineHeight(current);\n    });\n  }, [editor, item]);\n\n  return (\n    <TextLineHeightPicker\n      onChange={onChange}\n      currentValue={activeLineHeight}\n      customLineHeight={item.customLineHeight}\n      hideAttribution={item.hideAttribution}\n      lineHeights={item.lineHeights}\n      method={item.method}\n      scroll={item.scroll}\n    />\n  );\n};\n","import { useState, useEffect, useRef, type ChangeEvent } from \"react\";\n\nimport { usePreventInlineToolbarClose } from \"../../../utils/usePreventInlineToolbarClose\";\n\nimport type { TextLineHeightFeatureProps } from \"../feature.client\";\n\nexport const TextLineHeightPicker = ({\n  currentValue,\n  onChange,\n  lineHeights,\n  customLineHeight,\n  hideAttribution,\n  scroll = true,\n  method = \"replace\",\n}: {\n  currentValue: string;\n  onChange: (lineHeight: string) => void;\n} & TextLineHeightFeatureProps) => {\n  const { containerProps, inputProps } = usePreventInlineToolbarClose();\n\n  const isEditingRef = useRef(false);\n\n  const defaultLineHeights = [\n    { value: \"1\", label: \"1\" },\n    { value: \"1.5\", label: \"1.5\" },\n    { value: \"2\", label: \"2\" },\n    { value: \"2.5\", label: \"2.5\" },\n  ];\n\n  // Use method to decide how to combine defaults with provided lineHeights\n  const options =\n    method === \"replace\"\n      ? (lineHeights ?? defaultLineHeights)\n      : [...defaultLineHeights, ...(lineHeights ?? [])];\n\n  const units = [\"\", \"px\", \"rem\", \"em\", \"vh\", \"vw\", \"%\"];\n\n  const [displayValue, setDisplayValue] = useState(currentValue || \"\");\n  const [appliedValue, setAppliedValue] = useState(currentValue || \"\");\n  const [isCustomMode, setIsCustomMode] = useState(false);\n  const [customNumberValue, setCustomNumberValue] = useState(\"\");\n  const [customUnit, setCustomUnit] = useState(\"\");\n\n  const parseLineHeightValue = (value: string) => {\n    if (!value) return { number: \"\", unit: \"\" };\n\n    // Handle unitless values (just numbers)\n    if (!isNaN(parseFloat(value)) && !/[a-z%]/i.exec(value)) {\n      return { number: value, unit: \"\" };\n    }\n\n    const numericPart = parseFloat(value.replace(/[^0-9.]/g, \"\"));\n    const unitPart = value.replace(/[0-9.]/g, \"\");\n\n    return {\n      number: isNaN(numericPart) ? \"\" : numericPart.toString(),\n      unit: units.includes(unitPart) ? unitPart : \"\",\n    };\n  };\n\n  useEffect(() => {\n    if (isEditingRef.current) return;\n\n    if (!currentValue) {\n      setDisplayValue(\"\");\n      setAppliedValue(\"\");\n      setCustomNumberValue(\"\");\n      setCustomUnit(\"\");\n      setIsCustomMode(false);\n      return;\n    }\n\n    setDisplayValue(currentValue);\n    setAppliedValue(currentValue);\n\n    const { number, unit } = parseLineHeightValue(currentValue);\n    setCustomNumberValue(number);\n    setCustomUnit(unit);\n\n    const matchingOption = options.find((option) => option.value === currentValue);\n    setIsCustomMode(!matchingOption);\n  }, [currentValue, options]);\n\n  const handleLineHeightSelect = (value: string) => {\n    setDisplayValue(value);\n    setAppliedValue(value);\n    onChange(value);\n    setIsCustomMode(false);\n\n    const { number, unit } = parseLineHeightValue(value);\n    setCustomNumberValue(number);\n    setCustomUnit(unit);\n  };\n\n  const handleCustomNumberChange = (e: ChangeEvent<HTMLInputElement>) => {\n    e.preventDefault();\n    e.stopPropagation();\n\n    isEditingRef.current = true;\n    const numValue = e.target.value;\n    setCustomNumberValue(numValue);\n\n    const newValue = `${numValue}${customUnit}`;\n    setDisplayValue(newValue);\n    setIsCustomMode(true);\n  };\n\n  const handleCustomUnitChange = (e: ChangeEvent<HTMLSelectElement>) => {\n    e.preventDefault();\n    e.stopPropagation();\n\n    isEditingRef.current = true;\n    const unitValue = e.target.value;\n    setCustomUnit(unitValue);\n\n    const newValue = `${customNumberValue}${unitValue}`;\n    setDisplayValue(newValue);\n    setIsCustomMode(true);\n  };\n\n  const applyCustomLineHeight = () => {\n    isEditingRef.current = false;\n    setAppliedValue(displayValue);\n    onChange(displayValue);\n  };\n\n  const handleReset = () => {\n    isEditingRef.current = false;\n    setDisplayValue(\"\");\n    setAppliedValue(\"\");\n    setCustomNumberValue(\"\");\n    setCustomUnit(\"\");\n    setIsCustomMode(false);\n    onChange(\"\");\n  };\n\n  return (\n    <div\n      {...containerProps}\n      style={{\n        padding: \"8px\",\n        display: \"flex\",\n        flexDirection: \"column\",\n        gap: \"8px\",\n      }}\n    >\n      <div\n        style={{\n          display: \"grid\",\n          gridTemplateColumns: \"1fr 1fr\",\n          gap: \"12px\",\n          maxHeight: scroll && options.length > 4 ? \"64px\" : \"none\",\n          overflowY: scroll && options.length > 4 ? \"auto\" : \"visible\",\n          paddingRight: scroll && options.length > 4 ? \"8px\" : \"0\",\n        }}\n      >\n        {options.map((option, index) => (\n          <button\n            key={`${option.value}-${index}`}\n            className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n            style={{\n              cursor: \"pointer\",\n              margin: \"0\",\n              border:\n                appliedValue === option.value && !isCustomMode\n                  ? \"1px solid var(--theme-elevation-900)\"\n                  : \"1px solid transparent\",\n            }}\n            onClick={(e) => {\n              e.preventDefault();\n              e.stopPropagation();\n              handleLineHeightSelect(option.value);\n            }}\n          >\n            {option.label}\n          </button>\n        ))}\n      </div>\n\n      {customLineHeight !== false && (\n        <div style={{ display: \"flex\", alignItems: \"center\" }}>\n          <div style={{ marginRight: \"8px\" }}>Custom: </div>\n          <div\n            style={{\n              display: \"flex\",\n              alignItems: \"center\",\n              width: \"140px\",\n            }}\n          >\n            <div\n              className=\"field-type number\"\n              onClick={(e) => {\n                e.stopPropagation();\n              }}\n              style={{ flex: 1 }}\n            >\n              <input\n                style={{\n                  width: \"100%\",\n                  margin: \"8px 0\",\n                  borderRight: \"0\",\n                  height: \"25px\",\n                  borderTopRightRadius: \"0\",\n                  borderBottomRightRadius: \"0\",\n                  paddingTop: \"0\",\n                  paddingBottom: \"1px\",\n                  paddingLeft: \"4px\",\n                  paddingRight: \"4px\",\n                }}\n                type=\"number\"\n                min={0}\n                max={999}\n                step={0.1}\n                value={customNumberValue}\n                onChange={handleCustomNumberChange}\n                onClick={(e) => e.stopPropagation()}\n                {...inputProps}\n              />\n            </div>\n            <select\n              value={customUnit}\n              onChange={handleCustomUnitChange}\n              onClick={(e) => e.stopPropagation()}\n              style={{\n                paddingLeft: \"4px\",\n                paddingRight: \"4px\",\n                width: \"56px\",\n                boxShadow: \"0 2px 2px -1px #0000001a\",\n                fontFamily: \"var(--font-body)\",\n                border: \"1px solid var(--theme-elevation-150)\",\n                borderRadius: \"var(--style-radius-s)\",\n                background: \"var(--theme-input-bg)\",\n                color: \"var(--theme-elevation-800)\",\n                fontSize: \"1rem\",\n                height: \"25px\",\n                lineHeight: \"20px\",\n                transitionProperty: \"border, box-shadow, background-color\",\n                transitionDuration: \".1s, .1s, .5s\",\n                transitionTimingFunction: \"cubic-bezier(0,.2,.2,1)\",\n                borderLeft: \"0\",\n                transform: \"translateX(-1px)\",\n                borderTopLeftRadius: \"0\",\n                borderBottomLeftRadius: \"0\",\n                outline: \"none\",\n              }}\n            >\n              {units.map((unit, index) => (\n                <option key={`${unit}-${index}`} value={unit}>\n                  {unit === \"\" ? \"n/a\" : unit}\n                </option>\n              ))}\n            </select>\n          </div>\n        </div>\n      )}\n\n      <div style={{ display: \"flex\", gap: \"8px\" }}>\n        <button\n          onClick={(e) => {\n            e.preventDefault();\n            e.stopPropagation();\n            handleReset();\n          }}\n          className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n          style={{ marginLeft: \"auto\", margin: \"0\", cursor: \"pointer\", flex: 1 }}\n        >\n          Reset\n        </button>\n        {customLineHeight !== false && (\n          <button\n            onClick={(e) => {\n              e.preventDefault();\n              e.stopPropagation();\n              applyCustomLineHeight();\n            }}\n            className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n            style={{ marginLeft: \"auto\", margin: \"0\", cursor: \"pointer\", flex: 1 }}\n          >\n            Apply\n          </button>\n        )}\n      </div>\n\n      {!hideAttribution && (\n        <p\n          style={{\n            color: \"var(--theme-elevation-650)\",\n            fontSize: \"10px\",\n            textAlign: \"center\",\n          }}\n        >\n          Made with ❤️ by{\" \"}\n          <a target=\"_blank\" href=\"https://github.com/AdrianMaj\">\n            @AdrianMaj\n          </a>\n        </p>\n      )}\n    </div>\n  );\n};\n","export const TextLineHeightIcon = () => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"16\"\n      height=\"16\"\n      viewBox=\"0 0 32 32\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n    >\n      <path\n        d=\"M5.3335 26.6667H26.6668\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n      <path\n        d=\"M5.3335 3H26.6668\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n      <path\n        d=\"M9 22L16 8L23 22\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n      <path\n        d=\"M10.9995 17.9998H20.9995\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </svg>\n  );\n};\n","\"use client\";\n\nimport { type ToolbarGroup, type ToolbarGroupItem } from \"@payloadcms/richtext-lexical\";\nimport { createClientFeature } from \"@payloadcms/richtext-lexical/client\";\nimport { COMMAND_PRIORITY_CRITICAL, type BaseSelection } from \"@payloadcms/richtext-lexical/lexical\";\nimport { useLexicalComposerContext } from \"@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext\";\nimport {\n  $getSelectionStyleValueForProperty,\n  $patchStyleText,\n} from \"@payloadcms/richtext-lexical/lexical/selection\";\n\nimport { useEffect } from \"react\";\n\nimport { TEXT_FONT_FAMILY_COMMAND } from \"./command\";\nimport { Dropdown } from \"./components/TextFontFamilyDropdown\";\nimport { TextFontFamilyIcon } from \"./components/TextFontFamilyIcon\";\n\nimport { getSelection } from \"../../utils/getSelection\";\n\nexport type TextFontFamilyFeatureProps = {\n  hideAttribution?: boolean;\n  fontFamilies?: { value: string; label: string }[];\n  method?: \"replace\" | \"combine\";\n  customFontFamily?: boolean;\n  scroll?: boolean;\n};\n\nexport type TextFontFamilyItem = ToolbarGroupItem & {\n  command: Record<string, unknown>;\n  current: () => string | null;\n} & TextFontFamilyFeatureProps;\n\nexport const TextFontFamilyClientFeature = createClientFeature<TextFontFamilyFeatureProps, TextFontFamilyItem>(({ props }) => {\n  const DropdownComponent: ToolbarGroup = {\n    type: \"dropdown\",\n    ChildComponent: TextFontFamilyIcon,\n    isEnabled({ selection }: { selection: BaseSelection }) {\n      return !!getSelection(selection);\n    },\n    items: [\n      {\n        Component: () => {\n          const [editor] = useLexicalComposerContext();\n          return Dropdown({\n            editor,\n            item: {\n              command: TEXT_FONT_FAMILY_COMMAND,\n              current() {\n                const selection = getSelection();\n                return selection ? $getSelectionStyleValueForProperty(selection, \"font-family\", \"\") : null;\n              },\n              hideAttribution: props?.hideAttribution,\n              fontFamilies: props?.fontFamilies,\n              method: props?.method,\n              scroll: props?.scroll,\n              customFontFamily: props?.customFontFamily,\n              key: \"textFontFamily\",\n            },\n          });\n        },\n        key: \"textFontFamily\",\n      },\n    ],\n    key: \"textFontFamilyDropdown\",\n    order: 65,\n  };\n\n  return {\n    plugins: [\n      {\n        Component: () => {\n          const [editor] = useLexicalComposerContext();\n\n          useEffect(() => {\n            return editor.registerCommand(\n              TEXT_FONT_FAMILY_COMMAND,\n              (payload) => {\n                editor.update(() => {\n                  const selection = getSelection();\n                  if (selection) {\n                    $patchStyleText(selection, { \"font-family\": payload.fontFamily || \"\" });\n                  }\n                });\n                return true;\n              },\n              COMMAND_PRIORITY_CRITICAL,\n            );\n          }, [editor]);\n\n          return null;\n        },\n        position: \"normal\",\n      },\n    ],\n    toolbarFixed: {\n      groups: [DropdownComponent],\n    },\n    toolbarInline: {\n      groups: [DropdownComponent],\n    },\n  };\n});","import { createCommand } from \"@payloadcms/richtext-lexical/lexical\";\n\nexport const TEXT_FONT_FAMILY_COMMAND = createCommand<{ fontFamily: string }>(\"TEXT_FONT_FAMILY_COMMAND\");","import { type LexicalEditor } from \"@payloadcms/richtext-lexical/lexical\";\n\nimport { useEffect, useState } from \"react\";\n\nimport { FontFamilyPicker } from \"./TextFontFamilyPicker\";\n\nimport { type TextFontFamilyItem } from \"../feature.client\";\n\nexport const Dropdown = ({ editor, item }: { editor: LexicalEditor; item: TextFontFamilyItem }) => {\n  const [activeFontFamily, setActiveFontFamily] = useState<string>(\"\");\n\n  const onChange = (fontFamily: string) => {\n    editor.dispatchCommand(item.command, { fontFamily });\n    setActiveFontFamily(fontFamily || \"\");\n  };\n\n  useEffect(() => {\n    editor.read(() => {\n      const current = item.current ? item.current() : null;\n      if (current) setActiveFontFamily(current);\n    });\n  }, [editor, item]);\n\n  return (\n    <FontFamilyPicker\n      fontFamily={activeFontFamily}\n      onChange={onChange}\n      hideAttribution={item.hideAttribution}\n      method={item.method}\n      scroll={item.scroll}\n      fontFamilies={item.fontFamilies}\n      customFontFamily={item.customFontFamily}\n    />\n  );\n};","import { useState, useEffect, useRef, type ChangeEvent } from \"react\";\n\nimport { usePreventInlineToolbarClose } from \"../../../utils/usePreventInlineToolbarClose\";\nimport { type TextFontFamilyFeatureProps } from \"../feature.client\";\n\nexport const FontFamilyPicker = ({\n  fontFamily,\n  onChange,\n  hideAttribution,\n  fontFamilies,\n  method = \"replace\",\n  scroll = true,\n  customFontFamily = true,\n}: {\n  fontFamily: string;\n  onChange: (fontFamily: string) => void;\n} & TextFontFamilyFeatureProps) => {\n  const { containerProps, inputProps } = usePreventInlineToolbarClose();\n  const isEditingRef = useRef(false);\n\n  const defaultFontFamilyOptions = [\n    { value: \"Arial, sans-serif\", label: \"Arial\" },\n    { value: \"Times New Roman, serif\", label: \"Times New Roman\" },\n    { value: \"Courier New, monospace\", label: \"Courier New\" },\n    { value: \"Georgia, serif\", label: \"Georgia\" },\n  ];\n\n  const options =\n    method === \"replace\"\n      ? (fontFamilies ?? defaultFontFamilyOptions)\n      : [...defaultFontFamilyOptions, ...(fontFamilies ?? [])];\n\n  const [displayValue, setDisplayValue] = useState(fontFamily || \"\");\n  const [appliedValue, setAppliedValue] = useState(fontFamily || \"\");\n  const [isCustomMode, setIsCustomMode] = useState(false);\n  const [customFontFamilyValue, setCustomFontFamilyValue] = useState(\"\");\n\n  useEffect(() => {\n    if (isEditingRef.current) return;\n\n    if (!fontFamily) {\n      setDisplayValue(\"\");\n      setAppliedValue(\"\");\n      setIsCustomMode(true);\n      setCustomFontFamilyValue(\"\");\n      return;\n    }\n\n    setDisplayValue(fontFamily);\n    setAppliedValue(fontFamily);\n    setCustomFontFamilyValue(fontFamily);\n\n    const matchingOption = options.find((option) => option.value === fontFamily);\n    setIsCustomMode(!matchingOption);\n  }, [fontFamily, options]);\n\n  const handleFontFamilySelect = (value: string) => {\n    setDisplayValue(value);\n    setAppliedValue(value);\n    onChange(value);\n    setIsCustomMode(false);\n    setCustomFontFamilyValue(value);\n  };\n\n  const handleCustomFontFamilyChange = (e: ChangeEvent<HTMLInputElement>) => {\n    e.preventDefault();\n    e.stopPropagation();\n\n    isEditingRef.current = true;\n\n    const value = e.target.value;\n    setCustomFontFamilyValue(value);\n    setDisplayValue(value);\n    setIsCustomMode(true);\n  };\n\n  const applyCustomFontFamily = () => {\n    isEditingRef.current = false;\n    setAppliedValue(displayValue);\n    onChange(displayValue);\n  };\n\n  const handleReset = () => {\n    isEditingRef.current = false;\n    setDisplayValue(\"\");\n    setAppliedValue(\"\");\n    setCustomFontFamilyValue(\"\");\n    onChange(\"\");\n  };\n\n  return (\n    <div\n      {...containerProps}\n      style={{\n        padding: \"8px\",\n        display: \"flex\",\n        flexDirection: \"column\",\n        gap: \"8px\",\n      }}\n    >\n      <div\n        style={{\n          display: \"grid\",\n          gridTemplateColumns: \"1fr\",\n          gap: \"12px\",\n          maxHeight: scroll && options.length > 4 ? \"64px\" : \"none\",\n          overflowY: scroll && options.length > 4 ? \"auto\" : \"visible\",\n          paddingRight: scroll && options.length > 4 ? \"8px\" : \"0\",\n        }}\n      >\n        {options.map((option, index) => (\n          <button\n            key={`${option.value}-${index}`}\n            className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n            style={{\n              cursor: \"pointer\",\n              margin: \"0\",\n              border:\n                appliedValue === option.value && !isCustomMode\n                  ? \"1px solid var(--theme-elevation-900)\"\n                  : \"1px solid transparent\",\n              fontFamily: option.value,\n            }}\n            onClick={(e) => {\n              e.preventDefault();\n              e.stopPropagation();\n              handleFontFamilySelect(option.value);\n            }}\n          >\n            {option.label}\n          </button>\n        ))}\n      </div>\n\n      {customFontFamily && (\n        <div style={{ display: \"flex\", alignItems: \"center\" }}>\n          <div style={{ marginRight: \"8px\" }}>Custom: </div>\n          <div\n            style={{\n              display: \"flex\",\n              alignItems: \"center\",\n              flex: 1,\n            }}\n          >\n            <div\n              className=\"field-type text\"\n              onClick={(e) => {\n                e.stopPropagation();\n              }}\n              style={{ flex: 1 }}\n            >\n              <input\n                style={{\n                  width: \"100%\",\n                  margin: \"8px 0\",\n                  height: \"25px\",\n                  paddingTop: \"0\",\n                  paddingBottom: \"1px\",\n                  paddingLeft: \"4px\",\n                  paddingRight: \"4px\",\n                }}\n                type=\"text\"\n                value={customFontFamilyValue}\n                onChange={handleCustomFontFamilyChange}\n                onClick={(e) => e.stopPropagation()}\n                placeholder=\"e.g. Arial, sans-serif\"\n                {...inputProps}\n              />\n            </div>\n          </div>\n        </div>\n      )}\n      <div style={{ display: \"flex\", gap: \"8px\" }}>\n        <button\n          onClick={(e) => {\n            e.preventDefault();\n            e.stopPropagation();\n            handleReset();\n          }}\n          className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n          style={{ marginLeft: \"auto\", margin: \"0\", cursor: \"pointer\", flex: 1 }}\n        >\n          Reset\n        </button>\n        {customFontFamily && (\n          <button\n            onClick={(e) => {\n              e.preventDefault();\n              e.stopPropagation();\n              applyCustomFontFamily();\n            }}\n            className=\"btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup\"\n            style={{ marginLeft: \"auto\", margin: \"0\", cursor: \"pointer\", flex: 1 }}\n          >\n            Apply\n          </button>\n        )}\n      </div>\n\n      {!hideAttribution && (\n        <p\n          style={{\n            color: \"var(--theme-elevation-650)\",\n            fontSize: \"10px\",\n            textAlign: \"center\",\n          }}\n        >\n          Made with ❤️ by{\" \"}\n          <a target=\"_blank\" href=\"https://github.com/AdrianMaj\">\n            @AdrianMaj\n          </a>\n        </p>\n      )}\n    </div>\n  );\n};\n","import { COMMAND_PRIORITY_CRITICAL } from \"@payloadcms/richtext-lexical/lexical\";\nimport { useLexicalComposerContext } from \"@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext\";\nimport { $patchStyleText } from \"@payloadcms/richtext-lexical/lexical/selection\";\n\nimport { useEffect } from \"react\";\n\nimport { getSelection } from \"../../../utils/getSelection\";\nimport { TEXT_FONT_FAMILY_COMMAND } from \"../command\";\n\nexport const TextFontFamilyIcon = () => {\n  const [editor] = useLexicalComposerContext();\n\n  useEffect(() => {\n    return editor.registerCommand(\n      TEXT_FONT_FAMILY_COMMAND,\n      (payload) => {\n        editor.update(() => {\n          const selection = getSelection();\n          if (selection) $patchStyleText(selection, { \"font-family\": payload.fontFamily || \"\" });\n        });\n        return false;\n      },\n      COMMAND_PRIORITY_CRITICAL,\n    );\n  }, [editor]);\n\n  return (\n    <div>\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"16\"\n        height=\"16\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      >\n        <polyline points=\"4 7 4 4 20 4 20 7\" />\n        <line x1=\"9\" x2=\"15\" y1=\"20\" y2=\"20\" />\n        <line x1=\"12\" x2=\"12\" y1=\"4\" y2=\"20\" />\n      </svg>\n    </div>\n  );\n};\n"],"mappings":"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","names":["import_lexical","import_LexicalComposerContext","import_selection","import_react","import_react","import_react","import_jsx_runtime","import_lexical","import_react","import_lexical","import_jsx_runtime","import_client","import_lexical","import_LexicalComposerContext","import_selection","import_react","import_lexical","import_react","import_react","import_jsx_runtime","import_jsx_runtime","import_lexical","import_LexicalComposerContext","import_selection","import_react","import_jsx_runtime","import_client","import_lexical","import_LexicalComposerContext","import_selection","import_react","import_lexical","import_react","import_react","import_jsx_runtime","import_jsx_runtime","Dropdown","import_lexical","import_LexicalComposerContext","import_selection","import_react","import_jsx_runtime","Dropdown","import_client","import_lexical","import_LexicalComposerContext","import_selection","import_react","import_lexical","import_react","import_react","import_jsx_runtime","import_jsx_runtime","Dropdown","import_jsx_runtime","Dropdown","import_client","import_lexical","import_LexicalComposerContext","import_selection","import_react","import_lexical","import_react","import_react","import_jsx_runtime","import_jsx_runtime","Dropdown","import_lexical","import_LexicalComposerContext","import_selection","import_react","import_jsx_runtime","Dropdown"]}