{"version":3,"file":"registryFactories.cjs","sources":["../../../src/panel/registryFactories.ts"],"sourcesContent":["import { FieldConfigOptionsRegistry } from '../field/FieldConfigOptionsRegistry';\nimport { standardFieldConfigEditorRegistry } from '../field/standardFieldConfigEditorRegistry';\nimport { FieldConfigProperty, FieldConfigPropertyItem } from '../types/fieldOverrides';\nimport { FieldConfigEditorBuilder } from '../utils/OptionsUIBuilders';\n\nimport { SetFieldConfigOptionsArgs } from './PanelPlugin';\n\n/**\n * Helper functionality to create a field config registry.\n *\n * @param config - configuration to base the registry on.\n * @param pluginName - name of the plugin that will use the registry.\n * @internal\n */\nexport function createFieldConfigRegistry<TFieldConfigOptions>(\n  config: SetFieldConfigOptionsArgs<TFieldConfigOptions> = {},\n  pluginName: string\n): FieldConfigOptionsRegistry {\n  const registry = new FieldConfigOptionsRegistry();\n  const standardConfigs = standardFieldConfigEditorRegistry.list();\n  const standardOptionsExtensions: Record<string, FieldConfigPropertyItem[]> = {};\n\n  // Add custom options\n  if (config.useCustomConfig) {\n    const builder = new FieldConfigEditorBuilder<TFieldConfigOptions>();\n    config.useCustomConfig(builder);\n\n    for (const customProp of builder.getRegistry().list()) {\n      customProp.isCustom = true;\n      // need to do something to make the custom items not conflict with standard ones\n      // problem is id (registry index) is used as property path\n      // so sort of need a property path on the FieldPropertyEditorItem\n      customProp.id = 'custom.' + customProp.id;\n\n      if (isStandardConfigExtension(customProp, standardConfigs)) {\n        const currentExtensions = standardOptionsExtensions[customProp.category![0]] ?? [];\n        currentExtensions.push(customProp);\n        standardOptionsExtensions[customProp.category![0]] = currentExtensions;\n      } else {\n        registry.register(customProp);\n      }\n    }\n  }\n\n  for (let fieldConfigProp of standardConfigs) {\n    const id = fieldConfigProp.id as FieldConfigProperty;\n    if (config.disableStandardOptions) {\n      const isDisabled = config.disableStandardOptions.indexOf(id) > -1;\n      if (isDisabled) {\n        continue;\n      }\n    }\n    if (config.standardOptions) {\n      const customHideFromDefaults = config.standardOptions[id]?.hideFromDefaults;\n      const customDefault = config.standardOptions[id]?.defaultValue;\n      const customSettings = config.standardOptions[id]?.settings;\n\n      if (customHideFromDefaults !== undefined) {\n        fieldConfigProp = {\n          ...fieldConfigProp,\n          hideFromDefaults: customHideFromDefaults,\n        };\n      }\n\n      if (customDefault) {\n        fieldConfigProp = {\n          ...fieldConfigProp,\n          defaultValue: customDefault,\n        };\n      }\n\n      if (customSettings) {\n        fieldConfigProp = {\n          ...fieldConfigProp,\n          settings: fieldConfigProp.settings ? { ...fieldConfigProp.settings, ...customSettings } : customSettings,\n        };\n      }\n    }\n\n    registry.register(fieldConfigProp);\n\n    if (fieldConfigProp.category && standardOptionsExtensions[fieldConfigProp.category[0]]) {\n      for (let extensionProperty of standardOptionsExtensions[fieldConfigProp.category[0]]) {\n        registry.register(extensionProperty);\n      }\n    }\n  }\n\n  // assert that field configs do not use array path syntax\n  for (const item of registry.list()) {\n    if (item.path.indexOf('[') > 0) {\n      throw new Error(`[${pluginName}] Field config paths do not support arrays: ${item.id}`);\n    }\n  }\n\n  return registry;\n}\n\nfunction isStandardConfigExtension(property: FieldConfigPropertyItem, standardProperties: FieldConfigPropertyItem[]) {\n  return Boolean(\n    standardProperties.find((p) => property.category && p.category && property.category[0] === p.category[0])\n  );\n}\n"],"names":["FieldConfigOptionsRegistry","standardFieldConfigEditorRegistry","FieldConfigEditorBuilder"],"mappings":"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"}