{"version":3,"file":"index.mjs","sources":["../src/constants.ts","../src/component.ts","../src/element/id.ts","../src/expression/normalize.ts","../src/expression/is.ts","../src/expression/static.ts","../src/element/props.ts","../src/config/uidl-utils-config.ts","../src/config/editor-uidl-utils-config.ts","../src/logic/getter.ts","../src/logic/setter.ts","../src/minify.ts","../src/traverse/dfs/internal.ts","../src/traverse/options.ts","../src/traverse/bfs.ts","../src/traverse/dfs/index.ts"],"sourcesContent":["import { STR_CHILDREN, STR_DEFAULT, STR_PROPS, STR_STATIC } from '@p-lc/shared'\nimport type {\n  DefaultPkgName,\n  FromDependenciesProCode,\n  LowCode,\n  ProCodeBase,\n  UidlComponentLibraryDependency,\n  UidlExpressionArray,\n  UidlExpressionBox,\n  UidlExpressionObject,\n  UidlExpressionSlot,\n  UidlExpressionStatic,\n  UidlUtilsDependency,\n} from '@p-lc/uidl'\n\n/**\n * 静态表达式类型\n */\nexport const EXPRESSION_TYPE_STATIC: UidlExpressionStatic['type'] = STR_STATIC\n\n/**\n * 对象表达式类型\n */\nexport const EXPRESSION_TYPE_OBJECT: UidlExpressionObject['type'] = 'object'\n\n/**\n * 数组表达式类型\n */\nexport const EXPRESSION_TYPE_ARRAY: UidlExpressionArray['type'] = 'array'\n\n/**\n * 插槽表达式类型\n */\nexport const EXPRESSION_TYPE_SLOT: UidlExpressionSlot['type'] = 'slot'\n\n/**\n * 盒子表达式类型\n */\nexport const EXPRESSION_TYPE_BOX: UidlExpressionBox['type'] = 'box'\n\n/**\n * 默认包名\n */\nexport const DEFAULT_PKG_NAME: DefaultPkgName = ''\n\n/**\n * 默认包版本\n */\nexport const DEFAULT_PKG_VERSION: DefaultPkgName = ''\n\n/**\n * UIDL 组件库依赖类型\n */\nexport const UIDL_DEPENDENCY_TYPE_COMPONENT_LIBRARY: NonNullable<\n  UidlComponentLibraryDependency['type']\n> = 'component-library'\n\n/**\n * UIDL 工具集依赖类型\n */\nexport const UIDL_DEPENDENCY_TYPE_UTILS: UidlUtilsDependency['type'] = 'utils'\n\n/**\n * 默认 UIDL 依赖类型\n */\nexport const DEFAULT_UIDL_DEPENDENCY_TYPE =\n  UIDL_DEPENDENCY_TYPE_COMPONENT_LIBRARY\n\n/**\n * 全代码类型\n */\nexport const CODE_TYPE_PRO: NonNullable<ProCodeBase['type']> = 'pro'\n\n/**\n * 低代码类型\n */\nexport const CODE_TYPE_LOW: LowCode['type'] = 'low'\n\n/**\n * 默认代码类型\n */\nexport const DEFAULT_CODE_TYPE = CODE_TYPE_PRO\n\n/**\n * 默认全代码来源\n */\nexport const DEFAULT_PRO_CODE_FROM =\n  'dependencies' satisfies FromDependenciesProCode['from']\n\n/**\n * 默认导入导出路径\n */\nexport const DEFAULT_IMPORT_EXPORT_PATH = [STR_DEFAULT]\n\n/**\n * 实体详情类型：元素\n */\nexport const ENTITY_DETAIL_TYPE_ELEMENT = 'element'\n\n/**\n * 实体详情类型：表达式\n */\nexport const ENTITY_DETAIL_TYPE_EXPRESSION = 'expression'\n\n/**\n * 遍历时机：进入\n */\nexport const TRAVERSE_TIME_ENTER = 'enter'\n\n/**\n * 遍历时机：离开\n */\nexport const TRAVERSE_TIME_EXIT = 'exit'\n\n/**\n * 默认子元素插槽（children）对应的逻辑路径\n */\nexport const childrenSlotLogicPath = [STR_PROPS, STR_CHILDREN]\n\n/**\n * 元素类型分隔符，用于分割元素类型，比如：`'Button_0'`\n */\nexport const ELEMENT_TYPE_SEPARATOR = '_'\n","import { createBigInt, jsonStringify, type JsonPath } from '@p-lc/shared'\nimport type { Uidl, UidlComponent } from '@p-lc/uidl'\nimport { isEqual, last } from 'lodash-uni'\nimport { ELEMENT_TYPE_SEPARATOR } from './constants'\n\n/**\n * 创建 UIDL 组件，不修改 UIDL\n * @param uidl UIDL\n * @param pkgName 包名\n * @param pkgVersion 包版本\n * @param componentType 组件类型\n * @param importPath 导入路径，指最终 `ctx.dependencies[pkgName]` 里的路径，默认为: `[componentType]`\n */\nexport function createUidlComponent<U extends Uidl>(\n  uidl: U,\n  pkgName: string,\n  pkgVersion: string,\n  componentType: string,\n  importPath?: JsonPath,\n): UidlComponent {\n  const lastElementType = last(uidl.components)?.elementType\n  const lastN = last(lastElementType?.split(ELEMENT_TYPE_SEPARATOR))\n  const n = createBigInt(lastN || -1, -1n) + 1n\n  const elementType = [componentType, n].join(ELEMENT_TYPE_SEPARATOR)\n  const component: UidlComponent = {\n    elementType,\n    pkgName,\n    pkgVersion,\n    componentType,\n  }\n  if (importPath && !isEqual(importPath, [componentType])) {\n    component.importPath = importPath\n  }\n  return component\n}\n\n/**\n * 添加 UIDL 组件，原地修改\n * @param uidl UIDL\n * @param component 组件\n * @returns 新的 UIDL\n */\nexport function addUidlComponent<U extends Uidl>(\n  uidl: U,\n  component: UidlComponent,\n): void {\n  let { components } = uidl\n  if (!components) {\n    components = uidl.components = []\n  }\n  components.push(component)\n}\n\n/**\n * 确保 UIDL 组件存在，原地修改\n * @param uidl UIDL\n * @param pkgName 包名\n * @param pkgVersion 包版本\n * @param componentTypes 组件类型\n * @param importPaths 导入路径，指最终 `ctx.dependencies[pkgName]` 里的路径，默认为: `[componentType]`\n * @returns 元素类型\n */\nexport function ensureUidlComponents<U extends Uidl>(\n  uidl: U,\n  pkgName: string,\n  pkgVersion: string,\n  componentTypes: string[],\n  importPaths?: JsonPath[],\n): string[] {\n  const { components = [] } = uidl\n  const currentPkgNameComponentTypeMap = new Map(\n    components.map((cd) => [\n      jsonStringify([cd.pkgName, cd.componentType]),\n      cd.elementType,\n    ]),\n  )\n  return componentTypes.map((componentType, i) => {\n    const key = jsonStringify([pkgName, componentType])\n    const elementType = currentPkgNameComponentTypeMap.get(key)\n    if (elementType) return elementType\n    const component = createUidlComponent(\n      uidl,\n      pkgName,\n      pkgVersion,\n      componentType,\n      importPaths?.[i],\n    )\n    addUidlComponent(uidl, component)\n    return component.elementType\n  })\n}\n","import { createRandomVarId } from '@p-lc/shared'\n\n/**\n * 创建元素 ID\n */\nexport function createElementId(): string {\n  return `r${createRandomVarId()}`\n}\n","import { isObjectButNotArray } from '@p-lc/shared'\nimport type {\n  NormalizeExpression,\n  UidlExpression,\n  UnnormalizeExpression,\n} from '@p-lc/uidl'\nimport { EXPRESSION_TYPE_STATIC } from '../constants'\n\n/**\n * 是标准表达式\n * @param expr 表达式\n */\nexport function isNormalizedExpression<Expression>(\n  expr: Expression,\n): expr is NormalizeExpression<Expression> {\n  return isObjectButNotArray(expr)\n}\n\n/**\n * 获取表达式类型\n * @param expr 表达式\n */\nexport function getExpressionType<Expression extends UidlExpression>(\n  expr: Expression,\n): NormalizeExpression<Expression>['type'] {\n  if (isNormalizedExpression(expr)) {\n    return expr.type\n  }\n  return EXPRESSION_TYPE_STATIC\n}\n\n/**\n * 标准化表达式\n * @param expr 非标准表达式\n */\nexport function normalizeExpression<Expression extends UidlExpression>(\n  expr: Expression,\n): NormalizeExpression<Expression> {\n  if (isNormalizedExpression(expr)) {\n    return expr\n  }\n  return {\n    type: EXPRESSION_TYPE_STATIC,\n    value: expr,\n  } as NormalizeExpression<Expression>\n}\n\n/**\n * 非标准表达式\n * @param expr 标准表达式\n */\nexport function unnormalizeExpression<Expression extends UidlExpression>(\n  expr: Expression,\n): UnnormalizeExpression<Expression> {\n  if (!isNormalizedExpression(expr)) {\n    return expr\n  }\n  if (\n    expr.type === EXPRESSION_TYPE_STATIC &&\n    !isObjectButNotArray(expr.value)\n  ) {\n    return expr.value as UnnormalizeExpression<Expression>\n  }\n  return expr\n}\n","import type { SoftAs } from '@p-lc/shared'\nimport type {\n  NormalizeExpression,\n  UidlExpression,\n  UidlExpressionArray,\n  UidlExpressionBox,\n  UidlExpressionObject,\n  UidlExpressionSlot,\n  UidlExpressionStatic,\n  UidlUnnormalizedExpressionStatic,\n} from '@p-lc/uidl'\nimport { isUndefined } from 'lodash-uni'\nimport {\n  EXPRESSION_TYPE_ARRAY,\n  EXPRESSION_TYPE_BOX,\n  EXPRESSION_TYPE_OBJECT,\n  EXPRESSION_TYPE_SLOT,\n  EXPRESSION_TYPE_STATIC,\n} from '../constants'\nimport { getExpressionType } from './normalize'\n\n/**\n * 是静态表达式\n * @param expr 表达式\n */\nexport function isStaticExpression<Expression extends UidlExpression>(\n  expr?: Expression,\n): expr is SoftAs<\n  Expression extends NormalizeExpression<Expression>\n    ? UidlExpressionStatic\n    : UidlExpressionStatic | UidlUnnormalizedExpressionStatic,\n  Expression\n> {\n  return (\n    !isUndefined(expr) && getExpressionType(expr) === EXPRESSION_TYPE_STATIC\n  )\n}\n\n/**\n * 是对象表达式\n * @param expr 表达式\n */\nexport function isObjectExpression<Expression extends UidlExpression>(\n  expr?: Expression,\n): expr is SoftAs<\n  Expression extends UidlExpressionObject<infer P>\n    ? UidlExpressionObject<P>\n    : UidlExpressionObject<Expression>,\n  Expression\n> {\n  return !!expr && getExpressionType(expr) === EXPRESSION_TYPE_OBJECT\n}\n\n/**\n * 是数组表达式\n * @param expr 表达式\n */\nexport function isArrayExpression<Expression extends UidlExpression>(\n  expr?: Expression,\n): expr is SoftAs<\n  Expression extends UidlExpressionArray<infer P>\n    ? UidlExpressionArray<P>\n    : UidlExpressionArray<Expression>,\n  Expression\n> {\n  return !!expr && getExpressionType(expr) === EXPRESSION_TYPE_ARRAY\n}\n\n/**\n * 是插槽表达式\n * @param expr 表达式\n */\nexport function isSlotExpression<Expression extends UidlExpression>(\n  expr?: Expression,\n): expr is SoftAs<\n  Expression extends UidlExpressionSlot<infer P1, infer P2>\n    ? UidlExpressionSlot<P1, P2>\n    : UidlExpressionSlot<Expression>,\n  Expression\n> {\n  return !!expr && getExpressionType(expr) === EXPRESSION_TYPE_SLOT\n}\n\n/**\n * 是盒子表达式\n * @param expr 表达式\n */\nexport function isBoxExpression<Expression extends UidlExpression>(\n  expr?: Expression,\n): expr is SoftAs<\n  Expression extends UidlExpressionBox<infer P>\n    ? UidlExpressionBox<P>\n    : UidlExpressionBox<Expression>,\n  Expression\n> {\n  return !!expr && getExpressionType(expr) === EXPRESSION_TYPE_BOX\n}\n","import { isObjectButNotArray } from '@p-lc/shared'\nimport type {\n  UidlExpression,\n  UidlExpressionArray,\n  UidlExpressionObject,\n  UidlExpressionStatic,\n  UidlUnnormalizedExpressionStatic,\n} from '@p-lc/uidl'\nimport { isArray, mapValues } from 'lodash-uni'\nimport {\n  EXPRESSION_TYPE_ARRAY,\n  EXPRESSION_TYPE_OBJECT,\n  EXPRESSION_TYPE_STATIC,\n} from '../constants'\nimport { isArrayExpression, isObjectExpression, isStaticExpression } from './is'\nimport { normalizeExpression, unnormalizeExpression } from './normalize'\n\n/**\n * 获取静态表达式值，如果不是静态表达式，则返回 `undefined`\n * @param expr 表达式\n */\nexport function getStaticExpressionValue<Expression extends UidlExpression>(\n  expr?: Expression,\n): unknown {\n  if (isStaticExpression(expr)) {\n    return normalizeExpression(expr).value\n  }\n}\n\n/**\n * 创建静态表达式\n * @param value 值\n */\nexport function createStaticExpression<T>(value: T): UidlExpressionStatic<T> {\n  return {\n    type: EXPRESSION_TYPE_STATIC,\n    value,\n  }\n}\n\n/**\n * JSON 值转静态表达式\n * @param json JSON 值\n */\nexport function jsonToStaticExpression<T>(\n  json: T,\n): UidlExpressionStatic<T> | UidlUnnormalizedExpressionStatic {\n  return unnormalizeExpression({\n    type: EXPRESSION_TYPE_STATIC,\n    value: json,\n  })\n}\n\n/**\n * 转数组表达式，自动判断数组表达式、静态表达式\n * @param expr 表达式\n */\nexport function toArrayExpression<Expression extends UidlExpression>(\n  expr?: Expression,\n): UidlExpressionArray<Expression> | undefined {\n  if (isArrayExpression(expr)) {\n    return expr as UidlExpressionArray<Expression>\n  }\n  const value = getStaticExpressionValue(expr)\n  if (isArray(value)) {\n    return {\n      type: EXPRESSION_TYPE_ARRAY,\n      value: value.map(jsonToStaticExpression) as Expression[],\n    }\n  }\n}\n\n/**\n * 转对象表达式，自动判断对象表达式、静态表达式\n * @param expr 表达式\n */\nexport function toObjectExpression<Expression extends UidlExpression>(\n  expr?: Expression,\n): UidlExpressionObject<Expression> | undefined {\n  if (isObjectExpression(expr)) {\n    return expr as UidlExpressionObject<Expression>\n  }\n  const value = getStaticExpressionValue(expr)\n  if (isObjectButNotArray(value)) {\n    return {\n      type: EXPRESSION_TYPE_OBJECT,\n      value: mapValues(value, jsonToStaticExpression) as Record<\n        string,\n        Expression\n      >,\n    }\n  }\n}\n","import { STR_CHILDREN } from '@p-lc/shared'\nimport type { Uidl } from '@p-lc/uidl'\nimport { isUndefined } from 'lodash-uni'\nimport { EXPRESSION_TYPE_SLOT } from '../constants'\nimport { isSlotExpression } from '../expression'\nimport type { ElementOfUidl } from '../types'\n\n/**\n * 合并子元素到属性里\n * @param children 子元素\n * @param props 属性\n * @returns 新的属性对象\n */\nexport function mergeChildrenToProps<U extends Uidl = Uidl>(\n  children: ElementOfUidl<U>['children'],\n  props: ElementOfUidl<U>['props'],\n): NonNullable<ElementOfUidl<U>['props']> {\n  const newProps = {\n    ...props,\n  } as NonNullable<ElementOfUidl<U>['props']>\n  if (children && isUndefined(newProps[STR_CHILDREN])) {\n    newProps[STR_CHILDREN] = {\n      type: EXPRESSION_TYPE_SLOT,\n      value: children,\n    }\n  }\n  return newProps\n}\n\n/**\n * 将子元素从属性中分离\n * @param props 属性\n * @returns 新的子元素、属性对象\n */\nexport function splitChildrenFromProps<U extends Uidl = Uidl>(\n  props: ElementOfUidl<U>['props'],\n): [ElementOfUidl<U>['children'], ElementOfUidl<U>['props']] {\n  let children: ElementOfUidl<U>['children'] | undefined\n  let newProps: ElementOfUidl<U>['props'] | undefined\n  if (props) {\n    const { children: propsChildren, ...restProps } = props\n    if (isSlotExpression(propsChildren)) {\n      const v = propsChildren.value\n      children = v\n      newProps = restProps\n    }\n  }\n  if (!newProps) newProps = { ...props }\n  return [children, newProps]\n}\n","import type { AnyObject } from '@p-lc/shared'\nimport {\n  arrayStartsWith,\n  countKeys,\n  STR_CHILDREN,\n  STR_PROPS,\n} from '@p-lc/shared'\nimport type {\n  UidlExpressionArray,\n  UidlExpressionObject,\n  UidlExpressionSlot,\n  UidlExpressionStatic,\n  UidlUnnormalizedExpressionStatic,\n} from '@p-lc/uidl'\nimport {\n  get,\n  isArray,\n  isNumber,\n  isObject,\n  isUndefined,\n  keys,\n  mapValues,\n  values,\n} from 'lodash-uni'\nimport {\n  childrenSlotLogicPath,\n  ENTITY_DETAIL_TYPE_ELEMENT,\n  ENTITY_DETAIL_TYPE_EXPRESSION,\n  EXPRESSION_TYPE_ARRAY,\n  EXPRESSION_TYPE_OBJECT,\n  EXPRESSION_TYPE_SLOT,\n  EXPRESSION_TYPE_STATIC,\n} from '../constants'\nimport { mergeChildrenToProps, splitChildrenFromProps } from '../element'\nimport {\n  createStaticExpression,\n  getStaticExpressionValue,\n  isNormalizedExpression,\n  isStaticExpression,\n  jsonToStaticExpression,\n  normalizeExpression,\n  toArrayExpression,\n  toObjectExpression,\n  unnormalizeExpression,\n} from '../expression'\nimport type { GetterEntityDetail, UidlUtilsConfig } from './types'\n\n/**\n * 默认 UIDL 工具集配置\n */\nexport const defaultUidlUtilsConfig: UidlUtilsConfig = {\n  uidlGenerators: {\n    *view(uidl) {\n      yield {\n        type: ENTITY_DETAIL_TYPE_ELEMENT,\n        element: uidl.view,\n        jsonPath: ['view'],\n        logicPath: ['view'],\n      }\n    },\n  },\n  elementGenerators: {\n    *props({ props }) {\n      if (props) {\n        for (const key in props) {\n          yield {\n            type: ENTITY_DETAIL_TYPE_EXPRESSION,\n            expression: props[key],\n            jsonPath: [STR_PROPS, key],\n            logicPath: [STR_PROPS, key],\n          }\n        }\n      }\n    },\n    *children({ children }) {\n      if (children) {\n        for (let i = 0; i < children.length; i++) {\n          yield {\n            type: ENTITY_DETAIL_TYPE_ELEMENT,\n            element: children[i],\n            jsonPath: [STR_CHILDREN, i],\n            logicPath: [STR_PROPS, STR_CHILDREN, i],\n          }\n        }\n      }\n    },\n    *if({ if: expr }) {\n      if (!isUndefined(expr)) {\n        yield {\n          type: ENTITY_DETAIL_TYPE_EXPRESSION,\n          expression: expr,\n          jsonPath: ['if'],\n          logicPath: ['if'],\n        }\n      }\n    },\n    *for({ for: expr }) {\n      if (!isUndefined(expr)) {\n        yield {\n          type: ENTITY_DETAIL_TYPE_EXPRESSION,\n          expression: expr,\n          jsonPath: ['for'],\n          logicPath: ['for'],\n        }\n      }\n    },\n  },\n  expressionGenerators: {\n    *[EXPRESSION_TYPE_OBJECT](expression) {\n      const expr = expression as UidlExpressionObject\n      for (const key in expr.value) {\n        yield {\n          type: ENTITY_DETAIL_TYPE_EXPRESSION,\n          expression: expr.value[key],\n          jsonPath: ['value', key],\n          logicPath: [key],\n        }\n      }\n    },\n    *[EXPRESSION_TYPE_ARRAY](expression) {\n      const expr = expression as UidlExpressionArray\n      for (let i = 0; i < expr.value.length; i++) {\n        yield {\n          type: ENTITY_DETAIL_TYPE_EXPRESSION,\n          expression: expr.value[i],\n          jsonPath: ['value', i],\n          logicPath: [i],\n        }\n      }\n    },\n    *[EXPRESSION_TYPE_SLOT](expression) {\n      const expr = expression as UidlExpressionSlot\n      for (let i = 0; i < expr.value.length; i++) {\n        yield {\n          type: ENTITY_DETAIL_TYPE_ELEMENT,\n          element: expr.value[i],\n          jsonPath: ['value', i],\n          logicPath: [i],\n        }\n      }\n    },\n  },\n  uidlLogicGetters: {\n    view({ view }, logicPath, { getInElement }) {\n      const [key, ...restLogicPath] = logicPath\n      const childRet = getInElement(view, restLogicPath)\n      if (!childRet) return childRet\n      return {\n        ...childRet,\n        jsonPath: [key, ...childRet.jsonPath],\n      }\n    },\n  },\n  elementLogicGetters: {\n    props({ props, children }, logicPath, { getInExpression, getInElement }) {\n      let ret: GetterEntityDetail\n      if (props) {\n        const [keyProps, key, ...restLogicPath] = logicPath\n        const childExpr = props[key]\n        if (!isUndefined(childExpr)) {\n          const childRet = getInExpression(childExpr, restLogicPath)\n          if (childRet) {\n            ret = {\n              ...childRet,\n              jsonPath: [keyProps, key, ...childRet.jsonPath],\n            }\n          }\n        }\n      }\n      if (\n        !ret &&\n        children &&\n        arrayStartsWith(logicPath, childrenSlotLogicPath)\n      ) {\n        if (logicPath.length === 2) {\n          return {\n            type: ENTITY_DETAIL_TYPE_EXPRESSION,\n            expression: {\n              type: EXPRESSION_TYPE_SLOT,\n              value: children,\n            },\n            jsonPath: [STR_CHILDREN],\n          }\n        }\n        const [index, ...restLogicPath] = logicPath.slice(2)\n        const childElement = children[index as number]\n        if (isUndefined(childElement)) return\n        const childRet = getInElement(childElement, restLogicPath)\n        if (!childRet) return childRet\n        return {\n          ...childRet,\n          jsonPath: [STR_CHILDREN, index, ...childRet.jsonPath],\n        }\n      }\n      return ret\n    },\n    if({ if: expr }, logicPath, { getInExpression }) {\n      if (isUndefined(expr)) return\n      const [key, ...restLogicPath] = logicPath\n      const childRet = getInExpression(expr, restLogicPath)\n      if (!childRet) return childRet\n      return {\n        ...childRet,\n        jsonPath: [key, ...childRet.jsonPath],\n      }\n    },\n    for({ for: expr }, logicPath, { getInExpression }) {\n      if (isUndefined(expr)) return\n      const [key, ...restLogicPath] = logicPath\n      const childRet = getInExpression(expr, restLogicPath)\n      if (!childRet) return childRet\n      return {\n        ...childRet,\n        jsonPath: [key, ...childRet.jsonPath],\n      }\n    },\n  },\n  expressionLogicGetters: {\n    [EXPRESSION_TYPE_STATIC](expression, logicPath) {\n      const expr = expression as\n        | UidlExpressionStatic\n        | UidlUnnormalizedExpressionStatic\n      const isNormalized = isNormalizedExpression(expr)\n      const retExpr = get(isNormalized ? expr.value : expr, logicPath)\n      if (isUndefined(retExpr)) return\n      return {\n        type: ENTITY_DETAIL_TYPE_EXPRESSION,\n        expression: retExpr,\n        jsonPath: isNormalized ? ['value', ...logicPath] : logicPath,\n        isPart: true,\n      }\n    },\n    [EXPRESSION_TYPE_OBJECT](expression, logicPath, { getInExpression }) {\n      const expr = expression as UidlExpressionObject\n      const [key, ...restLogicPath] = logicPath\n      const childExpr = expr.value[key]\n      if (isUndefined(childExpr)) return\n      const childRet = getInExpression(childExpr, restLogicPath)\n      if (!childRet) return childRet\n      return {\n        ...childRet,\n        jsonPath: ['value', key, ...childRet.jsonPath],\n      }\n    },\n    [EXPRESSION_TYPE_ARRAY](expression, logicPath, { getInExpression }) {\n      const expr = expression as UidlExpressionArray\n      const [index, ...restLogicPath] = logicPath\n      const childExpr = expr.value[index as number]\n      if (isUndefined(childExpr)) return\n      const childRet = getInExpression(childExpr, restLogicPath)\n      if (!childRet) return childRet\n      return {\n        ...childRet,\n        jsonPath: ['value', index, ...childRet.jsonPath],\n      }\n    },\n    [EXPRESSION_TYPE_SLOT](expression, logicPath, { getInElement }) {\n      const expr = expression as UidlExpressionSlot\n      const [index, ...restLogicPath] = logicPath\n      const childElement = expr.value[index as number]\n      if (isUndefined(childElement)) return\n      const childRet = getInElement(childElement, restLogicPath)\n      if (!childRet) return childRet\n      return {\n        ...childRet,\n        jsonPath: ['value', index, ...childRet.jsonPath],\n      }\n    },\n  },\n  uidlLogicSetters: {\n    view(uidl, logicPath, entity, { setInElement }) {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      uidl.view = setInElement(uidl.view, logicPath.slice(1), entity)!\n      return uidl\n    },\n  },\n  elementLogicSetters: {\n    props(element, logicPath, entity, { setInExpression }) {\n      let { props, children } = element\n      if (\n        !children &&\n        arrayStartsWith(logicPath, childrenSlotLogicPath) &&\n        logicPath.length === 3\n      ) {\n        // 自动初始化 children\n        children = element.children = []\n      }\n      props = mergeChildrenToProps(children, props)\n      const key = logicPath[1]\n      const childRet = setInExpression(props[key], logicPath.slice(2), entity)\n      if (isUndefined(childRet)) delete props[key]\n      else props[key] = childRet\n      ;[children, props] = splitChildrenFromProps(props)\n      if (children) element.children = children\n      else delete element.children\n      if (countKeys(props)) element.props = props\n      else delete element.props\n      return element\n    },\n    if(element, logicPath, entity, { setInExpression }) {\n      const childRet = setInExpression(\n        element.if ?? null,\n        logicPath.slice(1),\n        entity,\n      )\n      if (isUndefined(childRet)) delete element.if\n      else element.if = childRet\n      return element\n    },\n    for(element, logicPath, entity, { setInExpression }) {\n      const childRet = setInExpression(\n        element.for ?? null,\n        logicPath.slice(1),\n        entity,\n      )\n      if (isUndefined(childRet)) delete element.for\n      else element.for = childRet\n      return element\n    },\n  },\n  expressionLogicSetters: {\n    [EXPRESSION_TYPE_STATIC](\n      expression,\n      logicPath,\n      entity,\n      { setInExpression },\n    ) {\n      const expr = expression as\n        | UidlExpressionStatic\n        | UidlUnnormalizedExpressionStatic\n      const ne = normalizeExpression(expr)\n      const [key, ...restLogicPath] = logicPath\n      // 确保 ne.value 是数组或对象\n      if (isObject(ne.value)) {\n        // noop\n      } else {\n        ne.value = isNumber(key) ? [] : {}\n      }\n      const childRet = setInExpression(\n        jsonToStaticExpression((ne.value as AnyObject)[key] ?? null),\n        restLogicPath,\n        entity,\n      )\n      if (isUndefined(childRet)) {\n        if (isArray(ne.value)) {\n          ne.value.splice(key as number, 1)\n        } else {\n          delete (ne.value as AnyObject)[key]\n        }\n        return unnormalizeExpression(ne)\n      }\n      if (isStaticExpression(childRet)) {\n        ;(ne.value as AnyObject)[key] = getStaticExpressionValue(childRet)\n        return unnormalizeExpression(ne)\n      }\n      let ret: UidlExpressionArray | UidlExpressionObject\n      if (isArray(ne.value)) {\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        ret = toArrayExpression(ne)!\n      } else {\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        ret = toObjectExpression(ne)!\n      }\n      ;(ret.value as AnyObject)[key] = childRet\n      return ret\n    },\n    [EXPRESSION_TYPE_OBJECT](\n      expression,\n      logicPath,\n      entity,\n      { setInExpression },\n    ) {\n      const expr = expression as UidlExpressionObject\n      const { value: exprValue } = expr\n      const [key, ...restLogicPath] = logicPath\n      const childRet = setInExpression(\n        exprValue[key] ?? null,\n        restLogicPath,\n        entity,\n      )\n      if (isUndefined(childRet)) delete exprValue[key]\n      else exprValue[key] = childRet\n      return minifyObjectExpressionShallow(expr)\n    },\n    [EXPRESSION_TYPE_ARRAY](\n      expression,\n      logicPath,\n      entity,\n      { setInExpression },\n    ) {\n      const expr = expression as UidlExpressionArray\n      const [index, ...restLogicPath] = logicPath\n      const childRet = setInExpression(\n        expr.value[index as number] ?? null,\n        restLogicPath,\n        entity,\n      )\n      if (isUndefined(childRet)) {\n        expr.value.splice(index as number, 1)\n      } else expr.value[index as number] = childRet\n      return minifyArrayExpressionShallow(expr)\n    },\n    [EXPRESSION_TYPE_SLOT](expression, logicPath, entity, { setInElement }) {\n      const expr = expression as UidlExpressionSlot\n      const [index, ...restLogicPath] = logicPath\n      const childRet = setInElement(\n        expr.value[index as number],\n        restLogicPath,\n        entity,\n      )\n      if (childRet) expr.value[index as number] = childRet\n      else {\n        expr.value.splice(index as number, 1)\n      }\n      return expr\n    },\n  },\n  uidlMinifiers: {\n    dependencies(uidl) {\n      if (!uidl.dependencies?.length) {\n        delete uidl.dependencies\n      }\n      return uidl\n    },\n    components(uidl) {\n      if (!uidl.components?.length) {\n        delete uidl.components\n      }\n      return uidl\n    },\n    view(uidl, { minifyElement }) {\n      uidl.view = minifyElement(uidl.view)\n      return uidl\n    },\n  },\n  elementMinifiers: {\n    props(element, { minifyExpression }) {\n      const { props } = element\n      if (props) {\n        const ks = keys(props)\n        if (!ks.length) {\n          delete element.props\n        } else {\n          element.props = mapValues(props, minifyExpression)\n        }\n      }\n      return element\n    },\n    children(element, { minifyElement }) {\n      const { children } = element\n      if (children?.length) {\n        element.children = children.map(minifyElement)\n      } else {\n        delete element.children\n      }\n      return element\n    },\n  },\n  expressionMinifiers: {\n    [EXPRESSION_TYPE_STATIC]: unnormalizeExpression,\n    [EXPRESSION_TYPE_OBJECT](expression, { minifyExpression }) {\n      const expr = expression as UidlExpressionObject\n      expr.value = mapValues(expr.value, minifyExpression)\n      return minifyObjectExpressionShallow(expr)\n    },\n    [EXPRESSION_TYPE_ARRAY](expression, { minifyExpression }) {\n      const expr = expression as UidlExpressionArray\n      expr.value = expr.value.map(minifyExpression)\n      return minifyArrayExpressionShallow(expr)\n    },\n    [EXPRESSION_TYPE_SLOT](expression, { minifyElement }) {\n      const expr = expression as UidlExpressionSlot\n      expr.value = expr.value.map(minifyElement)\n      return expr\n    },\n  },\n}\n\n/**\n * 浅压缩对象表达式\n * @param expression 对象表达式\n */\nexport function minifyObjectExpressionShallow(\n  expression: UidlExpressionObject,\n): UidlExpressionObject | UidlExpressionStatic {\n  const { value } = expression\n  if (values(value).every(isStaticExpression)) {\n    return createStaticExpression(mapValues(value, getStaticExpressionValue))\n  }\n  return expression\n}\n\n/**\n * 浅压缩数组表达式\n * @param expression 数组表达式\n */\nexport function minifyArrayExpressionShallow(\n  expression: UidlExpressionArray,\n): UidlExpressionArray | UidlUnnormalizedExpressionStatic {\n  const { value } = expression\n  if (value.every(isStaticExpression)) {\n    return value.map(getStaticExpressionValue)\n  }\n  return expression\n}\n","import type {\n  EditorUidl,\n  EditorUidlElement,\n  UidlElement,\n  UidlExpressionBox,\n} from '@p-lc/uidl'\nimport { isUndefined, merge } from 'lodash-uni'\nimport {\n  ENTITY_DETAIL_TYPE_EXPRESSION,\n  EXPRESSION_TYPE_BOX,\n} from '../constants'\nimport type { UidlUtilsConfig } from './types'\nimport { defaultUidlUtilsConfig } from './uidl-utils-config'\n\n/**\n * 默认编辑器 UIDL 工具集配置\n */\nexport const defaultEditorUidlUtilsConfig: UidlUtilsConfig<EditorUidl> = merge(\n  {},\n  defaultUidlUtilsConfig as unknown as UidlUtilsConfig<EditorUidl>,\n  {\n    expressionGenerators: {\n      *[EXPRESSION_TYPE_BOX](expression) {\n        const expr = expression as UidlExpressionBox\n        yield {\n          type: ENTITY_DETAIL_TYPE_EXPRESSION,\n          expression: expr.expr,\n          jsonPath: ['expr'],\n          logicPath: [],\n        }\n      },\n    },\n    expressionLogicGetters: {\n      [EXPRESSION_TYPE_BOX](expression, logicPath, { getInExpression }) {\n        const expr = expression as UidlExpressionBox\n        const childRet = getInExpression(expr.expr ?? null, logicPath)\n        if (!childRet) return childRet\n        return {\n          ...childRet,\n          jsonPath: ['expr', ...childRet.jsonPath],\n        }\n      },\n    },\n    expressionLogicSetters: {\n      [EXPRESSION_TYPE_BOX](\n        expression,\n        logicPath,\n        entity,\n        { setInExpression },\n      ) {\n        const expr = expression as UidlExpressionBox\n        const childRet = setInExpression(expr.expr ?? null, logicPath, entity)\n        if (isUndefined(childRet)) return childRet\n        expr.expr = childRet\n        return expr\n      },\n    },\n    uidlMinifiers: {\n      editorName(uidl) {\n        delete uidl.editorName\n        return uidl\n      },\n    },\n    elementMinifiers: {\n      name(element) {\n        delete (element as EditorUidlElement | UidlElement).name\n        return element\n      },\n    },\n    expressionMinifiers: {\n      [EXPRESSION_TYPE_BOX](expression, { minifyExpression }) {\n        const expr = expression as UidlExpressionBox\n        const innerExpr = expr.expr\n        return innerExpr && minifyExpression(innerExpr)\n      },\n    },\n  } as Partial<UidlUtilsConfig<EditorUidl>>,\n)\n","import type { JsonPath } from '@p-lc/shared'\nimport type { Uidl } from '@p-lc/uidl'\nimport { get, isArray } from 'lodash-uni'\nimport type {\n  GetterEntityDetail,\n  LogicGetterHelper,\n  UidlUtilsConfig,\n} from '../config'\nimport {\n  ENTITY_DETAIL_TYPE_ELEMENT,\n  ENTITY_DETAIL_TYPE_EXPRESSION,\n} from '../constants'\nimport { getExpressionType } from '../expression'\nimport type { ElementOfUidl, ExpressionOfUidl } from '../types'\n\n/**\n * 创建逻辑获取器助手\n * @param config UIDL 工具集配置\n */\nexport function createLogicGetterHelper<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n): LogicGetterHelper<U> {\n  const helper: LogicGetterHelper<U> = {\n    getInElement(element, logicPath) {\n      if (!logicPath.length) {\n        return {\n          type: ENTITY_DETAIL_TYPE_ELEMENT,\n          element,\n          jsonPath: [],\n        }\n      }\n      const key = logicPath[0]\n      const fn = config.elementLogicGetters[key]\n      return fn?.(element, logicPath, helper)\n    },\n    getInExpression(expr, logicPath) {\n      if (!logicPath.length) {\n        return {\n          type: ENTITY_DETAIL_TYPE_EXPRESSION,\n          expression: expr,\n          jsonPath: [],\n        }\n      }\n      const fn = config.expressionLogicGetters[getExpressionType(expr)]\n      return fn?.(expr, logicPath, helper)\n    },\n  }\n  return helper\n}\n\n/**\n * 通过 UIDL 获取实体\n * @param config UIDL 工具集配置\n * @param uidl UIDL\n * @param logicPath 逻辑路径\n */\nexport function logicGetEntity<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  uidl: U,\n  logicPath: JsonPath,\n): GetterEntityDetail<U> {\n  const helper = createLogicGetterHelper(config)\n  const key = logicPath[0]\n  const fn = config.uidlLogicGetters[key]\n  return fn?.(uidl, logicPath, helper)\n}\n\n/**\n * 在元素中获取实体\n * @param config UIDL 工具集配置\n * @param element 元素\n * @param logicPath 逻辑路径\n */\nexport function logicGetEntityInElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n  logicPath: JsonPath,\n): GetterEntityDetail<U> {\n  const { getInElement } = createLogicGetterHelper(config)\n  return getInElement(element, logicPath)\n}\n\n/**\n * 在表达式中获取实体\n * @param config UIDL 工具集配置\n * @param expression 表达式\n * @param logicPath 逻辑路径\n */\nexport function logicGetEntityInExpression<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  expression: ExpressionOfUidl<U>,\n  logicPath: JsonPath,\n): GetterEntityDetail<U> {\n  const { getInExpression } = createLogicGetterHelper(config)\n  return getInExpression(expression, logicPath)\n}\n\n/**\n * 获取器实体详情转元素\n * @param ed 获取器实体详情\n */\nexport function getterEntityDetailToElement<U extends Uidl = Uidl>(\n  ed: GetterEntityDetail<U>,\n): ElementOfUidl<U> | undefined {\n  if (ed?.type === ENTITY_DETAIL_TYPE_ELEMENT) {\n    return ed.element\n  }\n}\n\n/**\n * 获取器实体详情转表达式\n * @param ed 获取器实体详情\n */\nexport function getterEntityDetailToExpression<U extends Uidl = Uidl>(\n  ed: GetterEntityDetail<U>,\n): ExpressionOfUidl<U> | undefined {\n  if (ed?.type === ENTITY_DETAIL_TYPE_EXPRESSION) {\n    return ed.expression\n  }\n}\n\n/**\n * 在元素中获取元素\n * @param config UIDL 工具集配置\n * @param element 元素\n * @param logicPath 逻辑路径\n */\nexport function logicGetElementInElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n  logicPath: JsonPath,\n): ElementOfUidl<U> | undefined {\n  const { getInElement } = createLogicGetterHelper(config)\n  return getterEntityDetailToElement(getInElement(element, logicPath))\n}\n\n/**\n * 在元素中获取表达式\n * @param config UIDL 工具集配置\n * @param element 元素\n * @param logicPath 逻辑路径\n */\nexport function logicGetExpressionInElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n  logicPath: JsonPath,\n): ExpressionOfUidl<U> | undefined {\n  const { getInElement } = createLogicGetterHelper(config)\n  return getterEntityDetailToExpression(getInElement(element, logicPath))\n}\n\n/**\n * 在元素中获取元素数组，`undefined` 表示数组不存在或数组为空\n * @param config UIDL 工具集配置\n * @param element 元素\n * @param logicPath 逻辑路径\n */\nexport function logicGetElementArrayInElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n  logicPath: JsonPath,\n): ElementOfUidl<U>[] | undefined {\n  const ed = logicGetEntityInElement(config, element, [...logicPath, 0])\n  if (ed?.type === ENTITY_DETAIL_TYPE_ELEMENT) {\n    const ret = get(element, ed.jsonPath.slice(0, -1))\n    if (isArray(ret)) return ret\n  }\n}\n","import type { JsonPath } from '@p-lc/shared'\nimport type { Uidl } from '@p-lc/uidl'\nimport { isUndefined } from 'lodash-uni'\nimport type {\n  LogicSetterHelper,\n  SetterEntityDetail,\n  UidlUtilsConfig,\n} from '../config'\nimport {\n  ENTITY_DETAIL_TYPE_ELEMENT,\n  ENTITY_DETAIL_TYPE_EXPRESSION,\n  EXPRESSION_TYPE_STATIC,\n} from '../constants'\nimport { getExpressionType, unnormalizeExpression } from '../expression'\nimport type { ElementOfUidl, ExpressionOfUidl } from '../types'\n\n/**\n * 创建逻辑设置器助手\n * @param config UIDL 工具集配置\n */\nexport function createLogicSetterHelper<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n): LogicSetterHelper<U> {\n  const helper: LogicSetterHelper<U> = {\n    setInElement(element, logicPath, entity) {\n      if (!logicPath.length) {\n        if (!entity) return entity\n        if (entity.type !== ENTITY_DETAIL_TYPE_ELEMENT) {\n          throw new Error(\n            `Can not setByElement with a invalid entity. type=${entity.type}`,\n          )\n        }\n        return entity.element\n      }\n      const key = logicPath[0]\n      const fn = config.elementLogicSetters[key]\n      if (!fn) {\n        throw new Error(\n          `Can not setByElement with a invalid setter. key=${key}`,\n        )\n      }\n      return fn(element, logicPath, entity, helper)\n    },\n    setInExpression(expr, logicPath, entity) {\n      if (!logicPath.length) {\n        if (!entity) return entity\n        if (entity.type !== ENTITY_DETAIL_TYPE_EXPRESSION) {\n          throw new Error(\n            `Can not setByExpression with a invalid entity. type=${entity.type}`,\n          )\n        }\n        return unnormalizeExpression(entity.expression) as ExpressionOfUidl<U>\n      }\n      const fn = config.expressionLogicSetters[getExpressionType(expr)]\n      if (fn) {\n        return fn(expr, logicPath, entity, helper)\n      }\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      return config.expressionLogicSetters[EXPRESSION_TYPE_STATIC]!(\n        null as ExpressionOfUidl<U>,\n        logicPath,\n        entity,\n        helper,\n      )\n    },\n  }\n  return helper\n}\n/**\n * 在 UIDL 中设置实体，原地修改\n * @param config UIDL 工具集配置\n * @param uidl UIDL\n * @param logicPath 逻辑路径，长度大于 0\n * @param entity 实体\n */\nexport function logicSetEntity<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  uidl: U,\n  logicPath: JsonPath,\n  entity: SetterEntityDetail<U>,\n): U {\n  const helper = createLogicSetterHelper(config)\n  const key = logicPath[0]\n  const fn = config.uidlLogicSetters[key]\n  if (!fn) {\n    throw new Error(`Can not logicSetEntity with a invalid setter. key=${key}`)\n  }\n  return fn(uidl, logicPath, entity, helper)\n}\n\n/**\n * 在元素中设置实体，原地修改\n * @param config UIDL 工具集配置\n * @param element 元素\n * @param logicPath 逻辑路径，长度大于 0\n * @param entity 实体\n */\nexport function logicSetEntityInElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n  logicPath: JsonPath,\n  entity: SetterEntityDetail<U>,\n): ElementOfUidl<U> {\n  const { setInElement } = createLogicSetterHelper(config)\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  return setInElement(element, logicPath, entity)!\n}\n\n/**\n * 在表达式中设置实体，会尽量原地修改，但最外层表达式被修改时，以返回值为准\n * @param config UIDL 工具集配置\n * @param expression 表达式\n * @param logicPath 逻辑路径，长度大于 0\n * @param entity 实体\n */\nexport function logicSetEntityInExpression<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  expression: ExpressionOfUidl<U>,\n  logicPath: JsonPath,\n  entity: SetterEntityDetail<U>,\n): ExpressionOfUidl<U> {\n  const { setInExpression } = createLogicSetterHelper(config)\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  return setInExpression(expression, logicPath, entity)!\n}\n\n/**\n * 在 UIDL 中设置元素，原地修改\n * @param config UIDL 工具集配置\n * @param uidl UIDL\n * @param logicPath 逻辑路径，长度大于 0\n * @param childElement 子元素，不传表示删除\n */\nexport function logicSetElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  uidl: U,\n  logicPath: JsonPath,\n  childElement?: ElementOfUidl<U>,\n): U {\n  return logicSetEntity(\n    config,\n    uidl,\n    logicPath,\n    childElement && {\n      type: ENTITY_DETAIL_TYPE_ELEMENT,\n      element: childElement,\n    },\n  )\n}\n\n/**\n * 在元素中设置元素，原地修改\n * @param config UIDL 工具集配置\n * @param element 元素\n * @param logicPath 逻辑路径，长度大于 0\n * @param childElement 子元素，不传表示删除\n */\nexport function logicSetElementInElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n  logicPath: JsonPath,\n  childElement?: ElementOfUidl<U>,\n): ElementOfUidl<U> {\n  return logicSetEntityInElement(\n    config,\n    element,\n    logicPath,\n    childElement && {\n      type: ENTITY_DETAIL_TYPE_ELEMENT,\n      element: childElement,\n    },\n  )\n}\n\n/**\n * 在元素中设置表达式，原地修改\n * @param config UIDL 工具集配置\n * @param element 元素\n * @param logicPath 逻辑路径，长度大于 0\n * @param expression 表达式，不传表示删除\n */\nexport function logicSetExpressionInElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n  logicPath: JsonPath,\n  expression?: ExpressionOfUidl<U>,\n): ElementOfUidl<U> {\n  return logicSetEntityInElement(\n    config,\n    element,\n    logicPath,\n    isUndefined(expression)\n      ? expression\n      : {\n          type: ENTITY_DETAIL_TYPE_EXPRESSION,\n          expression,\n        },\n  )\n}\n","import { definedValues, echo } from '@p-lc/shared'\nimport type { Uidl } from '@p-lc/uidl'\nimport type { MinifierHelper, UidlUtilsConfig } from './config'\nimport { getExpressionType } from './expression'\nimport type { ElementOfUidl, ExpressionOfUidl } from './types'\n\n/**\n * 创建压缩器助手\n * @param config UIDL 工具集配置\n */\nexport function createMinifierHelper<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n): MinifierHelper<U> {\n  const helper: MinifierHelper<U> = {\n    minifyElement(element) {\n      for (const fn of definedValues(config.elementMinifiers)) {\n        element = fn(element, helper)\n      }\n      return element\n    },\n    minifyExpression(expr) {\n      const fn = config.expressionMinifiers[getExpressionType(expr)]\n      return fn ? fn(expr, helper) : expr\n    },\n  }\n  return helper\n}\n\n/**\n * 压缩 UIDL，有损，只保留运行时需要的部分\n * @param config UIDL 工具集配置\n * @param uidl UIDL\n */\nexport function minify<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  uidl: U,\n): U {\n  const helper = createMinifierHelper(config)\n  for (const fn of definedValues(config.uidlMinifiers)) {\n    uidl = fn(uidl, helper)\n  }\n  return uidl\n}\n\n/**\n * 压缩元素，有损，只保留运行时需要的部分\n * @param config UIDL 工具集配置\n * @param element 元素\n */\nexport function minifyElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n): ElementOfUidl<U> {\n  const { minifyElement: m } = createMinifierHelper(config)\n  return m(element)\n}\n\n/**\n * 压缩表达式，有损，只保留运行时需要的部分\n * @param config UIDL 工具集配置\n * @param expression 表达式\n */\nexport function minifyExpression<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  expression: ExpressionOfUidl<U>,\n): ExpressionOfUidl<U> {\n  const { minifyExpression: m } = createMinifierHelper(config)\n  return m(expression)\n}\n\n/**\n * 浅压缩表达式，不含表达式内的元素，有损，只保留运行时需要的部分\n * @param config UIDL 工具集配置\n * @param expression 表达式\n */\nexport function minifyExpressionShallow<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  expression: ExpressionOfUidl<U>,\n): ExpressionOfUidl<U> {\n  const helper = createMinifierHelper(config)\n  helper.minifyElement = echo\n  const { minifyExpression: m } = helper\n  return m(expression)\n}\n","import type { JsonPath } from '@p-lc/shared'\nimport { definedValues } from '@p-lc/shared'\nimport type { Uidl } from '@p-lc/uidl'\nimport { last } from 'lodash-uni'\nimport type {\n  ChildElementDetail,\n  ChildEntityDetail,\n  ChildExpressionDetail,\n  UidlUtilsConfig,\n} from '../../config'\nimport {\n  ENTITY_DETAIL_TYPE_ELEMENT,\n  ENTITY_DETAIL_TYPE_EXPRESSION,\n  TRAVERSE_TIME_ENTER,\n  TRAVERSE_TIME_EXIT,\n} from '../../constants'\nimport { normalizeExpression } from '../../expression'\nimport type { EntityDetailType } from '../../types'\nimport type {\n  TraverseElementDetail,\n  TraverseEntityDetail,\n  TraverseExpressionDetail,\n  TraverseOptions,\n  TraverseTime,\n} from '../types'\n\n/**\n * 内部：深度优先搜索实体\n * @param config UIDL 工具集配置\n * @param uidl UIDL\n * @param options 选项\n */\nexport function* internalDfsEntity<\n  U extends Uidl = Uidl,\n  T extends EntityDetailType = EntityDetailType,\n>(\n  config: UidlUtilsConfig<U>,\n  uidl: U,\n  options: TraverseOptions<T>,\n): Generator<TraverseEntityDetail<U, T>, void, unknown> {\n  for (const fn of definedValues(config.uidlGenerators)) {\n    for (const ced of fn(uidl)) {\n      yield* dfsEntityInEntityAndModifyPath(config, ced, [], [], [], options)\n    }\n  }\n}\n\n/**\n * 在实体中深度优先搜索实体，并修改路径\n * @param config UIDL 工具集配置\n * @param ced 子实体详情\n * @param fullJsonPath 从最顶层对象开始的 JSON 路径\n * @param fullLogicPath 从最顶层对象开始的逻辑路径\n * @param elementIdPath 从最顶层对象开始的元素 ID 路径\n * @param options 选项\n */\nfunction* dfsEntityInEntityAndModifyPath<\n  U extends Uidl = Uidl,\n  T extends EntityDetailType = EntityDetailType,\n>(\n  config: UidlUtilsConfig<U>,\n  ced: ChildEntityDetail<U>,\n  fullJsonPath: JsonPath,\n  fullLogicPath: JsonPath,\n  elementIdPath: string[],\n  options: TraverseOptions<T>,\n): Generator<TraverseEntityDetail<U, T>, void, unknown> {\n  const nextFullJsonPath = [...fullJsonPath, ...ced.jsonPath]\n  const nextFullLogicPath = [...fullLogicPath, ...ced.logicPath]\n  const nextElementIdPath =\n    ced.type === ENTITY_DETAIL_TYPE_ELEMENT\n      ? [...elementIdPath, ced.element.id]\n      : elementIdPath\n  yield* internalDfsEntityInEntity(\n    config,\n    ced,\n    nextFullJsonPath,\n    nextFullLogicPath,\n    nextElementIdPath,\n    options,\n  )\n}\n\n/**\n * 内部：在实体中深度优先搜索实体\n * @param config UIDL 工具集配置\n * @param ced 实体详情\n * @param fullJsonPath 从最顶层对象开始的 JSON 路径\n * @param fullLogicPath 从最顶层对象开始的逻辑路径\n * @param elementIdPath 从最顶层对象开始的元素 ID 路径\n * @param options 选项\n */\nexport function* internalDfsEntityInEntity<\n  U extends Uidl = Uidl,\n  T extends EntityDetailType = EntityDetailType,\n>(\n  config: UidlUtilsConfig<U>,\n  ced: ChildEntityDetail<U>,\n  fullJsonPath: JsonPath,\n  fullLogicPath: JsonPath,\n  elementIdPath: string[],\n  options: TraverseOptions<T>,\n): Generator<TraverseEntityDetail<U, T>, void, unknown> {\n  yield* (\n    ced.type === ENTITY_DETAIL_TYPE_ELEMENT\n      ? internalDfsEntityInElement\n      : internalDfsEntityInExpression\n  )(\n    config,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    ced as any,\n    fullJsonPath,\n    fullLogicPath,\n    elementIdPath,\n    options,\n  )\n}\n\n/**\n * 内部：在元素中深度优先搜索实体\n * @param config UIDL 工具集配置\n * @param ced 实体详情\n * @param fullJsonPath 从最顶层对象开始的 JSON 路径\n * @param fullLogicPath 从最顶层对象开始的逻辑路径\n * @param elementIdPath 从最顶层对象开始的元素 ID 路径\n * @param options 选项\n */\nexport function* internalDfsEntityInElement<\n  U extends Uidl = Uidl,\n  T extends EntityDetailType = EntityDetailType,\n>(\n  config: UidlUtilsConfig<U>,\n  ced: ChildElementDetail<U>,\n  fullJsonPath: JsonPath,\n  fullLogicPath: JsonPath,\n  elementIdPath: string[],\n  options: TraverseOptions<T>,\n): Generator<TraverseEntityDetail<U, T>, void, unknown> {\n  if (elementIdPath.length > options.elementIdPathMaxLength) {\n    return\n  }\n  const shouldYield =\n    (options.entityDetailTypes as EntityDetailType[]).indexOf(\n      ENTITY_DETAIL_TYPE_ELEMENT,\n    ) !== -1\n  if (\n    shouldYield &&\n    options.traverseTimes.indexOf(TRAVERSE_TIME_ENTER) !== -1\n  ) {\n    yield getTed(TRAVERSE_TIME_ENTER)\n  }\n  for (const fn of definedValues(config.elementGenerators)) {\n    for (const d of fn(ced.element)) {\n      yield* dfsEntityInEntityAndModifyPath(\n        config,\n        d,\n        fullJsonPath,\n        fullLogicPath,\n        elementIdPath,\n        options,\n      )\n    }\n  }\n  if (shouldYield && options.traverseTimes.indexOf(TRAVERSE_TIME_EXIT) !== -1) {\n    yield getTed(TRAVERSE_TIME_EXIT)\n  }\n\n  function getTed(traverseTime: TraverseTime): TraverseEntityDetail<U, T> {\n    const ted: TraverseElementDetail<U> = {\n      ...ced,\n      traverseTime,\n      fullJsonPath,\n      fullLogicPath,\n      elementIdPath,\n      elementId: last(elementIdPath) ?? null,\n      parentElementId: elementIdPath[elementIdPath.length - 2] ?? null,\n    }\n    return ted as TraverseEntityDetail<U, T>\n  }\n}\n\n/**\n * 内部：在表达式中深度优先搜索实体\n * @param config UIDL 工具集配置\n * @param ced 实体详情\n * @param fullJsonPath 从最顶层对象开始的 JSON 路径\n * @param fullLogicPath 从最顶层对象开始的逻辑路径\n * @param elementIdPath 从最顶层对象开始的元素 ID 路径\n * @param options 选项\n */\nexport function* internalDfsEntityInExpression<\n  U extends Uidl = Uidl,\n  T extends EntityDetailType = EntityDetailType,\n>(\n  config: UidlUtilsConfig<U>,\n  ced: ChildExpressionDetail<U>,\n  fullJsonPath: JsonPath,\n  fullLogicPath: JsonPath,\n  elementIdPath: string[],\n  options: TraverseOptions<T>,\n): Generator<TraverseEntityDetail<U, T>, void, unknown> {\n  const shouldYield =\n    (options.entityDetailTypes as EntityDetailType[]).indexOf(\n      ENTITY_DETAIL_TYPE_EXPRESSION,\n    ) !== -1\n  if (\n    shouldYield &&\n    options.traverseTimes.indexOf(TRAVERSE_TIME_ENTER) !== -1\n  ) {\n    yield getTed(TRAVERSE_TIME_ENTER)\n  }\n  const ne = normalizeExpression(ced.expression)\n  const fn = config.expressionGenerators[ne.type]\n  if (fn) {\n    for (const d of fn(ced.expression)) {\n      yield* dfsEntityInEntityAndModifyPath(\n        config,\n        d,\n        fullJsonPath,\n        fullLogicPath,\n        elementIdPath,\n        options,\n      )\n    }\n  }\n  if (shouldYield && options.traverseTimes.indexOf(TRAVERSE_TIME_EXIT) !== -1) {\n    yield getTed(TRAVERSE_TIME_EXIT)\n  }\n\n  function getTed(traverseTime: TraverseTime): TraverseEntityDetail<U, T> {\n    const ted: TraverseExpressionDetail<U> = {\n      ...ced,\n      traverseTime,\n      fullJsonPath,\n      fullLogicPath,\n      elementIdPath,\n      elementId: last(elementIdPath) ?? null,\n      parentElementId: elementIdPath[elementIdPath.length - 2] ?? null,\n    }\n    return ted as TraverseEntityDetail<U, T>\n  }\n}\n","import { assign } from 'lodash-uni'\nimport {\n  ENTITY_DETAIL_TYPE_ELEMENT,\n  ENTITY_DETAIL_TYPE_EXPRESSION,\n  TRAVERSE_TIME_ENTER,\n} from '../constants'\nimport type { EntityDetailType } from '../types'\nimport type { TraverseOptions } from './types'\n\n/**\n * 默认遍历选项\n */\nexport const defaultTraverseOptions: TraverseOptions = {\n  entityDetailTypes: [\n    ENTITY_DETAIL_TYPE_ELEMENT,\n    ENTITY_DETAIL_TYPE_EXPRESSION,\n  ],\n  traverseTimes: [TRAVERSE_TIME_ENTER],\n  elementIdPathMaxLength: Infinity,\n}\n\n/**\n * 标准化遍历选项\n * @param optionsList 选项列表\n */\nexport function normalizeTraverseOptions<\n  T extends EntityDetailType = EntityDetailType,\n>(\n  ...optionsList: (Partial<TraverseOptions<T>> | undefined)[]\n): TraverseOptions<T> {\n  return assign({}, defaultTraverseOptions, ...optionsList)\n}\n","import type { Uidl } from '@p-lc/uidl'\nimport type { UidlUtilsConfig } from '../config'\nimport {\n  ENTITY_DETAIL_TYPE_ELEMENT,\n  ENTITY_DETAIL_TYPE_EXPRESSION,\n} from '../constants'\nimport type {\n  ElementOfUidl,\n  EntityDetailTypeElement,\n  EntityDetailTypeExpression,\n  ExpressionOfUidl,\n} from '../types'\nimport { internalDfsEntityInElement } from './dfs/internal'\nimport { normalizeTraverseOptions } from './options'\nimport type {\n  TraverseElementDetail,\n  TraverseExpressionDetail,\n  TraverseOptions,\n} from './types'\n\n/**\n * 在元素中广度优先搜索所有下一层子元素\n * @param config UIDL 工具集配置\n * @param element 元素\n * @param options 选项\n */\nexport function* bfsChildElementsInElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n  options?: Partial<TraverseOptions<EntityDetailTypeElement>>,\n): Generator<TraverseElementDetail<U>, void, unknown> {\n  for (const ted of internalDfsEntityInElement(\n    config,\n    {\n      type: ENTITY_DETAIL_TYPE_ELEMENT,\n      element,\n      jsonPath: [],\n      logicPath: [],\n    },\n    [],\n    [],\n    [element.id],\n    normalizeTraverseOptions(\n      {\n        entityDetailTypes: [ENTITY_DETAIL_TYPE_ELEMENT],\n        elementIdPathMaxLength: 2,\n      },\n      options,\n    ),\n  )) {\n    if (ted.element !== element) {\n      yield ted\n    }\n  }\n}\n\n/**\n * 在元素中广度优先搜索所有下一层子元素，不含详情\n * @param config UIDL 工具集配置\n * @param element 元素\n * @param options 选项\n */\nexport function* bfsPureChildElementsInElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n  options?: Partial<TraverseOptions<EntityDetailTypeElement>>,\n): Generator<ElementOfUidl<U>, void, unknown> {\n  for (const ted of bfsChildElementsInElement(config, element, options)) {\n    yield ted.element\n  }\n}\n\n/**\n * 在元素中广度优先搜索所有表达式（不含子元素内的表达式）\n * @param config UIDL 工具集配置\n * @param element 元素\n * @param options 选项\n */\nexport function* bfsChildExpressionsInElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n  options?: Partial<TraverseOptions<EntityDetailTypeExpression>>,\n): Generator<TraverseExpressionDetail<U>, void, unknown> {\n  yield* internalDfsEntityInElement(\n    config,\n    {\n      type: ENTITY_DETAIL_TYPE_ELEMENT,\n      element,\n      jsonPath: [],\n      logicPath: [],\n    },\n    [],\n    [],\n    [element.id],\n    normalizeTraverseOptions(\n      {\n        entityDetailTypes: [ENTITY_DETAIL_TYPE_EXPRESSION],\n        elementIdPathMaxLength: 1,\n      },\n      options,\n    ),\n  )\n}\n\n/**\n * 在元素中广度优先搜索所有表达式（不含子元素内的表达式），不含详情\n * @param config UIDL 工具集配置\n * @param element 元素\n * @param options 选项\n */\nexport function* bfsPureChildExpressionsInElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n  options?: Partial<TraverseOptions<EntityDetailTypeExpression>>,\n): Generator<ExpressionOfUidl<U>, void, unknown> {\n  for (const ted of bfsChildExpressionsInElement(config, element, options)) {\n    yield ted.expression\n  }\n}\n","import type { Uidl } from '@p-lc/uidl'\nimport type { UidlUtilsConfig } from '../../config'\nimport {\n  ENTITY_DETAIL_TYPE_ELEMENT,\n  ENTITY_DETAIL_TYPE_EXPRESSION,\n} from '../../constants'\nimport type {\n  ElementOfUidl,\n  EntityDetailType,\n  EntityDetailTypeElement,\n  EntityDetailTypeExpression,\n  ExpressionOfUidl,\n} from '../../types'\nimport { normalizeTraverseOptions } from '../options'\nimport type {\n  TraverseElementDetail,\n  TraverseEntityDetail,\n  TraverseExpressionDetail,\n  TraverseOptions,\n} from '../types'\nimport {\n  internalDfsEntity,\n  internalDfsEntityInElement,\n  internalDfsEntityInExpression,\n} from './internal'\n\n/**\n * 深度优先搜索实体\n * @param config UIDL 工具集配置\n * @param uidl UIDL\n * @param options 选项\n */\nexport function* dfsEntity<\n  U extends Uidl = Uidl,\n  T extends EntityDetailType = EntityDetailType,\n>(\n  config: UidlUtilsConfig<U>,\n  uidl: U,\n  options?: Partial<TraverseOptions<T>>,\n): Generator<TraverseEntityDetail<U, T>, void, unknown> {\n  yield* internalDfsEntity(config, uidl, normalizeTraverseOptions(options))\n}\n\n/**\n * 深度优先搜索元素\n * @param config UIDL 工具集配置\n * @param uidl UIDL\n * @param options 选项\n */\nexport function* dfsElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  uidl: U,\n  options?: Partial<TraverseOptions<EntityDetailTypeElement>>,\n): Generator<TraverseElementDetail<U>, void, unknown> {\n  yield* internalDfsEntity(\n    config,\n    uidl,\n    normalizeTraverseOptions(\n      {\n        entityDetailTypes: [ENTITY_DETAIL_TYPE_ELEMENT],\n      },\n      options,\n    ),\n  )\n}\n\n/**\n * 深度优先搜索元素\n * @param config UIDL 工具集配置\n * @param uidl UIDL\n * @param options 选项\n */\nexport function* dfsExpression<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  uidl: U,\n  options?: Partial<TraverseOptions<EntityDetailTypeExpression>>,\n): Generator<TraverseExpressionDetail<U>, void, unknown> {\n  yield* internalDfsEntity(\n    config,\n    uidl,\n    normalizeTraverseOptions(\n      {\n        entityDetailTypes: [ENTITY_DETAIL_TYPE_EXPRESSION],\n      },\n      options,\n    ),\n  )\n}\n\n/**\n * 在元素中深度优先搜索实体\n * @param config UIDL 工具集配置\n * @param element 元素\n * @param options 选项\n */\nexport function* dfsEntityInElement<\n  U extends Uidl = Uidl,\n  T extends EntityDetailType = EntityDetailType,\n>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n  options?: Partial<TraverseOptions<T>>,\n): Generator<TraverseEntityDetail<U, T>, void, unknown> {\n  yield* internalDfsEntityInElement(\n    config,\n    {\n      type: ENTITY_DETAIL_TYPE_ELEMENT,\n      element,\n      jsonPath: [],\n      logicPath: [],\n    },\n    [],\n    [],\n    [element.id],\n    normalizeTraverseOptions(options),\n  )\n}\n\n/**\n * 在元素中深度优先搜索元素\n * @param config UIDL 工具集配置\n * @param element 元素\n * @param options 选项\n */\nexport function* dfsElementInElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n  options?: Partial<TraverseOptions<EntityDetailTypeElement>>,\n): Generator<TraverseElementDetail<U>, void, unknown> {\n  yield* internalDfsEntityInElement(\n    config,\n    {\n      type: ENTITY_DETAIL_TYPE_ELEMENT,\n      element,\n      jsonPath: [],\n      logicPath: [],\n    },\n    [],\n    [],\n    [element.id],\n    normalizeTraverseOptions(\n      {\n        entityDetailTypes: [ENTITY_DETAIL_TYPE_ELEMENT],\n      },\n      options,\n    ),\n  )\n}\n\n/**\n * 在元素中深度优先搜索表达式\n * @param config UIDL 工具集配置\n * @param element 元素\n * @param options 选项\n */\nexport function* dfsExpressionInElement<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  element: ElementOfUidl<U>,\n  options?: Partial<TraverseOptions<EntityDetailTypeExpression>>,\n): Generator<TraverseExpressionDetail<U>, void, unknown> {\n  yield* internalDfsEntityInElement(\n    config,\n    {\n      type: ENTITY_DETAIL_TYPE_ELEMENT,\n      element,\n      jsonPath: [],\n      logicPath: [],\n    },\n    [],\n    [],\n    [element.id],\n    normalizeTraverseOptions(\n      {\n        entityDetailTypes: [ENTITY_DETAIL_TYPE_EXPRESSION],\n      },\n      options,\n    ),\n  )\n}\n\n/**\n * 在表达式中深度优先搜索实体\n * @param config UIDL 工具集配置\n * @param expression 表达式\n * @param options 选项\n */\nexport function* dfsEntityInExpression<\n  U extends Uidl = Uidl,\n  T extends EntityDetailType = EntityDetailType,\n>(\n  config: UidlUtilsConfig<U>,\n  expression: ExpressionOfUidl<U>,\n  options?: Partial<TraverseOptions<T>>,\n): Generator<TraverseEntityDetail<U, T>, void, unknown> {\n  yield* internalDfsEntityInExpression(\n    config,\n    {\n      type: ENTITY_DETAIL_TYPE_EXPRESSION,\n      expression,\n      jsonPath: [],\n      logicPath: [],\n    },\n    [],\n    [],\n    [],\n    normalizeTraverseOptions(options),\n  )\n}\n\n/**\n * 在表达式中深度优先搜索元素\n * @param config UIDL 工具集配置\n * @param expression 表达式\n * @param options 选项\n */\nexport function* dfsElementInExpression<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  expression: ExpressionOfUidl<U>,\n  options?: Partial<TraverseOptions<EntityDetailTypeElement>>,\n): Generator<TraverseElementDetail<U>, void, unknown> {\n  yield* internalDfsEntityInExpression(\n    config,\n    {\n      type: ENTITY_DETAIL_TYPE_EXPRESSION,\n      expression,\n      jsonPath: [],\n      logicPath: [],\n    },\n    [],\n    [],\n    [],\n    normalizeTraverseOptions(\n      {\n        entityDetailTypes: [ENTITY_DETAIL_TYPE_ELEMENT],\n      },\n      options,\n    ),\n  )\n}\n\n/**\n * 在表达式中深度优先搜索表达式\n * @param config UIDL 工具集配置\n * @param expression 表达式\n * @param options 选项\n */\nexport function* dfsExpressionInExpression<U extends Uidl = Uidl>(\n  config: UidlUtilsConfig<U>,\n  expression: ExpressionOfUidl<U>,\n  options?: Partial<TraverseOptions<EntityDetailTypeExpression>>,\n): Generator<TraverseExpressionDetail<U>, void, unknown> {\n  yield* internalDfsEntityInExpression(\n    config,\n    {\n      type: ENTITY_DETAIL_TYPE_EXPRESSION,\n      expression,\n      jsonPath: [],\n      logicPath: [],\n    },\n    [],\n    [],\n    [],\n    normalizeTraverseOptions(\n      {\n        entityDetailTypes: [ENTITY_DETAIL_TYPE_EXPRESSION],\n      },\n      options,\n    ),\n  )\n}\n"],"names":["EXPRESSION_TYPE_STATIC","STR_STATIC","EXPRESSION_TYPE_OBJECT","EXPRESSION_TYPE_ARRAY","EXPRESSION_TYPE_SLOT","EXPRESSION_TYPE_BOX","DEFAULT_PKG_NAME","DEFAULT_PKG_VERSION","UIDL_DEPENDENCY_TYPE_COMPONENT_LIBRARY","UIDL_DEPENDENCY_TYPE_UTILS","DEFAULT_UIDL_DEPENDENCY_TYPE","CODE_TYPE_PRO","CODE_TYPE_LOW","DEFAULT_CODE_TYPE","DEFAULT_PRO_CODE_FROM","DEFAULT_IMPORT_EXPORT_PATH","STR_DEFAULT","ENTITY_DETAIL_TYPE_ELEMENT","ENTITY_DETAIL_TYPE_EXPRESSION","TRAVERSE_TIME_ENTER","TRAVERSE_TIME_EXIT","childrenSlotLogicPath","STR_PROPS","STR_CHILDREN","ELEMENT_TYPE_SEPARATOR","createUidlComponent","uidl","pkgName","pkgVersion","componentType","importPath","lastElementType","last","lastN","n","createBigInt","component","isEqual","addUidlComponent","components","ensureUidlComponents","componentTypes","importPaths","currentPkgNameComponentTypeMap","cd","jsonStringify","i","key","elementType","createElementId","createRandomVarId","isNormalizedExpression","expr","isObjectButNotArray","getExpressionType","normalizeExpression","unnormalizeExpression","isStaticExpression","isUndefined","isObjectExpression","isArrayExpression","isSlotExpression","isBoxExpression","getStaticExpressionValue","createStaticExpression","value","jsonToStaticExpression","json","toArrayExpression","isArray","toObjectExpression","mapValues","mergeChildrenToProps","children","props","newProps","splitChildrenFromProps","propsChildren","restProps","defaultUidlUtilsConfig","expression","view","logicPath","getInElement","restLogicPath","childRet","getInExpression","ret","keyProps","childExpr","arrayStartsWith","index","childElement","isNormalized","retExpr","get","entity","setInElement","element","setInExpression","countKeys","ne","isObject","isNumber","exprValue","minifyObjectExpressionShallow","minifyArrayExpressionShallow","minifyElement","minifyExpression","keys","values","defaultEditorUidlUtilsConfig","merge","innerExpr","createLogicGetterHelper","config","helper","fn","logicGetEntity","logicGetEntityInElement","logicGetEntityInExpression","getterEntityDetailToElement","ed","getterEntityDetailToExpression","logicGetElementInElement","logicGetExpressionInElement","logicGetElementArrayInElement","createLogicSetterHelper","logicSetEntity","logicSetEntityInElement","logicSetEntityInExpression","logicSetElement","logicSetElementInElement","logicSetExpressionInElement","createMinifierHelper","definedValues","minify","m","minifyExpressionShallow","echo","internalDfsEntity","options","ced","dfsEntityInEntityAndModifyPath","fullJsonPath","fullLogicPath","elementIdPath","nextFullJsonPath","nextFullLogicPath","nextElementIdPath","internalDfsEntityInEntity","internalDfsEntityInElement","internalDfsEntityInExpression","shouldYield","getTed","d","traverseTime","defaultTraverseOptions","normalizeTraverseOptions","optionsList","assign","bfsChildElementsInElement","ted","bfsPureChildElementsInElement","bfsChildExpressionsInElement","bfsPureChildExpressionsInElement","dfsEntity","dfsElement","dfsExpression","dfsEntityInElement","dfsElementInElement","dfsExpressionInElement","dfsEntityInExpression","dfsElementInExpression","dfsExpressionInExpression"],"mappings":"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"}