{"version":3,"file":"action.cjs","sources":["../../../src/types/action.ts"],"sourcesContent":["import { CSSProperties, ReactNode } from 'react';\n\nimport { SelectableValue } from './select';\n\nexport enum ActionType {\n  Fetch = 'fetch',\n  Infinity = 'infinity',\n}\n\ntype ActionButtonCssProperties = Pick<CSSProperties, 'backgroundColor'>;\n\nexport interface Action {\n  type: ActionType;\n  title: string;\n  [ActionType.Fetch]?: FetchOptions;\n  [ActionType.Infinity]?: InfinityOptions;\n  confirmation?: string;\n  oneClick?: boolean;\n  variables?: ActionVariable[];\n  style?: ActionButtonCssProperties;\n}\n\n/**\n * Processed Action Model. The values are ready to use\n */\nexport interface ActionModel<T = any> {\n  title: string;\n  type?: ActionType;\n  onClick: (event: any, origin?: any, actionVars?: ActionVariableInput) => void;\n  confirmation: (actionVars?: ActionVariableInput) => ReactNode;\n  oneClick?: boolean;\n  style: ActionButtonCssProperties;\n  variables?: ActionVariable[];\n}\n\nexport type ActionVariable = {\n  key: string;\n  name: string;\n  type: ActionVariableType;\n};\n\nexport enum ActionVariableType {\n  String = 'string',\n}\n\nexport interface FetchOptions {\n  method: HttpRequestMethod;\n  url: string;\n  body?: string;\n  queryParams?: Array<[string, string]>;\n  headers?: Array<[string, string]>;\n}\n\nexport interface InfinityOptions extends FetchOptions {\n  datasourceUid: string;\n}\n\nexport enum HttpRequestMethod {\n  POST = 'POST',\n  PUT = 'PUT',\n  GET = 'GET',\n  DELETE = 'DELETE',\n  PATCH = 'PATCH',\n}\n\nexport const httpMethodOptions: SelectableValue[] = [\n  { label: HttpRequestMethod.POST, value: HttpRequestMethod.POST },\n  { label: HttpRequestMethod.GET, value: HttpRequestMethod.GET },\n];\n\nexport const contentTypeOptions: SelectableValue[] = [\n  { label: 'application/json', value: 'application/json' },\n  { label: 'text/plain', value: 'text/plain' },\n  { label: 'application/xml', value: 'application/xml' },\n  { label: 'application/x-www-form-urlencoded', value: 'application/x-www-form-urlencoded' },\n];\n\nexport const defaultActionConfig: Action = {\n  type: ActionType.Fetch,\n  title: '',\n  [ActionType.Fetch]: {\n    url: '',\n    method: HttpRequestMethod.POST,\n    body: '{}',\n    queryParams: [],\n    headers: [['Content-Type', 'application/json']],\n  },\n};\n\nexport type ActionVariableInput = { [key: string]: string };\n"],"names":["ActionType","ActionVariableType","HttpRequestMethod"],"mappings":";;;;;AAIO,IAAK,UAAA,qBAAAA,WAAAA,KAAL;AACL,EAAAA,YAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,YAAA,UAAA,CAAA,GAAW,UAAA;AAFD,EAAA,OAAAA,WAAAA;AAAA,CAAA,EAAA,UAAA,IAAA,EAAA;AAqCL,IAAK,kBAAA,qBAAAC,mBAAAA,KAAL;AACL,EAAAA,oBAAA,QAAA,CAAA,GAAS,QAAA;AADC,EAAA,OAAAA,mBAAAA;AAAA,CAAA,EAAA,kBAAA,IAAA,EAAA;AAgBL,IAAK,iBAAA,qBAAAC,kBAAAA,KAAL;AACL,EAAAA,mBAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,mBAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,mBAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,mBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,mBAAA,OAAA,CAAA,GAAQ,OAAA;AALE,EAAA,OAAAA,kBAAAA;AAAA,CAAA,EAAA,iBAAA,IAAA,EAAA;AAQL,MAAM,iBAAA,GAAuC;AAAA,EAClD,EAAE,KAAA,EAAO,MAAA,aAAwB,KAAA,EAAO,MAAA,aAAuB;AAAA,EAC/D,EAAE,KAAA,EAAO,KAAA,YAAuB,KAAA,EAAO,KAAA;AACzC;AAEO,MAAM,kBAAA,GAAwC;AAAA,EACnD,EAAE,KAAA,EAAO,kBAAA,EAAoB,KAAA,EAAO,kBAAA,EAAmB;AAAA,EACvD,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA,EAAa;AAAA,EAC3C,EAAE,KAAA,EAAO,iBAAA,EAAmB,KAAA,EAAO,iBAAA,EAAkB;AAAA,EACrD,EAAE,KAAA,EAAO,mCAAA,EAAqC,KAAA,EAAO,mCAAA;AACvD;AAEO,MAAM,mBAAA,GAA8B;AAAA,EACzC,IAAA,EAAM,OAAA;AAAA,EACN,KAAA,EAAO,EAAA;AAAA,EACP,CAAC,sBAAmB;AAAA,IAClB,GAAA,EAAK,EAAA;AAAA,IACL,MAAA,EAAQ,MAAA;AAAA,IACR,IAAA,EAAM,IAAA;AAAA,IACN,aAAa,EAAC;AAAA,IACd,OAAA,EAAS,CAAC,CAAC,cAAA,EAAgB,kBAAkB,CAAC;AAAA;AAElD;;;;;;;;;"}