{"version":3,"file":"createSpacing.cjs","sources":["../../../src/themes/createSpacing.ts"],"sourcesContent":["// Code based on Material UI\n// The MIT License (MIT)\n// Copyright (c) 2014 Call-Em-All\nimport { z } from 'zod';\n\n/** @internal */\nexport const ThemeSpacingOptionsSchema = z.object({\n  gridSize: z.int().positive().optional(),\n});\n\n/** @internal */\nexport type ThemeSpacingOptions = z.infer<typeof ThemeSpacingOptionsSchema>;\n\n/** @internal */\nexport type ThemeSpacingArgument = number | string;\n\n/**\n * @beta\n * The different signatures imply different meaning for their arguments that can't be expressed structurally.\n * We express the difference with variable names.\n * tslint:disable:unified-signatures */\nexport interface ThemeSpacing extends SpacingTokens {\n  (): string;\n  (value: ThemeSpacingArgument): string;\n  (topBottom: ThemeSpacingArgument, rightLeft: ThemeSpacingArgument): string;\n  (top: ThemeSpacingArgument, rightLeft: ThemeSpacingArgument, bottom: ThemeSpacingArgument): string;\n  (\n    top: ThemeSpacingArgument,\n    right: ThemeSpacingArgument,\n    bottom: ThemeSpacingArgument,\n    left: ThemeSpacingArgument\n  ): string;\n  gridSize: number;\n}\n\n// Possible spacing token options\nexport type ThemeSpacingTokens = 0 | 0.25 | 0.5 | 1 | 1.5 | 2 | 2.5 | 3 | 4 | 5 | 6 | 8 | 10;\n\n// Spacing tokens as represented in the theme\ntype SpacingTokens = {\n  [key in `x${Exclude<ThemeSpacingTokens, 0.25 | 0.5 | 1.5 | 2.5> | '0_25' | '0_5' | '1_5' | '2_5'}`]: string;\n};\n\n/** @internal */\nexport function createSpacing(options: ThemeSpacingOptions = {}): ThemeSpacing {\n  const { gridSize = 8 } = options;\n\n  const transform = (value: ThemeSpacingArgument) => {\n    if (typeof value === 'string') {\n      return value;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof value !== 'number') {\n        console.error(`Expected spacing argument to be a number or a string, got ${value}.`);\n      }\n    }\n    return value * gridSize;\n  };\n\n  const spacing = (...args: Array<number | string>): string => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!(args.length <= 4)) {\n        console.error(`Too many arguments provided, expected between 0 and 4, got ${args.length}`);\n      }\n    }\n\n    if (args.length === 0) {\n      args[0] = 1;\n    }\n\n    return args\n      .map((argument) => {\n        const output = transform(argument);\n        return typeof output === 'number' ? `${output}px` : output;\n      })\n      .join(' ');\n  };\n\n  spacing.gridSize = gridSize;\n\n  // Design system spacing tokens\n  // Added in v10.2 of Grafana, if using spacing in a plugin that needs compatibility with older versions\n  // use the spacing function instead.\n  spacing.x0 = '0px';\n  spacing.x0_25 = '2px';\n  spacing.x0_5 = '4px';\n  spacing.x1 = '8px';\n  spacing.x1_5 = '12px';\n  spacing.x2 = '16px';\n  spacing.x2_5 = '20px';\n  spacing.x3 = '24px';\n  spacing.x4 = '32px';\n  spacing.x5 = '40px';\n  spacing.x6 = '48px';\n  spacing.x8 = '64px';\n  spacing.x10 = '80px';\n\n  return spacing;\n}\n"],"names":["z"],"mappings":";;;;;;;AAMO,MAAM,yBAAA,GAA4BA,IAAE,MAAA,CAAO;AAAA,EAChD,UAAUA,GAAA,CAAE,GAAA,EAAI,CAAE,QAAA,GAAW,QAAA;AAC/B,CAAC;AAoCM,SAAS,aAAA,CAAc,OAAA,GAA+B,EAAC,EAAiB;AAC7E,EAAA,MAAM,EAAE,QAAA,GAAW,CAAA,EAAE,GAAI,OAAA;AAEzB,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAgC;AACjD,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,MAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,QAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,0DAAA,EAA6D,KAAK,CAAA,CAAA,CAAG,CAAA;AAAA,MACrF;AAAA,IACF;AACA,IAAA,OAAO,KAAA,GAAQ,QAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,IAAI,IAAA,KAAyC;AAC3D,IAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,MAAA,IAAI,EAAE,IAAA,CAAK,MAAA,IAAU,CAAA,CAAA,EAAI;AACvB,QAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,2DAAA,EAA8D,IAAA,CAAK,MAAM,CAAA,CAAE,CAAA;AAAA,MAC3F;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,MAAA,IAAA,CAAK,CAAC,CAAA,GAAI,CAAA;AAAA,IACZ;AAEA,IAAA,OAAO,IAAA,CACJ,GAAA,CAAI,CAAC,QAAA,KAAa;AACjB,MAAA,MAAM,MAAA,GAAS,UAAU,QAAQ,CAAA;AACjC,MAAA,OAAO,OAAO,MAAA,KAAW,QAAA,GAAW,CAAA,EAAG,MAAM,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,IACtD,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,EACb,CAAA;AAEA,EAAA,OAAA,CAAQ,QAAA,GAAW,QAAA;AAKnB,EAAA,OAAA,CAAQ,EAAA,GAAK,KAAA;AACb,EAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA;AAChB,EAAA,OAAA,CAAQ,IAAA,GAAO,KAAA;AACf,EAAA,OAAA,CAAQ,EAAA,GAAK,KAAA;AACb,EAAA,OAAA,CAAQ,IAAA,GAAO,MAAA;AACf,EAAA,OAAA,CAAQ,EAAA,GAAK,MAAA;AACb,EAAA,OAAA,CAAQ,IAAA,GAAO,MAAA;AACf,EAAA,OAAA,CAAQ,EAAA,GAAK,MAAA;AACb,EAAA,OAAA,CAAQ,EAAA,GAAK,MAAA;AACb,EAAA,OAAA,CAAQ,EAAA,GAAK,MAAA;AACb,EAAA,OAAA,CAAQ,EAAA,GAAK,MAAA;AACb,EAAA,OAAA,CAAQ,EAAA,GAAK,MAAA;AACb,EAAA,OAAA,CAAQ,GAAA,GAAM,MAAA;AAEd,EAAA,OAAO,OAAA;AACT;;;;;"}