{"version":3,"file":"flags.mjs","names":[],"sources":["../../../../../src/flags.ts"],"sourcesContent":["export interface Flags {\n  /**\n   * @deprecated Closing a `Modal` that contains a `Form` with unsaved changes\n   *   must be confirmed by default now\n   *   (`Form.confirmModalCloseOnUnsavedChanges: true`). Use the `defaults`\n   *   property of the `ComponentDefaultsProvider` instead – assigning this flag\n   *   still works, but it will be removed in a future release.\n   */\n  requireCloseModalConfirmationOnUnsavedChanges: boolean;\n  /**\n   * @deprecated Its default is unchanged (`List.disableInitialSuspenseBoundary:\n   *   false`). Use the `defaults` property of the `ComponentDefaultsProvider`\n   *   instead – assigning this flag still works, but it will be removed in a\n   *   future release.\n   */\n  disableInitialListSuspenseBoundaries: boolean;\n}\n\nexport type FlagName = keyof Flags;\n\n/**\n * Fallback values of the flags. Only used when an application neither assigns\n * the flag nor provides a `ComponentDefaultsProvider`; the built-in defaults of\n * the affected components are the single source of truth for them.\n */\nconst flagDefaults: Flags = {\n  requireCloseModalConfirmationOnUnsavedChanges: true,\n  disableInitialListSuspenseBoundaries: false,\n};\n\nconst flagValues: Flags = { ...flagDefaults };\n\n/**\n * Flags an application has assigned itself. Only these contribute a default\n * (and a deprecation warning) – a flag left alone is not a deprecated usage.\n */\nconst assignedFlags = new Set<FlagName>();\n\n/**\n * Behavior toggles of the component library.\n *\n * @deprecated Use the `defaults` property of the `ComponentDefaultsProvider`\n *   instead.\n */\nexport const flags: Flags = {} as Flags;\n\nconst defineFlag = (name: FlagName): void => {\n  Object.defineProperty(flags, name, {\n    enumerable: true,\n    get: () => flagValues[name],\n    set: (value: boolean) => {\n      assignedFlags.add(name);\n      flagValues[name] = value;\n    },\n  });\n};\n\n(Object.keys(flagDefaults) as FlagName[]).forEach(defineFlag);\n\n/** @internal */\nexport const flagIsAssigned = (name: FlagName): boolean =>\n  assignedFlags.has(name);\n\nexport const resetFlags = () => {\n  Object.assign(flagValues, flagDefaults);\n  assignedFlags.clear();\n};\n"],"mappings":";;;;;;;;AAyBA,IAAM,eAAsB;CAC1B,+CAA+C;CAC/C,sCAAsC;AACxC;AAEA,IAAM,aAAoB,EAAE,GAAG,aAAa;;;;;AAM5C,IAAM,gCAAgB,IAAI,IAAc;;;;;;;AAQxC,IAAa,QAAe,CAAC;AAE7B,IAAM,cAAc,SAAyB;CAC3C,OAAO,eAAe,OAAO,MAAM;EACjC,YAAY;EACZ,WAAW,WAAW;EACtB,MAAM,UAAmB;GACvB,cAAc,IAAI,IAAI;GACtB,WAAW,QAAQ;EACrB;CACF,CAAC;AACH;AAEC,OAAO,KAAK,YAAY,CAAC,CAAgB,QAAQ,UAAU;;AAG5D,IAAa,kBAAkB,SAC7B,cAAc,IAAI,IAAI"}