@sanity/schema 5.0.1-next.29 → 5.0.1-next.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"Rule.js","sources":["../../src/legacy/types/constants.ts","../../src/legacy/types/utils.ts","../../src/legacy/types/any.ts","../../src/legacy/types/array.ts","../../src/legacy/preview/deprecationUtils.ts","../../src/legacy/preview/JSONStringifyHuman.ts","../../src/legacy/preview/fallbackPrepare.ts","../../src/legacy/preview/portableText.ts","../../src/legacy/preview/guessPreviewConfig.ts","../../src/legacy/preview/createPreviewGetter.ts","../../src/legacy/types/blocks/defaults.ts","../../src/legacy/types/blocks/block.ts","../../src/legacy/types/blocks/span.ts","../../src/legacy/preview/primitivePreview.ts","../../src/legacy/types/boolean.ts","../../src/legacy/searchConfig/resolve.ts","../../src/legacy/types/crossDatasetReference.ts","../../src/legacy/types/date.ts","../../src/legacy/types/datetime.ts","../../src/legacy/ordering/guessOrderingConfig.ts","../../src/legacy/searchConfig/normalize.ts","../../src/legacy/types/object.ts","../../src/legacy/types/document.ts","../../src/legacy/types/email.ts","../../src/legacy/types/file.ts","../../src/legacy/types/globalDocumentReference.ts","../../src/legacy/types/image/fieldDefs.ts","../../src/legacy/types/image.ts","../../src/legacy/types/number.ts","../../src/legacy/types/reference.ts","../../src/legacy/types/string.ts","../../src/legacy/types/text.ts","../../src/legacy/types/url.ts","../../src/legacy/Schema.ts","../../src/legacy/Rule.ts"],"sourcesContent":["export const DEFAULT_OVERRIDEABLE_FIELDS = [\n 'jsonType',\n 'type',\n 'name',\n 'title',\n 'description',\n 'options',\n 'fieldsets',\n 'validation',\n 'readOnly',\n 'hidden',\n 'components',\n 'diffComponent',\n 'initialValue',\n 'deprecated',\n]\n\n/**\n * The property name used for each type where we store the \"own props\" of the type.\n * This is the set of properties which are _not_ inherited, but explicitly defined on this type.\n */\nexport const OWN_PROPS_NAME = '_internal_ownProps'\n\nexport const ALL_FIELDS_GROUP_NAME = 'all-fields'\n","interface Config {\n enumerable?: boolean\n writable?: boolean\n}\nexport function lazyGetter(target: any, key: any, getter: any, config: Config = {}) {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: config.enumerable !== false,\n get() {\n const val = getter()\n Object.defineProperty(target, key, {\n value: val,\n writable: Boolean(config.writable),\n configurable: false,\n })\n return val\n },\n })\n return target\n}\n\nexport function hiddenGetter(target: any, key: string, value: unknown) {\n Object.defineProperty(target, key, {\n enumerable: false,\n writable: false,\n configurable: false,\n value,\n })\n}\n\n//\n// const o = lazyGetter({}, 'expensive', function() {\n// console.log('doing expensive calculations')\n// return 'RESULT OF EXPENSIVE'\n// })\n//\n// console.log(o.expensive)\n// console.log(o.expensive)\n// console.log(o.expensive)\n","import {omit, pick} from 'lodash'\n\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst ANY_CORE = {\n name: 'any',\n type: null,\n jsonType: 'any',\n}\n\nexport const AnyType = {\n get() {\n return ANY_CORE\n },\n extend(subTypeDef: any, extendMember: any) {\n const ownProps = {\n ...subTypeDef,\n of: subTypeDef.of.map((fieldDef: any) => {\n return {\n name: fieldDef.name,\n type: extendMember(omit(fieldDef, 'name')),\n }\n }),\n }\n\n const parsed = Object.assign(pick(ANY_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: ANY_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` property of subtypes of \"array\"')\n }\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash'\n\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst ARRAY_CORE = {\n name: 'array',\n type: null,\n jsonType: 'array',\n of: [],\n}\n\nexport const ArrayType = {\n get() {\n return ARRAY_CORE\n },\n extend(subTypeDef: any, createMemberType: any) {\n const parsed = Object.assign(pick(ARRAY_CORE, OVERRIDABLE_FIELDS), subTypeDef, {\n type: ARRAY_CORE,\n })\n lazyGetter(parsed, 'of', () => {\n return subTypeDef.of.map((ofTypeDef: any) => createMemberType.cached(ofTypeDef))\n })\n lazyGetter(parsed, OWN_PROPS_NAME, () => ({...subTypeDef, of: parsed.of}), {\n enumerable: false,\n writable: false,\n })\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` property of subtypes of \"array\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","export function warnIfPreviewOnOptions(type: any) {\n if (type.options && type.options.preview) {\n console.warn(`Heads up! The preview config is no longer defined on \"options\", but instead on the type/field itself.\nPlease move {options: {preview: ...}} to {..., preview: ...} on the type/field definition of \"${type.name}\".\n`)\n }\n}\n\nexport function warnIfPreviewHasFields(type: any) {\n const preview = type.preview || (type.options || {}).preview\n if (preview && 'fields' in preview) {\n console.warn(`Heads up! \"preview.fields\" should be renamed to \"preview.select\". Please update the preview config for \"${type.name}\".\n`)\n }\n}\n","import {pick} from 'lodash'\n\nfunction isEmpty(object: any) {\n for (const key in object) {\n if (object.hasOwnProperty(key)) {\n return false\n }\n }\n return true\n}\n\nfunction _stringify(value: any, options: any, depth: any): any {\n if (depth > options.maxDepth) {\n return '...'\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[empty]'\n }\n const capLength = Math.max(value.length - options.maxBreadth)\n const asString: any = value\n .slice(0, options.maxBreadth)\n .map((item, index) => _stringify(item, options, depth + 1))\n .concat(capLength > 0 ? `…+${capLength}` : [])\n .join(', ')\n\n return depth === 0 ? asString : `[${asString}]`\n }\n if (typeof value === 'object' && value !== null) {\n const keys = Object.keys(value).filter(\n (key) => !options.ignoreKeys.includes(key) && typeof value[key] !== 'undefined',\n )\n\n if (isEmpty(pick(value, keys))) {\n return '{empty}'\n }\n\n const asString = keys\n .slice(0, options.maxBreadth)\n .map((key) => `${key}: ${_stringify(value[key], options, depth + 1)}`)\n .join(', ')\n\n return depth === 0 ? asString : `{${asString}}`\n }\n const asString = String(value)\n return asString === '' ? '\"\"' : asString\n}\n\nexport default function stringify(\n value: any,\n options: {maxDepth?: number; maxBreadth?: number; ignoreKeys?: string[]} = {},\n) {\n const opts = {\n maxDepth: 'maxDepth' in options ? options.maxDepth : 2,\n maxBreadth: 'maxBreadth' in options ? options.maxBreadth : 2,\n ignoreKeys: 'ignoreKeys' in options ? options.ignoreKeys : [],\n }\n return _stringify(value, opts, 0)\n}\n","import {pick} from 'lodash'\n\nimport stringify from './JSONStringifyHuman'\n\nconst OPTIONS = {\n maxEntries: 2,\n maxDepth: 2,\n maxBreadth: 2,\n ignoreKeys: ['_id', '_type', '_key', '_ref'],\n}\n\nexport function createFallbackPrepare(fieldNames: any) {\n return (value: any) => ({\n title: stringify(pick(value, fieldNames), OPTIONS),\n })\n}\n","type FieldDef = {\n type: string\n name: string\n of?: {type: string}[]\n}\n\nexport function isBlockField(field: FieldDef): boolean {\n return (\n (field.type === 'array' && field.of && field.of.some((member) => member.type === 'block')) ||\n false\n )\n}\n","import arrify from 'arrify'\nimport {isUndefined, omitBy} from 'lodash'\n\nimport {createFallbackPrepare} from './fallbackPrepare'\nimport {isBlockField} from './portableText'\n\nconst TITLE_CANDIDATES = ['title', 'name', 'label', 'heading', 'header', 'caption']\nconst DESCRIPTION_CANDIDATES = ['description', ...TITLE_CANDIDATES]\n\nfunction fieldHasReferenceTo(fieldDef: any, refType: any) {\n return arrify(fieldDef.to || []).some((memberTypeDef: any) => memberTypeDef.type === refType)\n}\n\nfunction isImageAssetField(fieldDef: any) {\n return fieldHasReferenceTo(fieldDef, 'sanity.imageAsset')\n}\n\nfunction resolveImageAssetPath(typeDef: any) {\n const fields = typeDef.fields || []\n const imageAssetField = fields.find(isImageAssetField)\n if (imageAssetField) {\n return imageAssetField.name\n }\n const fieldWithImageAsset = fields.find((fieldDef: any) =>\n (fieldDef.fields || []).some(isImageAssetField),\n )\n\n return fieldWithImageAsset ? `${fieldWithImageAsset.name}.asset` : undefined\n}\n\nfunction isFileAssetField(fieldDef: any) {\n return fieldHasReferenceTo(fieldDef, 'sanity.fileAsset')\n}\n\nfunction resolveFileAssetPath(typeDef: any) {\n const fields = typeDef.fields || []\n const assetField = fields.find(isFileAssetField)\n if (assetField) {\n return assetField.name\n }\n const fieldWithFileAsset = fields.find((fieldDef: any) =>\n (fieldDef.fields || []).some(isFileAssetField),\n )\n return fieldWithFileAsset ? `${fieldWithFileAsset.name}.asset` : undefined\n}\n\nexport default function guessPreviewFields(rawObjectTypeDef: any) {\n const objectTypeDef = {fields: [], ...rawObjectTypeDef}\n\n const stringFieldNames = objectTypeDef.fields\n .filter((field: any) => field.type === 'string')\n .map((field: any) => field.name)\n\n const blockFieldNames = objectTypeDef.fields.filter(isBlockField).map((field: any) => field.name)\n\n // Check if we have fields with names that is listed in candidate fields\n let titleField = TITLE_CANDIDATES.find(\n (candidate) => stringFieldNames.includes(candidate) || blockFieldNames.includes(candidate),\n )\n\n let descField = DESCRIPTION_CANDIDATES.find(\n (candidate) =>\n candidate !== titleField &&\n (stringFieldNames.includes(candidate) || blockFieldNames.includes(candidate)),\n )\n\n if (!titleField) {\n // Pick first defined string field\n titleField = stringFieldNames[0] || blockFieldNames[0]\n // Pick next as desc\n descField = stringFieldNames[1] || blockFieldNames[1]\n }\n\n const mediaField = objectTypeDef.fields.find((field: any) => field.type === 'image')\n\n const imageAssetPath = resolveImageAssetPath(objectTypeDef)\n\n if (!titleField) {\n const fileAssetPath = resolveFileAssetPath(objectTypeDef)\n if (fileAssetPath) {\n titleField = `${fileAssetPath}.originalFilename`\n }\n if (imageAssetPath) {\n titleField = `${imageAssetPath}.originalFilename`\n }\n }\n\n if (!titleField && !imageAssetPath) {\n // last resort, pick all fields and concat them\n const fieldNames = objectTypeDef.fields.map((field: any) => field.name)\n const fieldMapping = fieldNames.reduce((acc: any, fieldName: any) => {\n acc[fieldName] = fieldName\n return acc\n }, {})\n\n return {\n select: fieldMapping,\n prepare: createFallbackPrepare(fieldNames),\n }\n }\n\n const select = omitBy(\n {\n title: titleField,\n description: descField,\n media: mediaField ? mediaField.name : imageAssetPath,\n },\n isUndefined,\n )\n\n return {\n select: select,\n }\n}\n","import {pick} from 'lodash'\n\nimport {warnIfPreviewHasFields, warnIfPreviewOnOptions} from './deprecationUtils'\nimport guessPreviewConfig from './guessPreviewConfig'\n\nfunction parseSelection(selection: any) {\n return selection.reduce((acc: any, field: any) => {\n acc[field] = field\n return acc\n }, {})\n}\n\nfunction parsePreview(preview: any) {\n if (!preview) {\n return preview\n }\n const select = preview.select || preview.fields || {}\n if (Array.isArray(select)) {\n return {\n ...pick(preview, ['prepare', 'component']),\n select: parseSelection(select),\n }\n }\n return {\n ...pick(preview, ['prepare', 'component']),\n select,\n }\n}\n\nexport default function createPreviewGetter(objectTypeDef: any) {\n return function previewGetter() {\n warnIfPreviewOnOptions(objectTypeDef)\n warnIfPreviewHasFields(objectTypeDef)\n const preview = parsePreview(objectTypeDef.preview || (objectTypeDef.options || {}).preview)\n return preview || guessPreviewConfig(objectTypeDef)\n }\n}\n","export const DEFAULT_LINK_ANNOTATION = {\n type: 'object',\n name: 'link',\n title: 'Link',\n i18nTitleKey: 'inputs.portable-text.annotation.link',\n options: {\n modal: {type: 'popover'},\n },\n fields: [\n {\n name: 'href',\n type: 'url',\n title: 'Link',\n description: 'A valid web, email, phone, or relative link.',\n validation: (Rule: any) =>\n Rule.uri({\n scheme: ['http', 'https', 'tel', 'mailto'],\n allowRelative: true,\n }),\n },\n ],\n}\n\nexport const DEFAULT_TEXT_FIELD = {\n type: 'text',\n name: 'text',\n title: 'Text',\n}\n\nexport const DEFAULT_MARKS_FIELD = {\n name: 'marks',\n type: 'array',\n of: [{type: 'string'}],\n title: 'Marks',\n}\n\nexport const LIST_TYPES = {\n bullet: {\n title: 'Bulleted list',\n value: 'bullet',\n i18nTitleKey: 'inputs.portable-text.list-type.bullet',\n },\n numbered: {\n title: 'Numbered list',\n value: 'number',\n i18nTitleKey: 'inputs.portable-text.list-type.number',\n },\n}\n\nexport const DEFAULT_LIST_TYPES = [LIST_TYPES.bullet, LIST_TYPES.numbered]\n\nexport const BLOCK_STYLES = {\n normal: {title: 'Normal', value: 'normal', i18nTitleKey: 'inputs.portable-text.style.normal'},\n h1: {title: 'Heading 1', value: 'h1', i18nTitleKey: 'inputs.portable-text.style.h1'},\n h2: {title: 'Heading 2', value: 'h2', i18nTitleKey: 'inputs.portable-text.style.h2'},\n h3: {title: 'Heading 3', value: 'h3', i18nTitleKey: 'inputs.portable-text.style.h3'},\n h4: {title: 'Heading 4', value: 'h4', i18nTitleKey: 'inputs.portable-text.style.h4'},\n h5: {title: 'Heading 5', value: 'h5', i18nTitleKey: 'inputs.portable-text.style.h5'},\n h6: {title: 'Heading 6', value: 'h6', i18nTitleKey: 'inputs.portable-text.style.h6'},\n blockquote: {\n title: 'Quote',\n value: 'blockquote',\n i18nTitleKey: 'inputs.portable-text.style.quote',\n },\n}\n\nexport const DEFAULT_BLOCK_STYLES = [\n BLOCK_STYLES.normal,\n BLOCK_STYLES.h1,\n BLOCK_STYLES.h2,\n BLOCK_STYLES.h3,\n BLOCK_STYLES.h4,\n BLOCK_STYLES.h5,\n BLOCK_STYLES.h6,\n BLOCK_STYLES.blockquote,\n]\n\nexport const DECORATOR_STRONG = {\n title: 'Strong',\n value: 'strong',\n i18nTitleKey: 'inputs.portable-text.decorator.strong',\n}\nexport const DECORATOR_EMPHASIS = {\n title: 'Italic',\n value: 'em',\n i18nTitleKey: 'inputs.portable-text.decorator.emphasis',\n}\nexport const DECORATOR_CODE = {\n title: 'Code',\n value: 'code',\n i18nTitleKey: 'inputs.portable-text.decorator.code',\n}\nexport const DECORATOR_UNDERLINE = {\n title: 'Underline',\n value: 'underline',\n i18nTitleKey: 'inputs.portable-text.decorator.underline',\n}\nexport const DECORATOR_STRIKE = {\n title: 'Strike',\n value: 'strike-through',\n i18nTitleKey: 'inputs.portable-text.decorator.strike-through',\n}\n\nexport const DECORATORS = {\n strong: DECORATOR_STRONG,\n em: DECORATOR_EMPHASIS,\n code: DECORATOR_CODE,\n underline: DECORATOR_UNDERLINE,\n strikeThrough: DECORATOR_STRIKE,\n}\n\nexport const DEFAULT_DECORATORS = [\n DECORATORS.strong,\n DECORATORS.em,\n DECORATORS.code,\n DECORATORS.underline,\n DECORATORS.strikeThrough,\n]\n","import {pick} from 'lodash'\n\nimport createPreviewGetter from '../../preview/createPreviewGetter'\nimport {OWN_PROPS_NAME} from '../constants'\nimport {hiddenGetter, lazyGetter} from '../utils'\nimport {\n BLOCK_STYLES,\n DEFAULT_BLOCK_STYLES,\n DEFAULT_DECORATORS,\n DEFAULT_LINK_ANNOTATION,\n DEFAULT_LIST_TYPES,\n DEFAULT_MARKS_FIELD,\n DEFAULT_TEXT_FIELD,\n} from './defaults'\n\nconst INHERITED_FIELDS = [\n 'type',\n 'name',\n 'title',\n 'jsonType',\n 'description',\n 'options',\n 'fieldsets',\n 'icon',\n]\n\nconst BLOCK_CORE = {\n name: 'block',\n title: 'Block',\n type: null,\n jsonType: 'object',\n}\n\nconst DEFAULT_OPTIONS = {}\n\nexport const BlockType = {\n get() {\n return BLOCK_CORE\n },\n extend(subTypeDef: any, extendMember: any) {\n const options = {...(subTypeDef.options || DEFAULT_OPTIONS)}\n\n const {marks, styles, lists, of, ...rest} = subTypeDef\n\n const childrenField = createChildrenField(marks, of)\n const styleField = createStyleField(styles)\n const listItemField = createListItemField(lists)\n\n const markDefsField = {\n name: 'markDefs',\n title: 'Mark definitions',\n type: 'array',\n of: marks?.annotations || DEFAULT_ANNOTATIONS,\n }\n\n const levelField = {\n name: 'level',\n title: 'Indentation',\n type: 'number',\n }\n\n // NOTE: if you update this (EVEN THE ORDER OF FIELDS) you _NEED TO_ also\n // update `BlockSchemaType`, `isBlockSchemaType` and similar in `@sanity/types`\n const fields = [childrenField, styleField, listItemField, markDefsField, levelField].concat(\n subTypeDef.fields || [],\n )\n\n const ownProps = {...rest, options}\n\n const parsed = Object.assign(pick(BLOCK_CORE, INHERITED_FIELDS), ownProps, {\n type: BLOCK_CORE,\n })\n\n lazyGetter(parsed, 'fields', () => {\n return fields.map((fieldDef) => extendMember.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'preview', createPreviewGetter(subTypeDef))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...ownProps,\n fields: parsed.fields,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"block\"')\n }\n const subOwnProps = pick(extensionDef, INHERITED_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n\nfunction ensureNormalStyle(styles: any) {\n return styles.some((style: any) => style.value === 'normal')\n ? styles\n : [BLOCK_STYLES.normal, ...styles]\n}\n\nfunction createStyleField(styles: any) {\n return {\n name: 'style',\n title: 'Style',\n type: 'string',\n options: {\n list: ensureNormalStyle(styles || DEFAULT_BLOCK_STYLES),\n },\n }\n}\n\nfunction createListItemField(lists: any) {\n return {\n name: 'listItem',\n title: 'List type',\n type: 'string',\n options: {\n list: lists || DEFAULT_LIST_TYPES,\n },\n }\n}\n\nconst DEFAULT_ANNOTATIONS = [DEFAULT_LINK_ANNOTATION]\n\nfunction createChildrenField(marks: any, of = []) {\n return {\n name: 'children',\n title: 'Content',\n type: 'array',\n of: [\n {\n type: 'span',\n fields: [DEFAULT_TEXT_FIELD, DEFAULT_MARKS_FIELD],\n annotations: marks && marks.annotations ? marks.annotations : DEFAULT_ANNOTATIONS,\n decorators: marks && marks.decorators ? marks.decorators : DEFAULT_DECORATORS,\n },\n ...of.filter((memberType: any) => memberType.type !== 'span'),\n ],\n }\n}\n","import {pick} from 'lodash'\n\nimport createPreviewGetter from '../../preview/createPreviewGetter'\nimport {OWN_PROPS_NAME} from '../constants'\nimport {hiddenGetter, lazyGetter} from '../utils'\n\nconst INHERITED_FIELDS = [\n 'type',\n 'name',\n 'title',\n 'jsonType',\n 'description',\n 'options',\n 'fieldsets',\n 'icon',\n]\n\nconst SPAN_CORE = {\n name: 'span',\n title: 'Span',\n type: null,\n jsonType: 'object',\n}\n\nconst MARKS_FIELD = {\n name: 'marks',\n title: 'Marks',\n type: 'array',\n of: [{type: 'string'}],\n}\n\nconst TEXT_FIELD = {\n name: 'text',\n title: 'Text',\n type: 'string',\n}\n\nconst DEFAULT_OPTIONS = {}\n\nexport const SpanType = {\n get() {\n return SPAN_CORE\n },\n extend(subTypeDef: any, extendMember: any) {\n const options = {...(subTypeDef.options || DEFAULT_OPTIONS)}\n\n const {annotations = [], marks = []} = subTypeDef\n\n // NOTE: if you update this please also update `SpanSchemaType` in`@sanity/types`\n const fields = [MARKS_FIELD, TEXT_FIELD]\n\n const ownProps = {...subTypeDef, options}\n\n const parsed = Object.assign(pick(SPAN_CORE, INHERITED_FIELDS), ownProps, {\n type: SPAN_CORE,\n })\n\n lazyGetter(parsed, 'fields', () => {\n return fields.map((fieldDef) => extendMember.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'annotations', () => annotations.map(extendMember))\n lazyGetter(parsed, 'marks', () => marks.map(extendMember))\n\n lazyGetter(parsed, 'preview', createPreviewGetter(subTypeDef))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...ownProps,\n fields: parsed.fields,\n annotations: parsed.annotations,\n marks: parsed.marks,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"span\"')\n }\n const subOwnProps = pick(extensionDef, INHERITED_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","export default {\n prepare: (val: any) => ({title: String(val)}),\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst BOOLEAN_CORE = {\n name: 'boolean',\n title: 'Boolean',\n type: null,\n jsonType: 'boolean',\n}\n\nexport const BooleanType = {\n get() {\n return BOOLEAN_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n const parsed = Object.assign(pick(BOOLEAN_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: BOOLEAN_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {isFinite, uniqBy} from 'lodash'\n\nexport const DEFAULT_MAX_FIELD_DEPTH = 5\n\nconst stringFieldsSymbols = {} as Record<number, symbol>\n\nconst getStringFieldSymbol = (maxDepth: number) => {\n if (!stringFieldsSymbols[maxDepth]) {\n stringFieldsSymbols[maxDepth] = Symbol(`__cachedStringFields_${maxDepth}`)\n }\n\n return stringFieldsSymbols[maxDepth]\n}\n\nconst isReference = (type: any) => type.type && type.type.name === 'reference'\n\nconst portableTextFields = ['style', 'list']\nconst isPortableTextBlock: any = (type: any) =>\n type.name === 'block' || (type.type && isPortableTextBlock(type.type))\nconst isPortableTextArray = (type: any) =>\n type.jsonType === 'array' && Array.isArray(type.of) && type.of.some(isPortableTextBlock)\n\nfunction reduceType(type: any, reducer: any, acc: any, path = [], maxDepth: any) {\n if (maxDepth < 0) {\n return acc\n }\n\n const accumulator = reducer(acc, type, path)\n if (type.jsonType === 'array' && Array.isArray(type.of)) {\n return reduceArray(type, reducer, accumulator, path, maxDepth)\n }\n\n if (type.jsonType === 'object' && Array.isArray(type.fields) && !isReference(type)) {\n return reduceObject(type, reducer, accumulator, path, maxDepth)\n }\n\n return accumulator\n}\n\nfunction reduceArray(arrayType: any, reducer: any, accumulator: any, path: any, maxDepth: any) {\n return arrayType.of.reduce(\n (acc: any, ofType: any) => reduceType(ofType, reducer, acc, path, maxDepth - 1),\n accumulator,\n )\n}\n\nfunction reduceObject(objectType: any, reducer: any, accumulator: any, path: any, maxDepth: any) {\n const isPtBlock = isPortableTextBlock(objectType)\n return objectType.fields.reduce((acc: any, field: any) => {\n // Don't include styles and list types as searchable paths for portable text blocks\n if (isPtBlock && portableTextFields.includes(field.name)) {\n return acc\n }\n\n const segment = [field.name].concat(field.type.jsonType === 'array' ? [[]] : [])\n return reduceType(field.type, reducer, acc, path.concat(segment), maxDepth - 1)\n }, accumulator)\n}\n\nconst BASE_WEIGHTS = [\n {weight: 1, path: ['_id']},\n {weight: 1, path: ['_type']},\n]\n\nconst PREVIEW_FIELD_WEIGHT_MAP = {\n title: 10,\n subtitle: 5,\n description: 1.5,\n}\n\n/**\n * @internal\n */\nexport function deriveFromPreview(\n type: {\n preview: {select: Record<string, string>}\n },\n maxDepth: number,\n): {weight?: number; path: (string | number)[]}[] {\n const select = type?.preview?.select\n\n if (!select) {\n return []\n }\n\n const fields: {weight: number; path: (string | number)[]}[] = []\n\n for (const fieldName of Object.keys(select)) {\n if (!(fieldName in PREVIEW_FIELD_WEIGHT_MAP)) {\n continue\n }\n\n const path = select[fieldName].split('.')\n\n if (maxDepth > -1 && path.length - 1 > maxDepth) {\n continue\n }\n\n fields.push({\n weight: (PREVIEW_FIELD_WEIGHT_MAP as any)[fieldName],\n path,\n })\n }\n\n return fields\n}\n\nfunction getCachedStringFieldPaths(type: any, maxDepth: number) {\n const symbol = getStringFieldSymbol(maxDepth)\n if (!type[symbol]) {\n type[symbol] = uniqBy(\n [\n ...BASE_WEIGHTS,\n ...deriveFromPreview(type, maxDepth),\n ...getStringFieldPaths(type, maxDepth).map((path: any) => ({weight: 1, path})),\n ...getPortableTextFieldPaths(type, maxDepth).map((path: any) => ({\n weight: 1,\n path,\n mapWith: 'pt::text',\n })),\n ],\n (spec) => spec.path.join('.'),\n )\n }\n return type[symbol]\n}\n\nfunction getCachedBaseFieldPaths(type: any, maxDepth: number) {\n const symbol = getStringFieldSymbol(maxDepth)\n if (!type[symbol]) {\n type[symbol] = uniqBy([...BASE_WEIGHTS, ...deriveFromPreview(type, maxDepth)], (spec) =>\n spec.path.join('.'),\n )\n }\n return type[symbol]\n}\n\nfunction getStringFieldPaths(type: any, maxDepth: number) {\n const reducer = (accumulator: any, childType: any, path: any) =>\n childType.jsonType === 'string' ? [...accumulator, path] : accumulator\n\n return reduceType(type, reducer, [], [], maxDepth)\n}\n\nfunction getPortableTextFieldPaths(type: any, maxDepth: any) {\n const reducer = (accumulator: any, childType: any, path: any) =>\n isPortableTextArray(childType) ? [...accumulator, path] : accumulator\n\n return reduceType(type, reducer, [], [], maxDepth)\n}\n\nexport function resolveSearchConfigForBaseFieldPaths(type: any, maxDepth?: number) {\n return getCachedBaseFieldPaths(type, normalizeMaxDepth(maxDepth))\n}\n\n/**\n * @internal\n */\nexport function resolveSearchConfig(type: any, maxDepth?: number) {\n return getCachedStringFieldPaths(type, normalizeMaxDepth(maxDepth))\n}\n\n/**\n * Normalizes a one-indexed maxDepth to a zero-indexed maxDepth\n * 0 = all fields\n *\n * @internal\n */\nfunction normalizeMaxDepth(maxDepth?: number) {\n if (!isFinite(maxDepth) || maxDepth! < 1 || maxDepth! > DEFAULT_MAX_FIELD_DEPTH) {\n return DEFAULT_MAX_FIELD_DEPTH - 1\n }\n\n return maxDepth! - 1\n}\n","import arrify from 'arrify'\nimport {capitalize, pick} from 'lodash'\n\nimport {resolveSearchConfigForBaseFieldPaths} from '../searchConfig/resolve'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nexport const REF_FIELD = {\n name: '_ref',\n title: 'Referenced document ID',\n type: 'string',\n}\n\nexport const WEAK_FIELD = {\n name: '_weak',\n title: 'Weak reference marker',\n type: 'boolean',\n}\n\nconst DATASET_FIELD = {\n name: '_dataset',\n title: 'Target dataset',\n type: 'string',\n}\n\nconst PROJECT_ID_FIELD = {\n name: '_projectId',\n title: 'Target project ID',\n type: 'string',\n hidden: true,\n}\n\nconst REFERENCE_FIELDS = [REF_FIELD, WEAK_FIELD, DATASET_FIELD, PROJECT_ID_FIELD]\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst CROSS_DATASET_REFERENCE_CORE = {\n name: 'crossDatasetReference',\n type: null,\n jsonType: 'object',\n}\n\nfunction humanize(arr: any, conjunction: any) {\n const len = arr.length\n if (len === 1) {\n return arr[0]\n }\n const first = arr.slice(0, len - 1)\n const last = arr[len - 1]\n return `${first.join(', ')} ${conjunction} ${last}`\n}\n\nfunction buildTitle(type: any) {\n if (!type.to || type.to.length === 0) {\n return 'Cross dataset Reference'\n }\n return `Cross dataset reference to ${humanize(\n arrify(type.to).map((toType: any) => toType.title || capitalize(toType.type)),\n 'or',\n ).toLowerCase()}`\n}\n\nexport const CrossDatasetReferenceType = {\n get() {\n return CROSS_DATASET_REFERENCE_CORE\n },\n extend(subTypeDef: any, createMemberType: any) {\n if (!subTypeDef.to) {\n throw new Error(\n `Missing \"to\" field in cross dataset reference definition. Check the type ${subTypeDef.name}`,\n )\n }\n const parsed = Object.assign(\n pick(CROSS_DATASET_REFERENCE_CORE, OVERRIDABLE_FIELDS),\n subTypeDef,\n {\n type: CROSS_DATASET_REFERENCE_CORE,\n },\n )\n\n lazyGetter(parsed, 'fields', () => {\n return REFERENCE_FIELDS.map((fieldDef) => createMemberType.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'to', () => {\n return arrify(subTypeDef.to).map((toType: any) => {\n return {\n ...toType,\n // eslint-disable-next-line camelcase\n __experimental_search: resolveSearchConfigForBaseFieldPaths(toType),\n }\n })\n })\n\n lazyGetter(parsed, 'title', () => subTypeDef.title || buildTitle(parsed))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n fields: parsed.fields,\n to: parsed.to,\n title: parsed.title,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` of subtypes of \"reference\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst DATE_CORE = {\n name: 'date',\n title: 'Datetime',\n type: null,\n jsonType: 'string',\n}\n\nexport const DateType = {\n get() {\n return DATE_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n const parsed = Object.assign(pick(DATE_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: DATE_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst DATETIME_CORE = {\n name: 'datetime',\n title: 'Datetime',\n type: null,\n jsonType: 'string',\n}\n\nexport const DateTimeType = {\n get() {\n return DATETIME_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n const parsed = Object.assign(pick(DATETIME_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: DATETIME_CORE,\n })\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {type SortOrdering} from '@sanity/types'\nimport {capitalize, startCase} from 'lodash'\n\nconst CANDIDATES = ['title', 'name', 'label', 'heading', 'header', 'caption', 'description']\n\nconst PRIMITIVES = ['string', 'boolean', 'number']\n\nconst isPrimitive = (field: any) => PRIMITIVES.includes(field.type)\n\nexport default function guessOrderingConfig(objectTypeDef: any): SortOrdering[] {\n let candidates = CANDIDATES.filter((candidate) =>\n objectTypeDef.fields.some((field: any) => isPrimitive(field) && field.name === candidate),\n )\n\n // None of the candidates were found, fallback to all fields\n if (candidates.length === 0) {\n candidates = objectTypeDef.fields.filter(isPrimitive).map((field: any) => field.name)\n }\n\n return candidates.map(\n (name): SortOrdering => ({\n name: name,\n i18n: {\n title: {key: `default-orderings.${name}`, ns: 'studio'},\n },\n title: capitalize(startCase(name)),\n by: [{field: name, direction: 'asc'}],\n }),\n )\n}\n","import {isPlainObject, toPath} from 'lodash'\n\nexport function normalizeSearchConfigs(configs: any) {\n if (!Array.isArray(configs)) {\n throw new Error(\n 'The search config of a document type must be an array of search config objects',\n )\n }\n return configs.map((conf) => {\n if (conf === 'defaults') {\n return conf\n }\n if (!isPlainObject(conf)) {\n throw new Error('Search config must be an object of {path: string, weight: number}')\n }\n return {\n weight: 'weight' in conf ? conf.weight : 1,\n path: toPath(conf.path),\n mapWith: typeof conf.mapWith === 'string' ? conf.mapWith : undefined,\n }\n })\n}\n","import {\n type FieldGroup,\n type FieldGroupDefinition,\n type Fieldset,\n type FieldsetDefinition,\n type ObjectDefinition,\n type ObjectField,\n} from '@sanity/types'\nimport {castArray, flatMap, pick, startCase} from 'lodash'\n\nimport guessOrderingConfig from '../ordering/guessOrderingConfig'\nimport createPreviewGetter from '../preview/createPreviewGetter'\nimport {normalizeSearchConfigs} from '../searchConfig/normalize'\nimport {resolveSearchConfig} from '../searchConfig/resolve'\nimport {ALL_FIELDS_GROUP_NAME, DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [\n ...DEFAULT_OVERRIDEABLE_FIELDS,\n 'orderings',\n '__experimental_search',\n 'blockEditor',\n 'icon',\n]\n\nexport const ObjectType = {\n get() {\n return {\n name: 'object',\n title: 'Object',\n type: null,\n jsonType: 'object',\n }\n },\n extend(rawSubTypeDef: any, createMemberType: any) {\n const subTypeDef = {fields: [], ...rawSubTypeDef}\n\n const options = {...subTypeDef.options}\n\n const ownProps = {\n ...subTypeDef,\n title: subTypeDef.title || (subTypeDef.name ? startCase(subTypeDef.name) : 'Object'),\n options: options,\n orderings: subTypeDef.orderings || guessOrderingConfig(subTypeDef),\n fields: subTypeDef.fields.map((fieldDef: any) =>\n createMemberType.cachedObjectField(fieldDef),\n ),\n }\n\n const parsed = Object.assign(pick(this.get(), OVERRIDABLE_FIELDS), ownProps, {\n type: this.get(),\n })\n\n lazyGetter(parsed, 'fieldsets', () => {\n return createFieldsets(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'groups', () => {\n return createFieldsGroups(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'preview', createPreviewGetter(subTypeDef))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...ownProps,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n lazyGetter(\n parsed,\n '__experimental_search',\n () => {\n const userProvidedSearchConfig = subTypeDef.__experimental_search\n ? normalizeSearchConfigs(subTypeDef.__experimental_search)\n : null\n\n if (userProvidedSearchConfig) {\n return userProvidedSearchConfig.map((entry) =>\n entry === 'defaults' ? normalizeSearchConfigs(subTypeDef) : entry,\n )\n }\n return resolveSearchConfig(parsed)\n },\n {\n enumerable: false,\n },\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"object\"')\n }\n\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n subOwnProps.title =\n extensionDef.title ||\n subTypeDef.title ||\n (subTypeDef.name ? startCase(subTypeDef.name) : 'Object')\n\n const current = Object.assign({}, parent, pick(extensionDef, OVERRIDABLE_FIELDS), {\n type: parent,\n })\n lazyGetter(current, '__experimental_search', () => parent.__experimental_search)\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n\nexport function createFieldsets(typeDef: ObjectDefinition, fields: ObjectField[]): Fieldset[] {\n const fieldsetsByName: Record<string, FieldsetDefinition & {fields: ObjectField[]}> = {}\n\n for (const fieldset of typeDef.fieldsets || []) {\n if (fieldsetsByName[fieldset.name]) {\n throw new Error(\n `Duplicate fieldset name \"${fieldset.name}\" found for type '${\n typeDef.title ? typeDef.title : startCase(typeDef.name)\n }'`,\n )\n }\n\n fieldsetsByName[fieldset.name] = {title: startCase(fieldset.name), ...fieldset, fields: []}\n }\n\n const fieldsets = new Set<Fieldset>()\n\n for (const field of fields) {\n if (!field.fieldset) {\n fieldsets.add({single: true, field})\n continue\n }\n\n const fieldset = fieldsetsByName[field.fieldset]\n if (!fieldset) {\n throw new Error(\n `Fieldset '${field.fieldset}' is not defined in schema for type '${typeDef.name}'`,\n )\n }\n\n fieldset.fields.push(field)\n\n // The Set will prevent duplicates\n fieldsets.add(fieldset)\n }\n\n return Array.from(fieldsets)\n}\n\nfunction createFieldsGroups(typeDef: ObjectDefinition, fields: ObjectField[]): FieldGroup[] {\n const groupsByName: Record<string, FieldGroupDefinition & {fields: ObjectField[]}> = {}\n\n let numDefaultGroups = 0\n for (const group of typeDef.groups || []) {\n if (groupsByName[group.name]) {\n throw new Error(\n `Duplicate group name \"${group.name}\" found for type '${\n typeDef.title ? typeDef.title : startCase(typeDef.name)\n }'`,\n )\n }\n\n groupsByName[group.name] = {title: startCase(group.name), ...group, fields: []}\n\n if (group.default && ++numDefaultGroups > 1) {\n // Throw if you have multiple default field groups defined\n throw new Error(\n `More than one field group defined as default for type '${\n typeDef.title ? typeDef.title : startCase(typeDef.name)\n }' - only 1 is supported`,\n )\n }\n }\n\n fields.forEach((field) => {\n const fieldGroupNames = castArray(field.group || [])\n if (fieldGroupNames.length === 0) {\n return\n }\n\n fieldGroupNames.forEach((fieldGroupName) => {\n const currentGroup = groupsByName[fieldGroupName]\n\n if (!currentGroup) {\n throw new Error(\n `Field group '${fieldGroupName}' is not defined in schema for type '${\n typeDef.title ? typeDef.name : startCase(typeDef.name)\n }'`,\n )\n }\n\n currentGroup.fields.push(field)\n })\n })\n\n return flatMap(groupsByName).filter(\n // All fields group is added by default in structure.\n // To pass the properties from the schema to the form state, we need to include it in the list of groups.\n (group) => group.fields.length > 0 || group.name === ALL_FIELDS_GROUP_NAME,\n )\n}\n","import {ObjectType} from './object'\n\nconst DOCUMENT_CORE = {\n name: 'document',\n title: 'Document',\n type: null,\n jsonType: 'object',\n}\n\nexport const DocumentType = {\n get() {\n return DOCUMENT_CORE\n },\n extend: ObjectType.extend,\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst EMAIL_CORE = {\n name: 'email',\n title: 'Email',\n type: null,\n jsonType: 'string',\n}\n\nlazyGetter(\n EMAIL_CORE,\n OWN_PROPS_NAME,\n () => ({\n ...EMAIL_CORE,\n validation: (Rule: any) => Rule.email(),\n }),\n {enumerable: false},\n)\n\nexport const EmailType = {\n get() {\n return EMAIL_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n const parsed = Object.assign(pick(EMAIL_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: EMAIL_CORE,\n })\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick, startCase} from 'lodash'\n\nimport createPreviewGetter from '../preview/createPreviewGetter'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {createFieldsets} from './object'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nexport const ASSET_FIELD = {\n name: 'asset',\n type: 'reference',\n to: {type: 'sanity.fileAsset'},\n}\n\nexport const MEDIA_LIBRARY_ASSET_FIELD = {\n name: 'media',\n type: 'globalDocumentReference',\n hidden: true,\n to: [{type: 'sanity.asset'}],\n}\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst FILE_CORE = {\n name: 'file',\n title: 'File',\n type: null,\n jsonType: 'object',\n}\n\nconst DEFAULT_OPTIONS = {\n accept: '',\n}\n\nexport const FileType = {\n get() {\n return FILE_CORE\n },\n extend(rawSubTypeDef: any, createMemberType: any) {\n const options = {...(rawSubTypeDef.options || DEFAULT_OPTIONS)}\n\n const fields = [ASSET_FIELD, MEDIA_LIBRARY_ASSET_FIELD, ...(rawSubTypeDef.fields || [])]\n\n const subTypeDef = {...rawSubTypeDef, fields}\n\n const parsed = Object.assign(pick(FILE_CORE, OVERRIDABLE_FIELDS), subTypeDef, {\n type: FILE_CORE,\n title: subTypeDef.title || (subTypeDef.name ? startCase(subTypeDef.name) : FILE_CORE.title),\n options: options,\n fields: subTypeDef.fields.map((fieldDef: any) => {\n const {name, fieldset, ...rest} = fieldDef\n\n const compiledField = {\n name,\n fieldset,\n isCustomized: Boolean(rawSubTypeDef.fields),\n }\n\n return lazyGetter(compiledField, 'type', () => {\n return createMemberType({\n ...rest,\n title: fieldDef.title || startCase(name),\n })\n })\n }),\n })\n\n lazyGetter(parsed, 'fieldsets', () => {\n return createFieldsets(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'preview', createPreviewGetter(Object.assign({}, subTypeDef, {fields})))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n options,\n fields: parsed.fields,\n title: parsed.title,\n fieldsets: parsed.fieldsets,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"file\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import arrify from 'arrify'\nimport {pick} from 'lodash'\n\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nexport const REF_FIELD = {\n name: '_ref',\n title: 'Referenced document ID',\n type: 'string',\n}\n\nexport const WEAK_FIELD = {\n name: '_weak',\n title: 'Weak reference',\n type: 'boolean',\n}\n\nconst REFERENCE_FIELDS = [REF_FIELD, WEAK_FIELD]\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst GLOBAL_DOCUMENT_REFERENCE_CORE = {\n name: 'globalDocumentReference',\n title: 'Global Document Reference',\n type: null,\n jsonType: 'object',\n}\n\nfunction humanize(arr: any, conjunction: any) {\n const len = arr.length\n if (len === 1) {\n return arr[0]\n }\n const first = arr.slice(0, len - 1)\n const last = arr[len - 1]\n return `${first.join(', ')} ${conjunction} ${last}`\n}\n\nfunction buildTitle(type: any) {\n if (!type.to || type.to.length === 0) {\n return 'Global Document Reference'\n }\n return `Global Document Reference to ${humanize(\n arrify(type.to).map((toType: any) => toType.title),\n 'or',\n ).toLowerCase()}`\n}\n\nexport const GlobalDocumentReferenceType = {\n get() {\n return GLOBAL_DOCUMENT_REFERENCE_CORE\n },\n extend(subTypeDef: any, createMemberType: any) {\n if (!subTypeDef.to) {\n throw new Error(\n `Missing \"to\" field in global document reference definition. Check the type ${subTypeDef.name}`,\n )\n }\n const parsed = Object.assign(\n pick(GLOBAL_DOCUMENT_REFERENCE_CORE, OVERRIDABLE_FIELDS),\n subTypeDef,\n {\n type: GLOBAL_DOCUMENT_REFERENCE_CORE,\n },\n )\n\n lazyGetter(parsed, 'fields', () => {\n return REFERENCE_FIELDS.map((fieldDef) => createMemberType.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'to', () => {\n return arrify(subTypeDef.to).map((toType: any) => {\n return {\n ...toType,\n }\n })\n })\n\n lazyGetter(parsed, 'title', () => subTypeDef.title || buildTitle(parsed))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n fields: parsed.fields,\n to: parsed.to,\n title: parsed.title,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` of subtypes of \"globalDocumentReference\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","export const ASSET_FIELD = {\n name: 'asset',\n type: 'reference',\n to: [{type: 'sanity.imageAsset'}],\n}\n\nexport const HOTSPOT_FIELD = {\n name: 'hotspot',\n type: 'sanity.imageHotspot',\n}\n\nexport const CROP_FIELD = {\n name: 'crop',\n type: 'sanity.imageCrop',\n}\n\nexport const MEDIA_LIBRARY_ASSET_FIELD = {\n name: 'media',\n type: 'globalDocumentReference',\n hidden: true,\n to: [{type: 'sanity.asset'}],\n}\n","import {pick, startCase} from 'lodash'\n\nimport createPreviewGetter from '../preview/createPreviewGetter'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {ASSET_FIELD, CROP_FIELD, HOTSPOT_FIELD, MEDIA_LIBRARY_ASSET_FIELD} from './image/fieldDefs'\nimport {createFieldsets} from './object'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst IMAGE_CORE = {\n name: 'image',\n title: 'Image',\n type: null,\n jsonType: 'object',\n}\n\nconst DEFAULT_OPTIONS = {}\n\nexport const ImageType = {\n get() {\n return IMAGE_CORE\n },\n extend(rawSubTypeDef: any, createMemberType: any) {\n const options = {...(rawSubTypeDef.options || DEFAULT_OPTIONS)}\n\n let hotspotFields = [HOTSPOT_FIELD, CROP_FIELD]\n if (!options.hotspot) {\n hotspotFields = hotspotFields.map((field) => ({...field, hidden: true}))\n }\n\n const fields = [\n ASSET_FIELD,\n MEDIA_LIBRARY_ASSET_FIELD,\n ...hotspotFields,\n ...(rawSubTypeDef.fields || []),\n ]\n const subTypeDef = {...rawSubTypeDef, fields}\n\n const parsed = Object.assign(pick(this.get(), OVERRIDABLE_FIELDS), subTypeDef, {\n type: IMAGE_CORE,\n title: subTypeDef.title || (subTypeDef.name ? startCase(subTypeDef.name) : IMAGE_CORE.title),\n options: options,\n fields: subTypeDef.fields.map((fieldDef: any) => {\n const {name, fieldset, ...rest} = fieldDef\n\n const compiledField = {\n name,\n fieldset,\n isCustomized: Boolean(rawSubTypeDef.fields),\n }\n\n return lazyGetter(compiledField, 'type', () => {\n return createMemberType({\n ...rest,\n title: fieldDef.title || startCase(name),\n })\n })\n }),\n })\n\n lazyGetter(parsed, 'fieldsets', () => {\n return createFieldsets(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'preview', createPreviewGetter(Object.assign({}, subTypeDef, {fields})))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n options,\n fields: parsed.fields,\n title: parsed.title,\n fieldsets: parsed.fieldsets,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"image\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst NUMBER_CORE = {\n name: 'number',\n title: 'Number',\n type: null,\n jsonType: 'number',\n}\n\nexport const NumberType = {\n get() {\n return NUMBER_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n\n const parsed = Object.assign(pick(NUMBER_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: NUMBER_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import arrify from 'arrify'\nimport {pick} from 'lodash'\n\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {createFieldsets} from './object'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nexport const REF_FIELD = {\n name: '_ref',\n title: 'Referenced document ID',\n type: 'string',\n}\n\nexport const WEAK_FIELD = {\n name: '_weak',\n title: 'Weak reference',\n type: 'boolean',\n}\n\nconst REFERENCE_FIELDS = [REF_FIELD, WEAK_FIELD]\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst REFERENCE_CORE = {\n name: 'reference',\n title: 'Reference',\n type: null,\n jsonType: 'object',\n}\n\nfunction humanize(arr: any, conjunction: any) {\n const len = arr.length\n if (len === 1) {\n return arr[0]\n }\n const first = arr.slice(0, len - 1)\n const last = arr[len - 1]\n return `${first.join(', ')} ${conjunction} ${last}`\n}\n\nfunction buildTitle(type: any) {\n if (!type.to || type.to.length === 0) {\n return 'Reference'\n }\n return `Reference to ${humanize(\n arrify(type.to).map((toType: any) => toType.title),\n 'or',\n ).toLowerCase()}`\n}\n\nexport const ReferenceType = {\n get() {\n return REFERENCE_CORE\n },\n extend(subTypeDef: any, createMemberType: any) {\n if (!subTypeDef.to) {\n throw new Error(\n `Missing \"to\" field in reference definition. Check the type ${subTypeDef.name}`,\n )\n }\n const parsed = Object.assign(pick(REFERENCE_CORE, OVERRIDABLE_FIELDS), subTypeDef, {\n type: REFERENCE_CORE,\n })\n\n lazyGetter(parsed, 'fields', () => {\n return REFERENCE_FIELDS.map((fieldDef) => createMemberType.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'fieldsets', () => {\n return createFieldsets(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'to', () => {\n return arrify(subTypeDef.to).map((toType: any) => createMemberType(toType))\n })\n\n lazyGetter(parsed, 'title', () => subTypeDef.title || buildTitle(parsed))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n fields: parsed.fields,\n fieldsets: parsed.fieldsets,\n to: parsed.to,\n title: parsed.title,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` of subtypes of \"reference\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst STRING_CORE = {\n name: 'string',\n title: 'String',\n type: null,\n jsonType: 'string',\n}\n\nexport const StringType = {\n get() {\n return STRING_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n\n const parsed = Object.assign(pick(STRING_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: STRING_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS, 'rows']\n\nconst TEXT_CORE = {\n name: 'text',\n title: 'Text',\n type: null,\n jsonType: 'string',\n}\n\nexport const TextType = {\n get() {\n return TEXT_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n\n const parsed = Object.assign(pick(TEXT_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: TEXT_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst URL_CORE = {\n name: 'url',\n title: 'Url',\n type: null,\n jsonType: 'string',\n}\n\nexport const UrlType = {\n get() {\n return URL_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n\n const parsed = Object.assign(pick(URL_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: URL_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {startCase} from 'lodash'\n\nimport * as types from './types'\nimport {lazyGetter} from './types/utils'\n\ninterface ExtendHelper {\n /** Creates a new type based on the definition. */\n (memberDef: any): any\n\n cached(def: any): any\n cachedField(fieldDef: any): any\n cachedObjectField(fieldDef: any): any\n}\n\nfunction compileRegistry(schemaDef: any) {\n const registry = Object.create(null)\n let localTypeNames: string[]\n\n if (schemaDef.parent) {\n Object.assign(registry, schemaDef.parent._registry)\n localTypeNames = []\n } else {\n // For the root schema we inherit from the core types and also register these as the \"local\" ones.\n Object.assign(registry, types)\n localTypeNames = Object.keys(types)\n }\n\n const defsByName = schemaDef.types.reduce((acc: any, def: any) => {\n if (acc[def.name]) {\n throw new Error(`Duplicate type name added to schema: ${def.name}`)\n }\n acc[def.name] = def\n return acc\n }, {})\n\n const memberCache = new Map()\n const fieldCache = new Map()\n const objectFieldCache = new Map()\n\n const extendHelper: ExtendHelper = Object.assign(extendMember, {\n cached(def: any) {\n let member = memberCache.get(def)\n if (!member) {\n member = extendMember(def)\n memberCache.set(def, member)\n }\n return member\n },\n\n cachedField(fieldDef: any) {\n let field = fieldCache.get(fieldDef)\n if (!field) {\n const {name, ...type} = fieldDef\n field = {\n name,\n type: extendMember(type),\n }\n fieldCache.set(fieldDef, field)\n }\n return field\n },\n\n cachedObjectField(fieldDef: any) {\n let field = objectFieldCache.get(fieldDef)\n if (!field) {\n const {name, fieldset, group, ...rest} = fieldDef\n\n field = {\n name,\n group,\n fieldset,\n }\n\n lazyGetter(field, 'type', () => {\n return extendMember({\n ...rest,\n title: fieldDef.title || startCase(name),\n })\n })\n objectFieldCache.set(fieldDef, field)\n }\n return field\n },\n })\n\n schemaDef.types.forEach(add)\n\n return {\n registry,\n localTypeNames,\n }\n\n function ensure(typeName: any) {\n if (!registry[typeName]) {\n if (!defsByName[typeName]) {\n throw new Error(`Unknown type: ${typeName}`)\n }\n add(defsByName[typeName])\n }\n }\n\n function extendMember(memberDef: any) {\n ensure(memberDef.type)\n return registry[memberDef.type].extend(memberDef, extendHelper).get()\n }\n\n function add(typeDef: any) {\n ensure(typeDef.type)\n if (registry[typeDef.name]) {\n return\n }\n localTypeNames.push(typeDef.name)\n registry[typeDef.name] = registry[typeDef.type].extend(typeDef, extendMember)\n }\n}\n\n/**\n * @beta\n */\nexport class Schema {\n _original: {name: string; types: any[]; parent?: Schema}\n _registry: {[typeName: string]: any}\n #localTypeNames: string[]\n\n static compile(schemaDef: any): Schema {\n return new Schema(schemaDef)\n }\n\n constructor(schemaDef: any) {\n this._original = schemaDef\n\n const {registry, localTypeNames} = compileRegistry(schemaDef)\n this._registry = registry\n this.#localTypeNames = localTypeNames\n }\n\n get name(): string {\n return this._original.name\n }\n\n /**\n * Returns the parent schema.\n */\n get parent(): Schema | undefined {\n return this._original.parent\n }\n\n get(name: string): any {\n return this._registry[name] && this._registry[name].get()\n }\n\n has(name: string): boolean {\n return name in this._registry\n }\n\n getTypeNames(): string[] {\n return Object.keys(this._registry)\n }\n\n getLocalTypeNames(): string[] {\n return this.#localTypeNames\n }\n}\n\n/**\n * @deprecated Use `import {Schema} from \"@sanity/schema\"` instead\n */\nexport class DeprecatedDefaultSchema extends Schema {\n static compile(schemaDef: any): Schema {\n return new DeprecatedDefaultSchema(schemaDef)\n }\n\n constructor(schemaDef: any) {\n super(schemaDef)\n\n const stack = new Error(\n 'The default export of `@sanity/schema` is deprecated. Use `import {Schema} from \"@sanity/schema\"` instead.',\n ).stack!.replace(/^Error/, 'Warning')\n\n console.warn(stack)\n }\n}\n","import {\n type CustomValidator,\n type FieldReference,\n type FieldRules,\n type LocalizedValidationMessages,\n type MediaAssetTypes,\n type MediaValidator,\n type Rule as IRule,\n type RuleClass,\n type RuleSpec,\n type RuleSpecConstraint,\n type RuleTypeConstraint,\n type SchemaType,\n type ValidationContext,\n type ValidationMarker,\n} from '@sanity/types'\nimport {cloneDeep} from 'lodash'\n\nconst FIELD_REF = Symbol('FIELD_REF')\nconst ruleConstraintTypes: RuleTypeConstraint[] = [\n 'Array',\n 'Boolean',\n 'Date',\n 'Number',\n 'Object',\n 'String',\n]\n\n/**\n * Core Rule implementation without validation logic.\n * This is the base Rule class that can be extended with validation logic.\n *\n * @internal\n */\nexport const Rule: RuleClass = class Rule implements IRule {\n static readonly FIELD_REF = FIELD_REF\n static array = (def?: SchemaType): Rule => new Rule(def).type('Array')\n static object = (def?: SchemaType): Rule => new Rule(def).type('Object')\n static string = (def?: SchemaType): Rule => new Rule(def).type('String')\n static number = (def?: SchemaType): Rule => new Rule(def).type('Number')\n static boolean = (def?: SchemaType): Rule => new Rule(def).type('Boolean')\n static dateTime = (def?: SchemaType): Rule => new Rule(def).type('Date')\n static valueOfField = (path: string | string[]): {type: symbol; path: string | string[]} => ({\n type: FIELD_REF,\n path,\n })\n\n _type: RuleTypeConstraint | undefined = undefined\n _level: 'error' | 'warning' | 'info' | undefined = undefined\n _required: 'required' | 'optional' | undefined = undefined\n _typeDef: SchemaType | undefined = undefined\n _message: string | LocalizedValidationMessages | undefined = undefined\n _rules: RuleSpec[] = []\n _fieldRules: FieldRules | undefined = undefined\n\n constructor(typeDef?: SchemaType) {\n this._typeDef = typeDef\n this.reset()\n }\n\n private _mergeRequired(next: Rule) {\n if (this._required === 'required' || next._required === 'required') return 'required'\n if (this._required === 'optional' || next._required === 'optional') return 'optional'\n return undefined\n }\n\n // Alias to static method, since we often have access to an _instance_ of a rule but not the actual Rule class\n valueOfField = Rule.valueOfField.bind(Rule)\n\n error(message?: string | LocalizedValidationMessages): Rule {\n const rule = this.clone()\n rule._level = 'error'\n rule._message = message || undefined\n return rule\n }\n\n warning(message?: string | LocalizedValidationMessages): Rule {\n const rule = this.clone()\n rule._level = 'warning'\n rule._message = message || undefined\n return rule\n }\n\n info(message?: string | LocalizedValidationMessages): Rule {\n const rule = this.clone()\n rule._level = 'info'\n rule._message = message || undefined\n return rule\n }\n\n reset(): this {\n this._type = this._type || undefined\n this._rules = (this._rules || []).filter((rule) => rule.flag === 'type')\n this._message = undefined\n this._required = undefined\n this._level = 'error'\n this._fieldRules = undefined\n return this\n }\n\n isRequired(): boolean {\n return this._required === 'required'\n }\n\n clone(): Rule {\n const rule = new Rule()\n rule._type = this._type\n rule._message = this._message\n rule._required = this._required\n rule._rules = cloneDeep(this._rules)\n rule._level = this._level\n rule._fieldRules = this._fieldRules\n rule._typeDef = this._typeDef\n return rule\n }\n\n cloneWithRules(rules: RuleSpec[]): Rule {\n const rule = this.clone()\n const newRules = new Set()\n rules.forEach((curr) => {\n if (curr.flag === 'type') {\n rule._type = curr.constraint\n }\n\n newRules.add(curr.flag)\n })\n\n rule._rules = rule._rules\n .filter((curr) => {\n const disallowDuplicate = ['type', 'uri', 'email'].includes(curr.flag)\n const isDuplicate = newRules.has(curr.flag)\n return !(disallowDuplicate && isDuplicate)\n })\n .concat(rules)\n\n return rule\n }\n\n merge(rule: Rule): Rule {\n if (this._type && rule._type && this._type !== rule._type) {\n throw new Error('merge() failed: conflicting types')\n }\n\n const newRule = this.cloneWithRules(rule._rules)\n newRule._type = this._type || rule._type\n newRule._message = this._message || rule._message\n newRule._required = this._mergeRequired(rule)\n newRule._level = this._level === 'error' ? rule._level : this._level\n return newRule\n }\n\n // Validation flag setters\n type(targetType: RuleTypeConstraint | Lowercase<RuleTypeConstraint>): Rule {\n const type = `${targetType.slice(0, 1).toUpperCase()}${targetType.slice(1)}` as Capitalize<\n typeof targetType\n >\n\n if (!ruleConstraintTypes.includes(type)) {\n throw new Error(`Unknown type \"${targetType}\"`)\n }\n\n const rule = this.cloneWithRules([{flag: 'type', constraint: type}])\n rule._type = type\n return rule\n }\n\n all(children: Rule[]): Rule {\n return this.cloneWithRules([{flag: 'all', constraint: children}])\n }\n\n either(children: Rule[]): Rule {\n return this.cloneWithRules([{flag: 'either', constraint: children}])\n }\n\n // Shared rules\n optional(): Rule {\n const rule = this.cloneWithRules([{flag: 'presence', constraint: 'optional'}])\n rule._required = 'optional'\n return rule\n }\n\n required(): Rule {\n const rule = this.cloneWithRules([{flag: 'presence', constraint: 'required'}])\n rule._required = 'required'\n return rule\n }\n\n custom<T = unknown>(\n fn: CustomValidator<T>,\n options: {bypassConcurrencyLimit?: boolean} = {},\n ): Rule {\n if (options.bypassConcurrencyLimit) {\n Object.assign(fn, {bypassConcurrencyLimit: true})\n }\n return this.cloneWithRules([{flag: 'custom', constraint: fn as CustomValidator}])\n }\n\n min(len: number | string | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'min', constraint: len}])\n }\n\n max(len: number | string | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'max', constraint: len}])\n }\n\n length(len: number | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'length', constraint: len}])\n }\n\n valid(value: unknown | unknown[]): Rule {\n const values = Array.isArray(value) ? value : [value]\n return this.cloneWithRules([{flag: 'valid', constraint: values}])\n }\n\n // Numbers only\n integer(): Rule {\n return this.cloneWithRules([{flag: 'integer'}])\n }\n\n precision(limit: number | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'precision', constraint: limit}])\n }\n\n positive(): Rule {\n return this.cloneWithRules([{flag: 'min', constraint: 0}])\n }\n\n negative(): Rule {\n return this.cloneWithRules([{flag: 'lessThan', constraint: 0}])\n }\n\n greaterThan(num: number | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'greaterThan', constraint: num}])\n }\n\n lessThan(num: number | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'lessThan', constraint: num}])\n }\n\n // String only\n uppercase(): Rule {\n return this.cloneWithRules([{flag: 'stringCasing', constraint: 'uppercase'}])\n }\n\n lowercase(): Rule {\n return this.cloneWithRules([{flag: 'stringCasing', constraint: 'lowercase'}])\n }\n\n regex(pattern: RegExp, name: string, options: {name?: string; invert?: boolean}): Rule\n regex(pattern: RegExp, options: {name?: string; invert?: boolean}): Rule\n regex(pattern: RegExp, name: string): Rule\n regex(pattern: RegExp): Rule\n regex(\n pattern: RegExp,\n a?: string | {name?: string; invert?: boolean},\n b?: {name?: string; invert?: boolean},\n ): Rule {\n const name = typeof a === 'string' ? a : (a?.name ?? b?.name)\n const invert = typeof a === 'string' ? false : (a?.invert ?? b?.invert)\n\n const constraint: RuleSpecConstraint<'regex'> = {\n pattern,\n name,\n invert: invert || false,\n }\n\n return this.cloneWithRules([{flag: 'regex', constraint}])\n }\n\n email(): Rule {\n return this.cloneWithRules([{flag: 'email'}])\n }\n\n uri(opts?: {\n scheme?: (string | RegExp) | Array<string | RegExp>\n allowRelative?: boolean\n relativeOnly?: boolean\n allowCredentials?: boolean\n }): Rule {\n const optsScheme = opts?.scheme || ['http', 'https']\n const schemes = Array.isArray(optsScheme) ? optsScheme : [optsScheme]\n\n if (!schemes.length) {\n throw new Error('scheme must have at least 1 scheme specified')\n }\n\n const constraint: RuleSpecConstraint<'uri'> = {\n options: {\n scheme: schemes.map((scheme) => {\n if (!(scheme instanceof RegExp) && typeof scheme !== 'string') {\n throw new Error('scheme must be a RegExp or a String')\n }\n\n return typeof scheme === 'string' ? new RegExp(`^${escapeRegex(scheme)}$`) : scheme\n }),\n allowRelative: opts?.allowRelative || false,\n relativeOnly: opts?.relativeOnly || false,\n allowCredentials: opts?.allowCredentials || false,\n },\n }\n\n return this.cloneWithRules([{flag: 'uri', constraint}])\n }\n\n // Array only\n unique(): Rule {\n return this.cloneWithRules([{flag: 'unique'}])\n }\n\n // Objects only\n reference(): Rule {\n return this.cloneWithRules([{flag: 'reference'}])\n }\n\n fields(rules: FieldRules): Rule {\n if (this._type !== 'Object') {\n throw new Error('fields() can only be called on an object type')\n }\n\n const rule = this.cloneWithRules([])\n rule._fieldRules = rules\n return rule\n }\n\n assetRequired(): Rule {\n const base = getBaseType(this._typeDef)\n let assetType: 'asset' | 'image' | 'file'\n if (base && ['image', 'file'].includes(base.name)) {\n assetType = base.name === 'image' ? 'image' : 'file'\n } else {\n assetType = 'asset'\n }\n\n return this.cloneWithRules([{flag: 'assetRequired', constraint: {assetType}}])\n }\n\n media<T extends MediaAssetTypes = MediaAssetTypes>(fn: MediaValidator<T>): Rule {\n return this.cloneWithRules([{flag: 'media', constraint: fn}])\n }\n\n /**\n * The validate method is not implemented in the base Rule class.\n * It should be implemented by extending this class or injecting validation logic.\n */\n async validate(\n value: unknown,\n options: ValidationContext & {\n __internal?: {\n customValidationConcurrencyLimiter?: {\n ready: () => Promise<void>\n release: () => void\n }\n }\n },\n ): Promise<ValidationMarker[]> {\n throw new Error('validate() method must be implemented by extending Rule class')\n }\n}\n\n// Helper functions\nfunction getBaseType(type: SchemaType | undefined): SchemaType | undefined {\n return type && type.type ? getBaseType(type.type) : type\n}\n\nfunction escapeRegex(string: string): string {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n}\n"],"names":["OVERRIDABLE_FIELDS","asString","guessPreviewConfig","Rule","INHERITED_FIELDS","DEFAULT_OPTIONS","REF_FIELD","WEAK_FIELD","REFERENCE_FIELDS","humanize","buildTitle","ASSET_FIELD","MEDIA_LIBRARY_ASSET_FIELD"],"mappings":";;;;;;;;;;;;;;AAAO,MAAM,8BAA8B;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMa,iBAAiB,sBAEjB,wBAAwB;ACnB9B,SAAS,WAAW,QAAa,KAAU,QAAa,SAAiB,CAAA,GAAI;AAClF,SAAA,OAAO,eAAe,QAAQ,KAAK;AAAA,IACjC,cAAc;AAAA,IACd,YAAY,OAAO,eAAe;AAAA,IAClC,MAAM;AACJ,YAAM,MAAM,OAAA;AACZ,aAAA,OAAO,eAAe,QAAQ,KAAK;AAAA,QACjC,OAAO;AAAA,QACP,UAAU,EAAQ,OAAO;AAAA,QACzB,cAAc;AAAA,MAAA,CACf,GACM;AAAA,IACT;AAAA,EAAA,CACD,GACM;AACT;AAEO,SAAS,aAAa,QAAa,KAAa,OAAgB;AACrE,SAAO,eAAe,QAAQ,KAAK;AAAA,IACjC,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,cAAc;AAAA,IACd;AAAA,EAAA,CACD;AACH;ACvBA,MAAMA,uBAAqB,CAAC,GAAG,2BAA2B,GAEpD,WAAW;AAAA,EACf,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AACZ,GAEa,UAAU;AAAA,EACrB,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB,cAAmB;AACzC,UAAM,WAAW;AAAA,MACf,GAAG;AAAA,MACH,IAAI,WAAW,GAAG,IAAI,CAAC,cACd;AAAA,QACL,MAAM,SAAS;AAAA,QACf,MAAM,aAAa,KAAK,UAAU,MAAM,CAAC;AAAA,MAAA,EAE5C;AAAA,IAAA,GAGG,SAAS,OAAO,OAAO,KAAK,UAAUA,oBAAkB,GAAG,UAAU;AAAA,MACzE,MAAM;AAAA,IAAA,CACP;AAED,WAAA,aAAa,QAAQ,gBAAgB,QAAQ,GAEtC,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,cAAI,aAAa;AACf,kBAAM,IAAI,MAAM,sDAAsD;AAExE,gBAAM,cAAc,KAAK,cAAcA,oBAAkB,GACnD,UAAU,OAAO,OAAO,IAAI,QAAQ,aAAa;AAAA,YACrD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,WAAW,GAC1C,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF,GClDMA,uBAAqB,CAAC,GAAG,2BAA2B,GAEpD,aAAa;AAAA,EACjB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,IAAI,CAAA;AACN,GAEa,YAAY;AAAA,EACvB,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB,kBAAuB;AAC7C,UAAM,SAAS,OAAO,OAAO,KAAK,YAAYA,oBAAkB,GAAG,YAAY;AAAA,MAC7E,MAAM;AAAA,IAAA,CACP;AACD,WAAA,WAAW,QAAQ,MAAM,MAChB,WAAW,GAAG,IAAI,CAAC,cAAmB,iBAAiB,OAAO,SAAS,CAAC,CAChF,GACD,WAAW,QAAQ,gBAAgB,OAAO,EAAC,GAAG,YAAY,IAAI,OAAO,GAAA,IAAM;AAAA,MACzE,YAAY;AAAA,MACZ,UAAU;AAAA,IAAA,CACX,GAEM,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,cAAI,aAAa;AACf,kBAAM,IAAI,MAAM,sDAAsD;AAExE,gBAAM,WAAW,KAAK,cAAcA,oBAAkB,GAChD,UAAU,OAAO,OAAO,IAAI,QAAQ,UAAU;AAAA,YAClD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,QAAQ,GACvC,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF;ACnDO,SAAS,uBAAuB,MAAW;AAC5C,OAAK,WAAW,KAAK,QAAQ,WAC/B,QAAQ,KAAK;AAAA,gGAC+E,KAAK,IAAI;AAAA,CACxG;AAED;AAEO,SAAS,uBAAuB,MAAW;AAChD,QAAM,UAAU,KAAK,YAAY,KAAK,WAAW,CAAA,GAAI;AACjD,aAAW,YAAY,WACzB,QAAQ,KAAK,2GAA2G,KAAK,IAAI;AAAA,CACpI;AAED;ACZA,SAAS,QAAQ,QAAa;AAC5B,aAAW,OAAO;AAChB,QAAI,OAAO,eAAe,GAAG;AAC3B,aAAO;AAGX,SAAO;AACT;AAEA,SAAS,WAAW,OAAY,SAAc,OAAiB;AAC7D,MAAI,QAAQ,QAAQ;AAClB,WAAO;AAET,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,QAAI,MAAM,WAAW;AACnB,aAAO;AAET,UAAM,YAAY,KAAK,IAAI,MAAM,SAAS,QAAQ,UAAU,GACtDC,YAAgB,MACnB,MAAM,GAAG,QAAQ,UAAU,EAC3B,IAAI,CAAC,MAAM,UAAU,WAAW,MAAM,SAAS,QAAQ,CAAC,CAAC,EACzD,OAAO,YAAY,IAAI,UAAK,SAAS,KAAK,CAAA,CAAE,EAC5C,KAAK,IAAI;AAEZ,WAAO,UAAU,IAAIA,YAAW,IAAIA,SAAQ;AAAA,EAC9C;AACA,MAAI,OAAO,SAAU,YAAY,UAAU,MAAM;AAC/C,UAAM,OAAO,OAAO,KAAK,KAAK,EAAE;AAAA,MAC9B,CAAC,QAAQ,CAAC,QAAQ,WAAW,SAAS,GAAG,KAAK,OAAO,MAAM,GAAG,IAAM;AAAA,IAAA;AAGtE,QAAI,QAAQ,KAAK,OAAO,IAAI,CAAC;AAC3B,aAAO;AAGT,UAAMA,YAAW,KACd,MAAM,GAAG,QAAQ,UAAU,EAC3B,IAAI,CAAC,QAAQ,GAAG,GAAG,KAAK,WAAW,MAAM,GAAG,GAAG,SAAS,QAAQ,CAAC,CAAC,EAAE,EACpE,KAAK,IAAI;AAEZ,WAAO,UAAU,IAAIA,YAAW,IAAIA,SAAQ;AAAA,EAC9C;AACA,QAAM,WAAW,OAAO,KAAK;AAC7B,SAAO,aAAa,KAAK,OAAO;AAClC;AAEA,SAAwB,UACtB,OACA,UAA2E,IAC3E;AACA,QAAM,OAAO;AAAA,IACX,UAAU,cAAc,UAAU,QAAQ,WAAW;AAAA,IACrD,YAAY,gBAAgB,UAAU,QAAQ,aAAa;AAAA,IAC3D,YAAY,gBAAgB,UAAU,QAAQ,aAAa,CAAA;AAAA,EAAC;AAE9D,SAAO,WAAW,OAAO,MAAM,CAAC;AAClC;ACtDA,MAAM,UAAU;AAAA,EACd,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY,CAAC,OAAO,SAAS,QAAQ,MAAM;AAC7C;AAEO,SAAS,sBAAsB,YAAiB;AACrD,SAAO,CAAC,WAAgB;AAAA,IACtB,OAAO,UAAU,KAAK,OAAO,UAAU,GAAG,OAAO;AAAA,EAAA;AAErD;ACTO,SAAS,aAAa,OAA0B;AACrD,SACG,MAAM,SAAS,WAAW,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,OAAO,SAAS,OAAO,KACxF;AAEJ;ACLA,MAAM,mBAAmB,CAAC,SAAS,QAAQ,SAAS,WAAW,UAAU,SAAS,GAC5E,yBAAyB,CAAC,eAAe,GAAG,gBAAgB;AAElE,SAAS,oBAAoB,UAAe,SAAc;AACxD,SAAO,OAAO,SAAS,MAAM,EAAE,EAAE,KAAK,CAAC,kBAAuB,cAAc,SAAS,OAAO;AAC9F;AAEA,SAAS,kBAAkB,UAAe;AACxC,SAAO,oBAAoB,UAAU,mBAAmB;AAC1D;AAEA,SAAS,sBAAsB,SAAc;AAC3C,QAAM,SAAS,QAAQ,UAAU,CAAA,GAC3B,kBAAkB,OAAO,KAAK,iBAAiB;AACrD,MAAI;AACF,WAAO,gBAAgB;AAEzB,QAAM,sBAAsB,OAAO;AAAA,IAAK,CAAC,cACtC,SAAS,UAAU,CAAA,GAAI,KAAK,iBAAiB;AAAA,EAAA;AAGhD,SAAO,sBAAsB,GAAG,oBAAoB,IAAI,WAAW;AACrE;AAEA,SAAS,iBAAiB,UAAe;AACvC,SAAO,oBAAoB,UAAU,kBAAkB;AACzD;AAEA,SAAS,qBAAqB,SAAc;AAC1C,QAAM,SAAS,QAAQ,UAAU,CAAA,GAC3B,aAAa,OAAO,KAAK,gBAAgB;AAC/C,MAAI;AACF,WAAO,WAAW;AAEpB,QAAM,qBAAqB,OAAO;AAAA,IAAK,CAAC,cACrC,SAAS,UAAU,CAAA,GAAI,KAAK,gBAAgB;AAAA,EAAA;AAE/C,SAAO,qBAAqB,GAAG,mBAAmB,IAAI,WAAW;AACnE;AAEA,SAAwB,mBAAmB,kBAAuB;AAChE,QAAM,gBAAgB,EAAC,QAAQ,CAAA,GAAI,GAAG,iBAAA,GAEhC,mBAAmB,cAAc,OACpC,OAAO,CAAC,UAAe,MAAM,SAAS,QAAQ,EAC9C,IAAI,CAAC,UAAe,MAAM,IAAI,GAE3B,kBAAkB,cAAc,OAAO,OAAO,YAAY,EAAE,IAAI,CAAC,UAAe,MAAM,IAAI;AAGhG,MAAI,aAAa,iBAAiB;AAAA,IAChC,CAAC,cAAc,iBAAiB,SAAS,SAAS,KAAK,gBAAgB,SAAS,SAAS;AAAA,EAAA,GAGvF,YAAY,uBAAuB;AAAA,IACrC,CAAC,cACC,cAAc,eACb,iBAAiB,SAAS,SAAS,KAAK,gBAAgB,SAAS,SAAS;AAAA,EAAA;AAG1E,iBAEH,aAAa,iBAAiB,CAAC,KAAK,gBAAgB,CAAC,GAErD,YAAY,iBAAiB,CAAC,KAAK,gBAAgB,CAAC;AAGtD,QAAM,aAAa,cAAc,OAAO,KAAK,CAAC,UAAe,MAAM,SAAS,OAAO,GAE7E,iBAAiB,sBAAsB,aAAa;AAE1D,MAAI,CAAC,YAAY;AACf,UAAM,gBAAgB,qBAAqB,aAAa;AACpD,sBACF,aAAa,GAAG,aAAa,sBAE3B,mBACF,aAAa,GAAG,cAAc;AAAA,EAElC;AAEA,MAAI,CAAC,cAAc,CAAC,gBAAgB;AAElC,UAAM,aAAa,cAAc,OAAO,IAAI,CAAC,UAAe,MAAM,IAAI;AAMtE,WAAO;AAAA,MACL,QANmB,WAAW,OAAO,CAAC,KAAU,eAChD,IAAI,SAAS,IAAI,WACV,MACN,CAAA,CAAE;AAAA,MAIH,SAAS,sBAAsB,UAAU;AAAA,IAAA;AAAA,EAE7C;AAWA,SAAO;AAAA,IACL,QAVa;AAAA,MACb;AAAA,QACE,OAAO;AAAA,QACP,aAAa;AAAA,QACb,OAAO,aAAa,WAAW,OAAO;AAAA,MAAA;AAAA,MAExC;AAAA,IAAA;AAAA,EACF;AAKF;AC5GA,SAAS,eAAe,WAAgB;AACtC,SAAO,UAAU,OAAO,CAAC,KAAU,WACjC,IAAI,KAAK,IAAI,OACN,MACN,CAAA,CAAE;AACP;AAEA,SAAS,aAAa,SAAc;AAClC,MAAI,CAAC;AACH,WAAO;AAET,QAAM,SAAS,QAAQ,UAAU,QAAQ,UAAU,CAAA;AACnD,SAAI,MAAM,QAAQ,MAAM,IACf;AAAA,IACL,GAAG,KAAK,SAAS,CAAC,WAAW,WAAW,CAAC;AAAA,IACzC,QAAQ,eAAe,MAAM;AAAA,EAAA,IAG1B;AAAA,IACL,GAAG,KAAK,SAAS,CAAC,WAAW,WAAW,CAAC;AAAA,IACzC;AAAA,EAAA;AAEJ;AAEA,SAAwB,oBAAoB,eAAoB;AAC9D,SAAO,WAAyB;AAC9B,WAAA,uBAAuB,aAAa,GACpC,uBAAuB,aAAa,GACpB,aAAa,cAAc,YAAY,cAAc,WAAW,CAAA,GAAI,OAAO,KACzEC,mBAAmB,aAAa;AAAA,EACpD;AACF;ACpCO,MAAM,0BAA0B;AAAA,EACrC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,cAAc;AAAA,EACd,SAAS;AAAA,IACP,OAAO,EAAC,MAAM,UAAA;AAAA,EAAS;AAAA,EAEzB,QAAQ;AAAA,IACN;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,YAAY,CAACC,UACXA,MAAK,IAAI;AAAA,QACP,QAAQ,CAAC,QAAQ,SAAS,OAAO,QAAQ;AAAA,QACzC,eAAe;AAAA,MAAA,CAChB;AAAA,IAAA;AAAA,EACL;AAEJ,GAEa,qBAAqB;AAAA,EAChC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AACT,GAEa,sBAAsB;AAAA,EACjC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,IAAI,CAAC,EAAC,MAAM,UAAS;AAAA,EACrB,OAAO;AACT,GAEa,aAAa;AAAA,EACxB,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,cAAc;AAAA,EAAA;AAAA,EAEhB,UAAU;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,cAAc;AAAA,EAAA;AAElB,GAEa,qBAAqB,CAAC,WAAW,QAAQ,WAAW,QAAQ,GAE5D,eAAe;AAAA,EAC1B,QAAQ,EAAC,OAAO,UAAU,OAAO,UAAU,cAAc,oCAAA;AAAA,EACzD,IAAI,EAAC,OAAO,aAAa,OAAO,MAAM,cAAc,gCAAA;AAAA,EACpD,IAAI,EAAC,OAAO,aAAa,OAAO,MAAM,cAAc,gCAAA;AAAA,EACpD,IAAI,EAAC,OAAO,aAAa,OAAO,MAAM,cAAc,gCAAA;AAAA,EACpD,IAAI,EAAC,OAAO,aAAa,OAAO,MAAM,cAAc,gCAAA;AAAA,EACpD,IAAI,EAAC,OAAO,aAAa,OAAO,MAAM,cAAc,gCAAA;AAAA,EACpD,IAAI,EAAC,OAAO,aAAa,OAAO,MAAM,cAAc,gCAAA;AAAA,EACpD,YAAY;AAAA,IACV,OAAO;AAAA,IACP,OAAO;AAAA,IACP,cAAc;AAAA,EAAA;AAElB,GAEa,uBAAuB;AAAA,EAClC,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AACf,GAEa,mBAAmB;AAAA,EAC9B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,cAAc;AAChB,GACa,qBAAqB;AAAA,EAChC,OAAO;AAAA,EACP,OAAO;AAAA,EACP,cAAc;AAChB,GACa,iBAAiB;AAAA,EAC5B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,cAAc;AAChB,GACa,sBAAsB;AAAA,EACjC,OAAO;AAAA,EACP,OAAO;AAAA,EACP,cAAc;AAChB,GACa,mBAAmB;AAAA,EAC9B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,cAAc;AAChB,GAEa,aAAa;AAAA,EACxB,QAAQ;AAAA,EACR,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,WAAW;AAAA,EACX,eAAe;AACjB,GAEa,qBAAqB;AAAA,EAChC,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AACb,GCtGMC,qBAAmB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEM,aAAa;AAAA,EACjB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,GAEMC,oBAAkB,CAAA,GAEX,YAAY;AAAA,EACvB,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB,cAAmB;AACzC,UAAM,UAAU,EAAC,GAAI,WAAW,WAAWA,kBAAA,GAErC,EAAC,OAAO,QAAQ,OAAO,IAAI,GAAG,KAAA,IAAQ,YAEtC,gBAAgB,oBAAoB,OAAO,EAAE,GAC7C,aAAa,iBAAiB,MAAM,GACpC,gBAAgB,oBAAoB,KAAK,GAEzC,gBAAgB;AAAA,MACpB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,MAAM;AAAA,MACN,IAAI,OAAO,eAAe;AAAA,IAAA,GAWtB,SAAS,CAAC,eAAe,YAAY,eAAe,eARvC;AAAA,MACjB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,MAAM;AAAA,IAAA,CAK2E,EAAE;AAAA,MACnF,WAAW,UAAU,CAAA;AAAA,IAAC,GAGlB,WAAW,EAAC,GAAG,MAAM,QAAA,GAErB,SAAS,OAAO,OAAO,KAAK,YAAYD,kBAAgB,GAAG,UAAU;AAAA,MACzE,MAAM;AAAA,IAAA,CACP;AAED,WAAA,WAAW,QAAQ,UAAU,MACpB,OAAO,IAAI,CAAC,aAAa,aAAa,YAAY,QAAQ,CAAC,CACnE,GAED,WAAW,QAAQ,WAAW,oBAAoB,UAAU,CAAC,GAE7D;AAAA,MACE;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH,QAAQ,OAAO;AAAA,QACf,SAAS,OAAO;AAAA,MAAA;AAAA,MAElB,EAAC,YAAY,IAAO,UAAU,GAAA;AAAA,IAAK,GAG9B,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,cAAI,aAAa;AACf,kBAAM,IAAI,MAAM,iDAAiD;AAEnE,gBAAM,cAAc,KAAK,cAAcA,kBAAgB,GACjD,UAAU,OAAO,OAAO,IAAI,QAAQ,aAAa;AAAA,YACrD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,WAAW,GAC1C,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,QAAa;AACtC,SAAO,OAAO,KAAK,CAAC,UAAe,MAAM,UAAU,QAAQ,IACvD,SACA,CAAC,aAAa,QAAQ,GAAG,MAAM;AACrC;AAEA,SAAS,iBAAiB,QAAa;AACrC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,MACP,MAAM,kBAAkB,UAAU,oBAAoB;AAAA,IAAA;AAAA,EACxD;AAEJ;AAEA,SAAS,oBAAoB,OAAY;AACvC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,MACP,MAAM,SAAS;AAAA,IAAA;AAAA,EACjB;AAEJ;AAEA,MAAM,sBAAsB,CAAC,uBAAuB;AAEpD,SAAS,oBAAoB,OAAY,KAAK,IAAI;AAChD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,IAAI;AAAA,MACF;AAAA,QACE,MAAM;AAAA,QACN,QAAQ,CAAC,oBAAoB,mBAAmB;AAAA,QAChD,aAAa,SAAS,MAAM,cAAc,MAAM,cAAc;AAAA,QAC9D,YAAY,SAAS,MAAM,aAAa,MAAM,aAAa;AAAA,MAAA;AAAA,MAE7D,GAAG,GAAG,OAAO,CAAC,eAAoB,WAAW,SAAS,MAAM;AAAA,IAAA;AAAA,EAC9D;AAEJ;ACxJA,MAAM,mBAAmB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEM,YAAY;AAAA,EAChB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,GAEM,cAAc;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,IAAI,CAAC,EAAC,MAAM,UAAS;AACvB,GAEM,aAAa;AAAA,EACjB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AACR,GAEMC,oBAAkB,CAAA,GAEX,WAAW;AAAA,EACtB,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB,cAAmB;AACzC,UAAM,UAAU,EAAC,GAAI,WAAW,WAAWA,kBAAA,GAErC,EAAC,cAAc,CAAA,GAAI,QAAQ,CAAA,EAAC,IAAK,YAGjC,SAAS,CAAC,aAAa,UAAU,GAEjC,WAAW,EAAC,GAAG,YAAY,QAAA,GAE3B,SAAS,OAAO,OAAO,KAAK,WAAW,gBAAgB,GAAG,UAAU;AAAA,MACxE,MAAM;AAAA,IAAA,CACP;AAED,WAAA,WAAW,QAAQ,UAAU,MACpB,OAAO,IAAI,CAAC,aAAa,aAAa,YAAY,QAAQ,CAAC,CACnE,GAED,WAAW,QAAQ,eAAe,MAAM,YAAY,IAAI,YAAY,CAAC,GACrE,WAAW,QAAQ,SAAS,MAAM,MAAM,IAAI,YAAY,CAAC,GAEzD,WAAW,QAAQ,WAAW,oBAAoB,UAAU,CAAC,GAE7D;AAAA,MACE;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH,QAAQ,OAAO;AAAA,QACf,aAAa,OAAO;AAAA,QACpB,OAAO,OAAO;AAAA,QACd,SAAS,OAAO;AAAA,MAAA;AAAA,MAElB,EAAC,YAAY,IAAO,UAAU,GAAA;AAAA,IAAK,GAG9B,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,cAAI,aAAa;AACf,kBAAM,IAAI,MAAM,gDAAgD;AAElE,gBAAM,cAAc,KAAK,cAAc,gBAAgB,GACjD,UAAU,OAAO,OAAO,IAAI,QAAQ,aAAa;AAAA,YACrD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,WAAW,GAC1C,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF;ACpGA,IAAA,mBAAe;AAAA,EACb,SAAS,CAAC,SAAc,EAAC,OAAO,OAAO,GAAG,EAAA;AAC5C;ACIA,MAAML,uBAAqB,CAAC,GAAG,2BAA2B,GAEpD,eAAe;AAAA,EACnB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,GAEa,cAAc;AAAA,EACzB,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB;AACtB,UAAM,WAAW;AAAA,MACf,GAAG;AAAA,MACH,SAAS;AAAA,IAAA,GAEL,SAAS,OAAO,OAAO,KAAK,cAAcA,oBAAkB,GAAG,UAAU;AAAA,MAC7E,MAAM;AAAA,IAAA,CACP;AAED,WAAA,aAAa,QAAQ,gBAAgB,QAAQ,GAEtC,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,gBAAM,cAAc,KAAK,cAAcA,oBAAkB,GACnD,UAAU,OAAO,OAAO,IAAI,QAAQ,aAAa;AAAA,YACrD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,WAAW,GAC1C,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF,GC9Ca,0BAA0B,GAEjC,sBAAsB,CAAA,GAEtB,uBAAuB,CAAC,cACvB,oBAAoB,QAAQ,MAC/B,oBAAoB,QAAQ,IAAI,uBAAO,wBAAwB,QAAQ,EAAE,IAGpE,oBAAoB,QAAQ,IAG/B,cAAc,CAAC,SAAc,KAAK,QAAQ,KAAK,KAAK,SAAS,aAE7D,qBAAqB,CAAC,SAAS,MAAM,GACrC,sBAA2B,CAAC,SAChC,KAAK,SAAS,WAAY,KAAK,QAAQ,oBAAoB,KAAK,IAAI,GAChE,sBAAsB,CAAC,SAC3B,KAAK,aAAa,WAAW,MAAM,QAAQ,KAAK,EAAE,KAAK,KAAK,GAAG,KAAK,mBAAmB;AAEzF,SAAS,WAAW,MAAW,SAAc,KAAU,OAAO,CAAA,GAAI,UAAe;AAC/E,MAAI,WAAW;AACb,WAAO;AAGT,QAAM,cAAc,QAAQ,KAAK,MAAM,IAAI;AAC3C,SAAI,KAAK,aAAa,WAAW,MAAM,QAAQ,KAAK,EAAE,IAC7C,YAAY,MAAM,SAAS,aAAa,MAAM,QAAQ,IAG3D,KAAK,aAAa,YAAY,MAAM,QAAQ,KAAK,MAAM,KAAK,CAAC,YAAY,IAAI,IACxE,aAAa,MAAM,SAAS,aAAa,MAAM,QAAQ,IAGzD;AACT;AAEA,SAAS,YAAY,WAAgB,SAAc,aAAkB,MAAW,UAAe;AAC7F,SAAO,UAAU,GAAG;AAAA,IAClB,CAAC,KAAU,WAAgB,WAAW,QAAQ,SAAS,KAAK,MAAM,WAAW,CAAC;AAAA,IAC9E;AAAA,EAAA;AAEJ;AAEA,SAAS,aAAa,YAAiB,SAAc,aAAkB,MAAW,UAAe;AAC/F,QAAM,YAAY,oBAAoB,UAAU;AAChD,SAAO,WAAW,OAAO,OAAO,CAAC,KAAU,UAAe;AAExD,QAAI,aAAa,mBAAmB,SAAS,MAAM,IAAI;AACrD,aAAO;AAGT,UAAM,UAAU,CAAC,MAAM,IAAI,EAAE,OAAO,MAAM,KAAK,aAAa,UAAU,CAAC,CAAA,CAAE,IAAI,CAAA,CAAE;AAC/E,WAAO,WAAW,MAAM,MAAM,SAAS,KAAK,KAAK,OAAO,OAAO,GAAG,WAAW,CAAC;AAAA,EAChF,GAAG,WAAW;AAChB;AAEA,MAAM,eAAe;AAAA,EACnB,EAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAA;AAAA,EACxB,EAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAA;AAC5B,GAEM,2BAA2B;AAAA,EAC/B,OAAO;AAAA,EACP,UAAU;AAAA,EACV,aAAa;AACf;AAKO,SAAS,kBACd,MAGA,UACgD;AAChD,QAAM,SAAS,MAAM,SAAS;AAE9B,MAAI,CAAC;AACH,WAAO,CAAA;AAGT,QAAM,SAAwD,CAAA;AAE9D,aAAW,aAAa,OAAO,KAAK,MAAM,GAAG;AAC3C,QAAI,EAAE,aAAa;AACjB;AAGF,UAAM,OAAO,OAAO,SAAS,EAAE,MAAM,GAAG;AAEpC,eAAW,MAAM,KAAK,SAAS,IAAI,YAIvC,OAAO,KAAK;AAAA,MACV,QAAS,yBAAiC,SAAS;AAAA,MACnD;AAAA,IAAA,CACD;AAAA,EACH;AAEA,SAAO;AACT;AAEA,SAAS,0BAA0B,MAAW,UAAkB;AAC9D,QAAM,SAAS,qBAAqB,QAAQ;AAC5C,SAAK,KAAK,MAAM,MACd,KAAK,MAAM,IAAI;AAAA,IACb;AAAA,MACE,GAAG;AAAA,MACH,GAAG,kBAAkB,MAAM,QAAQ;AAAA,MACnC,GAAG,oBAAoB,MAAM,QAAQ,EAAE,IAAI,CAAC,UAAe,EAAC,QAAQ,GAAG,KAAA,EAAM;AAAA,MAC7E,GAAG,0BAA0B,MAAM,QAAQ,EAAE,IAAI,CAAC,UAAe;AAAA,QAC/D,QAAQ;AAAA,QACR;AAAA,QACA,SAAS;AAAA,MAAA,EACT;AAAA,IAAA;AAAA,IAEJ,CAAC,SAAS,KAAK,KAAK,KAAK,GAAG;AAAA,EAAA,IAGzB,KAAK,MAAM;AACpB;AAEA,SAAS,wBAAwB,MAAW,UAAkB;AAC5D,QAAM,SAAS,qBAAqB,QAAQ;AAC5C,SAAK,KAAK,MAAM,MACd,KAAK,MAAM,IAAI;AAAA,IAAO,CAAC,GAAG,cAAc,GAAG,kBAAkB,MAAM,QAAQ,CAAC;AAAA,IAAG,CAAC,SAC9E,KAAK,KAAK,KAAK,GAAG;AAAA,EAAA,IAGf,KAAK,MAAM;AACpB;AAEA,SAAS,oBAAoB,MAAW,UAAkB;AAIxD,SAAO,WAAW,MAHF,CAAC,aAAkB,WAAgB,SACjD,UAAU,aAAa,WAAW,CAAC,GAAG,aAAa,IAAI,IAAI,aAE5B,CAAA,GAAI,CAAA,GAAI,QAAQ;AACnD;AAEA,SAAS,0BAA0B,MAAW,UAAe;AAI3D,SAAO,WAAW,MAHF,CAAC,aAAkB,WAAgB,SACjD,oBAAoB,SAAS,IAAI,CAAC,GAAG,aAAa,IAAI,IAAI,aAE3B,CAAA,GAAI,CAAA,GAAI,QAAQ;AACnD;AAEO,SAAS,qCAAqC,MAAW,UAAmB;AACjF,SAAO,wBAAwB,MAAM,kBAAkB,QAAQ,CAAC;AAClE;AAKO,SAAS,oBAAoB,MAAW,UAAmB;AAChE,SAAO,0BAA0B,MAAM,kBAAkB,QAAQ,CAAC;AACpE;AAQA,SAAS,kBAAkB,UAAmB;AAC5C,SAAI,CAAC,SAAS,QAAQ,KAAK,WAAY,KAAK,WAAY,0BAC/C,0BAA0B,IAG5B,WAAY;AACrB;ACvKO,MAAMM,cAAY;AAAA,EACvB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AACR,GAEaC,eAAa;AAAA,EACxB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AACR,GAEM,gBAAgB;AAAA,EACpB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AACR,GAEM,mBAAmB;AAAA,EACvB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ;AACV,GAEMC,qBAAmB,CAACF,aAAWC,cAAY,eAAe,gBAAgB,GAE1EP,uBAAqB,CAAC,GAAG,2BAA2B,GAEpD,+BAA+B;AAAA,EACnC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AACZ;AAEA,SAASS,WAAS,KAAU,aAAkB;AAC5C,QAAM,MAAM,IAAI;AAChB,MAAI,QAAQ;AACV,WAAO,IAAI,CAAC;AAEd,QAAM,QAAQ,IAAI,MAAM,GAAG,MAAM,CAAC,GAC5B,OAAO,IAAI,MAAM,CAAC;AACxB,SAAO,GAAG,MAAM,KAAK,IAAI,CAAC,IAAI,WAAW,IAAI,IAAI;AACnD;AAEA,SAASC,aAAW,MAAW;AAC7B,SAAI,CAAC,KAAK,MAAM,KAAK,GAAG,WAAW,IAC1B,4BAEF,8BAA8BD;AAAAA,IACnC,OAAO,KAAK,EAAE,EAAE,IAAI,CAAC,WAAgB,OAAO,SAAS,WAAW,OAAO,IAAI,CAAC;AAAA,IAC5E;AAAA,EAAA,EACA,aAAa;AACjB;AAEO,MAAM,4BAA4B;AAAA,EACvC,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB,kBAAuB;AAC7C,QAAI,CAAC,WAAW;AACd,YAAM,IAAI;AAAA,QACR,4EAA4E,WAAW,IAAI;AAAA,MAAA;AAG/F,UAAM,SAAS,OAAO;AAAA,MACpB,KAAK,8BAA8BT,oBAAkB;AAAA,MACrD;AAAA,MACA;AAAA,QACE,MAAM;AAAA,MAAA;AAAA,IACR;AAGF,WAAA,WAAW,QAAQ,UAAU,MACpBQ,mBAAiB,IAAI,CAAC,aAAa,iBAAiB,YAAY,QAAQ,CAAC,CACjF,GAED,WAAW,QAAQ,MAAM,MAChB,OAAO,WAAW,EAAE,EAAE,IAAI,CAAC,YACzB;AAAA,MACL,GAAG;AAAA;AAAA,MAEH,uBAAuB,qCAAqC,MAAM;AAAA,IAAA,EAErE,CACF,GAED,WAAW,QAAQ,SAAS,MAAM,WAAW,SAASE,aAAW,MAAM,CAAC,GAExE;AAAA,MACE;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH,QAAQ,OAAO;AAAA,QACf,IAAI,OAAO;AAAA,QACX,OAAO,OAAO;AAAA,MAAA;AAAA,MAEhB,EAAC,YAAY,IAAO,UAAU,GAAA;AAAA,IAAK,GAG9B,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,cAAI,aAAa;AACf,kBAAM,IAAI,MAAM,iDAAiD;AAEnE,gBAAM,WAAW,KAAK,cAAcV,oBAAkB,GAChD,UAAU,OAAO,OAAO,IAAI,QAAQ,UAAU;AAAA,YAClD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,QAAQ,GACvC,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF,GC3HMA,uBAAqB,CAAC,GAAG,2BAA2B,GAEpD,YAAY;AAAA,EAChB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,GAEa,WAAW;AAAA,EACtB,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB;AACtB,UAAM,WAAW;AAAA,MACf,GAAG;AAAA,MACH,SAAS;AAAA,IAAA,GAEL,SAAS,OAAO,OAAO,KAAK,WAAWA,oBAAkB,GAAG,UAAU;AAAA,MAC1E,MAAM;AAAA,IAAA,CACP;AAED,WAAA,aAAa,QAAQ,gBAAgB,QAAQ,GAEtC,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,gBAAM,cAAc,KAAK,cAAcA,oBAAkB,GACnD,UAAU,OAAO,OAAO,IAAI,QAAQ,aAAa;AAAA,YACrD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,WAAW,GAC1C,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF,GC1CMA,uBAAqB,CAAC,GAAG,2BAA2B,GAEpD,gBAAgB;AAAA,EACpB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,GAEa,eAAe;AAAA,EAC1B,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB;AACtB,UAAM,WAAW;AAAA,MACf,GAAG;AAAA,MACH,SAAS;AAAA,IAAA,GAEL,SAAS,OAAO,OAAO,KAAK,eAAeA,oBAAkB,GAAG,UAAU;AAAA,MAC9E,MAAM;AAAA,IAAA,CACP;AACD,WAAA,aAAa,QAAQ,gBAAgB,QAAQ,GACtC,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,gBAAM,cAAc,KAAK,cAAcA,oBAAkB,GACnD,UAAU,OAAO,OAAO,IAAI,QAAQ,aAAa;AAAA,YACrD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,WAAW,GAC1C,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF,GC3CM,aAAa,CAAC,SAAS,QAAQ,SAAS,WAAW,UAAU,WAAW,aAAa,GAErF,aAAa,CAAC,UAAU,WAAW,QAAQ,GAE3C,cAAc,CAAC,UAAe,WAAW,SAAS,MAAM,IAAI;AAElE,SAAwB,oBAAoB,eAAoC;AAC9E,MAAI,aAAa,WAAW;AAAA,IAAO,CAAC,cAClC,cAAc,OAAO,KAAK,CAAC,UAAe,YAAY,KAAK,KAAK,MAAM,SAAS,SAAS;AAAA,EAAA;AAI1F,SAAI,WAAW,WAAW,MACxB,aAAa,cAAc,OAAO,OAAO,WAAW,EAAE,IAAI,CAAC,UAAe,MAAM,IAAI,IAG/E,WAAW;AAAA,IAChB,CAAC,UAAwB;AAAA,MACvB;AAAA,MACA,MAAM;AAAA,QACJ,OAAO,EAAC,KAAK,qBAAqB,IAAI,IAAI,IAAI,SAAA;AAAA,MAAQ;AAAA,MAExD,OAAO,WAAW,UAAU,IAAI,CAAC;AAAA,MACjC,IAAI,CAAC,EAAC,OAAO,MAAM,WAAW,OAAM;AAAA,IAAA;AAAA,EACtC;AAEJ;AC3BO,SAAS,uBAAuB,SAAc;AACnD,MAAI,CAAC,MAAM,QAAQ,OAAO;AACxB,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAGJ,SAAO,QAAQ,IAAI,CAAC,SAAS;AAC3B,QAAI,SAAS;AACX,aAAO;AAET,QAAI,CAAC,cAAc,IAAI;AACrB,YAAM,IAAI,MAAM,mEAAmE;AAErF,WAAO;AAAA,MACL,QAAQ,YAAY,OAAO,KAAK,SAAS;AAAA,MACzC,MAAM,OAAO,KAAK,IAAI;AAAA,MACtB,SAAS,OAAO,KAAK,WAAY,WAAW,KAAK,UAAU;AAAA,IAAA;AAAA,EAE/D,CAAC;AACH;ACJA,MAAMA,uBAAqB;AAAA,EACzB,GAAG;AAAA,EACH;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEa,aAAa;AAAA,EACxB,MAAM;AACJ,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,IAAA;AAAA,EAEd;AAAA,EACA,OAAO,eAAoB,kBAAuB;AAChD,UAAM,aAAa,EAAC,QAAQ,CAAA,GAAI,GAAG,cAAA,GAE7B,UAAU,EAAC,GAAG,WAAW,QAAA,GAEzB,WAAW;AAAA,MACf,GAAG;AAAA,MACH,OAAO,WAAW,UAAU,WAAW,OAAO,UAAU,WAAW,IAAI,IAAI;AAAA,MAC3E;AAAA,MACA,WAAW,WAAW,aAAa,oBAAoB,UAAU;AAAA,MACjE,QAAQ,WAAW,OAAO;AAAA,QAAI,CAAC,aAC7B,iBAAiB,kBAAkB,QAAQ;AAAA,MAAA;AAAA,IAC7C,GAGI,SAAS,OAAO,OAAO,KAAK,KAAK,IAAA,GAAOA,oBAAkB,GAAG,UAAU;AAAA,MAC3E,MAAM,KAAK,IAAA;AAAA,IAAI,CAChB;AAED,WAAA,WAAW,QAAQ,aAAa,MACvB,gBAAgB,YAAY,OAAO,MAAM,CACjD,GAED,WAAW,QAAQ,UAAU,MACpB,mBAAmB,YAAY,OAAO,MAAM,CACpD,GAED,WAAW,QAAQ,WAAW,oBAAoB,UAAU,CAAC,GAE7D;AAAA,MACE;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH,SAAS,OAAO;AAAA,MAAA;AAAA,MAElB,EAAC,YAAY,IAAO,UAAU,GAAA;AAAA,IAAK,GAGrC;AAAA,MACE;AAAA,MACA;AAAA,MACA,MAAM;AACJ,cAAM,2BAA2B,WAAW,wBACxC,uBAAuB,WAAW,qBAAqB,IACvD;AAEJ,eAAI,2BACK,yBAAyB;AAAA,UAAI,CAAC,UACnC,UAAU,aAAa,uBAAuB,UAAU,IAAI;AAAA,QAAA,IAGzD,oBAAoB,MAAM;AAAA,MACnC;AAAA,MACA;AAAA,QACE,YAAY;AAAA,MAAA;AAAA,IACd,GAGK,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,cAAI,aAAa;AACf,kBAAM,IAAI,MAAM,kDAAkD;AAGpE,gBAAM,cAAc,KAAK,cAAcA,oBAAkB;AACzD,sBAAY,QACV,aAAa,SACb,WAAW,UACV,WAAW,OAAO,UAAU,WAAW,IAAI,IAAI;AAElD,gBAAM,UAAU,OAAO,OAAO,CAAA,GAAI,QAAQ,KAAK,cAAcA,oBAAkB,GAAG;AAAA,YAChF,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,WAAW,SAAS,yBAAyB,MAAM,OAAO,qBAAqB,GAC/E,aAAa,SAAS,gBAAgB,WAAW,GAC1C,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF;AAEO,SAAS,gBAAgB,SAA2B,QAAmC;AAC5F,QAAM,kBAAgF,CAAA;AAEtF,aAAW,YAAY,QAAQ,aAAa,CAAA,GAAI;AAC9C,QAAI,gBAAgB,SAAS,IAAI;AAC/B,YAAM,IAAI;AAAA,QACR,4BAA4B,SAAS,IAAI,qBACvC,QAAQ,QAAQ,QAAQ,QAAQ,UAAU,QAAQ,IAAI,CACxD;AAAA,MAAA;AAIJ,oBAAgB,SAAS,IAAI,IAAI,EAAC,OAAO,UAAU,SAAS,IAAI,GAAG,GAAG,UAAU,QAAQ,CAAA,EAAC;AAAA,EAC3F;AAEA,QAAM,gCAAgB,IAAA;AAEtB,aAAW,SAAS,QAAQ;AAC1B,QAAI,CAAC,MAAM,UAAU;AACnB,gBAAU,IAAI,EAAC,QAAQ,IAAM,OAAM;AACnC;AAAA,IACF;AAEA,UAAM,WAAW,gBAAgB,MAAM,QAAQ;AAC/C,QAAI,CAAC;AACH,YAAM,IAAI;AAAA,QACR,aAAa,MAAM,QAAQ,wCAAwC,QAAQ,IAAI;AAAA,MAAA;AAInF,aAAS,OAAO,KAAK,KAAK,GAG1B,UAAU,IAAI,QAAQ;AAAA,EACxB;AAEA,SAAO,MAAM,KAAK,SAAS;AAC7B;AAEA,SAAS,mBAAmB,SAA2B,QAAqC;AAC1F,QAAM,eAA+E,CAAA;AAErF,MAAI,mBAAmB;AACvB,aAAW,SAAS,QAAQ,UAAU,CAAA,GAAI;AACxC,QAAI,aAAa,MAAM,IAAI;AACzB,YAAM,IAAI;AAAA,QACR,yBAAyB,MAAM,IAAI,qBACjC,QAAQ,QAAQ,QAAQ,QAAQ,UAAU,QAAQ,IAAI,CACxD;AAAA,MAAA;AAMJ,QAFA,aAAa,MAAM,IAAI,IAAI,EAAC,OAAO,UAAU,MAAM,IAAI,GAAG,GAAG,OAAO,QAAQ,CAAA,EAAC,GAEzE,MAAM,WAAW,EAAE,mBAAmB;AAExC,YAAM,IAAI;AAAA,QACR,0DACE,QAAQ,QAAQ,QAAQ,QAAQ,UAAU,QAAQ,IAAI,CACxD;AAAA,MAAA;AAAA,EAGN;AAEA,SAAA,OAAO,QAAQ,CAAC,UAAU;AACxB,UAAM,kBAAkB,UAAU,MAAM,SAAS,CAAA,CAAE;AAC/C,oBAAgB,WAAW,KAI/B,gBAAgB,QAAQ,CAAC,mBAAmB;AAC1C,YAAM,eAAe,aAAa,cAAc;AAEhD,UAAI,CAAC;AACH,cAAM,IAAI;AAAA,UACR,gBAAgB,cAAc,wCAC5B,QAAQ,QAAQ,QAAQ,OAAO,UAAU,QAAQ,IAAI,CACvD;AAAA,QAAA;AAIJ,mBAAa,OAAO,KAAK,KAAK;AAAA,IAChC,CAAC;AAAA,EACH,CAAC,GAEM,QAAQ,YAAY,EAAE;AAAA;AAAA;AAAA,IAG3B,CAAC,UAAU,MAAM,OAAO,SAAS,KAAK,MAAM,SAAS;AAAA,EAAA;AAEzD;ACnNA,MAAM,gBAAgB;AAAA,EACpB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,GAEa,eAAe;AAAA,EAC1B,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,WAAW;AACrB,GCRMA,uBAAqB,CAAC,GAAG,2BAA2B,GAEpD,aAAa;AAAA,EACjB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA,OAAO;AAAA,IACL,GAAG;AAAA,IACH,YAAY,CAACG,UAAcA,MAAK,MAAA;AAAA,EAAM;AAAA,EAExC,EAAC,YAAY,GAAA;AACf;AAEO,MAAM,YAAY;AAAA,EACvB,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB;AACtB,UAAM,WAAW;AAAA,MACf,GAAG;AAAA,MACH,SAAS;AAAA,IAAA,GAEL,SAAS,OAAO,OAAO,KAAK,YAAYH,oBAAkB,GAAG,UAAU;AAAA,MAC3E,MAAM;AAAA,IAAA,CACP;AACD,WAAA,aAAa,QAAQ,gBAAgB,QAAQ,GACtC,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,gBAAM,cAAc,KAAK,cAAcA,oBAAkB,GACnD,UAAU,OAAO,OAAO,IAAI,QAAQ,aAAa;AAAA,YACrD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,WAAW,GAC1C,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF,GCjDaW,gBAAc;AAAA,EACzB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,IAAI,EAAC,MAAM,mBAAA;AACb,GAEaC,8BAA4B;AAAA,EACvC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,IAAI,CAAC,EAAC,MAAM,gBAAe;AAC7B,GAEMZ,uBAAqB,CAAC,GAAG,2BAA2B,GAEpD,YAAY;AAAA,EAChB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,GAEMK,oBAAkB;AAAA,EACtB,QAAQ;AACV,GAEa,WAAW;AAAA,EACtB,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,eAAoB,kBAAuB;AAChD,UAAM,UAAU,EAAC,GAAI,cAAc,WAAWA,kBAAA,GAExC,SAAS,CAACM,eAAaC,6BAA2B,GAAI,cAAc,UAAU,CAAA,CAAG,GAEjF,aAAa,EAAC,GAAG,eAAe,OAAA,GAEhC,SAAS,OAAO,OAAO,KAAK,WAAWZ,oBAAkB,GAAG,YAAY;AAAA,MAC5E,MAAM;AAAA,MACN,OAAO,WAAW,UAAU,WAAW,OAAO,UAAU,WAAW,IAAI,IAAI,UAAU;AAAA,MACrF;AAAA,MACA,QAAQ,WAAW,OAAO,IAAI,CAAC,aAAkB;AAC/C,cAAM,EAAC,MAAM,UAAU,GAAG,KAAA,IAAQ,UAE5B,gBAAgB;AAAA,UACpB;AAAA,UACA;AAAA,UACA,cAAc,EAAQ,cAAc;AAAA,QAAA;AAGtC,eAAO,WAAW,eAAe,QAAQ,MAChC,iBAAiB;AAAA,UACtB,GAAG;AAAA,UACH,OAAO,SAAS,SAAS,UAAU,IAAI;AAAA,QAAA,CACxC,CACF;AAAA,MACH,CAAC;AAAA,IAAA,CACF;AAED,WAAA,WAAW,QAAQ,aAAa,MACvB,gBAAgB,YAAY,OAAO,MAAM,CACjD,GAED,WAAW,QAAQ,WAAW,oBAAoB,OAAO,OAAO,CAAA,GAAI,YAAY,EAAC,OAAA,CAAO,CAAC,CAAC,GAE1F;AAAA,MACE;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA,QAAQ,OAAO;AAAA,QACf,OAAO,OAAO;AAAA,QACd,WAAW,OAAO;AAAA,QAClB,SAAS,OAAO;AAAA,MAAA;AAAA,MAElB,EAAC,YAAY,IAAO,UAAU,GAAA;AAAA,IAAK,GAG9B,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,cAAI,aAAa;AACf,kBAAM,IAAI,MAAM,gDAAgD;AAElE,gBAAM,WAAW,KAAK,cAAcA,oBAAkB,GAChD,UAAU,OAAO,OAAO,IAAI,QAAQ,UAAU;AAAA,YAClD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,QAAQ,GACvC,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF,GCrGaM,cAAY;AAAA,EACvB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AACR,GAEaC,eAAa;AAAA,EACxB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AACR,GAEMC,qBAAmB,CAACF,aAAWC,YAAU,GAEzCP,uBAAqB,CAAC,GAAG,2BAA2B,GAEpD,iCAAiC;AAAA,EACrC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ;AAEA,SAASS,WAAS,KAAU,aAAkB;AAC5C,QAAM,MAAM,IAAI;AAChB,MAAI,QAAQ;AACV,WAAO,IAAI,CAAC;AAEd,QAAM,QAAQ,IAAI,MAAM,GAAG,MAAM,CAAC,GAC5B,OAAO,IAAI,MAAM,CAAC;AACxB,SAAO,GAAG,MAAM,KAAK,IAAI,CAAC,IAAI,WAAW,IAAI,IAAI;AACnD;AAEA,SAASC,aAAW,MAAW;AAC7B,SAAI,CAAC,KAAK,MAAM,KAAK,GAAG,WAAW,IAC1B,8BAEF,gCAAgCD;AAAAA,IACrC,OAAO,KAAK,EAAE,EAAE,IAAI,CAAC,WAAgB,OAAO,KAAK;AAAA,IACjD;AAAA,EAAA,EACA,aAAa;AACjB;AAEO,MAAM,8BAA8B;AAAA,EACzC,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB,kBAAuB;AAC7C,QAAI,CAAC,WAAW;AACd,YAAM,IAAI;AAAA,QACR,8EAA8E,WAAW,IAAI;AAAA,MAAA;AAGjG,UAAM,SAAS,OAAO;AAAA,MACpB,KAAK,gCAAgCT,oBAAkB;AAAA,MACvD;AAAA,MACA;AAAA,QACE,MAAM;AAAA,MAAA;AAAA,IACR;AAGF,WAAA,WAAW,QAAQ,UAAU,MACpBQ,mBAAiB,IAAI,CAAC,aAAa,iBAAiB,YAAY,QAAQ,CAAC,CACjF,GAED,WAAW,QAAQ,MAAM,MAChB,OAAO,WAAW,EAAE,EAAE,IAAI,CAAC,YACzB;AAAA,MACL,GAAG;AAAA,IAAA,EAEN,CACF,GAED,WAAW,QAAQ,SAAS,MAAM,WAAW,SAASE,aAAW,MAAM,CAAC,GAExE;AAAA,MACE;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH,QAAQ,OAAO;AAAA,QACf,IAAI,OAAO;AAAA,QACX,OAAO,OAAO;AAAA,MAAA;AAAA,MAEhB,EAAC,YAAY,IAAO,UAAU,GAAA;AAAA,IAAK,GAG9B,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,cAAI,aAAa;AACf,kBAAM,IAAI,MAAM,+DAA+D;AAEjF,gBAAM,WAAW,KAAK,cAAcV,oBAAkB,GAChD,UAAU,OAAO,OAAO,IAAI,QAAQ,UAAU;AAAA,YAClD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,QAAQ,GACvC,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF,GClHa,cAAc;AAAA,EACzB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,IAAI,CAAC,EAAC,MAAM,qBAAoB;AAClC,GAEa,gBAAgB;AAAA,EAC3B,MAAM;AAAA,EACN,MAAM;AACR,GAEa,aAAa;AAAA,EACxB,MAAM;AAAA,EACN,MAAM;AACR,GAEa,4BAA4B;AAAA,EACvC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,IAAI,CAAC,EAAC,MAAM,gBAAe;AAC7B,GCbMA,uBAAqB,CAAC,GAAG,2BAA2B,GAEpD,aAAa;AAAA,EACjB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,GAEM,kBAAkB,CAAA,GAEX,YAAY;AAAA,EACvB,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,eAAoB,kBAAuB;AAChD,UAAM,UAAU,EAAC,GAAI,cAAc,WAAW,gBAAA;AAE9C,QAAI,gBAAgB,CAAC,eAAe,UAAU;AACzC,YAAQ,YACX,gBAAgB,cAAc,IAAI,CAAC,WAAW,EAAC,GAAG,OAAO,QAAQ,GAAA,EAAM;AAGzE,UAAM,SAAS;AAAA,MACb;AAAA,MACA;AAAA,MACA,GAAG;AAAA,MACH,GAAI,cAAc,UAAU,CAAA;AAAA,IAAC,GAEzB,aAAa,EAAC,GAAG,eAAe,UAEhC,SAAS,OAAO,OAAO,KAAK,KAAK,IAAA,GAAOA,oBAAkB,GAAG,YAAY;AAAA,MAC7E,MAAM;AAAA,MACN,OAAO,WAAW,UAAU,WAAW,OAAO,UAAU,WAAW,IAAI,IAAI,WAAW;AAAA,MACtF;AAAA,MACA,QAAQ,WAAW,OAAO,IAAI,CAAC,aAAkB;AAC/C,cAAM,EAAC,MAAM,UAAU,GAAG,KAAA,IAAQ,UAE5B,gBAAgB;AAAA,UACpB;AAAA,UACA;AAAA,UACA,cAAc,EAAQ,cAAc;AAAA,QAAA;AAGtC,eAAO,WAAW,eAAe,QAAQ,MAChC,iBAAiB;AAAA,UACtB,GAAG;AAAA,UACH,OAAO,SAAS,SAAS,UAAU,IAAI;AAAA,QAAA,CACxC,CACF;AAAA,MACH,CAAC;AAAA,IAAA,CACF;AAED,WAAA,WAAW,QAAQ,aAAa,MACvB,gBAAgB,YAAY,OAAO,MAAM,CACjD,GAED,WAAW,QAAQ,WAAW,oBAAoB,OAAO,OAAO,CAAA,GAAI,YAAY,EAAC,OAAA,CAAO,CAAC,CAAC,GAE1F;AAAA,MACE;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA,QAAQ,OAAO;AAAA,QACf,OAAO,OAAO;AAAA,QACd,WAAW,OAAO;AAAA,QAClB,SAAS,OAAO;AAAA,MAAA;AAAA,MAElB,EAAC,YAAY,IAAO,UAAU,GAAA;AAAA,IAAK,GAG9B,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,cAAI,aAAa;AACf,kBAAM,IAAI,MAAM,iDAAiD;AAEnE,gBAAM,WAAW,KAAK,cAAcA,oBAAkB,GAChD,UAAU,OAAO,OAAO,IAAI,QAAQ,UAAU;AAAA,YAClD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,QAAQ,GACvC,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF,GChGMA,uBAAqB,CAAC,GAAG,2BAA2B,GAEpD,cAAc;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,GAEa,aAAa;AAAA,EACxB,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB;AACtB,UAAM,WAAW;AAAA,MACf,GAAG;AAAA,MACH,SAAS;AAAA,IAAA,GAGL,SAAS,OAAO,OAAO,KAAK,aAAaA,oBAAkB,GAAG,UAAU;AAAA,MAC5E,MAAM;AAAA,IAAA,CACP;AAED,WAAA,aAAa,QAAQ,gBAAgB,QAAQ,GAEtC,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,gBAAM,cAAc,KAAK,cAAcA,oBAAkB,GACnD,UAAU,OAAO,OAAO,IAAI,QAAQ,aAAa;AAAA,YACrD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,WAAW,GAC1C,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF,GC1Ca,YAAY;AAAA,EACvB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AACR,GAEa,aAAa;AAAA,EACxB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AACR,GAEM,mBAAmB,CAAC,WAAW,UAAU,GAEzCA,uBAAqB,CAAC,GAAG,2BAA2B,GAEpD,iBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ;AAEA,SAAS,SAAS,KAAU,aAAkB;AAC5C,QAAM,MAAM,IAAI;AAChB,MAAI,QAAQ;AACV,WAAO,IAAI,CAAC;AAEd,QAAM,QAAQ,IAAI,MAAM,GAAG,MAAM,CAAC,GAC5B,OAAO,IAAI,MAAM,CAAC;AACxB,SAAO,GAAG,MAAM,KAAK,IAAI,CAAC,IAAI,WAAW,IAAI,IAAI;AACnD;AAEA,SAAS,WAAW,MAAW;AAC7B,SAAI,CAAC,KAAK,MAAM,KAAK,GAAG,WAAW,IAC1B,cAEF,gBAAgB;AAAA,IACrB,OAAO,KAAK,EAAE,EAAE,IAAI,CAAC,WAAgB,OAAO,KAAK;AAAA,IACjD;AAAA,EAAA,EACA,aAAa;AACjB;AAEO,MAAM,gBAAgB;AAAA,EAC3B,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB,kBAAuB;AAC7C,QAAI,CAAC,WAAW;AACd,YAAM,IAAI;AAAA,QACR,8DAA8D,WAAW,IAAI;AAAA,MAAA;AAGjF,UAAM,SAAS,OAAO,OAAO,KAAK,gBAAgBA,oBAAkB,GAAG,YAAY;AAAA,MACjF,MAAM;AAAA,IAAA,CACP;AAED,WAAA,WAAW,QAAQ,UAAU,MACpB,iBAAiB,IAAI,CAAC,aAAa,iBAAiB,YAAY,QAAQ,CAAC,CACjF,GAED,WAAW,QAAQ,aAAa,MACvB,gBAAgB,YAAY,OAAO,MAAM,CACjD,GAED,WAAW,QAAQ,MAAM,MAChB,OAAO,WAAW,EAAE,EAAE,IAAI,CAAC,WAAgB,iBAAiB,MAAM,CAAC,CAC3E,GAED,WAAW,QAAQ,SAAS,MAAM,WAAW,SAAS,WAAW,MAAM,CAAC,GAExE;AAAA,MACE;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH,QAAQ,OAAO;AAAA,QACf,WAAW,OAAO;AAAA,QAClB,IAAI,OAAO;AAAA,QACX,OAAO,OAAO;AAAA,MAAA;AAAA,MAEhB,EAAC,YAAY,IAAO,UAAU,GAAA;AAAA,IAAK,GAG9B,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,cAAI,aAAa;AACf,kBAAM,IAAI,MAAM,iDAAiD;AAEnE,gBAAM,WAAW,KAAK,cAAcA,oBAAkB,GAChD,UAAU,OAAO,OAAO,IAAI,QAAQ,UAAU;AAAA,YAClD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,QAAQ,GACvC,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF,GC1GMA,uBAAqB,CAAC,GAAG,2BAA2B,GAEpD,cAAc;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,GAEa,aAAa;AAAA,EACxB,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB;AACtB,UAAM,WAAW;AAAA,MACf,GAAG;AAAA,MACH,SAAS;AAAA,IAAA,GAGL,SAAS,OAAO,OAAO,KAAK,aAAaA,oBAAkB,GAAG,UAAU;AAAA,MAC5E,MAAM;AAAA,IAAA,CACP;AAED,WAAA,aAAa,QAAQ,gBAAgB,QAAQ,GAEtC,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,gBAAM,cAAc,KAAK,cAAcA,oBAAkB,GACnD,UAAU,OAAO,OAAO,IAAI,QAAQ,aAAa;AAAA,YACrD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,WAAW,GAC1C,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF,GC3CMA,uBAAqB,CAAC,GAAG,6BAA6B,MAAM,GAE5D,YAAY;AAAA,EAChB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,GAEa,WAAW;AAAA,EACtB,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB;AACtB,UAAM,WAAW;AAAA,MACf,GAAG;AAAA,MACH,SAAS;AAAA,IAAA,GAGL,SAAS,OAAO,OAAO,KAAK,WAAWA,oBAAkB,GAAG,UAAU;AAAA,MAC1E,MAAM;AAAA,IAAA,CACP;AAED,WAAA,aAAa,QAAQ,gBAAgB,QAAQ,GAEtC,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,gBAAM,cAAc,KAAK,cAAcA,oBAAkB,GACnD,UAAU,OAAO,OAAO,IAAI,QAAQ,aAAa;AAAA,YACrD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,WAAW,GAC1C,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF,GC3CM,qBAAqB,CAAC,GAAG,2BAA2B,GAEpD,WAAW;AAAA,EACf,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,GAEa,UAAU;AAAA,EACrB,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAiB;AACtB,UAAM,WAAW;AAAA,MACf,GAAG;AAAA,MACH,SAAS;AAAA,IAAA,GAGL,SAAS,OAAO,OAAO,KAAK,UAAU,kBAAkB,GAAG,UAAU;AAAA,MACzE,MAAM;AAAA,IAAA,CACP;AAED,WAAA,aAAa,QAAQ,gBAAgB,QAAQ,GAEtC,QAAQ,MAAM;AAErB,aAAS,QAAQ,QAAa;AAC5B,aAAO;AAAA,QACL,MAAM;AACJ,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC,iBAAsB;AAC7B,gBAAM,iBAAiB,KAAK,cAAc,kBAAkB,GACtD,UAAU,OAAO,OAAO,IAAI,QAAQ,gBAAgB;AAAA,YACxD,MAAM;AAAA,UAAA,CACP;AACD,iBAAA,aAAa,SAAS,gBAAgB,cAAc,GAC7C,QAAQ,OAAO;AAAA,QACxB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF;;;;;;;;;;;;;;;;;;;;;;;ACnCA,SAAS,gBAAgB,WAAgB;AACvC,QAAM,WAAW,uBAAO,OAAO,IAAI;AACnC,MAAI;AAEA,YAAU,UACZ,OAAO,OAAO,UAAU,UAAU,OAAO,SAAS,GAClD,iBAAiB,CAAA,MAGjB,OAAO,OAAO,UAAU,KAAK,GAC7B,iBAAiB,OAAO,KAAK,KAAK;AAGpC,QAAM,aAAa,UAAU,MAAM,OAAO,CAAC,KAAU,QAAa;AAChE,QAAI,IAAI,IAAI,IAAI;AACd,YAAM,IAAI,MAAM,wCAAwC,IAAI,IAAI,EAAE;AAEpE,WAAA,IAAI,IAAI,IAAI,IAAI,KACT;AAAA,EACT,GAAG,CAAA,CAAE,GAEC,cAAc,oBAAI,OAClB,iCAAiB,IAAA,GACjB,mBAAmB,oBAAI,IAAA,GAEvB,eAA6B,OAAO,OAAO,cAAc;AAAA,IAC7D,OAAO,KAAU;AACf,UAAI,SAAS,YAAY,IAAI,GAAG;AAChC,aAAK,WACH,SAAS,aAAa,GAAG,GACzB,YAAY,IAAI,KAAK,MAAM,IAEtB;AAAA,IACT;AAAA,IAEA,YAAY,UAAe;AACzB,UAAI,QAAQ,WAAW,IAAI,QAAQ;AACnC,UAAI,CAAC,OAAO;AACV,cAAM,EAAC,MAAM,GAAG,KAAA,IAAQ;AACxB,gBAAQ;AAAA,UACN;AAAA,UACA,MAAM,aAAa,IAAI;AAAA,QAAA,GAEzB,WAAW,IAAI,UAAU,KAAK;AAAA,MAChC;AACA,aAAO;AAAA,IACT;AAAA,IAEA,kBAAkB,UAAe;AAC/B,UAAI,QAAQ,iBAAiB,IAAI,QAAQ;AACzC,UAAI,CAAC,OAAO;AACV,cAAM,EAAC,MAAM,UAAU,OAAO,GAAG,SAAQ;AAEzC,gBAAQ;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,QAAA,GAGF,WAAW,OAAO,QAAQ,MACjB,aAAa;AAAA,UAClB,GAAG;AAAA,UACH,OAAO,SAAS,SAAS,UAAU,IAAI;AAAA,QAAA,CACxC,CACF,GACD,iBAAiB,IAAI,UAAU,KAAK;AAAA,MACtC;AACA,aAAO;AAAA,IACT;AAAA,EAAA,CACD;AAED,SAAA,UAAU,MAAM,QAAQ,GAAG,GAEpB;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAGF,WAAS,OAAO,UAAe;AAC7B,QAAI,CAAC,SAAS,QAAQ,GAAG;AACvB,UAAI,CAAC,WAAW,QAAQ;AACtB,cAAM,IAAI,MAAM,iBAAiB,QAAQ,EAAE;AAE7C,UAAI,WAAW,QAAQ,CAAC;AAAA,IAC1B;AAAA,EACF;AAEA,WAAS,aAAa,WAAgB;AACpC,WAAA,OAAO,UAAU,IAAI,GACd,SAAS,UAAU,IAAI,EAAE,OAAO,WAAW,YAAY,EAAE,IAAA;AAAA,EAClE;AAEA,WAAS,IAAI,SAAc;AACzB,WAAO,QAAQ,IAAI,GACf,UAAS,QAAQ,IAAI,MAGzB,eAAe,KAAK,QAAQ,IAAI,GAChC,SAAS,QAAQ,IAAI,IAAI,SAAS,QAAQ,IAAI,EAAE,OAAO,SAAS,YAAY;AAAA,EAC9E;AACF;AAKO,MAAM,OAAO;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EAEA,OAAO,QAAQ,WAAwB;AACrC,WAAO,IAAI,OAAO,SAAS;AAAA,EAC7B;AAAA,EAEA,YAAY,WAAgB;AAC1B,SAAK,YAAY;AAEjB,UAAM,EAAC,UAAU,mBAAkB,gBAAgB,SAAS;AAC5D,SAAK,YAAY,UACjB,KAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK,UAAU;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,SAA6B;AAC/B,WAAO,KAAK,UAAU;AAAA,EACxB;AAAA,EAEA,IAAI,MAAmB;AACrB,WAAO,KAAK,UAAU,IAAI,KAAK,KAAK,UAAU,IAAI,EAAE,IAAA;AAAA,EACtD;AAAA,EAEA,IAAI,MAAuB;AACzB,WAAO,QAAQ,KAAK;AAAA,EACtB;AAAA,EAEA,eAAyB;AACvB,WAAO,OAAO,KAAK,KAAK,SAAS;AAAA,EACnC;AAAA,EAEA,oBAA8B;AAC5B,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAM,gCAAgC,OAAO;AAAA,EAClD,OAAO,QAAQ,WAAwB;AACrC,WAAO,IAAI,wBAAwB,SAAS;AAAA,EAC9C;AAAA,EAEA,YAAY,WAAgB;AAC1B,UAAM,SAAS;AAEf,UAAM,QAAQ,IAAI;AAAA,MAChB;AAAA,IAAA,EACA,MAAO,QAAQ,UAAU,SAAS;AAEpC,YAAQ,KAAK,KAAK;AAAA,EACpB;AACF;ACnKA,MAAM,YAAY,uBAAO,WAAW,GAC9B,sBAA4C;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAQa,OAAkB,MAAMG,MAAsB;AAAA,EACzD,OAAgB,YAAY;AAAA,EAC5B,OAAO,QAAQ,CAAC,QAA2B,IAAIA,MAAK,GAAG,EAAE,KAAK,OAAO;AAAA,EACrE,OAAO,SAAS,CAAC,QAA2B,IAAIA,MAAK,GAAG,EAAE,KAAK,QAAQ;AAAA,EACvE,OAAO,SAAS,CAAC,QAA2B,IAAIA,MAAK,GAAG,EAAE,KAAK,QAAQ;AAAA,EACvE,OAAO,SAAS,CAAC,QAA2B,IAAIA,MAAK,GAAG,EAAE,KAAK,QAAQ;AAAA,EACvE,OAAO,UAAU,CAAC,QAA2B,IAAIA,MAAK,GAAG,EAAE,KAAK,SAAS;AAAA,EACzE,OAAO,WAAW,CAAC,QAA2B,IAAIA,MAAK,GAAG,EAAE,KAAK,MAAM;AAAA,EACvE,OAAO,eAAe,CAAC,UAAsE;AAAA,IAC3F,MAAM;AAAA,IACN;AAAA,EAAA;AAAA,EAGF,QAAwC;AAAA,EACxC,SAAmD;AAAA,EACnD,YAAiD;AAAA,EACjD,WAAmC;AAAA,EACnC,WAA6D;AAAA,EAC7D,SAAqB,CAAA;AAAA,EACrB,cAAsC;AAAA,EAEtC,YAAY,SAAsB;AAChC,SAAK,WAAW,SAChB,KAAK,MAAA;AAAA,EACP;AAAA,EAEQ,eAAe,MAAY;AACjC,QAAI,KAAK,cAAc,cAAc,KAAK,cAAc,WAAY,QAAO;AAC3E,QAAI,KAAK,cAAc,cAAc,KAAK,cAAc,WAAY,QAAO;AAAA,EAE7E;AAAA;AAAA,EAGA,eAAeA,MAAK,aAAa,KAAKA,KAAI;AAAA,EAE1C,MAAM,SAAsD;AAC1D,UAAM,OAAO,KAAK,MAAA;AAClB,WAAA,KAAK,SAAS,SACd,KAAK,WAAW,WAAW,QACpB;AAAA,EACT;AAAA,EAEA,QAAQ,SAAsD;AAC5D,UAAM,OAAO,KAAK,MAAA;AAClB,WAAA,KAAK,SAAS,WACd,KAAK,WAAW,WAAW,QACpB;AAAA,EACT;AAAA,EAEA,KAAK,SAAsD;AACzD,UAAM,OAAO,KAAK,MAAA;AAClB,WAAA,KAAK,SAAS,QACd,KAAK,WAAW,WAAW,QACpB;AAAA,EACT;AAAA,EAEA,QAAc;AACZ,WAAA,KAAK,QAAQ,KAAK,SAAS,QAC3B,KAAK,UAAU,KAAK,UAAU,CAAA,GAAI,OAAO,CAAC,SAAS,KAAK,SAAS,MAAM,GACvE,KAAK,WAAW,QAChB,KAAK,YAAY,QACjB,KAAK,SAAS,SACd,KAAK,cAAc,QACZ;AAAA,EACT;AAAA,EAEA,aAAsB;AACpB,WAAO,KAAK,cAAc;AAAA,EAC5B;AAAA,EAEA,QAAc;AACZ,UAAM,OAAO,IAAIA,MAAAA;AACjB,WAAA,KAAK,QAAQ,KAAK,OAClB,KAAK,WAAW,KAAK,UACrB,KAAK,YAAY,KAAK,WACtB,KAAK,SAAS,UAAU,KAAK,MAAM,GACnC,KAAK,SAAS,KAAK,QACnB,KAAK,cAAc,KAAK,aACxB,KAAK,WAAW,KAAK,UACd;AAAA,EACT;AAAA,EAEA,eAAe,OAAyB;AACtC,UAAM,OAAO,KAAK,MAAA,GACZ,+BAAe,IAAA;AACrB,WAAA,MAAM,QAAQ,CAAC,SAAS;AAClB,WAAK,SAAS,WAChB,KAAK,QAAQ,KAAK,aAGpB,SAAS,IAAI,KAAK,IAAI;AAAA,IACxB,CAAC,GAED,KAAK,SAAS,KAAK,OAChB,OAAO,CAAC,SAAS;AAChB,YAAM,oBAAoB,CAAC,QAAQ,OAAO,OAAO,EAAE,SAAS,KAAK,IAAI,GAC/D,cAAc,SAAS,IAAI,KAAK,IAAI;AAC1C,aAAO,EAAE,qBAAqB;AAAA,IAChC,CAAC,EACA,OAAO,KAAK,GAER;AAAA,EACT;AAAA,EAEA,MAAM,MAAkB;AACtB,QAAI,KAAK,SAAS,KAAK,SAAS,KAAK,UAAU,KAAK;AAClD,YAAM,IAAI,MAAM,mCAAmC;AAGrD,UAAM,UAAU,KAAK,eAAe,KAAK,MAAM;AAC/C,WAAA,QAAQ,QAAQ,KAAK,SAAS,KAAK,OACnC,QAAQ,WAAW,KAAK,YAAY,KAAK,UACzC,QAAQ,YAAY,KAAK,eAAe,IAAI,GAC5C,QAAQ,SAAS,KAAK,WAAW,UAAU,KAAK,SAAS,KAAK,QACvD;AAAA,EACT;AAAA;AAAA,EAGA,KAAK,YAAsE;AACzE,UAAM,OAAO,GAAG,WAAW,MAAM,GAAG,CAAC,EAAE,YAAA,CAAa,GAAG,WAAW,MAAM,CAAC,CAAC;AAI1E,QAAI,CAAC,oBAAoB,SAAS,IAAI;AACpC,YAAM,IAAI,MAAM,iBAAiB,UAAU,GAAG;AAGhD,UAAM,OAAO,KAAK,eAAe,CAAC,EAAC,MAAM,QAAQ,YAAY,KAAA,CAAK,CAAC;AACnE,WAAA,KAAK,QAAQ,MACN;AAAA,EACT;AAAA,EAEA,IAAI,UAAwB;AAC1B,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,OAAO,YAAY,SAAA,CAAS,CAAC;AAAA,EAClE;AAAA,EAEA,OAAO,UAAwB;AAC7B,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,UAAU,YAAY,SAAA,CAAS,CAAC;AAAA,EACrE;AAAA;AAAA,EAGA,WAAiB;AACf,UAAM,OAAO,KAAK,eAAe,CAAC,EAAC,MAAM,YAAY,YAAY,WAAA,CAAW,CAAC;AAC7E,WAAA,KAAK,YAAY,YACV;AAAA,EACT;AAAA,EAEA,WAAiB;AACf,UAAM,OAAO,KAAK,eAAe,CAAC,EAAC,MAAM,YAAY,YAAY,WAAA,CAAW,CAAC;AAC7E,WAAA,KAAK,YAAY,YACV;AAAA,EACT;AAAA,EAEA,OACE,IACA,UAA8C,IACxC;AACN,WAAI,QAAQ,0BACV,OAAO,OAAO,IAAI,EAAC,wBAAwB,GAAA,CAAK,GAE3C,KAAK,eAAe,CAAC,EAAC,MAAM,UAAU,YAAY,GAAA,CAAsB,CAAC;AAAA,EAClF;AAAA,EAEA,IAAI,KAA6C;AAC/C,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,OAAO,YAAY,IAAA,CAAI,CAAC;AAAA,EAC7D;AAAA,EAEA,IAAI,KAA6C;AAC/C,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,OAAO,YAAY,IAAA,CAAI,CAAC;AAAA,EAC7D;AAAA,EAEA,OAAO,KAAoC;AACzC,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,UAAU,YAAY,IAAA,CAAI,CAAC;AAAA,EAChE;AAAA,EAEA,MAAM,OAAkC;AACtC,UAAM,SAAS,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AACpD,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,SAAS,YAAY,OAAA,CAAO,CAAC;AAAA,EAClE;AAAA;AAAA,EAGA,UAAgB;AACd,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,UAAA,CAAU,CAAC;AAAA,EAChD;AAAA,EAEA,UAAU,OAAsC;AAC9C,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,aAAa,YAAY,MAAA,CAAM,CAAC;AAAA,EACrE;AAAA,EAEA,WAAiB;AACf,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,OAAO,YAAY,EAAA,CAAE,CAAC;AAAA,EAC3D;AAAA,EAEA,WAAiB;AACf,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,YAAY,YAAY,EAAA,CAAE,CAAC;AAAA,EAChE;AAAA,EAEA,YAAY,KAAoC;AAC9C,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,eAAe,YAAY,IAAA,CAAI,CAAC;AAAA,EACrE;AAAA,EAEA,SAAS,KAAoC;AAC3C,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,YAAY,YAAY,IAAA,CAAI,CAAC;AAAA,EAClE;AAAA;AAAA,EAGA,YAAkB;AAChB,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,gBAAgB,YAAY,YAAA,CAAY,CAAC;AAAA,EAC9E;AAAA,EAEA,YAAkB;AAChB,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,gBAAgB,YAAY,YAAA,CAAY,CAAC;AAAA,EAC9E;AAAA,EAMA,MACE,SACA,GACA,GACM;AACN,UAAM,OAAO,OAAO,KAAM,WAAW,IAAK,GAAG,QAAQ,GAAG,MAClD,SAAS,OAAO,KAAM,WAAW,KAAS,GAAG,UAAU,GAAG,QAE1D,aAA0C;AAAA,MAC9C;AAAA,MACA;AAAA,MACA,QAAQ,UAAU;AAAA,IAAA;AAGpB,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,SAAS,WAAA,CAAW,CAAC;AAAA,EAC1D;AAAA,EAEA,QAAc;AACZ,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,QAAA,CAAQ,CAAC;AAAA,EAC9C;AAAA,EAEA,IAAI,MAKK;AACP,UAAM,aAAa,MAAM,UAAU,CAAC,QAAQ,OAAO,GAC7C,UAAU,MAAM,QAAQ,UAAU,IAAI,aAAa,CAAC,UAAU;AAEpE,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,8CAA8C;AAGhE,UAAM,aAAwC;AAAA,MAC5C,SAAS;AAAA,QACP,QAAQ,QAAQ,IAAI,CAAC,WAAW;AAC9B,cAAI,EAAE,kBAAkB,WAAW,OAAO,UAAW;AACnD,kBAAM,IAAI,MAAM,qCAAqC;AAGvD,iBAAO,OAAO,UAAW,WAAW,IAAI,OAAO,IAAI,YAAY,MAAM,CAAC,GAAG,IAAI;AAAA,QAC/E,CAAC;AAAA,QACD,eAAe,MAAM,iBAAiB;AAAA,QACtC,cAAc,MAAM,gBAAgB;AAAA,QACpC,kBAAkB,MAAM,oBAAoB;AAAA,MAAA;AAAA,IAC9C;AAGF,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,OAAO,WAAA,CAAW,CAAC;AAAA,EACxD;AAAA;AAAA,EAGA,SAAe;AACb,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,SAAA,CAAS,CAAC;AAAA,EAC/C;AAAA;AAAA,EAGA,YAAkB;AAChB,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,YAAA,CAAY,CAAC;AAAA,EAClD;AAAA,EAEA,OAAO,OAAyB;AAC9B,QAAI,KAAK,UAAU;AACjB,YAAM,IAAI,MAAM,+CAA+C;AAGjE,UAAM,OAAO,KAAK,eAAe,EAAE;AACnC,WAAA,KAAK,cAAc,OACZ;AAAA,EACT;AAAA,EAEA,gBAAsB;AACpB,UAAM,OAAO,YAAY,KAAK,QAAQ;AACtC,QAAI;AACJ,WAAI,QAAQ,CAAC,SAAS,MAAM,EAAE,SAAS,KAAK,IAAI,IAC9C,YAAY,KAAK,SAAS,UAAU,UAAU,SAE9C,YAAY,SAGP,KAAK,eAAe,CAAC,EAAC,MAAM,iBAAiB,YAAY,EAAC,UAAA,EAAS,CAAE,CAAC;AAAA,EAC/E;AAAA,EAEA,MAAmD,IAA6B;AAC9E,WAAO,KAAK,eAAe,CAAC,EAAC,MAAM,SAAS,YAAY,GAAA,CAAG,CAAC;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,SACJ,OACA,SAQ6B;AAC7B,UAAM,IAAI,MAAM,+DAA+D;AAAA,EACjF;AACF;AAGA,SAAS,YAAY,MAAsD;AACzE,SAAO,QAAQ,KAAK,OAAO,YAAY,KAAK,IAAI,IAAI;AACtD;AAEA,SAAS,YAAY,QAAwB;AAC3C,SAAO,OAAO,QAAQ,uBAAuB,MAAM;AACrD;"}
1
+ {"version":3,"file":"Rule.js","sources":["../../src/legacy/types/constants.ts","../../src/legacy/types/utils.ts","../../src/legacy/types/any.ts","../../src/legacy/types/array.ts","../../src/legacy/preview/deprecationUtils.ts","../../src/legacy/preview/JSONStringifyHuman.ts","../../src/legacy/preview/fallbackPrepare.ts","../../src/legacy/preview/portableText.ts","../../src/legacy/preview/guessPreviewConfig.ts","../../src/legacy/preview/createPreviewGetter.ts","../../src/legacy/types/blocks/defaults.ts","../../src/legacy/types/blocks/block.ts","../../src/legacy/types/blocks/span.ts","../../src/legacy/preview/primitivePreview.ts","../../src/legacy/types/boolean.ts","../../src/legacy/searchConfig/resolve.ts","../../src/legacy/types/crossDatasetReference.ts","../../src/legacy/types/date.ts","../../src/legacy/types/datetime.ts","../../src/legacy/ordering/guessOrderingConfig.ts","../../src/legacy/searchConfig/normalize.ts","../../src/legacy/types/object.ts","../../src/legacy/types/document.ts","../../src/legacy/types/email.ts","../../src/legacy/types/file.ts","../../src/legacy/types/globalDocumentReference.ts","../../src/legacy/types/image/fieldDefs.ts","../../src/legacy/types/image.ts","../../src/legacy/types/number.ts","../../src/legacy/types/reference.ts","../../src/legacy/types/string.ts","../../src/legacy/types/text.ts","../../src/legacy/types/url.ts","../../src/legacy/Schema.ts","../../src/legacy/Rule.ts"],"sourcesContent":["export const DEFAULT_OVERRIDEABLE_FIELDS = [\n 'jsonType',\n 'type',\n 'name',\n 'title',\n 'description',\n 'options',\n 'fieldsets',\n 'validation',\n 'readOnly',\n 'hidden',\n 'components',\n 'diffComponent',\n 'initialValue',\n 'deprecated',\n]\n\n/**\n * The property name used for each type where we store the \"own props\" of the type.\n * This is the set of properties which are _not_ inherited, but explicitly defined on this type.\n */\nexport const OWN_PROPS_NAME = '_internal_ownProps'\n\nexport const ALL_FIELDS_GROUP_NAME = 'all-fields'\n","interface Config {\n enumerable?: boolean\n writable?: boolean\n}\nexport function lazyGetter(target: any, key: any, getter: any, config: Config = {}) {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: config.enumerable !== false,\n get() {\n const val = getter()\n Object.defineProperty(target, key, {\n value: val,\n writable: Boolean(config.writable),\n configurable: false,\n })\n return val\n },\n })\n return target\n}\n\nexport function hiddenGetter(target: any, key: string, value: unknown) {\n Object.defineProperty(target, key, {\n enumerable: false,\n writable: false,\n configurable: false,\n value,\n })\n}\n\n//\n// const o = lazyGetter({}, 'expensive', function() {\n// console.log('doing expensive calculations')\n// return 'RESULT OF EXPENSIVE'\n// })\n//\n// console.log(o.expensive)\n// console.log(o.expensive)\n// console.log(o.expensive)\n","import {omit, pick} from 'lodash-es'\n\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst ANY_CORE = {\n name: 'any',\n type: null,\n jsonType: 'any',\n}\n\nexport const AnyType = {\n get() {\n return ANY_CORE\n },\n extend(subTypeDef: any, extendMember: any) {\n const ownProps = {\n ...subTypeDef,\n of: subTypeDef.of.map((fieldDef: any) => {\n return {\n name: fieldDef.name,\n type: extendMember(omit(fieldDef, 'name')),\n }\n }),\n }\n\n const parsed = Object.assign(pick(ANY_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: ANY_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` property of subtypes of \"array\"')\n }\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash-es'\n\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst ARRAY_CORE = {\n name: 'array',\n type: null,\n jsonType: 'array',\n of: [],\n}\n\nexport const ArrayType = {\n get() {\n return ARRAY_CORE\n },\n extend(subTypeDef: any, createMemberType: any) {\n const parsed = Object.assign(pick(ARRAY_CORE, OVERRIDABLE_FIELDS), subTypeDef, {\n type: ARRAY_CORE,\n })\n lazyGetter(parsed, 'of', () => {\n return subTypeDef.of.map((ofTypeDef: any) => createMemberType.cached(ofTypeDef))\n })\n lazyGetter(parsed, OWN_PROPS_NAME, () => ({...subTypeDef, of: parsed.of}), {\n enumerable: false,\n writable: false,\n })\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` property of subtypes of \"array\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","export function warnIfPreviewOnOptions(type: any) {\n if (type.options && type.options.preview) {\n console.warn(`Heads up! The preview config is no longer defined on \"options\", but instead on the type/field itself.\nPlease move {options: {preview: ...}} to {..., preview: ...} on the type/field definition of \"${type.name}\".\n`)\n }\n}\n\nexport function warnIfPreviewHasFields(type: any) {\n const preview = type.preview || (type.options || {}).preview\n if (preview && 'fields' in preview) {\n console.warn(`Heads up! \"preview.fields\" should be renamed to \"preview.select\". Please update the preview config for \"${type.name}\".\n`)\n }\n}\n","import {pick} from 'lodash-es'\n\nfunction isEmpty(object: any) {\n for (const key in object) {\n if (object.hasOwnProperty(key)) {\n return false\n }\n }\n return true\n}\n\nfunction _stringify(value: any, options: any, depth: any): any {\n if (depth > options.maxDepth) {\n return '...'\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[empty]'\n }\n const capLength = Math.max(value.length - options.maxBreadth)\n const asString: any = value\n .slice(0, options.maxBreadth)\n .map((item, index) => _stringify(item, options, depth + 1))\n .concat(capLength > 0 ? `…+${capLength}` : [])\n .join(', ')\n\n return depth === 0 ? asString : `[${asString}]`\n }\n if (typeof value === 'object' && value !== null) {\n const keys = Object.keys(value).filter(\n (key) => !options.ignoreKeys.includes(key) && typeof value[key] !== 'undefined',\n )\n\n if (isEmpty(pick(value, keys))) {\n return '{empty}'\n }\n\n const asString = keys\n .slice(0, options.maxBreadth)\n .map((key) => `${key}: ${_stringify(value[key], options, depth + 1)}`)\n .join(', ')\n\n return depth === 0 ? asString : `{${asString}}`\n }\n const asString = String(value)\n return asString === '' ? '\"\"' : asString\n}\n\nexport default function stringify(\n value: any,\n options: {maxDepth?: number; maxBreadth?: number; ignoreKeys?: string[]} = {},\n) {\n const opts = {\n maxDepth: 'maxDepth' in options ? options.maxDepth : 2,\n maxBreadth: 'maxBreadth' in options ? options.maxBreadth : 2,\n ignoreKeys: 'ignoreKeys' in options ? options.ignoreKeys : [],\n }\n return _stringify(value, opts, 0)\n}\n","import {pick} from 'lodash-es'\n\nimport stringify from './JSONStringifyHuman'\n\nconst OPTIONS = {\n maxEntries: 2,\n maxDepth: 2,\n maxBreadth: 2,\n ignoreKeys: ['_id', '_type', '_key', '_ref'],\n}\n\nexport function createFallbackPrepare(fieldNames: any) {\n return (value: any) => ({\n title: stringify(pick(value, fieldNames), OPTIONS),\n })\n}\n","type FieldDef = {\n type: string\n name: string\n of?: {type: string}[]\n}\n\nexport function isBlockField(field: FieldDef): boolean {\n return (\n (field.type === 'array' && field.of && field.of.some((member) => member.type === 'block')) ||\n false\n )\n}\n","import arrify from 'arrify'\nimport {isUndefined, omitBy} from 'lodash-es'\n\nimport {createFallbackPrepare} from './fallbackPrepare'\nimport {isBlockField} from './portableText'\n\nconst TITLE_CANDIDATES = ['title', 'name', 'label', 'heading', 'header', 'caption']\nconst DESCRIPTION_CANDIDATES = ['description', ...TITLE_CANDIDATES]\n\nfunction fieldHasReferenceTo(fieldDef: any, refType: any) {\n return arrify(fieldDef.to || []).some((memberTypeDef: any) => memberTypeDef.type === refType)\n}\n\nfunction isImageAssetField(fieldDef: any) {\n return fieldHasReferenceTo(fieldDef, 'sanity.imageAsset')\n}\n\nfunction resolveImageAssetPath(typeDef: any) {\n const fields = typeDef.fields || []\n const imageAssetField = fields.find(isImageAssetField)\n if (imageAssetField) {\n return imageAssetField.name\n }\n const fieldWithImageAsset = fields.find((fieldDef: any) =>\n (fieldDef.fields || []).some(isImageAssetField),\n )\n\n return fieldWithImageAsset ? `${fieldWithImageAsset.name}.asset` : undefined\n}\n\nfunction isFileAssetField(fieldDef: any) {\n return fieldHasReferenceTo(fieldDef, 'sanity.fileAsset')\n}\n\nfunction resolveFileAssetPath(typeDef: any) {\n const fields = typeDef.fields || []\n const assetField = fields.find(isFileAssetField)\n if (assetField) {\n return assetField.name\n }\n const fieldWithFileAsset = fields.find((fieldDef: any) =>\n (fieldDef.fields || []).some(isFileAssetField),\n )\n return fieldWithFileAsset ? `${fieldWithFileAsset.name}.asset` : undefined\n}\n\nexport default function guessPreviewFields(\n rawObjectTypeDef: any,\n):\n | {select: any; prepare: (value: any) => {title: any}}\n | {prepare?: undefined; select: {[index: string]: any}} {\n const objectTypeDef = {fields: [], ...rawObjectTypeDef}\n\n const stringFieldNames = objectTypeDef.fields\n .filter((field: any) => field.type === 'string')\n .map((field: any) => field.name)\n\n const blockFieldNames = objectTypeDef.fields.filter(isBlockField).map((field: any) => field.name)\n\n // Check if we have fields with names that is listed in candidate fields\n let titleField = TITLE_CANDIDATES.find(\n (candidate) => stringFieldNames.includes(candidate) || blockFieldNames.includes(candidate),\n )\n\n let descField = DESCRIPTION_CANDIDATES.find(\n (candidate) =>\n candidate !== titleField &&\n (stringFieldNames.includes(candidate) || blockFieldNames.includes(candidate)),\n )\n\n if (!titleField) {\n // Pick first defined string field\n titleField = stringFieldNames[0] || blockFieldNames[0]\n // Pick next as desc\n descField = stringFieldNames[1] || blockFieldNames[1]\n }\n\n const mediaField = objectTypeDef.fields.find((field: any) => field.type === 'image')\n\n const imageAssetPath = resolveImageAssetPath(objectTypeDef)\n\n if (!titleField) {\n const fileAssetPath = resolveFileAssetPath(objectTypeDef)\n if (fileAssetPath) {\n titleField = `${fileAssetPath}.originalFilename`\n }\n if (imageAssetPath) {\n titleField = `${imageAssetPath}.originalFilename`\n }\n }\n\n if (!titleField && !imageAssetPath) {\n // last resort, pick all fields and concat them\n const fieldNames = objectTypeDef.fields.map((field: any) => field.name)\n const fieldMapping = fieldNames.reduce((acc: any, fieldName: any) => {\n acc[fieldName] = fieldName\n return acc\n }, {})\n\n return {\n select: fieldMapping,\n prepare: createFallbackPrepare(fieldNames),\n }\n }\n\n const select = omitBy(\n {\n title: titleField,\n description: descField,\n media: mediaField ? mediaField.name : imageAssetPath,\n },\n isUndefined,\n )\n\n return {\n select: select,\n }\n}\n","import {pick} from 'lodash-es'\n\nimport {warnIfPreviewHasFields, warnIfPreviewOnOptions} from './deprecationUtils'\nimport guessPreviewConfig from './guessPreviewConfig'\n\nfunction parseSelection(selection: any) {\n return selection.reduce((acc: any, field: any) => {\n acc[field] = field\n return acc\n }, {})\n}\n\nfunction parsePreview(preview: any) {\n if (!preview) {\n return preview\n }\n const select = preview.select || preview.fields || {}\n if (Array.isArray(select)) {\n return {\n ...pick(preview, ['prepare', 'component']),\n select: parseSelection(select),\n }\n }\n return {\n ...pick(preview, ['prepare', 'component']),\n select,\n }\n}\n\nexport default function createPreviewGetter(objectTypeDef: any) {\n return function previewGetter() {\n warnIfPreviewOnOptions(objectTypeDef)\n warnIfPreviewHasFields(objectTypeDef)\n const preview = parsePreview(objectTypeDef.preview || (objectTypeDef.options || {}).preview)\n return preview || guessPreviewConfig(objectTypeDef)\n }\n}\n","export const DEFAULT_LINK_ANNOTATION = {\n type: 'object',\n name: 'link',\n title: 'Link',\n i18nTitleKey: 'inputs.portable-text.annotation.link',\n options: {\n modal: {type: 'popover'},\n },\n fields: [\n {\n name: 'href',\n type: 'url',\n title: 'Link',\n description: 'A valid web, email, phone, or relative link.',\n validation: (Rule: any) =>\n Rule.uri({\n scheme: ['http', 'https', 'tel', 'mailto'],\n allowRelative: true,\n }),\n },\n ],\n}\n\nexport const DEFAULT_TEXT_FIELD = {\n type: 'text',\n name: 'text',\n title: 'Text',\n}\n\nexport const DEFAULT_MARKS_FIELD = {\n name: 'marks',\n type: 'array',\n of: [{type: 'string'}],\n title: 'Marks',\n}\n\nexport const LIST_TYPES = {\n bullet: {\n title: 'Bulleted list',\n value: 'bullet',\n i18nTitleKey: 'inputs.portable-text.list-type.bullet',\n },\n numbered: {\n title: 'Numbered list',\n value: 'number',\n i18nTitleKey: 'inputs.portable-text.list-type.number',\n },\n}\n\nexport const DEFAULT_LIST_TYPES = [LIST_TYPES.bullet, LIST_TYPES.numbered]\n\nexport const BLOCK_STYLES = {\n normal: {title: 'Normal', value: 'normal', i18nTitleKey: 'inputs.portable-text.style.normal'},\n h1: {title: 'Heading 1', value: 'h1', i18nTitleKey: 'inputs.portable-text.style.h1'},\n h2: {title: 'Heading 2', value: 'h2', i18nTitleKey: 'inputs.portable-text.style.h2'},\n h3: {title: 'Heading 3', value: 'h3', i18nTitleKey: 'inputs.portable-text.style.h3'},\n h4: {title: 'Heading 4', value: 'h4', i18nTitleKey: 'inputs.portable-text.style.h4'},\n h5: {title: 'Heading 5', value: 'h5', i18nTitleKey: 'inputs.portable-text.style.h5'},\n h6: {title: 'Heading 6', value: 'h6', i18nTitleKey: 'inputs.portable-text.style.h6'},\n blockquote: {\n title: 'Quote',\n value: 'blockquote',\n i18nTitleKey: 'inputs.portable-text.style.quote',\n },\n}\n\nexport const DEFAULT_BLOCK_STYLES = [\n BLOCK_STYLES.normal,\n BLOCK_STYLES.h1,\n BLOCK_STYLES.h2,\n BLOCK_STYLES.h3,\n BLOCK_STYLES.h4,\n BLOCK_STYLES.h5,\n BLOCK_STYLES.h6,\n BLOCK_STYLES.blockquote,\n]\n\nexport const DECORATOR_STRONG = {\n title: 'Strong',\n value: 'strong',\n i18nTitleKey: 'inputs.portable-text.decorator.strong',\n}\nexport const DECORATOR_EMPHASIS = {\n title: 'Italic',\n value: 'em',\n i18nTitleKey: 'inputs.portable-text.decorator.emphasis',\n}\nexport const DECORATOR_CODE = {\n title: 'Code',\n value: 'code',\n i18nTitleKey: 'inputs.portable-text.decorator.code',\n}\nexport const DECORATOR_UNDERLINE = {\n title: 'Underline',\n value: 'underline',\n i18nTitleKey: 'inputs.portable-text.decorator.underline',\n}\nexport const DECORATOR_STRIKE = {\n title: 'Strike',\n value: 'strike-through',\n i18nTitleKey: 'inputs.portable-text.decorator.strike-through',\n}\n\nexport const DECORATORS = {\n strong: DECORATOR_STRONG,\n em: DECORATOR_EMPHASIS,\n code: DECORATOR_CODE,\n underline: DECORATOR_UNDERLINE,\n strikeThrough: DECORATOR_STRIKE,\n}\n\nexport const DEFAULT_DECORATORS = [\n DECORATORS.strong,\n DECORATORS.em,\n DECORATORS.code,\n DECORATORS.underline,\n DECORATORS.strikeThrough,\n]\n","import {pick} from 'lodash-es'\n\nimport createPreviewGetter from '../../preview/createPreviewGetter'\nimport {OWN_PROPS_NAME} from '../constants'\nimport {hiddenGetter, lazyGetter} from '../utils'\nimport {\n BLOCK_STYLES,\n DEFAULT_BLOCK_STYLES,\n DEFAULT_DECORATORS,\n DEFAULT_LINK_ANNOTATION,\n DEFAULT_LIST_TYPES,\n DEFAULT_MARKS_FIELD,\n DEFAULT_TEXT_FIELD,\n} from './defaults'\n\nconst INHERITED_FIELDS = [\n 'type',\n 'name',\n 'title',\n 'jsonType',\n 'description',\n 'options',\n 'fieldsets',\n 'icon',\n]\n\nconst BLOCK_CORE = {\n name: 'block',\n title: 'Block',\n type: null,\n jsonType: 'object',\n}\n\nconst DEFAULT_OPTIONS = {}\n\nexport const BlockType = {\n get() {\n return BLOCK_CORE\n },\n extend(subTypeDef: any, extendMember: any) {\n const options = {...(subTypeDef.options || DEFAULT_OPTIONS)}\n\n const {marks, styles, lists, of, ...rest} = subTypeDef\n\n const childrenField = createChildrenField(marks, of)\n const styleField = createStyleField(styles)\n const listItemField = createListItemField(lists)\n\n const markDefsField = {\n name: 'markDefs',\n title: 'Mark definitions',\n type: 'array',\n of: marks?.annotations || DEFAULT_ANNOTATIONS,\n }\n\n const levelField = {\n name: 'level',\n title: 'Indentation',\n type: 'number',\n }\n\n // NOTE: if you update this (EVEN THE ORDER OF FIELDS) you _NEED TO_ also\n // update `BlockSchemaType`, `isBlockSchemaType` and similar in `@sanity/types`\n const fields = [childrenField, styleField, listItemField, markDefsField, levelField].concat(\n subTypeDef.fields || [],\n )\n\n const ownProps = {...rest, options}\n\n const parsed = Object.assign(pick(BLOCK_CORE, INHERITED_FIELDS), ownProps, {\n type: BLOCK_CORE,\n })\n\n lazyGetter(parsed, 'fields', () => {\n return fields.map((fieldDef) => extendMember.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'preview', createPreviewGetter(subTypeDef))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...ownProps,\n fields: parsed.fields,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"block\"')\n }\n const subOwnProps = pick(extensionDef, INHERITED_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n\nfunction ensureNormalStyle(styles: any) {\n return styles.some((style: any) => style.value === 'normal')\n ? styles\n : [BLOCK_STYLES.normal, ...styles]\n}\n\nfunction createStyleField(styles: any) {\n return {\n name: 'style',\n title: 'Style',\n type: 'string',\n options: {\n list: ensureNormalStyle(styles || DEFAULT_BLOCK_STYLES),\n },\n }\n}\n\nfunction createListItemField(lists: any) {\n return {\n name: 'listItem',\n title: 'List type',\n type: 'string',\n options: {\n list: lists || DEFAULT_LIST_TYPES,\n },\n }\n}\n\nconst DEFAULT_ANNOTATIONS = [DEFAULT_LINK_ANNOTATION]\n\nfunction createChildrenField(marks: any, of = []) {\n return {\n name: 'children',\n title: 'Content',\n type: 'array',\n of: [\n {\n type: 'span',\n fields: [DEFAULT_TEXT_FIELD, DEFAULT_MARKS_FIELD],\n annotations: marks && marks.annotations ? marks.annotations : DEFAULT_ANNOTATIONS,\n decorators: marks && marks.decorators ? marks.decorators : DEFAULT_DECORATORS,\n },\n ...of.filter((memberType: any) => memberType.type !== 'span'),\n ],\n }\n}\n","import {pick} from 'lodash-es'\n\nimport createPreviewGetter from '../../preview/createPreviewGetter'\nimport {OWN_PROPS_NAME} from '../constants'\nimport {hiddenGetter, lazyGetter} from '../utils'\n\nconst INHERITED_FIELDS = [\n 'type',\n 'name',\n 'title',\n 'jsonType',\n 'description',\n 'options',\n 'fieldsets',\n 'icon',\n]\n\nconst SPAN_CORE = {\n name: 'span',\n title: 'Span',\n type: null,\n jsonType: 'object',\n}\n\nconst MARKS_FIELD = {\n name: 'marks',\n title: 'Marks',\n type: 'array',\n of: [{type: 'string'}],\n}\n\nconst TEXT_FIELD = {\n name: 'text',\n title: 'Text',\n type: 'string',\n}\n\nconst DEFAULT_OPTIONS = {}\n\nexport const SpanType = {\n get() {\n return SPAN_CORE\n },\n extend(subTypeDef: any, extendMember: any) {\n const options = {...(subTypeDef.options || DEFAULT_OPTIONS)}\n\n const {annotations = [], marks = []} = subTypeDef\n\n // NOTE: if you update this please also update `SpanSchemaType` in`@sanity/types`\n const fields = [MARKS_FIELD, TEXT_FIELD]\n\n const ownProps = {...subTypeDef, options}\n\n const parsed = Object.assign(pick(SPAN_CORE, INHERITED_FIELDS), ownProps, {\n type: SPAN_CORE,\n })\n\n lazyGetter(parsed, 'fields', () => {\n return fields.map((fieldDef) => extendMember.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'annotations', () => annotations.map(extendMember))\n lazyGetter(parsed, 'marks', () => marks.map(extendMember))\n\n lazyGetter(parsed, 'preview', createPreviewGetter(subTypeDef))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...ownProps,\n fields: parsed.fields,\n annotations: parsed.annotations,\n marks: parsed.marks,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"span\"')\n }\n const subOwnProps = pick(extensionDef, INHERITED_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","export default {\n prepare: (val: any) => ({title: String(val)}),\n}\n","import {pick} from 'lodash-es'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst BOOLEAN_CORE = {\n name: 'boolean',\n title: 'Boolean',\n type: null,\n jsonType: 'boolean',\n}\n\nexport const BooleanType = {\n get() {\n return BOOLEAN_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n const parsed = Object.assign(pick(BOOLEAN_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: BOOLEAN_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {isFinite, uniqBy} from 'lodash-es'\n\nexport const DEFAULT_MAX_FIELD_DEPTH = 5\n\nconst stringFieldsSymbols = {} as Record<number, symbol>\n\nconst getStringFieldSymbol = (maxDepth: number) => {\n if (!stringFieldsSymbols[maxDepth]) {\n stringFieldsSymbols[maxDepth] = Symbol(`__cachedStringFields_${maxDepth}`)\n }\n\n return stringFieldsSymbols[maxDepth]\n}\n\nconst isReference = (type: any) => type.type && type.type.name === 'reference'\n\nconst portableTextFields = ['style', 'list']\nconst isPortableTextBlock: any = (type: any) =>\n type.name === 'block' || (type.type && isPortableTextBlock(type.type))\nconst isPortableTextArray = (type: any) =>\n type.jsonType === 'array' && Array.isArray(type.of) && type.of.some(isPortableTextBlock)\n\nfunction reduceType(type: any, reducer: any, acc: any, path = [], maxDepth: any) {\n if (maxDepth < 0) {\n return acc\n }\n\n const accumulator = reducer(acc, type, path)\n if (type.jsonType === 'array' && Array.isArray(type.of)) {\n return reduceArray(type, reducer, accumulator, path, maxDepth)\n }\n\n if (type.jsonType === 'object' && Array.isArray(type.fields) && !isReference(type)) {\n return reduceObject(type, reducer, accumulator, path, maxDepth)\n }\n\n return accumulator\n}\n\nfunction reduceArray(arrayType: any, reducer: any, accumulator: any, path: any, maxDepth: any) {\n return arrayType.of.reduce(\n (acc: any, ofType: any) => reduceType(ofType, reducer, acc, path, maxDepth - 1),\n accumulator,\n )\n}\n\nfunction reduceObject(objectType: any, reducer: any, accumulator: any, path: any, maxDepth: any) {\n const isPtBlock = isPortableTextBlock(objectType)\n return objectType.fields.reduce((acc: any, field: any) => {\n // Don't include styles and list types as searchable paths for portable text blocks\n if (isPtBlock && portableTextFields.includes(field.name)) {\n return acc\n }\n\n const segment = [field.name].concat(field.type.jsonType === 'array' ? [[]] : [])\n return reduceType(field.type, reducer, acc, path.concat(segment), maxDepth - 1)\n }, accumulator)\n}\n\nconst BASE_WEIGHTS = [\n {weight: 1, path: ['_id']},\n {weight: 1, path: ['_type']},\n]\n\nconst PREVIEW_FIELD_WEIGHT_MAP = {\n title: 10,\n subtitle: 5,\n description: 1.5,\n}\n\n/**\n * @internal\n */\nexport function deriveFromPreview(\n type: {\n preview: {select: Record<string, string>}\n },\n maxDepth: number,\n): {weight?: number; path: (string | number)[]}[] {\n const select = type?.preview?.select\n\n if (!select) {\n return []\n }\n\n const fields: {weight: number; path: (string | number)[]}[] = []\n\n for (const fieldName of Object.keys(select)) {\n if (!(fieldName in PREVIEW_FIELD_WEIGHT_MAP)) {\n continue\n }\n\n const path = select[fieldName].split('.')\n\n if (maxDepth > -1 && path.length - 1 > maxDepth) {\n continue\n }\n\n fields.push({\n weight: (PREVIEW_FIELD_WEIGHT_MAP as any)[fieldName],\n path,\n })\n }\n\n return fields\n}\n\nfunction getCachedStringFieldPaths(type: any, maxDepth: number) {\n const symbol = getStringFieldSymbol(maxDepth)\n if (!type[symbol]) {\n type[symbol] = uniqBy(\n [\n ...BASE_WEIGHTS,\n ...deriveFromPreview(type, maxDepth),\n ...getStringFieldPaths(type, maxDepth).map((path: any) => ({weight: 1, path})),\n ...getPortableTextFieldPaths(type, maxDepth).map((path: any) => ({\n weight: 1,\n path,\n mapWith: 'pt::text',\n })),\n ],\n (spec) => spec.path.join('.'),\n )\n }\n return type[symbol]\n}\n\nfunction getCachedBaseFieldPaths(type: any, maxDepth: number) {\n const symbol = getStringFieldSymbol(maxDepth)\n if (!type[symbol]) {\n type[symbol] = uniqBy([...BASE_WEIGHTS, ...deriveFromPreview(type, maxDepth)], (spec) =>\n spec.path.join('.'),\n )\n }\n return type[symbol]\n}\n\nfunction getStringFieldPaths(type: any, maxDepth: number) {\n const reducer = (accumulator: any, childType: any, path: any) =>\n childType.jsonType === 'string' ? [...accumulator, path] : accumulator\n\n return reduceType(type, reducer, [], [], maxDepth)\n}\n\nfunction getPortableTextFieldPaths(type: any, maxDepth: any) {\n const reducer = (accumulator: any, childType: any, path: any) =>\n isPortableTextArray(childType) ? [...accumulator, path] : accumulator\n\n return reduceType(type, reducer, [], [], maxDepth)\n}\n\nexport function resolveSearchConfigForBaseFieldPaths(type: any, maxDepth?: number) {\n return getCachedBaseFieldPaths(type, normalizeMaxDepth(maxDepth))\n}\n\n/**\n * @internal\n */\nexport function resolveSearchConfig(type: any, maxDepth?: number) {\n return getCachedStringFieldPaths(type, normalizeMaxDepth(maxDepth))\n}\n\n/**\n * Normalizes a one-indexed maxDepth to a zero-indexed maxDepth\n * 0 = all fields\n *\n * @internal\n */\nfunction normalizeMaxDepth(maxDepth?: number) {\n if (!isFinite(maxDepth) || maxDepth! < 1 || maxDepth! > DEFAULT_MAX_FIELD_DEPTH) {\n return DEFAULT_MAX_FIELD_DEPTH - 1\n }\n\n return maxDepth! - 1\n}\n","import arrify from 'arrify'\nimport {capitalize, pick} from 'lodash-es'\n\nimport {resolveSearchConfigForBaseFieldPaths} from '../searchConfig/resolve'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nexport const REF_FIELD = {\n name: '_ref',\n title: 'Referenced document ID',\n type: 'string',\n}\n\nexport const WEAK_FIELD = {\n name: '_weak',\n title: 'Weak reference marker',\n type: 'boolean',\n}\n\nconst DATASET_FIELD = {\n name: '_dataset',\n title: 'Target dataset',\n type: 'string',\n}\n\nconst PROJECT_ID_FIELD = {\n name: '_projectId',\n title: 'Target project ID',\n type: 'string',\n hidden: true,\n}\n\nconst REFERENCE_FIELDS = [REF_FIELD, WEAK_FIELD, DATASET_FIELD, PROJECT_ID_FIELD]\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst CROSS_DATASET_REFERENCE_CORE = {\n name: 'crossDatasetReference',\n type: null,\n jsonType: 'object',\n}\n\nfunction humanize(arr: any, conjunction: any) {\n const len = arr.length\n if (len === 1) {\n return arr[0]\n }\n const first = arr.slice(0, len - 1)\n const last = arr[len - 1]\n return `${first.join(', ')} ${conjunction} ${last}`\n}\n\nfunction buildTitle(type: any) {\n if (!type.to || type.to.length === 0) {\n return 'Cross dataset Reference'\n }\n return `Cross dataset reference to ${humanize(\n arrify(type.to).map((toType: any) => toType.title || capitalize(toType.type)),\n 'or',\n ).toLowerCase()}`\n}\n\nexport const CrossDatasetReferenceType = {\n get() {\n return CROSS_DATASET_REFERENCE_CORE\n },\n extend(subTypeDef: any, createMemberType: any) {\n if (!subTypeDef.to) {\n throw new Error(\n `Missing \"to\" field in cross dataset reference definition. Check the type ${subTypeDef.name}`,\n )\n }\n const parsed = Object.assign(\n pick(CROSS_DATASET_REFERENCE_CORE, OVERRIDABLE_FIELDS),\n subTypeDef,\n {\n type: CROSS_DATASET_REFERENCE_CORE,\n },\n )\n\n lazyGetter(parsed, 'fields', () => {\n return REFERENCE_FIELDS.map((fieldDef) => createMemberType.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'to', () => {\n return arrify(subTypeDef.to).map((toType: any) => {\n return {\n ...toType,\n // eslint-disable-next-line camelcase\n __experimental_search: resolveSearchConfigForBaseFieldPaths(toType),\n }\n })\n })\n\n lazyGetter(parsed, 'title', () => subTypeDef.title || buildTitle(parsed))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n fields: parsed.fields,\n to: parsed.to,\n title: parsed.title,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` of subtypes of \"reference\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash-es'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst DATE_CORE = {\n name: 'date',\n title: 'Datetime',\n type: null,\n jsonType: 'string',\n}\n\nexport const DateType = {\n get() {\n return DATE_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n const parsed = Object.assign(pick(DATE_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: DATE_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash-es'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst DATETIME_CORE = {\n name: 'datetime',\n title: 'Datetime',\n type: null,\n jsonType: 'string',\n}\n\nexport const DateTimeType = {\n get() {\n return DATETIME_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n const parsed = Object.assign(pick(DATETIME_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: DATETIME_CORE,\n })\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {type SortOrdering} from '@sanity/types'\nimport {capitalize, startCase} from 'lodash-es'\n\nconst CANDIDATES = ['title', 'name', 'label', 'heading', 'header', 'caption', 'description']\n\nconst PRIMITIVES = ['string', 'boolean', 'number']\n\nconst isPrimitive = (field: any) => PRIMITIVES.includes(field.type)\n\nexport default function guessOrderingConfig(objectTypeDef: any): SortOrdering[] {\n let candidates = CANDIDATES.filter((candidate) =>\n objectTypeDef.fields.some((field: any) => isPrimitive(field) && field.name === candidate),\n )\n\n // None of the candidates were found, fallback to all fields\n if (candidates.length === 0) {\n candidates = objectTypeDef.fields.filter(isPrimitive).map((field: any) => field.name)\n }\n\n return candidates.map(\n (name): SortOrdering => ({\n name: name,\n i18n: {\n title: {key: `default-orderings.${name}`, ns: 'studio'},\n },\n title: capitalize(startCase(name)),\n by: [{field: name, direction: 'asc'}],\n }),\n )\n}\n","import {isPlainObject, toPath} from 'lodash-es'\n\nexport function normalizeSearchConfigs(configs: any) {\n if (!Array.isArray(configs)) {\n throw new Error(\n 'The search config of a document type must be an array of search config objects',\n )\n }\n return configs.map((conf) => {\n if (conf === 'defaults') {\n return conf\n }\n if (!isPlainObject(conf)) {\n throw new Error('Search config must be an object of {path: string, weight: number}')\n }\n return {\n weight: 'weight' in conf ? conf.weight : 1,\n path: toPath(conf.path),\n mapWith: typeof conf.mapWith === 'string' ? conf.mapWith : undefined,\n }\n })\n}\n","import {\n type FieldGroup,\n type FieldGroupDefinition,\n type Fieldset,\n type FieldsetDefinition,\n type ObjectDefinition,\n type ObjectField,\n} from '@sanity/types'\nimport {castArray, flatMap, pick, startCase} from 'lodash-es'\n\nimport guessOrderingConfig from '../ordering/guessOrderingConfig'\nimport createPreviewGetter from '../preview/createPreviewGetter'\nimport {normalizeSearchConfigs} from '../searchConfig/normalize'\nimport {resolveSearchConfig} from '../searchConfig/resolve'\nimport {ALL_FIELDS_GROUP_NAME, DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [\n ...DEFAULT_OVERRIDEABLE_FIELDS,\n 'orderings',\n '__experimental_search',\n 'blockEditor',\n 'icon',\n]\n\nexport const ObjectType = {\n get() {\n return {\n name: 'object',\n title: 'Object',\n type: null,\n jsonType: 'object',\n }\n },\n extend(rawSubTypeDef: any, createMemberType: any) {\n const subTypeDef = {fields: [], ...rawSubTypeDef}\n\n const options = {...subTypeDef.options}\n\n const ownProps = {\n ...subTypeDef,\n title: subTypeDef.title || (subTypeDef.name ? startCase(subTypeDef.name) : 'Object'),\n options: options,\n orderings: subTypeDef.orderings || guessOrderingConfig(subTypeDef),\n fields: subTypeDef.fields.map((fieldDef: any) =>\n createMemberType.cachedObjectField(fieldDef),\n ),\n }\n\n const parsed = Object.assign(pick(this.get(), OVERRIDABLE_FIELDS), ownProps, {\n type: this.get(),\n })\n\n lazyGetter(parsed, 'fieldsets', () => {\n return createFieldsets(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'groups', () => {\n return createFieldsGroups(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'preview', createPreviewGetter(subTypeDef))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...ownProps,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n lazyGetter(\n parsed,\n '__experimental_search',\n () => {\n const userProvidedSearchConfig = subTypeDef.__experimental_search\n ? normalizeSearchConfigs(subTypeDef.__experimental_search)\n : null\n\n if (userProvidedSearchConfig) {\n return userProvidedSearchConfig.map((entry) =>\n entry === 'defaults' ? normalizeSearchConfigs(subTypeDef) : entry,\n )\n }\n return resolveSearchConfig(parsed)\n },\n {\n enumerable: false,\n },\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"object\"')\n }\n\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n subOwnProps.title =\n extensionDef.title ||\n subTypeDef.title ||\n (subTypeDef.name ? startCase(subTypeDef.name) : 'Object')\n\n const current = Object.assign({}, parent, pick(extensionDef, OVERRIDABLE_FIELDS), {\n type: parent,\n })\n lazyGetter(current, '__experimental_search', () => parent.__experimental_search)\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n\nexport function createFieldsets(typeDef: ObjectDefinition, fields: ObjectField[]): Fieldset[] {\n const fieldsetsByName: Record<string, FieldsetDefinition & {fields: ObjectField[]}> = {}\n\n for (const fieldset of typeDef.fieldsets || []) {\n if (fieldsetsByName[fieldset.name]) {\n throw new Error(\n `Duplicate fieldset name \"${fieldset.name}\" found for type '${\n typeDef.title ? typeDef.title : startCase(typeDef.name)\n }'`,\n )\n }\n\n fieldsetsByName[fieldset.name] = {title: startCase(fieldset.name), ...fieldset, fields: []}\n }\n\n const fieldsets = new Set<Fieldset>()\n\n for (const field of fields) {\n if (!field.fieldset) {\n fieldsets.add({single: true, field})\n continue\n }\n\n const fieldset = fieldsetsByName[field.fieldset]\n if (!fieldset) {\n throw new Error(\n `Fieldset '${field.fieldset}' is not defined in schema for type '${typeDef.name}'`,\n )\n }\n\n fieldset.fields.push(field)\n\n // The Set will prevent duplicates\n fieldsets.add(fieldset)\n }\n\n return Array.from(fieldsets)\n}\n\nfunction createFieldsGroups(typeDef: ObjectDefinition, fields: ObjectField[]): FieldGroup[] {\n const groupsByName: Record<string, FieldGroupDefinition & {fields: ObjectField[]}> = {}\n\n let numDefaultGroups = 0\n for (const group of typeDef.groups || []) {\n if (groupsByName[group.name]) {\n throw new Error(\n `Duplicate group name \"${group.name}\" found for type '${\n typeDef.title ? typeDef.title : startCase(typeDef.name)\n }'`,\n )\n }\n\n groupsByName[group.name] = {title: startCase(group.name), ...group, fields: []}\n\n if (group.default && ++numDefaultGroups > 1) {\n // Throw if you have multiple default field groups defined\n throw new Error(\n `More than one field group defined as default for type '${\n typeDef.title ? typeDef.title : startCase(typeDef.name)\n }' - only 1 is supported`,\n )\n }\n }\n\n fields.forEach((field) => {\n const fieldGroupNames = castArray(field.group || [])\n if (fieldGroupNames.length === 0) {\n return\n }\n\n fieldGroupNames.forEach((fieldGroupName) => {\n const currentGroup = groupsByName[fieldGroupName]\n\n if (!currentGroup) {\n throw new Error(\n `Field group '${fieldGroupName}' is not defined in schema for type '${\n typeDef.title ? typeDef.name : startCase(typeDef.name)\n }'`,\n )\n }\n\n currentGroup.fields.push(field)\n })\n })\n\n return flatMap(groupsByName).filter(\n // All fields group is added by default in structure.\n // To pass the properties from the schema to the form state, we need to include it in the list of groups.\n (group) => group.fields.length > 0 || group.name === ALL_FIELDS_GROUP_NAME,\n )\n}\n","import {ObjectType} from './object'\n\nconst DOCUMENT_CORE = {\n name: 'document',\n title: 'Document',\n type: null,\n jsonType: 'object',\n}\n\nexport const DocumentType = {\n get() {\n return DOCUMENT_CORE\n },\n extend: ObjectType.extend,\n}\n","import {pick} from 'lodash-es'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst EMAIL_CORE = {\n name: 'email',\n title: 'Email',\n type: null,\n jsonType: 'string',\n}\n\nlazyGetter(\n EMAIL_CORE,\n OWN_PROPS_NAME,\n () => ({\n ...EMAIL_CORE,\n validation: (Rule: any) => Rule.email(),\n }),\n {enumerable: false},\n)\n\nexport const EmailType = {\n get() {\n return EMAIL_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n const parsed = Object.assign(pick(EMAIL_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: EMAIL_CORE,\n })\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick, startCase} from 'lodash-es'\n\nimport createPreviewGetter from '../preview/createPreviewGetter'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {createFieldsets} from './object'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nexport const ASSET_FIELD = {\n name: 'asset',\n type: 'reference',\n to: {type: 'sanity.fileAsset'},\n}\n\nexport const MEDIA_LIBRARY_ASSET_FIELD = {\n name: 'media',\n type: 'globalDocumentReference',\n hidden: true,\n to: [{type: 'sanity.asset'}],\n}\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst FILE_CORE = {\n name: 'file',\n title: 'File',\n type: null,\n jsonType: 'object',\n}\n\nconst DEFAULT_OPTIONS = {\n accept: '',\n}\n\nexport const FileType = {\n get() {\n return FILE_CORE\n },\n extend(rawSubTypeDef: any, createMemberType: any) {\n const options = {...(rawSubTypeDef.options || DEFAULT_OPTIONS)}\n\n const fields = [ASSET_FIELD, MEDIA_LIBRARY_ASSET_FIELD, ...(rawSubTypeDef.fields || [])]\n\n const subTypeDef = {...rawSubTypeDef, fields}\n\n const parsed = Object.assign(pick(FILE_CORE, OVERRIDABLE_FIELDS), subTypeDef, {\n type: FILE_CORE,\n title: subTypeDef.title || (subTypeDef.name ? startCase(subTypeDef.name) : FILE_CORE.title),\n options: options,\n fields: subTypeDef.fields.map((fieldDef: any) => {\n const {name, fieldset, ...rest} = fieldDef\n\n const compiledField = {\n name,\n fieldset,\n isCustomized: Boolean(rawSubTypeDef.fields),\n }\n\n return lazyGetter(compiledField, 'type', () => {\n return createMemberType({\n ...rest,\n title: fieldDef.title || startCase(name),\n })\n })\n }),\n })\n\n lazyGetter(parsed, 'fieldsets', () => {\n return createFieldsets(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'preview', createPreviewGetter(Object.assign({}, subTypeDef, {fields})))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n options,\n fields: parsed.fields,\n title: parsed.title,\n fieldsets: parsed.fieldsets,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"file\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import arrify from 'arrify'\nimport {pick} from 'lodash-es'\n\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nexport const REF_FIELD = {\n name: '_ref',\n title: 'Referenced document ID',\n type: 'string',\n}\n\nexport const WEAK_FIELD = {\n name: '_weak',\n title: 'Weak reference',\n type: 'boolean',\n}\n\nconst REFERENCE_FIELDS = [REF_FIELD, WEAK_FIELD]\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst GLOBAL_DOCUMENT_REFERENCE_CORE = {\n name: 'globalDocumentReference',\n title: 'Global Document Reference',\n type: null,\n jsonType: 'object',\n}\n\nfunction humanize(arr: any, conjunction: any) {\n const len = arr.length\n if (len === 1) {\n return arr[0]\n }\n const first = arr.slice(0, len - 1)\n const last = arr[len - 1]\n return `${first.join(', ')} ${conjunction} ${last}`\n}\n\nfunction buildTitle(type: any) {\n if (!type.to || type.to.length === 0) {\n return 'Global Document Reference'\n }\n return `Global Document Reference to ${humanize(\n arrify(type.to).map((toType: any) => toType.title),\n 'or',\n ).toLowerCase()}`\n}\n\nexport const GlobalDocumentReferenceType = {\n get() {\n return GLOBAL_DOCUMENT_REFERENCE_CORE\n },\n extend(subTypeDef: any, createMemberType: any) {\n if (!subTypeDef.to) {\n throw new Error(\n `Missing \"to\" field in global document reference definition. Check the type ${subTypeDef.name}`,\n )\n }\n const parsed = Object.assign(\n pick(GLOBAL_DOCUMENT_REFERENCE_CORE, OVERRIDABLE_FIELDS),\n subTypeDef,\n {\n type: GLOBAL_DOCUMENT_REFERENCE_CORE,\n },\n )\n\n lazyGetter(parsed, 'fields', () => {\n return REFERENCE_FIELDS.map((fieldDef) => createMemberType.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'to', () => {\n return arrify(subTypeDef.to).map((toType: any) => {\n return {\n ...toType,\n }\n })\n })\n\n lazyGetter(parsed, 'title', () => subTypeDef.title || buildTitle(parsed))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n fields: parsed.fields,\n to: parsed.to,\n title: parsed.title,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` of subtypes of \"globalDocumentReference\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","export const ASSET_FIELD = {\n name: 'asset',\n type: 'reference',\n to: [{type: 'sanity.imageAsset'}],\n}\n\nexport const HOTSPOT_FIELD = {\n name: 'hotspot',\n type: 'sanity.imageHotspot',\n}\n\nexport const CROP_FIELD = {\n name: 'crop',\n type: 'sanity.imageCrop',\n}\n\nexport const MEDIA_LIBRARY_ASSET_FIELD = {\n name: 'media',\n type: 'globalDocumentReference',\n hidden: true,\n to: [{type: 'sanity.asset'}],\n}\n","import {pick, startCase} from 'lodash-es'\n\nimport createPreviewGetter from '../preview/createPreviewGetter'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {ASSET_FIELD, CROP_FIELD, HOTSPOT_FIELD, MEDIA_LIBRARY_ASSET_FIELD} from './image/fieldDefs'\nimport {createFieldsets} from './object'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst IMAGE_CORE = {\n name: 'image',\n title: 'Image',\n type: null,\n jsonType: 'object',\n}\n\nconst DEFAULT_OPTIONS = {}\n\nexport const ImageType = {\n get() {\n return IMAGE_CORE\n },\n extend(rawSubTypeDef: any, createMemberType: any) {\n const options = {...(rawSubTypeDef.options || DEFAULT_OPTIONS)}\n\n let hotspotFields = [HOTSPOT_FIELD, CROP_FIELD]\n if (!options.hotspot) {\n hotspotFields = hotspotFields.map((field) => ({...field, hidden: true}))\n }\n\n const fields = [\n ASSET_FIELD,\n MEDIA_LIBRARY_ASSET_FIELD,\n ...hotspotFields,\n ...(rawSubTypeDef.fields || []),\n ]\n const subTypeDef = {...rawSubTypeDef, fields}\n\n const parsed = Object.assign(pick(this.get(), OVERRIDABLE_FIELDS), subTypeDef, {\n type: IMAGE_CORE,\n title: subTypeDef.title || (subTypeDef.name ? startCase(subTypeDef.name) : IMAGE_CORE.title),\n options: options,\n fields: subTypeDef.fields.map((fieldDef: any) => {\n const {name, fieldset, ...rest} = fieldDef\n\n const compiledField = {\n name,\n fieldset,\n isCustomized: Boolean(rawSubTypeDef.fields),\n }\n\n return lazyGetter(compiledField, 'type', () => {\n return createMemberType({\n ...rest,\n title: fieldDef.title || startCase(name),\n })\n })\n }),\n })\n\n lazyGetter(parsed, 'fieldsets', () => {\n return createFieldsets(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'preview', createPreviewGetter(Object.assign({}, subTypeDef, {fields})))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n options,\n fields: parsed.fields,\n title: parsed.title,\n fieldsets: parsed.fieldsets,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"image\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash-es'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst NUMBER_CORE = {\n name: 'number',\n title: 'Number',\n type: null,\n jsonType: 'number',\n}\n\nexport const NumberType = {\n get() {\n return NUMBER_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n\n const parsed = Object.assign(pick(NUMBER_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: NUMBER_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import arrify from 'arrify'\nimport {pick} from 'lodash-es'\n\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {createFieldsets} from './object'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nexport const REF_FIELD = {\n name: '_ref',\n title: 'Referenced document ID',\n type: 'string',\n}\n\nexport const WEAK_FIELD = {\n name: '_weak',\n title: 'Weak reference',\n type: 'boolean',\n}\n\nconst REFERENCE_FIELDS = [REF_FIELD, WEAK_FIELD]\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst REFERENCE_CORE = {\n name: 'reference',\n title: 'Reference',\n type: null,\n jsonType: 'object',\n}\n\nfunction humanize(arr: any, conjunction: any) {\n const len = arr.length\n if (len === 1) {\n return arr[0]\n }\n const first = arr.slice(0, len - 1)\n const last = arr[len - 1]\n return `${first.join(', ')} ${conjunction} ${last}`\n}\n\nfunction buildTitle(type: any) {\n if (!type.to || type.to.length === 0) {\n return 'Reference'\n }\n return `Reference to ${humanize(\n arrify(type.to).map((toType: any) => toType.title),\n 'or',\n ).toLowerCase()}`\n}\n\nexport const ReferenceType = {\n get() {\n return REFERENCE_CORE\n },\n extend(subTypeDef: any, createMemberType: any) {\n if (!subTypeDef.to) {\n throw new Error(\n `Missing \"to\" field in reference definition. Check the type ${subTypeDef.name}`,\n )\n }\n const parsed = Object.assign(pick(REFERENCE_CORE, OVERRIDABLE_FIELDS), subTypeDef, {\n type: REFERENCE_CORE,\n })\n\n lazyGetter(parsed, 'fields', () => {\n return REFERENCE_FIELDS.map((fieldDef) => createMemberType.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'fieldsets', () => {\n return createFieldsets(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'to', () => {\n return arrify(subTypeDef.to).map((toType: any) => createMemberType(toType))\n })\n\n lazyGetter(parsed, 'title', () => subTypeDef.title || buildTitle(parsed))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n fields: parsed.fields,\n fieldsets: parsed.fieldsets,\n to: parsed.to,\n title: parsed.title,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` of subtypes of \"reference\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash-es'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst STRING_CORE = {\n name: 'string',\n title: 'String',\n type: null,\n jsonType: 'string',\n}\n\nexport const StringType = {\n get() {\n return STRING_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n\n const parsed = Object.assign(pick(STRING_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: STRING_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash-es'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS, 'rows']\n\nconst TEXT_CORE = {\n name: 'text',\n title: 'Text',\n type: null,\n jsonType: 'string',\n}\n\nexport const TextType = {\n get() {\n return TEXT_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n\n const parsed = Object.assign(pick(TEXT_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: TEXT_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash-es'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst URL_CORE = {\n name: 'url',\n title: 'Url',\n type: null,\n jsonType: 'string',\n}\n\nexport const UrlType = {\n get() {\n return URL_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n\n const parsed = Object.assign(pick(URL_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: URL_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {startCase} from 'lodash-es'\n\nimport * as types from './types'\nimport {lazyGetter} from './types/utils'\n\ninterface ExtendHelper {\n /** Creates a new type based on the definition. */\n (memberDef: any): any\n\n cached(def: any): any\n cachedField(fieldDef: any): any\n cachedObjectField(fieldDef: any): any\n}\n\nfunction compileRegistry(schemaDef: any) {\n const registry = Object.create(null)\n let localTypeNames: string[]\n\n if (schemaDef.parent) {\n Object.assign(registry, schemaDef.parent._registry)\n localTypeNames = []\n } else {\n // For the root schema we inherit from the core types and also register these as the \"local\" ones.\n Object.assign(registry, types)\n localTypeNames = Object.keys(types)\n }\n\n const defsByName = schemaDef.types.reduce((acc: any, def: any) => {\n if (acc[def.name]) {\n throw new Error(`Duplicate type name added to schema: ${def.name}`)\n }\n acc[def.name] = def\n return acc\n }, {})\n\n const memberCache = new Map()\n const fieldCache = new Map()\n const objectFieldCache = new Map()\n\n const extendHelper: ExtendHelper = Object.assign(extendMember, {\n cached(def: any) {\n let member = memberCache.get(def)\n if (!member) {\n member = extendMember(def)\n memberCache.set(def, member)\n }\n return member\n },\n\n cachedField(fieldDef: any) {\n let field = fieldCache.get(fieldDef)\n if (!field) {\n const {name, ...type} = fieldDef\n field = {\n name,\n type: extendMember(type),\n }\n fieldCache.set(fieldDef, field)\n }\n return field\n },\n\n cachedObjectField(fieldDef: any) {\n let field = objectFieldCache.get(fieldDef)\n if (!field) {\n const {name, fieldset, group, ...rest} = fieldDef\n\n field = {\n name,\n group,\n fieldset,\n }\n\n lazyGetter(field, 'type', () => {\n return extendMember({\n ...rest,\n title: fieldDef.title || startCase(name),\n })\n })\n objectFieldCache.set(fieldDef, field)\n }\n return field\n },\n })\n\n schemaDef.types.forEach(add)\n\n return {\n registry,\n localTypeNames,\n }\n\n function ensure(typeName: any) {\n if (!registry[typeName]) {\n if (!defsByName[typeName]) {\n throw new Error(`Unknown type: ${typeName}`)\n }\n add(defsByName[typeName])\n }\n }\n\n function extendMember(memberDef: any) {\n ensure(memberDef.type)\n return registry[memberDef.type].extend(memberDef, extendHelper).get()\n }\n\n function add(typeDef: any) {\n ensure(typeDef.type)\n if (registry[typeDef.name]) {\n return\n }\n localTypeNames.push(typeDef.name)\n registry[typeDef.name] = registry[typeDef.type].extend(typeDef, extendMember)\n }\n}\n\n/**\n * @beta\n */\nexport class Schema {\n _original: {name: string; types: any[]; parent?: Schema}\n _registry: {[typeName: string]: any}\n #localTypeNames: string[]\n\n static compile(schemaDef: any): Schema {\n return new Schema(schemaDef)\n }\n\n constructor(schemaDef: any) {\n this._original = schemaDef\n\n const {registry, localTypeNames} = compileRegistry(schemaDef)\n this._registry = registry\n this.#localTypeNames = localTypeNames\n }\n\n get name(): string {\n return this._original.name\n }\n\n /**\n * Returns the parent schema.\n */\n get parent(): Schema | undefined {\n return this._original.parent\n }\n\n get(name: string): any {\n return this._registry[name] && this._registry[name].get()\n }\n\n has(name: string): boolean {\n return name in this._registry\n }\n\n getTypeNames(): string[] {\n return Object.keys(this._registry)\n }\n\n getLocalTypeNames(): string[] {\n return this.#localTypeNames\n }\n}\n\n/**\n * @deprecated Use `import {Schema} from \"@sanity/schema\"` instead\n */\nexport class DeprecatedDefaultSchema extends Schema {\n static compile(schemaDef: any): Schema {\n return new DeprecatedDefaultSchema(schemaDef)\n }\n\n constructor(schemaDef: any) {\n super(schemaDef)\n\n const stack = new Error(\n 'The default export of `@sanity/schema` is deprecated. Use `import {Schema} from \"@sanity/schema\"` instead.',\n ).stack!.replace(/^Error/, 'Warning')\n\n console.warn(stack)\n }\n}\n","import {\n type CustomValidator,\n type FieldReference,\n type FieldRules,\n type LocalizedValidationMessages,\n type MediaAssetTypes,\n type MediaValidator,\n type Rule as IRule,\n type RuleClass,\n type RuleSpec,\n type RuleSpecConstraint,\n type RuleTypeConstraint,\n type SchemaType,\n type ValidationContext,\n type ValidationMarker,\n} from '@sanity/types'\nimport {cloneDeep} from 'lodash-es'\n\nconst FIELD_REF = Symbol('FIELD_REF')\nconst ruleConstraintTypes: RuleTypeConstraint[] = [\n 'Array',\n 'Boolean',\n 'Date',\n 'Number',\n 'Object',\n 'String',\n]\n\n/**\n * Core Rule implementation without validation logic.\n * This is the base Rule class that can be extended with validation logic.\n *\n * @internal\n */\nexport const Rule: RuleClass = class Rule implements IRule {\n static readonly FIELD_REF = FIELD_REF\n static array = (def?: SchemaType): Rule => new Rule(def).type('Array')\n static object = (def?: SchemaType): Rule => new Rule(def).type('Object')\n static string = (def?: SchemaType): Rule => new Rule(def).type('String')\n static number = (def?: SchemaType): Rule => new Rule(def).type('Number')\n static boolean = (def?: SchemaType): Rule => new Rule(def).type('Boolean')\n static dateTime = (def?: SchemaType): Rule => new Rule(def).type('Date')\n static valueOfField = (path: string | string[]): {type: symbol; path: string | string[]} => ({\n type: FIELD_REF,\n path,\n })\n\n _type: RuleTypeConstraint | undefined = undefined\n _level: 'error' | 'warning' | 'info' | undefined = undefined\n _required: 'required' | 'optional' | undefined = undefined\n _typeDef: SchemaType | undefined = undefined\n _message: string | LocalizedValidationMessages | undefined = undefined\n _rules: RuleSpec[] = []\n _fieldRules: FieldRules | undefined = undefined\n\n constructor(typeDef?: SchemaType) {\n this._typeDef = typeDef\n this.reset()\n }\n\n private _mergeRequired(next: Rule) {\n if (this._required === 'required' || next._required === 'required') return 'required'\n if (this._required === 'optional' || next._required === 'optional') return 'optional'\n return undefined\n }\n\n // Alias to static method, since we often have access to an _instance_ of a rule but not the actual Rule class\n valueOfField = Rule.valueOfField.bind(Rule)\n\n error(message?: string | LocalizedValidationMessages): Rule {\n const rule = this.clone()\n rule._level = 'error'\n rule._message = message || undefined\n return rule\n }\n\n warning(message?: string | LocalizedValidationMessages): Rule {\n const rule = this.clone()\n rule._level = 'warning'\n rule._message = message || undefined\n return rule\n }\n\n info(message?: string | LocalizedValidationMessages): Rule {\n const rule = this.clone()\n rule._level = 'info'\n rule._message = message || undefined\n return rule\n }\n\n reset(): this {\n this._type = this._type || undefined\n this._rules = (this._rules || []).filter((rule) => rule.flag === 'type')\n this._message = undefined\n this._required = undefined\n this._level = 'error'\n this._fieldRules = undefined\n return this\n }\n\n isRequired(): boolean {\n return this._required === 'required'\n }\n\n clone(): Rule {\n const rule = new Rule()\n rule._type = this._type\n rule._message = this._message\n rule._required = this._required\n rule._rules = cloneDeep(this._rules)\n rule._level = this._level\n rule._fieldRules = this._fieldRules\n rule._typeDef = this._typeDef\n return rule\n }\n\n cloneWithRules(rules: RuleSpec[]): Rule {\n const rule = this.clone()\n const newRules = new Set()\n rules.forEach((curr) => {\n if (curr.flag === 'type') {\n rule._type = curr.constraint\n }\n\n newRules.add(curr.flag)\n })\n\n rule._rules = rule._rules\n .filter((curr) => {\n const disallowDuplicate = ['type', 'uri', 'email'].includes(curr.flag)\n const isDuplicate = newRules.has(curr.flag)\n return !(disallowDuplicate && isDuplicate)\n })\n .concat(rules)\n\n return rule\n }\n\n merge(rule: Rule): Rule {\n if (this._type && rule._type && this._type !== rule._type) {\n throw new Error('merge() failed: conflicting types')\n }\n\n const newRule = this.cloneWithRules(rule._rules)\n newRule._type = this._type || rule._type\n newRule._message = this._message || rule._message\n newRule._required = this._mergeRequired(rule)\n newRule._level = this._level === 'error' ? rule._level : this._level\n return newRule\n }\n\n // Validation flag setters\n type(targetType: RuleTypeConstraint | Lowercase<RuleTypeConstraint>): Rule {\n const type = `${targetType.slice(0, 1).toUpperCase()}${targetType.slice(1)}` as Capitalize<\n typeof targetType\n >\n\n if (!ruleConstraintTypes.includes(type)) {\n throw new Error(`Unknown type \"${targetType}\"`)\n }\n\n const rule = this.cloneWithRules([{flag: 'type', constraint: type}])\n rule._type = type\n return rule\n }\n\n all(children: Rule[]): Rule {\n return this.cloneWithRules([{flag: 'all', constraint: children}])\n }\n\n either(children: Rule[]): Rule {\n return this.cloneWithRules([{flag: 'either', constraint: children}])\n }\n\n // Shared rules\n optional(): Rule {\n const rule = this.cloneWithRules([{flag: 'presence', constraint: 'optional'}])\n rule._required = 'optional'\n return rule\n }\n\n required(): Rule {\n const rule = this.cloneWithRules([{flag: 'presence', constraint: 'required'}])\n rule._required = 'required'\n return rule\n }\n\n custom<T = unknown>(\n fn: CustomValidator<T>,\n options: {bypassConcurrencyLimit?: boolean} = {},\n ): Rule {\n if (options.bypassConcurrencyLimit) {\n Object.assign(fn, {bypassConcurrencyLimit: true})\n }\n return this.cloneWithRules([{flag: 'custom', constraint: fn as CustomValidator}])\n }\n\n min(len: number | string | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'min', constraint: len}])\n }\n\n max(len: number | string | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'max', constraint: len}])\n }\n\n length(len: number | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'length', constraint: len}])\n }\n\n valid(value: unknown | unknown[]): Rule {\n const values = Array.isArray(value) ? value : [value]\n return this.cloneWithRules([{flag: 'valid', constraint: values}])\n }\n\n // Numbers only\n integer(): Rule {\n return this.cloneWithRules([{flag: 'integer'}])\n }\n\n precision(limit: number | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'precision', constraint: limit}])\n }\n\n positive(): Rule {\n return this.cloneWithRules([{flag: 'min', constraint: 0}])\n }\n\n negative(): Rule {\n return this.cloneWithRules([{flag: 'lessThan', constraint: 0}])\n }\n\n greaterThan(num: number | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'greaterThan', constraint: num}])\n }\n\n lessThan(num: number | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'lessThan', constraint: num}])\n }\n\n // String only\n uppercase(): Rule {\n return this.cloneWithRules([{flag: 'stringCasing', constraint: 'uppercase'}])\n }\n\n lowercase(): Rule {\n return this.cloneWithRules([{flag: 'stringCasing', constraint: 'lowercase'}])\n }\n\n regex(pattern: RegExp, name: string, options: {name?: string; invert?: boolean}): Rule\n regex(pattern: RegExp, options: {name?: string; invert?: boolean}): Rule\n regex(pattern: RegExp, name: string): Rule\n regex(pattern: RegExp): Rule\n regex(\n pattern: RegExp,\n a?: string | {name?: string; invert?: boolean},\n b?: {name?: string; invert?: boolean},\n ): Rule {\n const name = typeof a === 'string' ? a : (a?.name ?? b?.name)\n const invert = typeof a === 'string' ? false : (a?.invert ?? b?.invert)\n\n const constraint: RuleSpecConstraint<'regex'> = {\n pattern,\n name,\n invert: invert || false,\n }\n\n return this.cloneWithRules([{flag: 'regex', constraint}])\n }\n\n email(): Rule {\n return this.cloneWithRules([{flag: 'email'}])\n }\n\n uri(opts?: {\n scheme?: (string | RegExp) | Array<string | RegExp>\n allowRelative?: boolean\n relativeOnly?: boolean\n allowCredentials?: boolean\n }): Rule {\n const optsScheme = opts?.scheme || ['http', 'https']\n const schemes = Array.isArray(optsScheme) ? optsScheme : [optsScheme]\n\n if (!schemes.length) {\n throw new Error('scheme must have at least 1 scheme specified')\n }\n\n const constraint: RuleSpecConstraint<'uri'> = {\n options: {\n scheme: schemes.map((scheme) => {\n if (!(scheme instanceof RegExp) && typeof scheme !== 'string') {\n throw new Error('scheme must be a RegExp or a String')\n }\n\n return typeof scheme === 'string' ? new RegExp(`^${escapeRegex(scheme)}$`) : scheme\n }),\n allowRelative: opts?.allowRelative || false,\n relativeOnly: opts?.relativeOnly || false,\n allowCredentials: opts?.allowCredentials || false,\n },\n }\n\n return this.cloneWithRules([{flag: 'uri', constraint}])\n }\n\n // Array only\n unique(): Rule {\n return this.cloneWithRules([{flag: 'unique'}])\n }\n\n // Objects only\n reference(): Rule {\n return this.cloneWithRules([{flag: 'reference'}])\n }\n\n fields(rules: FieldRules): Rule {\n if (this._type !== 'Object') {\n throw new Error('fields() can only be called on an object type')\n }\n\n const rule = this.cloneWithRules([])\n rule._fieldRules = rules\n return rule\n }\n\n assetRequired(): Rule {\n const base = getBaseType(this._typeDef)\n let assetType: 'asset' | 'image' | 'file'\n if (base && ['image', 'file'].includes(base.name)) {\n assetType = base.name === 'image' ? 'image' : 'file'\n } else {\n assetType = 'asset'\n }\n\n return this.cloneWithRules([{flag: 'assetRequired', constraint: {assetType}}])\n }\n\n media<T extends MediaAssetTypes = MediaAssetTypes>(fn: MediaValidator<T>): Rule {\n return this.cloneWithRules([{flag: 'media', constraint: fn}])\n }\n\n /**\n * The validate method is not implemented in the base Rule class.\n * It should be implemented by extending this class or injecting validation logic.\n */\n async validate(\n value: unknown,\n options: ValidationContext & {\n __internal?: {\n customValidationConcurrencyLimiter?: {\n ready: () => Promise<void>\n release: () => void\n }\n }\n },\n ): Promise<ValidationMarker[]> {\n throw new Error('validate() method must be implemented by extending Rule class')\n }\n}\n\n// Helper functions\nfunction getBaseType(type: SchemaType | undefined): SchemaType | undefined {\n return type && type.type ? getBaseType(type.type) : type\n}\n\nfunction escapeRegex(string: string): string {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n}\n"],"names":["OVERRIDABLE_FIELDS","asString","guessPreviewConfig","Rule","INHERITED_FIELDS","DEFAULT_OPTIONS","REF_FIELD","WEAK_FIELD","REFERENCE_FIELDS","humanize","buildTitle","ASSET_FIELD","MEDIA_LIBRARY_ASSET_FIELD"],"mappings":"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"}