{"version":3,"file":"index.mjs","sources":["../src/schema.tsx","../src/components/Player.tsx","../src/components/Folder.tsx","../src/components/Medias.tsx","../src/hooks/useWistiaData.ts","../src/components/Input.tsx","../src/components/Preview.tsx","../src/plugin.tsx","../src/index.ts"],"sourcesContent":["export const wistiaMedia = {\n  name: 'wistiaMedia',\n  type: 'object',\n  title: 'Wistia media',\n  fields: [\n    {\n      type: 'number',\n      name: 'id',\n    },\n    {\n      type: 'string',\n      name: 'hashed_id',\n    },\n  ],\n  preview: {\n    select: {\n      title: 'title',\n      subtitle: 'hashed_id',\n    },\n    prepare({title, subtitle}: {title: string; subtitle: string}) {\n      return {\n        title: title || 'Wistia media',\n        subtitle,\n      }\n    },\n  },\n}\n","const playerUrl = (mediaUrl: string) => {\n  let params = new URLSearchParams()\n\n  // https://wistia.com/support/developers/embed-options#options\n  let wistiaSettings: any = {\n    playbar: true,\n    playButton: true,\n    seo: false,\n    controlsVisibleOnLoad: true,\n    autoPlay: false,\n    doNotTrack: true,\n    preload: 'none',\n    volumeControl: true,\n    copyLinkAndThumbnailEnabled: true,\n    fullscreenButton: true,\n    wmode: 'transparent',\n    videoFoam: false,\n    fitStrategy: 'fill',\n  }\n\n  for (let key in wistiaSettings) {\n    params.append(key, wistiaSettings[key])\n  }\n\n  return `${mediaUrl}?${params.toString()}`\n}\n\nexport function Player({mediaUrl}: {mediaUrl: string}) {\n  return (\n    <div\n      style={{\n        width: '100%',\n        borderRadius: '3px',\n        overflow: 'hidden',\n      }}\n    >\n      {mediaUrl && \n        <iframe\n          allow=\"autoplay; fullscreen;\"\n          allow-transparency=\"true\"\n          width=\"100%\"\n          style={{\n            aspectRatio: '16/9',\n            border: 0,\n            display: 'block',\n          }}\n          src={playerUrl(mediaUrl)}\n        />\n      }\n    </div>\n  )\n}\n","import {memo, useState} from 'react'\nimport {Spinner, Card, Flex, Text, Box, Tooltip, Button, Badge, Stack} from '@sanity/ui'\nimport {LockIcon, LaunchIcon, FolderIcon} from '@sanity/icons'\n\nimport {Config, WistaAPIFolder} from '../types'\n\nconst WistiaFoldersComponent = ({\n  folders,\n  loadingFolderId,\n  error,\n  hasMore,\n  loadingMore,\n  onFolderClick,\n  onLoadMore,\n  config,\n}: {\n  folders: WistaAPIFolder[]\n  loadingFolderId: number | null\n  error: string\n  hasMore: boolean\n  loadingMore: boolean\n  onFolderClick: (folder: WistaAPIFolder) => void\n  onLoadMore: () => void\n  config: Config\n}) => {\n  const [hoveredId, setHoveredId] = useState<number | null>(null)\n\n  if (error) {\n    return (\n      <Box padding={3}>\n        <Card padding={[3, 3, 4]} radius={2} shadow={1} tone=\"critical\">\n          <Text align=\"center\">{error}</Text>\n        </Card>\n      </Box>\n    )\n  }\n\n  return (\n    <>\n      {folders.length\n        ? folders.map((folder: WistaAPIFolder) => (\n            <Card\n              key={folder.id}\n              paddingTop={3}\n              paddingBottom={3}\n              paddingRight={3}\n              paddingLeft={4}\n              radius={1}\n              style={{cursor: 'pointer'}}\n              onClick={() => onFolderClick(folder)}\n              tone={\n                loadingFolderId === folder.id || hoveredId === folder.id ? 'primary' : 'inherit'\n              }\n              onMouseEnter={() => setHoveredId(folder.id)}\n              onMouseLeave={() => setHoveredId(null)}\n              as=\"button\"\n            >\n              <Flex justify=\"space-between\" align=\"center\" gap={2}>\n                <Flex align=\"center\" gap={3} paddingLeft={1}>\n                  <Box flex=\"none\">\n                    {loadingFolderId === folder.id ?\n                      <Spinner size={2} />\n                    :\n                      <Text size={2}>\n                        {folder.public ? (\n                          <FolderIcon />\n                        ) : (\n                          <Box flex=\"none\">\n                            <Text size={2}>\n                              <Tooltip\n                                content={\n                                  <Text muted size={1}>\n                                    Private\n                                  </Text>\n                                }\n                                fallbackPlacements={['right', 'left']}\n                                placement=\"top\"\n                                portal\n                              >\n                                <LockIcon />\n                              </Tooltip>\n                            </Text>\n                          </Box>\n                        )}\n                      </Text>\n                    }\n                  </Box>\n                  <Stack space={2}>\n                    <Text size={2} weight=\"semibold\">\n                      {folder.name}\n                    </Text>\n                  </Stack>\n                </Flex>\n                <Flex align=\"center\" gap={3}>\n                  <Badge aria-label={`${folder.media_count} media items`} tone=\"default\">\n                    {folder.media_count}\n                  </Badge>\n                  <Tooltip\n                    content={<Text size={1}>Open in Wistia</Text>}\n                    placement=\"top\"\n                    fallbackPlacements={['left', 'bottom']}\n                    portal\n                  >\n                    <Button\n                      as=\"a\"\n                      href={`https://${config.accountSubdomain || 'app'}.wistia.com/folders/${folder.hashed_id}`}\n                      target=\"_blank\"\n                      rel=\"noopener noreferrer\"\n                      icon={LaunchIcon}\n                      mode=\"bleed\"\n                      padding={2}\n                      onClick={(e: React.MouseEvent) => e.stopPropagation()}\n                    />\n                  </Tooltip>\n                </Flex>\n              </Flex>\n            </Card>\n          ))\n        : (\n            <Card padding={4}>\n              <Text align=\"center\" muted size={1}>\n                No folders found.\n              </Text>\n            </Card>\n          )}\n      {hasMore && (\n        <Card padding={3} borderTop>\n          <Button\n            mode=\"bleed\"\n            text={loadingMore ? 'Loading…' : 'Show more'}\n            onClick={onLoadMore}\n            disabled={loadingMore}\n            width=\"fill\"\n          />\n        </Card>\n      )}\n    </>\n  )\n}\n\nexport default memo(WistiaFoldersComponent)\n","import {memo, useState, useMemo} from 'react'\nimport {Card, Flex, Text, Heading, Button, Stack, Tooltip, Box} from '@sanity/ui'\nimport {LaunchIcon, CalendarIcon} from '@sanity/icons'\n\nimport {WistiaMedia, WistiaAPIMedias, WistaMediasGrouped, Config} from '../types'\n\nconst groupBy = (array: WistiaAPIMedias[]): WistaMediasGrouped => {\n  return array.reduce((rv: WistaMediasGrouped, x) => {\n    const key = x.section ?? 'undefined'\n    rv[key] = rv[key] ? [...rv[key], x] : [x]\n    return rv\n  }, {})\n}\n\nconst wistiaMediasComponent = ({\n  medias,\n  hasMore,\n  loadingMore,\n  onVideoClick,\n  onLoadMore,\n  config,\n}: {\n  medias: WistiaAPIMedias[]\n  hasMore: boolean\n  loadingMore: boolean\n  onVideoClick: (media: WistiaMedia) => void\n  onLoadMore: () => void\n  config: Config\n}) => {\n  const [hoveredId, setHoveredId] = useState<number | null>(null)\n  const groupedMedias = useMemo(() => groupBy(medias), [medias])\n\n  return (\n    <>\n      {Object.keys(groupedMedias).length\n        ? Object.keys(groupedMedias).map((section) => (\n            <div key={section}>\n              {section !== 'undefined' && (\n                <Card\n                  padding={3}\n                  paddingLeft={4}\n                  borderBottom\n                  style={{position: 'sticky', top: 0, zIndex: 1}}\n                >\n                  <Heading as=\"h3\" size={1}>\n                    {section}\n                  </Heading>\n                </Card>\n              )}\n              {groupedMedias[section].map((media: WistiaAPIMedias) => (\n                <Card\n                  key={media.id}\n                  padding={3}\n                  paddingLeft={4}\n                  radius={1}\n                  style={{cursor: 'pointer'}}\n                  onClick={() => onVideoClick({id: media.id, hashed_id: media.hashed_id})}\n                  tone={hoveredId === media.id ? 'primary' : 'inherit'}\n                  onMouseEnter={() => setHoveredId(media.id)}\n                  onMouseLeave={() => setHoveredId(null)}\n                  as=\"button\"\n                >\n                  <Flex gap={3} align=\"center\">\n                    <Card padding={0} overflow=\"hidden\" radius={2} shadow={1} flex=\"none\">\n                      <img\n                        src={media.thumbnail.url}\n                        width={70}\n                        height={Math.round(70 / (media.thumbnail.width / media.thumbnail.height))}\n                        style={{\n                          display: 'block',\n                        }}\n                        alt={media.name}\n                      />\n                    </Card>\n                    <Stack space={2}>\n                      <Text title={media.name} textOverflow=\"ellipsis\" weight=\"semibold\">\n                        {media.name}\n                      </Text>\n                    </Stack>\n                    <Box flex=\"none\" style={{marginLeft: 'auto'}}>\n                      <Text muted>\n                        {new Date(media.duration * 1000).toISOString().slice(11, 19)}\n                      </Text>\n                    </Box>\n                    <Tooltip\n                      content={<Text size={1}>Open in Wistia</Text>}\n                      placement=\"top\"\n                      fallbackPlacements={['left', 'bottom']}\n                      portal\n                    >\n                      <Button\n                        as=\"a\"\n                        href={`https://${config.accountSubdomain || 'app'}.wistia.com/medias/${media.hashed_id}`}\n                        target=\"_blank\"\n                        rel=\"noopener noreferrer\"\n                        icon={LaunchIcon}\n                        mode=\"bleed\"\n                        padding={2}\n                        onClick={(e: React.MouseEvent) => e.stopPropagation()}\n                      />\n                    </Tooltip>\n                  </Flex>\n                </Card>\n              ))}\n            </div>\n          ))\n        : (\n            <Card padding={5}>\n              <Text align=\"center\" muted size={1}>\n                No media found.\n              </Text>\n            </Card>\n          )}\n      {hasMore && (\n        <Card padding={3} borderTop>\n          <Button\n            mode=\"bleed\"\n            text={loadingMore ? 'Loading…' : 'Show more'}\n            onClick={onLoadMore}\n            disabled={loadingMore}\n            width=\"fill\"\n          />\n        </Card>\n      )}\n    </>\n  )\n}\n\nexport default memo(wistiaMediasComponent)\n","import {useState, useEffect, useCallback, useRef} from 'react'\n\nimport {Config} from '../types'\n\nconst RESULTS_PER_PAGE = 100\nconst WISTIA_API_URL = 'https://api.wistia.com/modern'\n\ninterface UseWistiaDataResult<T> {\n  data: T[]\n  loadingMore: boolean\n  error: string\n  hasMore: boolean\n  loadMore: () => void\n}\n\nexport function useWistiaData<T>(\n  path: string | null,\n  config: Config,\n  onFirstLoad?: (data: T[]) => void,\n): UseWistiaDataResult<T> {\n  const [data, setData] = useState<T[]>([])\n  const [loadingMore, setLoadingMore] = useState(false)\n  const [error, setError] = useState('')\n  const [page, setPage] = useState(1)\n  const [hasMore, setHasMore] = useState(false)\n\n  const wistiaAPIOptions = {\n    headers: {\n      'X-Wistia-API-Version': '2026-01',\n      Authorization: `Bearer ${config.token}`,\n    }\n  }\n\n  // Always call onFirstLoad with the latest version without it being a dep\n  const onFirstLoadRef = useRef(onFirstLoad)\n  onFirstLoadRef.current = onFirstLoad\n\n  useEffect(() => {\n    if (!path) {\n      setData([])\n      setHasMore(false)\n      setError('')\n      setPage(1)\n      return\n    }\n\n    setPage(1)\n    fetch(`${WISTIA_API_URL}${path}&page=1&per_page=${RESULTS_PER_PAGE}`, wistiaAPIOptions)\n      .then((r) => {\n        if (!r.ok) {\n          throw new Error(\n            r.status === 401\n              ? '401 Not authorised - check your API key permissions.'\n              : `${r.status} error`,\n          )\n        }\n        return r.json()\n      })\n      .then((result: T[]) => {\n        setHasMore(result.length === RESULTS_PER_PAGE)\n        setData(result)\n        onFirstLoadRef.current?.(result)\n      })\n      .catch((err) => setError(err.message))\n  }, [path, config.token])\n\n  const loadMore = useCallback(() => {\n    if (!path) return\n    const nextPage = page + 1\n    setPage(nextPage)\n    setLoadingMore(true)\n\n    fetch(`${WISTIA_API_URL}${path}&page=${nextPage}&per_page=${RESULTS_PER_PAGE}`, wistiaAPIOptions)\n      .then((r) => r.json())\n      .then((result: T[]) => {\n        setHasMore(result.length === RESULTS_PER_PAGE)\n        setData((prev) => [...prev, ...result])\n        setLoadingMore(false)\n      })\n      .catch(console.error)\n  }, [page, path, config.token])\n\n  return {data, loadingMore, error, hasMore, loadMore}\n}\n","import {useState, useCallback} from 'react'\nimport {Button, Card, Dialog, Flex, Text, Badge, Box, Stack, Tooltip, useToast, Heading} from '@sanity/ui'\nimport {\n  DocumentVideoIcon,\n  ChevronLeftIcon,\n  LaunchIcon,\n  ResetIcon,\n  LinkIcon,\n  SearchIcon,\n} from '@sanity/icons'\nimport {set, unset, setIfMissing} from 'sanity'\n\nimport {WistiaMedia, WistiaAPIMedias, WistiaInputProps, WistaAPIFolder} from '../types'\nimport {Player} from './Player'\nimport Folder from './Folder'\nimport Medias from './Medias'\nimport {useWistiaData} from '../hooks/useWistiaData'\n\nconst WistiaInputComponent = (props: WistiaInputProps) => {\n  const {value, onChange, config, schemaType, renderDefault} = props\n  const {push: pushToast} = useToast()\n\n  const [isPickerMounted, setIsPickerMounted] = useState(false)\n  const [isDialogOpen, setIsDialogOpen] = useState(false)\n  const [isFolderLoading, setIsFolderLoading] = useState(false)\n  const [selectedFolder, setSelectedFolder] = useState<WistaAPIFolder | null>(null)\n  const [loadingFolderId, setLoadingFolderId] = useState<number | null>(null)\n  const [visibleFolder, setVisibleFolder] = useState<WistaAPIFolder | null>(null)\n\n  const {\n    data: folders,\n    loadingMore: foldersLoadingMore,\n    error: foldersError,\n    hasMore: hasMoreFolders,\n    loadMore: loadMoreFolders,\n  } = useWistiaData<WistaAPIFolder>(\n    isPickerMounted ? '/folders?sort_by=updated&sort_direction=0' : null,\n    config,\n    () => {\n      setIsFolderLoading(false)\n      setIsDialogOpen(true)\n    },\n  )\n\n  const {\n    data: medias,\n    loadingMore: mediasLoadingMore,\n    hasMore: hasMoreMedias,\n    loadMore: loadMoreMedias,\n  } = useWistiaData<WistiaAPIMedias>(\n    selectedFolder ? `/medias?folder_id=${selectedFolder.id}&sort_by=name` : null,\n    config,\n    () => {\n      setLoadingFolderId(null)\n      setVisibleFolder(selectedFolder)\n    },\n  )\n\n  const handleChange = useCallback(\n    (newValue: WistiaMedia) => {\n      setIsPickerMounted(false)\n      setIsDialogOpen(false)\n      setSelectedFolder(null)\n      setVisibleFolder(null)\n      onChange([\n        setIfMissing({_type: schemaType.name}),\n        set(newValue.hashed_id, ['hashed_id']),\n        set(newValue.id, ['id']),\n      ])\n    },\n    [onChange, schemaType],\n  )\n\n  const handleClear = useCallback(() => {\n    onChange(unset())\n  }, [onChange])\n\n  const handleCopyUrl = useCallback(() => {\n    navigator.clipboard.writeText(`https://fast.wistia.net/embed/iframe/${value?.hashed_id}`)\n    pushToast({closable: true, status: 'success', title: 'URL copied to clipboard'})\n  }, [value, pushToast])\n\n  const handleOpenPicker = useCallback(() => {\n    setIsFolderLoading(true)\n    setIsPickerMounted(true)\n  }, [])\n\n  const handleClosePicker = useCallback(() => {\n    setIsPickerMounted(false)\n    setIsDialogOpen(false)\n    setSelectedFolder(null)\n    setVisibleFolder(null)\n    setLoadingFolderId(null)\n    setIsFolderLoading(false)\n  }, [])\n\n  const handleFolderClick = useCallback((folder: WistaAPIFolder) => {\n    setLoadingFolderId(folder.id)\n    setSelectedFolder(folder)\n  }, [])\n\n  // MARK: Config error\n  if (!config?.token?.length) {\n    return (\n      <Card padding={[3, 3, 4]} radius={2} shadow={1} tone=\"critical\">\n        <Text align=\"center\">\n          Missing required API token in Sanity config.{' '}\n          <a href=\"https://docs.wistia.com/docs/making-api-requests\">\n            See Wistia documentation.\n          </a>\n        </Text>\n      </Card>\n    )\n  }\n\n  const mediaUrl = value?.hashed_id\n    ? `https://fast.wistia.net/embed/iframe/${value.hashed_id}`\n    : null\n\n  // MARK: Selecting a Folder and Media\n  const picker = isDialogOpen && (\n    <Dialog\n      id=\"wistia-picker\"\n      onClose={handleClosePicker}\n      animate\n      width={1}\n      header={\n        visibleFolder ? (\n          <Stack space={3}>\n            <Flex justify=\"space-between\">\n              <Button\n                icon={ChevronLeftIcon}\n                onClick={() => {\n                  setSelectedFolder(null)\n                  setVisibleFolder(null)\n                }}\n                mode=\"bleed\"\n                padding={2}\n                space={2}\n                text=\"All folders\"\n              />\n              <Button\n                as=\"a\"\n                href={`https://${config.accountSubdomain || 'app'}.wistia.com/folders/${visibleFolder.hashed_id}`}\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n                icon={LaunchIcon}\n                mode=\"bleed\"\n                padding={2}\n                space={2}\n                text=\"Open in Wistia\"\n              />\n            </Flex>\n            <Flex justify=\"space-between\" align=\"center\" flex={1} paddingBottom={0}>\n              <Stack space={3}>\n                <Heading as=\"h2\" size={2}>\n                  {visibleFolder.name}\n                </Heading>\n                {visibleFolder.description ? (\n                  <Text textOverflow=\"ellipsis\" size={1} muted>\n                    {visibleFolder.description.replace(/<[^>]*>/g, '').trim()}\n                  </Text>\n                ) : null}\n              </Stack>\n            </Flex>\n          </Stack>\n        ) : (\n          'Select a folder'\n        )\n      }\n      footer={\n        visibleFolder ? (\n          <Card tone=\"transparent\" paddingX={4} paddingY={4}>\n            <Flex align=\"center\" justify=\"flex-start\" gap={3}>\n              {!visibleFolder.public && (\n                <Badge tone=\"caution\">\n                  Private\n                </Badge>\n              )}\n              <Badge title={`${visibleFolder.media_count} items`} tone=\"default\">\n                {visibleFolder.media_count} items\n              </Badge>\n              <Text title={visibleFolder.updated} size={1}>\n                <b>Updated</b>{' '}\n                {new Date(visibleFolder.updated).toLocaleDateString(undefined, {\n                  day: 'numeric',\n                  month: 'short',\n                  year: 'numeric',\n                  hour: '2-digit',\n                  minute: '2-digit'\n                })}\n              </Text>\n            </Flex>\n          </Card>\n        ) : undefined\n      }\n    >\n      {!visibleFolder ? (\n        <Folder\n          config={config}\n          folders={folders}\n          loadingFolderId={loadingFolderId}\n          error={foldersError}\n          hasMore={hasMoreFolders}\n          loadingMore={foldersLoadingMore}\n          onFolderClick={handleFolderClick}\n          onLoadMore={loadMoreFolders}\n        />\n      ) : (\n        <Medias\n          config={config}\n          medias={medias}\n          hasMore={hasMoreMedias}\n          loadingMore={mediasLoadingMore}\n          onVideoClick={handleChange}\n          onLoadMore={loadMoreMedias}\n        />\n      )}\n    </Dialog>\n  )\n\n  // Add in any extra fields the user has defined\n  const extraFields = config.fields?.length\n    ? <Stack marginTop={4}>{renderDefault({...props, members: props.members.filter(\n        (m) => m.kind === 'field' && config.fields!.some((f) => f.name === m.name)\n      )})}</Stack>\n    : null\n\n  // MARK: Media is selected\n  if (mediaUrl) {\n    return (\n      <Stack space={0}>\n        <Card radius={2} shadow={1} padding={2}>\n          <Flex justify=\"space-between\" align=\"center\" padding={0} paddingBottom={2} gap={1}>\n            <Flex gap={1}>\n              <Tooltip animate content={<Text size={1}>Open in Wistia</Text>} placement=\"top\" portal>\n                <Button\n                  as=\"a\"\n                  href={`https://${config.accountSubdomain || 'app'}.wistia.com/medias/${value?.hashed_id}`}\n                  target=\"_blank\"\n                  rel=\"noopener noreferrer\"\n                  icon={LaunchIcon}\n                  mode=\"bleed\"\n                  padding={2}\n                />\n              </Tooltip>\n              <Tooltip animate content={<Text size={1}>Copy embed URL</Text>} placement=\"top\" portal>\n                <Button mode=\"bleed\" padding={2} icon={LinkIcon} onClick={handleCopyUrl} />\n              </Tooltip>\n            </Flex>\n            <Flex align=\"center\" gap={1}>\n              <Button\n                text=\"Replace\"\n                padding={2}\n                space={2}\n                mode=\"bleed\"\n                icon={SearchIcon}\n                loading={isFolderLoading}\n                onClick={handleOpenPicker}\n              />\n              <Button\n                text=\"Clear\"\n                padding={2}\n                space={2}\n                mode=\"bleed\"\n                icon={ResetIcon}\n                tone=\"critical\"\n                onClick={handleClear}\n              />\n            </Flex>\n          </Flex>\n          <Player mediaUrl={mediaUrl} />\n        </Card>\n        {picker}\n        {extraFields}\n      </Stack>\n    )\n  }\n\n  // MARK: Initial state, no media selected\n  return (\n    <Stack space={2}>\n      <Card tone={'inherit'} radius={2} border padding={2} paddingLeft={3}>\n        <Flex justify=\"space-between\" align=\"center\">\n          <Flex align=\"center\" gap={3}>\n            <Box flex=\"none\">\n              <Text size={2}><DocumentVideoIcon /></Text>\n            </Box>\n            <Text size={1} muted>\n              No media selected\n            </Text>\n          </Flex>\n          <Flex align=\"center\" gap={1}>\n            <Button\n              as=\"a\"\n              href={`https://${config.accountSubdomain || 'app'}.wistia.com/home`}\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              icon={LaunchIcon}\n              mode=\"bleed\"\n              onClick={(e: React.MouseEvent) => e.stopPropagation()}\n              text={'Open Wistia'}\n              padding={2}\n              space={2}\n            />\n            <Button\n              mode=\"bleed\"\n              text=\"Select\"\n              icon={SearchIcon}\n              loading={isFolderLoading}\n              onClick={handleOpenPicker}\n              padding={2}\n              space={2}\n            />\n          </Flex>\n        </Flex>\n      </Card>\n      {picker}\n      {extraFields}\n    </Stack>\n  )\n}\n\nexport default WistiaInputComponent\n","import {PreviewProps} from 'sanity'\nimport {Stack} from '@sanity/ui'\nimport {Player} from './Player'\n\nexport default (props: PreviewProps) => {\n  const {subtitle: hashed_id, renderDefault} = props\n\n  return (\n    <Stack space={1}>\n      {renderDefault({...props})}\n      {hashed_id && <Player mediaUrl={`https://fast.wistia.net/embed/iframe/${hashed_id}`} />}\n    </Stack>\n  )\n}\n","import {ObjectInputProps, PreviewProps} from 'sanity'\nimport {Config} from './types'\n\nimport Input from './components/Input'\nimport Preview from './components/Preview'\n\nexport function wistiaMediaRender(config: Config) {\n  return {\n    components: {\n      input: (props: ObjectInputProps) => <Input config={config} {...props} />,\n      preview: (props: PreviewProps) => (\n        <Preview {...(props as PreviewProps & {subtitle?: string})} />\n      ),\n    },\n  }\n}\n","import {definePlugin} from 'sanity'\n\nimport {Config} from './types'\nimport {wistiaMedia} from './schema'\nimport {wistiaMediaRender} from './plugin'\n\n/**\n * Wistia input plugin for Sanity Studio\n * @public\n */\nexport const wistiaInput = definePlugin<Config>((config) => ({\n  name: 'sanity-plugin-wistia-input',\n  schema: {\n    types: [\n      {\n        ...wistiaMedia,\n        fields: [\n          ...wistiaMedia.fields,\n          ...(config.fields ?? []).filter(\n            (f) => !wistiaMedia.fields.some((base) => base.name === f.name),\n          ),\n        ],\n        ...wistiaMediaRender(config),\n      },\n    ],\n  },\n}))\n"],"names":["Input"],"mappings":"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"}