{"version":3,"file":"index.js","names":["c","_c","React","useCallback","useState","Button","useForm","useField","useDocumentInfo","useServerFunctions","useTranslation","FieldLabel","TextInput","SlugField","t0","$","field","path","readOnly","readOnlyFromProps","useAsSlug","label","t","collectionSlug","globalSlug","slugify","t1","name","t2","setValue","value","getData","getDataByPath","isLocked","setIsLocked","t3","e","preventDefault","valueToSlugify","formattedSlug","data","undefined","handleGenerate","t4","Symbol","for","e_0","_temp","toggleLock","t5","t6","_jsxs","className","children","_jsx","htmlFor","buttonStyle","onClick","onChange","Boolean","prev"],"sources":["../../../src/fields/Slug/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SlugFieldClientProps } from 'payload'\n\nimport React, { useCallback, useState } from 'react'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { useForm } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { TextInput } from '../Text/index.js'\nimport './index.scss'\n\n/**\n * @experimental This component is experimental and may change or be removed in the future. Use at your own risk.\n */\nexport const SlugField: React.FC = ({\n field,\n path,\n readOnly: readOnlyFromProps,\n useAsSlug,\n}) => {\n const { label } = field\n\n const { t } = useTranslation()\n\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const { slugify } = useServerFunctions()\n\n const { setValue, value } = useField({ path: path || field.name })\n\n const { getData, getDataByPath } = useForm()\n\n const [isLocked, setIsLocked] = useState(true)\n\n /**\n * This method allows the user to generate their slug on demand, e.g. when they click the \"generate\" button.\n * It uses the `slugify` server function to gain access to their custom slugify function defined in their field config.\n */\n const handleGenerate = useCallback(\n async (e: React.MouseEvent) => {\n e.preventDefault()\n\n const valueToSlugify = getDataByPath(useAsSlug)\n\n const formattedSlug = await slugify({\n collectionSlug,\n data: getData(),\n globalSlug,\n path,\n valueToSlugify,\n })\n\n if (formattedSlug === null || formattedSlug === undefined) {\n setValue('')\n return\n }\n\n /**\n * The result may be the same as the current value, and if so, we don't want to trigger a re-render.\n */\n if (value !== formattedSlug) {\n setValue(formattedSlug)\n }\n },\n [setValue, value, useAsSlug, getData, slugify, getDataByPath, collectionSlug, globalSlug, path],\n )\n\n const toggleLock = useCallback((e: React.MouseEvent) => {\n e.preventDefault()\n setIsLocked((prev) => !prev)\n }, [])\n\n return (\n
\n
\n \n {!isLocked && (\n \n )}\n \n
\n \n
\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,OAAOC,KAAA,IAASC,WAAW,EAAEC,QAAQ,QAAQ;AAE7C,SAASC,MAAM,QAAQ;AACvB,SAASC,OAAO,QAAQ;AACxB,SAASC,QAAQ,QAAQ;AACzB,SAASC,eAAe,QAAQ;AAChC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,cAAc,QAAQ;AAC/B,SAASC,UAAU,QAAQ;AAC3B,SAASC,SAAS,QAAQ;AAC1B,OAAO;AAEP;;;AAGA,OAAO,MAAMC,SAAA,GAA4CC,EAAA;EAAA,MAAAC,CAAA,GAAAd,EAAA;EAAC;IAAAe,KAAA;IAAAC,IAAA;IAAAC,QAAA,EAAAC,iBAAA;IAAAC;EAAA,IAAAN,EAKzD;EACC;IAAAO;EAAA,IAAkBL,KAAA;EAElB;IAAAM;EAAA,IAAcZ,cAAA;EAEd;IAAAa,cAAA;IAAAC;EAAA,IAAuChB,eAAA;EAEvC;IAAAiB;EAAA,IAAoBhB,kBAAA;EAEiC,MAAAiB,EAAA,GAAAT,IAAA,IAAQD,KAAA,CAAAW,IAAU;EAAA,IAAAC,EAAA;EAAA,IAAAb,CAAA,QAAAW,EAAA;IAA1BE,EAAA;MAAAX,IAAA,EAAQS;IAAkB;IAACX,CAAA,MAAAW,EAAA;IAAAX,CAAA,MAAAa,EAAA;EAAA;IAAAA,EAAA,GAAAb,CAAA;EAAA;EAAxE;IAAAc,QAAA;IAAAC;EAAA,IAA4BvB,QAAA,CAAiBqB,EAA2B;EAExE;IAAAG,OAAA;IAAAC;EAAA,IAAmC1B,OAAA;EAEnC,OAAA2B,QAAA,EAAAC,WAAA,IAAgC9B,QAAA,KAAS;EAAA,IAAA+B,EAAA;EAAA,IAAApB,CAAA,QAAAQ,cAAA,IAAAR,CAAA,QAAAgB,OAAA,IAAAhB,CAAA,QAAAiB,aAAA,IAAAjB,CAAA,QAAAS,UAAA,IAAAT,CAAA,QAAAE,IAAA,IAAAF,CAAA,QAAAc,QAAA,IAAAd,CAAA,QAAAU,OAAA,IAAAV,CAAA,QAAAK,SAAA,IAAAL,CAAA,SAAAe,KAAA;IAOvCK,EAAA,SAAAC,CAAA;MACEA,CAAA,CAAAC,cAAA,CAAgB;MAEhB,MAAAC,cAAA,GAAuBN,aAAA,CAAcZ,SAAA;MAErC,MAAAmB,aAAA,SAA4Bd,OAAA;QAAAF,cAAA;QAAAiB,IAAA,EAEpBT,OAAA;QAAAP,UAAA;QAAAP,IAAA;QAAAqB;MAAA,CAIR;MAAA,IAEIC,aAAA,SAAkB,IAAQA,aAAA,KAAAE,SAAkB;QAC9CZ,QAAA,CAAS;QAAA;MAAA;MAAA,IAOPC,KAAA,KAAUS,aAAA;QACZV,QAAA,CAASU,aAAA;MAAA;IAAA;IAEbxB,CAAA,MAAAQ,cAAA;IAAAR,CAAA,MAAAgB,OAAA;IAAAhB,CAAA,MAAAiB,aAAA;IAAAjB,CAAA,MAAAS,UAAA;IAAAT,CAAA,MAAAE,IAAA;IAAAF,CAAA,MAAAc,QAAA;IAAAd,CAAA,MAAAU,OAAA;IAAAV,CAAA,MAAAK,SAAA;IAAAL,CAAA,OAAAe,KAAA;IAAAf,CAAA,OAAAoB,EAAA;EAAA;IAAAA,EAAA,GAAApB,CAAA;EAAA;EAzBF,MAAA2B,cAAA,GAAuBP,EA0B0E;EAAA,IAAAQ,EAAA;EAAA,IAAA5B,CAAA,SAAA6B,MAAA,CAAAC,GAAA;IAGlEF,EAAA,GAAAG,GAAA;MAC7BV,GAAA,CAAAC,cAAA,CAAgB;MAChBH,WAAA,CAAAa,KAAuB;IAAA;IACzBhC,CAAA,OAAA4B,EAAA;EAAA;IAAAA,EAAA,GAAA5B,CAAA;EAAA;EAHA,MAAAiC,UAAA,GAAmBL,EAGd;EAKsB,MAAAM,EAAA,YAAShC,IAAA,EAAM;EAAA,IAAAiC,EAAA;EAAA,IAAAnC,CAAA,SAAAC,KAAA,CAAAW,IAAA,IAAAZ,CAAA,SAAA2B,cAAA,IAAA3B,CAAA,SAAAkB,QAAA,IAAAlB,CAAA,SAAAM,KAAA,IAAAN,CAAA,SAAAE,IAAA,IAAAF,CAAA,SAAAI,iBAAA,IAAAJ,CAAA,SAAAc,QAAA,IAAAd,CAAA,SAAAO,CAAA,IAAAP,CAAA,SAAAkC,EAAA,IAAAlC,CAAA,SAAAe,KAAA;IAFxCoB,EAAA,GAAAC,KAAA,CAAC;MAAAC,SAAA,EAAc;MAAAC,QAAA,GACbF,KAAA,CAAC;QAAAC,SAAA,EAAc;QAAAC,QAAA,GACbC,IAAA,CAAA3C,UAAA;UAAA4C,OAAA,EAAqBN,EAAe;UAAA5B;QAAA,C,GACnC,CAACY,QAAA,IACAqB,IAAA,CAAAjD,MAAA;UAAAmD,WAAA,EAAoB;UAAAJ,SAAA,EAAiB;UAAAK,OAAA,EAAuBf,cAAA;UAAAW,QAAA,EACzD/B,CAAA,CAAE;QAAA,C,GAGPgC,IAAA,CAAAjD,MAAA;UAAAmD,WAAA,EAAoB;UAAAJ,SAAA,EAAiB;UAAAK,OAAA,EAAuBT,UAAA;UAAAK,QAAA,EACzDpB,QAAA,GAAWX,CAAA,CAAE,oBAAoBA,CAAA,CAAE;QAAA,C;UAGxCgC,IAAA,CAAA1C,SAAA;QAAA8C,QAAA,EACY7B,QAAA;QAAAZ,IAAA,EACJA,IAAA,IAAQD,KAAA,CAAAW,IAAU;QAAAT,QAAA,EACdyC,OAAA,CAAQxC,iBAAA,IAAqBc,QAAA;QAAAH;MAAA,C;;;;;;;;;;;;;;;;SAf3CoB,E;CAoBJ;AA/EyD,SAAAH,MAAAa,IAAA;EAAA,QAuD9BA,IAAA;AAAA","ignoreList":[]}