dromo-uploader-react 1.2.13 → 1.2.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -12,6 +12,7 @@ interface Props {
12
12
  stepHooks?: IStepHook[];
13
13
  onResults?: (data: any, metadata: IResultMetadata) => void;
14
14
  onCancel?: () => void;
15
+ children: React.ReactNode;
15
16
  }
16
17
  export default class DromoReactUploader extends React.Component<Props> {
17
18
  dromo: any;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/interfaces.ts","../src/index.tsx"],"sourcesContent":["export interface IDeveloperField {\n label: string\n key: string\n type?: 'string' | 'checkbox' | 'select'\n description?: string\n alternateMatches?: string[]\n validators?: IValidatorField[]\n selectOptions?: {\n label: string\n value: string\n }[]\n}\n\nexport interface IValidatorField {\n validate:\n | 'required'\n | 'unique'\n | 'unique_case_insensitive'\n | 'regex_match'\n | 'regex_exclude'\n | 'require_with'\n | 'require_without'\n | 'require_with_all'\n | 'require_without_all'\n | 'require_with_values'\n | 'require_without_values'\n | 'require_with_all_values'\n | 'require_without_all_values'\n errorMessage?: string\n fields?: string[]\n fieldValues?: { [key: string]: any }\n regex?: string\n regexOptions?: {\n ignoreCase?: boolean\n dotAll?: boolean\n multiline?: boolean\n unicode?: boolean\n }\n}\n\nexport interface IDeveloperSettings {\n importIdentifier: string\n title?: string\n allowInvalidSubmit?: boolean\n backendSync?: boolean\n manualInputDisabled?: boolean\n manualInputOnly?: boolean\n allowCustomFields?: boolean\n maxRecords?: number | null\n developmentMode?: boolean\n displayEncoding?: boolean\n styleOverrides?: IDeveloperStyleOverrides\n webhookUrl?: string\n initialData?: any[] | null\n matchingStep?: {\n headerRowOverride?: number | null\n }\n autoMapHeaders?: boolean\n delimiter?: string\n backendOverride?: {\n url: string\n type: 'AWS' | 'AZURE'\n } | null\n locale?: TLocaleShorthand\n templateDownloadFilename?: string\n}\n\n// If you update this, also update IDeveloperStylesOverridesStrict\n// in interfaces.tsx\nexport interface IDeveloperStyleOverrides {\n global?: {\n textColor?: string\n primaryTextColor?: string\n secondaryTextColor?: string\n successColor?: string\n warningColor?: string\n customFontURL?: string | null\n customFontFamily?: string | null\n }\n primaryButton?: {\n borderRadius?: string\n backgroundColor?: string\n textColor?: string\n border?: string\n hoverBackgroundColor?: string\n hoverTextColor?: string\n hoverBorder?: string\n }\n secondaryButton?: {\n borderRadius?: string\n backgroundColor?: string\n textColor?: string\n border?: string\n hoverBackgroundColor?: string\n hoverTextColor?: string\n hoverBorder?: string\n }\n tertiaryButton?: {\n borderRadius?: string\n backgroundColor?: string\n textColor?: string\n border?: string\n hoverBackgroundColor?: string\n hoverTextColor?: string\n hoverBorder?: string\n }\n dropzone?: {\n borderWidth?: number\n borderRadius?: number\n borderColor?: string\n borderStyle?: string\n color?: string\n outline?: string\n }\n stepperBar?: {\n completeColor?: string\n incompleteColor?: string\n currentColor?: string\n }\n}\n\nexport interface IUser {\n id: string\n name?: string\n email?: string\n companyId?: string\n companyName?: string\n}\n\nexport interface ICellRef {\n rowIndex: number\n column: string\n}\n\nexport interface ITableMessage {\n message: string\n level: 'info' | 'warning' | 'error'\n}\n\nexport type ITableMessageWithRef = ITableMessage & ICellRef\n\nexport interface IColumnHook {\n fieldName: string\n callback: (\n values: IColumnHookInput[]\n ) => IColumnHookOutput[] | Promise<IColumnHookOutput[]>\n}\n\nexport interface IRowHook {\n (data: IRowHookInput, mode: 'init' | 'update'):\n | IRowHookOutput\n | Promise<IRowHookOutput>\n}\n\nexport interface IColumnHookInput {\n index: number\n value: any\n}\n\nexport interface IColumnHookOutput {\n index: number\n value?: any\n info?: ITableMessage[]\n}\n\nexport interface IRowHookInput {\n row: {\n [key: string]: {\n value: any\n info?: ITableMessage[]\n }\n }\n index: number\n}\n\nexport interface IRowHookOutput {\n row: {\n [key: string]: {\n value?: any\n info?: ITableMessage[]\n }\n }\n}\n\nexport interface IRowHookOutputInternal extends IRowHookOutput {\n index: number\n}\n\nexport interface IResultMetadata {\n id: string | null\n importIdentifier: string\n user: IUser\n rowsWithError: number[]\n}\n\nexport type TLocaleShorthand = 'en'\n\n/* eslint-disable no-unused-vars */\nexport enum EStepHook {\n UPLOAD_STEP = 'UPLOAD_STEP',\n REVIEW_STEP = 'REVIEW_STEP',\n REVIEW_STEP_POST_HOOKS = 'REVIEW_STEP_POST_HOOKS'\n}\n\nexport interface IUploadStepData {\n dataPreview: any[][]\n}\n\nexport interface IReviewStepData {\n rawHeaders: string[] | null\n headerMapping: { [header: string]: string | undefined }\n}\n\nexport interface IReviewStepPostHooksData {\n headerMapping: { [header: string]: string | undefined }\n}\n\nexport interface IStepHook {\n type: EStepHook\n callback: (\n uploader: any,\n data: IUploadStepData | IReviewStepData | IReviewStepPostHooksData\n ) => void | Promise<void>\n}\n","import * as React from 'react'\nimport {\n IColumnHookInput,\n IColumnHookOutput,\n IColumnHook,\n IDeveloperField,\n IValidatorField,\n IDeveloperSettings,\n IRowHookInput,\n IRowHookOutput,\n IRowHook,\n IDeveloperStyleOverrides,\n IUser,\n IResultMetadata,\n EStepHook,\n IStepHook\n} from './interfaces'\n\ninterface Props {\n style?: React.CSSProperties\n className?: string\n licenseKey: string\n user: IUser\n fields: IDeveloperField[]\n settings: IDeveloperSettings\n rowHooks?: IRowHook[]\n columnHooks?: IColumnHook[]\n stepHooks?: IStepHook[]\n onResults?: (data: any, metadata: IResultMetadata) => void\n onCancel?: () => void\n}\n\ndeclare var DromoUploader: any\n\nconst SCRIPT_SRC = 'https://unpkg.com/dromo-uploader-js/dist/DromoUploader.js'\nconst SCRIPT_LOADED_EVENT = 'DROMO_SCRIPT_LOADED'\n\nexport default class DromoReactUploader extends React.Component<Props> {\n dromo: any\n\n componentDidMount() {\n // Add event listener post load to set up Dromo\n window.addEventListener(SCRIPT_LOADED_EVENT, this.scriptLoaded.bind(this))\n\n const loadingScript = Array.from(\n document.getElementsByTagName('script')\n ).find((s) => s.src === SCRIPT_SRC)\n\n // If there is no script tag added to HTML then we add. Prevents multiple\n // adds if there are multiple components\n if (!loadingScript) {\n const script = document.createElement('script')\n script.src = SCRIPT_SRC\n script.async = true\n script.onload = () => {\n const event = new Event(SCRIPT_LOADED_EVENT)\n window.dispatchEvent(event)\n }\n document.body.appendChild(script)\n } else {\n if ('DromoUploader' in window) {\n // If the script has been injected and has been loaded we can call\n // scriptLoaded\n const event = new Event(SCRIPT_LOADED_EVENT)\n window.dispatchEvent(event)\n } else {\n // If the script has been injected but hasn't been loaded, we wait\n // for load\n loadingScript.onload = () => {\n const event = new Event(SCRIPT_LOADED_EVENT)\n window.dispatchEvent(event)\n }\n }\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener(\n SCRIPT_LOADED_EVENT,\n this.scriptLoaded.bind(this)\n )\n }\n\n scriptLoaded = () => {\n this.dromo = new DromoUploader(\n this.props.licenseKey,\n this.props.fields,\n this.props.settings,\n this.props.user\n )\n\n if (this.props.rowHooks) {\n this.props.rowHooks.forEach((hook) => this.dromo.registerRowHook(hook))\n }\n\n if (this.props.columnHooks) {\n this.props.columnHooks.forEach((hook) => {\n this.dromo.registerColumnHook(hook.fieldName, hook.callback)\n })\n }\n\n if (this.props.onResults) {\n this.dromo.onResults(this.props.onResults)\n }\n\n if (this.props.onCancel) {\n this.dromo.onCancel(this.props.onCancel)\n }\n\n if (this.props.stepHooks) {\n this.props.stepHooks.forEach((hook) => {\n this.dromo.registerStepHook(hook.type, hook.callback)\n })\n }\n }\n\n open = () => {\n if (this.dromo) this.dromo.open()\n }\n\n render() {\n return (\n <button\n style={this.props.style}\n className={this.props.className}\n onClick={this.open}\n >\n {this.props.children}\n </button>\n )\n }\n}\n\nexport {\n IDeveloperField,\n IDeveloperSettings,\n IUser,\n IColumnHookInput,\n IColumnHookOutput,\n IColumnHook,\n IRowHookInput,\n IRowHookOutput,\n IRowHook,\n IValidatorField,\n IDeveloperStyleOverrides,\n IResultMetadata,\n EStepHook,\n IStepHook\n}\n"],"names":["EStepHook","SCRIPT_SRC","SCRIPT_LOADED_EVENT","DromoReactUploader","dromo","DromoUploader","props","licenseKey","fields","settings","user","rowHooks","forEach","hook","registerRowHook","columnHooks","registerColumnHook","fieldName","callback","onResults","onCancel","stepHooks","registerStepHook","type","open","componentDidMount","window","addEventListener","scriptLoaded","bind","loadingScript","Array","from","document","getElementsByTagName","find","s","src","script","createElement","async","onload","event","Event","dispatchEvent","body","appendChild","componentWillUnmount","removeEventListener","render","React","style","className","onClick","children"],"mappings":";;;;;;;;AAsMA,WAAYA;AACVA,EAAAA,wBAAA,gBAAA;AACAA,EAAAA,wBAAA,gBAAA;AACAA,EAAAA,mCAAA,2BAAA;AACD,CAJD,EAAYA,iBAAS,KAATA,iBAAS,KAAA,CAArB;;ACpKA,IAAMC,UAAU,GAAG,2DAAnB;AACA,IAAMC,mBAAmB,GAAG,qBAA5B;;IAEqBC;;;AAArB;;;;;AA8CE,sBAAA,GAAe;AACb,YAAKC,KAAL,GAAa,IAAIC,aAAJ,CACX,MAAKC,KAAL,CAAWC,UADA,EAEX,MAAKD,KAAL,CAAWE,MAFA,EAGX,MAAKF,KAAL,CAAWG,QAHA,EAIX,MAAKH,KAAL,CAAWI,IAJA,CAAb;;AAOA,UAAI,MAAKJ,KAAL,CAAWK,QAAf,EAAyB;AACvB,cAAKL,KAAL,CAAWK,QAAX,CAAoBC,OAApB,CAA4B,UAACC,IAAD;AAAA,iBAAU,MAAKT,KAAL,CAAWU,eAAX,CAA2BD,IAA3B,CAAV;AAAA,SAA5B;AACD;;AAED,UAAI,MAAKP,KAAL,CAAWS,WAAf,EAA4B;AAC1B,cAAKT,KAAL,CAAWS,WAAX,CAAuBH,OAAvB,CAA+B,UAACC,IAAD;AAC7B,gBAAKT,KAAL,CAAWY,kBAAX,CAA8BH,IAAI,CAACI,SAAnC,EAA8CJ,IAAI,CAACK,QAAnD;AACD,SAFD;AAGD;;AAED,UAAI,MAAKZ,KAAL,CAAWa,SAAf,EAA0B;AACxB,cAAKf,KAAL,CAAWe,SAAX,CAAqB,MAAKb,KAAL,CAAWa,SAAhC;AACD;;AAED,UAAI,MAAKb,KAAL,CAAWc,QAAf,EAAyB;AACvB,cAAKhB,KAAL,CAAWgB,QAAX,CAAoB,MAAKd,KAAL,CAAWc,QAA/B;AACD;;AAED,UAAI,MAAKd,KAAL,CAAWe,SAAf,EAA0B;AACxB,cAAKf,KAAL,CAAWe,SAAX,CAAqBT,OAArB,CAA6B,UAACC,IAAD;AAC3B,gBAAKT,KAAL,CAAWkB,gBAAX,CAA4BT,IAAI,CAACU,IAAjC,EAAuCV,IAAI,CAACK,QAA5C;AACD,SAFD;AAGD;AACF,KA/BD;;AAiCA,cAAA,GAAO;AACL,UAAI,MAAKd,KAAT,EAAgB,MAAKA,KAAL,CAAWoB,IAAX;AACjB,KAFD;;;AAeD;;;;SA3FCC,oBAAA;AAEEC,IAAAA,MAAM,CAACC,gBAAP,CAAwBzB,mBAAxB,EAA6C,KAAK0B,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAA7C;AAEA,QAAMC,aAAa,GAAGC,KAAK,CAACC,IAAN,CACpBC,QAAQ,CAACC,oBAAT,CAA8B,QAA9B,CADoB,EAEpBC,IAFoB,CAEf,UAACC,CAAD;AAAA,aAAOA,CAAC,CAACC,GAAF,KAAUpC,UAAjB;AAAA,KAFe,CAAtB;;AAMA,QAAI,CAAC6B,aAAL,EAAoB;AAClB,UAAMQ,MAAM,GAAGL,QAAQ,CAACM,aAAT,CAAuB,QAAvB,CAAf;AACAD,MAAAA,MAAM,CAACD,GAAP,GAAapC,UAAb;AACAqC,MAAAA,MAAM,CAACE,KAAP,GAAe,IAAf;;AACAF,MAAAA,MAAM,CAACG,MAAP,GAAgB;AACd,YAAMC,KAAK,GAAG,IAAIC,KAAJ,CAAUzC,mBAAV,CAAd;AACAwB,QAAAA,MAAM,CAACkB,aAAP,CAAqBF,KAArB;AACD,OAHD;;AAIAT,MAAAA,QAAQ,CAACY,IAAT,CAAcC,WAAd,CAA0BR,MAA1B;AACD,KATD,MASO;AACL,UAAI,mBAAmBZ,MAAvB,EAA+B;AAG7B,YAAMgB,KAAK,GAAG,IAAIC,KAAJ,CAAUzC,mBAAV,CAAd;AACAwB,QAAAA,MAAM,CAACkB,aAAP,CAAqBF,KAArB;AACD,OALD,MAKO;AAGLZ,QAAAA,aAAa,CAACW,MAAd,GAAuB;AACrB,cAAMC,KAAK,GAAG,IAAIC,KAAJ,CAAUzC,mBAAV,CAAd;AACAwB,UAAAA,MAAM,CAACkB,aAAP,CAAqBF,KAArB;AACD,SAHD;AAID;AACF;AACF;;SAEDK,uBAAA;AACErB,IAAAA,MAAM,CAACsB,mBAAP,CACE9C,mBADF,EAEE,KAAK0B,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAFF;AAID;;SAuCDoB,SAAA;AACE,WACEC,mBAAA,SAAA;AACEC,MAAAA,KAAK,EAAE,KAAK7C,KAAL,CAAW6C;AAClBC,MAAAA,SAAS,EAAE,KAAK9C,KAAL,CAAW8C;AACtBC,MAAAA,OAAO,EAAE,KAAK7B;KAHhB,EAKG,KAAKlB,KAAL,CAAWgD,QALd,CADF;AASD;;;EA7F6CJ;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/interfaces.ts","../src/index.tsx"],"sourcesContent":["export interface IDeveloperField {\n label: string;\n key: string;\n type?: \"string\" | \"checkbox\" | \"select\";\n description?: string;\n alternateMatches?: string[];\n validators?: IValidatorField[];\n selectOptions?: {\n label: string;\n value: string;\n }[];\n}\n\ninterface IAbstractValidator<ValidateKey> {\n validate: ValidateKey;\n errorMessage?: string;\n level?: \"info\" | \"warning\" | \"error\";\n}\n\nexport type IRequiredValidator = IAbstractValidator<\"required\">;\n\nexport type IUniqueValidator = IAbstractValidator<\n \"unique\" | \"unique_case_insensitive\"\n>;\n\nexport interface IUniqueWithValidator\n extends IAbstractValidator<\"unique_with\"> {\n uniqueKey: string;\n}\n\nexport interface IRegexValidator\n extends IAbstractValidator<\"regex_match\" | \"regex_exclude\"> {\n regex: string;\n regexOptions?: {\n ignoreCase?: boolean;\n dotAll?: boolean;\n multiline?: boolean;\n unicode?: boolean;\n };\n}\n\nexport interface IRequireWithValidator\n extends IAbstractValidator<\n | \"require_with\"\n | \"require_without\"\n | \"require_with_all\"\n | \"require_without_all\"\n > {\n fields: string[];\n}\n\nexport interface IRequireWithValuesValidator\n extends IAbstractValidator<\n | \"require_with_values\"\n | \"require_without_values\"\n | \"require_with_all_values\"\n | \"require_without_all_values\"\n > {\n fieldValues: { [key: string]: string };\n}\n\nexport type IValidatorField =\n | IRequiredValidator\n | IUniqueValidator\n | IUniqueWithValidator\n | IRegexValidator\n | IRequireWithValidator\n | IRequireWithValuesValidator;\n\nexport interface IDeveloperSettings {\n importIdentifier: string;\n title?: string;\n allowInvalidSubmit?: boolean;\n backendSync?: boolean;\n manualInputDisabled?: boolean;\n manualInputOnly?: boolean;\n allowCustomFields?: boolean;\n maxRecords?: number | null;\n developmentMode?: boolean;\n displayEncoding?: boolean;\n styleOverrides?: IDeveloperStyleOverrides;\n webhookUrl?: string;\n initialData?: { [key: string]: string }[] | any[][] | null;\n matchingStep?: {\n headerRowOverride?: number | null;\n };\n autoMapHeaders?: boolean;\n delimiter?: string;\n backendOverride?: {\n url: string;\n type: \"AWS\" | \"AZURE\";\n } | null;\n locale?: TLocaleShorthand;\n templateDownloadFilename?: string;\n}\n\n// If you update this, also update IDeveloperStylesOverridesStrict\n// in interfaces.tsx\nexport interface IDeveloperStyleOverrides {\n global?: {\n textColor?: string;\n primaryTextColor?: string;\n secondaryTextColor?: string;\n successColor?: string;\n warningColor?: string;\n customFontURL?: string | null;\n customFontFamily?: string | null;\n };\n primaryButton?: {\n borderRadius?: string;\n backgroundColor?: string;\n textColor?: string;\n border?: string;\n hoverBackgroundColor?: string;\n hoverTextColor?: string;\n hoverBorder?: string;\n };\n secondaryButton?: {\n borderRadius?: string;\n backgroundColor?: string;\n textColor?: string;\n border?: string;\n hoverBackgroundColor?: string;\n hoverTextColor?: string;\n hoverBorder?: string;\n };\n tertiaryButton?: {\n borderRadius?: string;\n backgroundColor?: string;\n textColor?: string;\n border?: string;\n hoverBackgroundColor?: string;\n hoverTextColor?: string;\n hoverBorder?: string;\n };\n dropzone?: {\n borderWidth?: number;\n borderRadius?: number;\n borderColor?: string;\n borderStyle?: string;\n color?: string;\n outline?: string;\n };\n stepperBar?: {\n completeColor?: string;\n incompleteColor?: string;\n currentColor?: string;\n };\n}\n\nexport interface IUser {\n id: string;\n name?: string;\n email?: string;\n companyId?: string;\n companyName?: string;\n}\n\nexport interface ICellRef {\n rowIndex: number;\n fieldKey: string;\n}\n\nexport interface ITableMessage {\n message: string;\n level: \"info\" | \"warning\" | \"error\";\n}\n\nexport interface IMessagesForCell extends ICellRef {\n messages: ITableMessage[];\n}\n\nexport interface IColumnHook {\n fieldName: string;\n callback: (\n values: IColumnHookInput[]\n ) => IColumnHookOutput[] | Promise<IColumnHookOutput[]>;\n}\n\nexport interface IRowHook {\n (data: IRowHookInput, mode: \"init\" | \"update\"):\n | IRowHookOutput\n | Promise<IRowHookOutput>;\n}\n\nexport interface IColumnHookInput {\n index: number;\n value: any;\n}\n\nexport interface IColumnHookOutput {\n index: number;\n value?: any;\n info?: ITableMessage[];\n}\n\nexport interface IRowHookInput {\n row: {\n [key: string]: {\n value: any;\n info?: ITableMessage[];\n };\n };\n index: number;\n}\n\nexport interface IRowHookOutput {\n row: {\n [key: string]: {\n value?: any;\n info?: ITableMessage[];\n };\n };\n}\n\nexport interface IRowHookOutputInternal extends IRowHookOutput {\n index: number;\n}\n\nexport interface IResultMetadata {\n id: string | null;\n importIdentifier: string;\n user: IUser;\n rowsWithError: number[];\n}\n\nexport type TLocaleShorthand = \"en\" | \"de\";\n\nexport enum EStepHook {\n UPLOAD_STEP = \"UPLOAD_STEP\",\n REVIEW_STEP = \"REVIEW_STEP\",\n REVIEW_STEP_POST_HOOKS = \"REVIEW_STEP_POST_HOOKS\",\n}\n\nexport interface IUploadStepData {\n filename: string | undefined;\n dataPreview: any[][];\n}\n\nexport interface IReviewStepData {\n rawHeaders: string[] | null;\n headerMapping: { [header: string]: string | undefined };\n}\n\nexport interface IReviewStepPostHooksData {\n headerMapping: { [header: string]: string | undefined };\n}\n\nexport interface IStepHook {\n type: keyof typeof EStepHook;\n callback: (\n uploader: any,\n data: IUploadStepData | IReviewStepData | IReviewStepPostHooksData\n ) => void | Promise<void>;\n}\n\n","import * as React from 'react'\nimport {\n IColumnHookInput,\n IColumnHookOutput,\n IColumnHook,\n IDeveloperField,\n IValidatorField,\n IDeveloperSettings,\n IRowHookInput,\n IRowHookOutput,\n IRowHook,\n IDeveloperStyleOverrides,\n IUser,\n IResultMetadata,\n EStepHook,\n IStepHook\n} from './interfaces'\n\ninterface Props {\n style?: React.CSSProperties\n className?: string\n licenseKey: string\n user: IUser\n fields: IDeveloperField[]\n settings: IDeveloperSettings\n rowHooks?: IRowHook[]\n columnHooks?: IColumnHook[]\n stepHooks?: IStepHook[]\n onResults?: (data: any, metadata: IResultMetadata) => void\n onCancel?: () => void\n children: React.ReactNode\n}\n\ndeclare var DromoUploader: any\n\nconst SCRIPT_SRC = 'https://unpkg.com/dromo-uploader-js/dist/DromoUploader.js'\nconst SCRIPT_LOADED_EVENT = 'DROMO_SCRIPT_LOADED'\n\nexport default class DromoReactUploader extends React.Component<Props> {\n dromo: any\n\n componentDidMount() {\n // Add event listener post load to set up Dromo\n window.addEventListener(SCRIPT_LOADED_EVENT, this.scriptLoaded.bind(this))\n\n const loadingScript = Array.from(\n document.getElementsByTagName('script')\n ).find((s) => s.src === SCRIPT_SRC)\n\n // If there is no script tag added to HTML then we add. Prevents multiple\n // adds if there are multiple components\n if (!loadingScript) {\n const script = document.createElement('script')\n script.src = SCRIPT_SRC\n script.async = true\n script.onload = () => {\n const event = new Event(SCRIPT_LOADED_EVENT)\n window.dispatchEvent(event)\n }\n document.body.appendChild(script)\n } else {\n if ('DromoUploader' in window) {\n // If the script has been injected and has been loaded we can call\n // scriptLoaded\n const event = new Event(SCRIPT_LOADED_EVENT)\n window.dispatchEvent(event)\n } else {\n // If the script has been injected but hasn't been loaded, we wait\n // for load\n loadingScript.onload = () => {\n const event = new Event(SCRIPT_LOADED_EVENT)\n window.dispatchEvent(event)\n }\n }\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener(\n SCRIPT_LOADED_EVENT,\n this.scriptLoaded.bind(this)\n )\n }\n\n scriptLoaded = () => {\n this.dromo = new DromoUploader(\n this.props.licenseKey,\n this.props.fields,\n this.props.settings,\n this.props.user\n )\n\n if (this.props.rowHooks) {\n this.props.rowHooks.forEach((hook) => this.dromo.registerRowHook(hook))\n }\n\n if (this.props.columnHooks) {\n this.props.columnHooks.forEach((hook) => {\n this.dromo.registerColumnHook(hook.fieldName, hook.callback)\n })\n }\n\n if (this.props.onResults) {\n this.dromo.onResults(this.props.onResults)\n }\n\n if (this.props.onCancel) {\n this.dromo.onCancel(this.props.onCancel)\n }\n\n if (this.props.stepHooks) {\n this.props.stepHooks.forEach((hook) => {\n this.dromo.registerStepHook(hook.type, hook.callback)\n })\n }\n }\n\n open = () => {\n if (this.dromo) this.dromo.open()\n }\n\n render() {\n return (\n <button\n style={this.props.style}\n className={this.props.className}\n onClick={this.open}\n >\n {this.props.children}\n </button>\n )\n }\n}\n\nexport {\n IDeveloperField,\n IDeveloperSettings,\n IUser,\n IColumnHookInput,\n IColumnHookOutput,\n IColumnHook,\n IRowHookInput,\n IRowHookOutput,\n IRowHook,\n IValidatorField,\n IDeveloperStyleOverrides,\n IResultMetadata,\n EStepHook,\n IStepHook\n}\n"],"names":["EStepHook","SCRIPT_SRC","SCRIPT_LOADED_EVENT","DromoReactUploader","dromo","DromoUploader","props","licenseKey","fields","settings","user","rowHooks","forEach","hook","registerRowHook","columnHooks","registerColumnHook","fieldName","callback","onResults","onCancel","stepHooks","registerStepHook","type","open","componentDidMount","window","addEventListener","scriptLoaded","bind","loadingScript","Array","from","document","getElementsByTagName","find","s","src","script","createElement","async","onload","event","Event","dispatchEvent","body","appendChild","componentWillUnmount","removeEventListener","render","React","style","className","onClick","children"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.js","sources":["../src/interfaces.ts","../src/index.tsx"],"sourcesContent":["export interface IDeveloperField {\n label: string\n key: string\n type?: 'string' | 'checkbox' | 'select'\n description?: string\n alternateMatches?: string[]\n validators?: IValidatorField[]\n selectOptions?: {\n label: string\n value: string\n }[]\n}\n\nexport interface IValidatorField {\n validate:\n | 'required'\n | 'unique'\n | 'unique_case_insensitive'\n | 'regex_match'\n | 'regex_exclude'\n | 'require_with'\n | 'require_without'\n | 'require_with_all'\n | 'require_without_all'\n | 'require_with_values'\n | 'require_without_values'\n | 'require_with_all_values'\n | 'require_without_all_values'\n errorMessage?: string\n fields?: string[]\n fieldValues?: { [key: string]: any }\n regex?: string\n regexOptions?: {\n ignoreCase?: boolean\n dotAll?: boolean\n multiline?: boolean\n unicode?: boolean\n }\n}\n\nexport interface IDeveloperSettings {\n importIdentifier: string\n title?: string\n allowInvalidSubmit?: boolean\n backendSync?: boolean\n manualInputDisabled?: boolean\n manualInputOnly?: boolean\n allowCustomFields?: boolean\n maxRecords?: number | null\n developmentMode?: boolean\n displayEncoding?: boolean\n styleOverrides?: IDeveloperStyleOverrides\n webhookUrl?: string\n initialData?: any[] | null\n matchingStep?: {\n headerRowOverride?: number | null\n }\n autoMapHeaders?: boolean\n delimiter?: string\n backendOverride?: {\n url: string\n type: 'AWS' | 'AZURE'\n } | null\n locale?: TLocaleShorthand\n templateDownloadFilename?: string\n}\n\n// If you update this, also update IDeveloperStylesOverridesStrict\n// in interfaces.tsx\nexport interface IDeveloperStyleOverrides {\n global?: {\n textColor?: string\n primaryTextColor?: string\n secondaryTextColor?: string\n successColor?: string\n warningColor?: string\n customFontURL?: string | null\n customFontFamily?: string | null\n }\n primaryButton?: {\n borderRadius?: string\n backgroundColor?: string\n textColor?: string\n border?: string\n hoverBackgroundColor?: string\n hoverTextColor?: string\n hoverBorder?: string\n }\n secondaryButton?: {\n borderRadius?: string\n backgroundColor?: string\n textColor?: string\n border?: string\n hoverBackgroundColor?: string\n hoverTextColor?: string\n hoverBorder?: string\n }\n tertiaryButton?: {\n borderRadius?: string\n backgroundColor?: string\n textColor?: string\n border?: string\n hoverBackgroundColor?: string\n hoverTextColor?: string\n hoverBorder?: string\n }\n dropzone?: {\n borderWidth?: number\n borderRadius?: number\n borderColor?: string\n borderStyle?: string\n color?: string\n outline?: string\n }\n stepperBar?: {\n completeColor?: string\n incompleteColor?: string\n currentColor?: string\n }\n}\n\nexport interface IUser {\n id: string\n name?: string\n email?: string\n companyId?: string\n companyName?: string\n}\n\nexport interface ICellRef {\n rowIndex: number\n column: string\n}\n\nexport interface ITableMessage {\n message: string\n level: 'info' | 'warning' | 'error'\n}\n\nexport type ITableMessageWithRef = ITableMessage & ICellRef\n\nexport interface IColumnHook {\n fieldName: string\n callback: (\n values: IColumnHookInput[]\n ) => IColumnHookOutput[] | Promise<IColumnHookOutput[]>\n}\n\nexport interface IRowHook {\n (data: IRowHookInput, mode: 'init' | 'update'):\n | IRowHookOutput\n | Promise<IRowHookOutput>\n}\n\nexport interface IColumnHookInput {\n index: number\n value: any\n}\n\nexport interface IColumnHookOutput {\n index: number\n value?: any\n info?: ITableMessage[]\n}\n\nexport interface IRowHookInput {\n row: {\n [key: string]: {\n value: any\n info?: ITableMessage[]\n }\n }\n index: number\n}\n\nexport interface IRowHookOutput {\n row: {\n [key: string]: {\n value?: any\n info?: ITableMessage[]\n }\n }\n}\n\nexport interface IRowHookOutputInternal extends IRowHookOutput {\n index: number\n}\n\nexport interface IResultMetadata {\n id: string | null\n importIdentifier: string\n user: IUser\n rowsWithError: number[]\n}\n\nexport type TLocaleShorthand = 'en'\n\n/* eslint-disable no-unused-vars */\nexport enum EStepHook {\n UPLOAD_STEP = 'UPLOAD_STEP',\n REVIEW_STEP = 'REVIEW_STEP',\n REVIEW_STEP_POST_HOOKS = 'REVIEW_STEP_POST_HOOKS'\n}\n\nexport interface IUploadStepData {\n dataPreview: any[][]\n}\n\nexport interface IReviewStepData {\n rawHeaders: string[] | null\n headerMapping: { [header: string]: string | undefined }\n}\n\nexport interface IReviewStepPostHooksData {\n headerMapping: { [header: string]: string | undefined }\n}\n\nexport interface IStepHook {\n type: EStepHook\n callback: (\n uploader: any,\n data: IUploadStepData | IReviewStepData | IReviewStepPostHooksData\n ) => void | Promise<void>\n}\n","import * as React from 'react'\nimport {\n IColumnHookInput,\n IColumnHookOutput,\n IColumnHook,\n IDeveloperField,\n IValidatorField,\n IDeveloperSettings,\n IRowHookInput,\n IRowHookOutput,\n IRowHook,\n IDeveloperStyleOverrides,\n IUser,\n IResultMetadata,\n EStepHook,\n IStepHook\n} from './interfaces'\n\ninterface Props {\n style?: React.CSSProperties\n className?: string\n licenseKey: string\n user: IUser\n fields: IDeveloperField[]\n settings: IDeveloperSettings\n rowHooks?: IRowHook[]\n columnHooks?: IColumnHook[]\n stepHooks?: IStepHook[]\n onResults?: (data: any, metadata: IResultMetadata) => void\n onCancel?: () => void\n}\n\ndeclare var DromoUploader: any\n\nconst SCRIPT_SRC = 'https://unpkg.com/dromo-uploader-js/dist/DromoUploader.js'\nconst SCRIPT_LOADED_EVENT = 'DROMO_SCRIPT_LOADED'\n\nexport default class DromoReactUploader extends React.Component<Props> {\n dromo: any\n\n componentDidMount() {\n // Add event listener post load to set up Dromo\n window.addEventListener(SCRIPT_LOADED_EVENT, this.scriptLoaded.bind(this))\n\n const loadingScript = Array.from(\n document.getElementsByTagName('script')\n ).find((s) => s.src === SCRIPT_SRC)\n\n // If there is no script tag added to HTML then we add. Prevents multiple\n // adds if there are multiple components\n if (!loadingScript) {\n const script = document.createElement('script')\n script.src = SCRIPT_SRC\n script.async = true\n script.onload = () => {\n const event = new Event(SCRIPT_LOADED_EVENT)\n window.dispatchEvent(event)\n }\n document.body.appendChild(script)\n } else {\n if ('DromoUploader' in window) {\n // If the script has been injected and has been loaded we can call\n // scriptLoaded\n const event = new Event(SCRIPT_LOADED_EVENT)\n window.dispatchEvent(event)\n } else {\n // If the script has been injected but hasn't been loaded, we wait\n // for load\n loadingScript.onload = () => {\n const event = new Event(SCRIPT_LOADED_EVENT)\n window.dispatchEvent(event)\n }\n }\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener(\n SCRIPT_LOADED_EVENT,\n this.scriptLoaded.bind(this)\n )\n }\n\n scriptLoaded = () => {\n this.dromo = new DromoUploader(\n this.props.licenseKey,\n this.props.fields,\n this.props.settings,\n this.props.user\n )\n\n if (this.props.rowHooks) {\n this.props.rowHooks.forEach((hook) => this.dromo.registerRowHook(hook))\n }\n\n if (this.props.columnHooks) {\n this.props.columnHooks.forEach((hook) => {\n this.dromo.registerColumnHook(hook.fieldName, hook.callback)\n })\n }\n\n if (this.props.onResults) {\n this.dromo.onResults(this.props.onResults)\n }\n\n if (this.props.onCancel) {\n this.dromo.onCancel(this.props.onCancel)\n }\n\n if (this.props.stepHooks) {\n this.props.stepHooks.forEach((hook) => {\n this.dromo.registerStepHook(hook.type, hook.callback)\n })\n }\n }\n\n open = () => {\n if (this.dromo) this.dromo.open()\n }\n\n render() {\n return (\n <button\n style={this.props.style}\n className={this.props.className}\n onClick={this.open}\n >\n {this.props.children}\n </button>\n )\n }\n}\n\nexport {\n IDeveloperField,\n IDeveloperSettings,\n IUser,\n IColumnHookInput,\n IColumnHookOutput,\n IColumnHook,\n IRowHookInput,\n IRowHookOutput,\n IRowHook,\n IValidatorField,\n IDeveloperStyleOverrides,\n IResultMetadata,\n EStepHook,\n IStepHook\n}\n"],"names":["EStepHook","SCRIPT_SRC","SCRIPT_LOADED_EVENT","DromoReactUploader","dromo","DromoUploader","props","licenseKey","fields","settings","user","rowHooks","forEach","hook","registerRowHook","columnHooks","registerColumnHook","fieldName","callback","onResults","onCancel","stepHooks","registerStepHook","type","open","componentDidMount","window","addEventListener","scriptLoaded","bind","loadingScript","Array","from","document","getElementsByTagName","find","s","src","script","createElement","async","onload","event","Event","dispatchEvent","body","appendChild","componentWillUnmount","removeEventListener","render","React","style","className","onClick","children"],"mappings":";;;;;;;;IAsMYA;;AAAZ,WAAYA;AACVA,EAAAA,wBAAA,gBAAA;AACAA,EAAAA,wBAAA,gBAAA;AACAA,EAAAA,mCAAA,2BAAA;AACD,CAJD,EAAYA,SAAS,KAATA,SAAS,KAAA,CAArB;;ACpKA,IAAMC,UAAU,GAAG,2DAAnB;AACA,IAAMC,mBAAmB,GAAG,qBAA5B;;IAEqBC;;;AAArB;;;;;AA8CE,sBAAA,GAAe;AACb,YAAKC,KAAL,GAAa,IAAIC,aAAJ,CACX,MAAKC,KAAL,CAAWC,UADA,EAEX,MAAKD,KAAL,CAAWE,MAFA,EAGX,MAAKF,KAAL,CAAWG,QAHA,EAIX,MAAKH,KAAL,CAAWI,IAJA,CAAb;;AAOA,UAAI,MAAKJ,KAAL,CAAWK,QAAf,EAAyB;AACvB,cAAKL,KAAL,CAAWK,QAAX,CAAoBC,OAApB,CAA4B,UAACC,IAAD;AAAA,iBAAU,MAAKT,KAAL,CAAWU,eAAX,CAA2BD,IAA3B,CAAV;AAAA,SAA5B;AACD;;AAED,UAAI,MAAKP,KAAL,CAAWS,WAAf,EAA4B;AAC1B,cAAKT,KAAL,CAAWS,WAAX,CAAuBH,OAAvB,CAA+B,UAACC,IAAD;AAC7B,gBAAKT,KAAL,CAAWY,kBAAX,CAA8BH,IAAI,CAACI,SAAnC,EAA8CJ,IAAI,CAACK,QAAnD;AACD,SAFD;AAGD;;AAED,UAAI,MAAKZ,KAAL,CAAWa,SAAf,EAA0B;AACxB,cAAKf,KAAL,CAAWe,SAAX,CAAqB,MAAKb,KAAL,CAAWa,SAAhC;AACD;;AAED,UAAI,MAAKb,KAAL,CAAWc,QAAf,EAAyB;AACvB,cAAKhB,KAAL,CAAWgB,QAAX,CAAoB,MAAKd,KAAL,CAAWc,QAA/B;AACD;;AAED,UAAI,MAAKd,KAAL,CAAWe,SAAf,EAA0B;AACxB,cAAKf,KAAL,CAAWe,SAAX,CAAqBT,OAArB,CAA6B,UAACC,IAAD;AAC3B,gBAAKT,KAAL,CAAWkB,gBAAX,CAA4BT,IAAI,CAACU,IAAjC,EAAuCV,IAAI,CAACK,QAA5C;AACD,SAFD;AAGD;AACF,KA/BD;;AAiCA,cAAA,GAAO;AACL,UAAI,MAAKd,KAAT,EAAgB,MAAKA,KAAL,CAAWoB,IAAX;AACjB,KAFD;;;AAeD;;;;SA3FCC,oBAAA;AAEEC,IAAAA,MAAM,CAACC,gBAAP,CAAwBzB,mBAAxB,EAA6C,KAAK0B,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAA7C;AAEA,QAAMC,aAAa,GAAGC,KAAK,CAACC,IAAN,CACpBC,QAAQ,CAACC,oBAAT,CAA8B,QAA9B,CADoB,EAEpBC,IAFoB,CAEf,UAACC,CAAD;AAAA,aAAOA,CAAC,CAACC,GAAF,KAAUpC,UAAjB;AAAA,KAFe,CAAtB;;AAMA,QAAI,CAAC6B,aAAL,EAAoB;AAClB,UAAMQ,MAAM,GAAGL,QAAQ,CAACM,aAAT,CAAuB,QAAvB,CAAf;AACAD,MAAAA,MAAM,CAACD,GAAP,GAAapC,UAAb;AACAqC,MAAAA,MAAM,CAACE,KAAP,GAAe,IAAf;;AACAF,MAAAA,MAAM,CAACG,MAAP,GAAgB;AACd,YAAMC,KAAK,GAAG,IAAIC,KAAJ,CAAUzC,mBAAV,CAAd;AACAwB,QAAAA,MAAM,CAACkB,aAAP,CAAqBF,KAArB;AACD,OAHD;;AAIAT,MAAAA,QAAQ,CAACY,IAAT,CAAcC,WAAd,CAA0BR,MAA1B;AACD,KATD,MASO;AACL,UAAI,mBAAmBZ,MAAvB,EAA+B;AAG7B,YAAMgB,KAAK,GAAG,IAAIC,KAAJ,CAAUzC,mBAAV,CAAd;AACAwB,QAAAA,MAAM,CAACkB,aAAP,CAAqBF,KAArB;AACD,OALD,MAKO;AAGLZ,QAAAA,aAAa,CAACW,MAAd,GAAuB;AACrB,cAAMC,KAAK,GAAG,IAAIC,KAAJ,CAAUzC,mBAAV,CAAd;AACAwB,UAAAA,MAAM,CAACkB,aAAP,CAAqBF,KAArB;AACD,SAHD;AAID;AACF;AACF;;SAEDK,uBAAA;AACErB,IAAAA,MAAM,CAACsB,mBAAP,CACE9C,mBADF,EAEE,KAAK0B,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAFF;AAID;;SAuCDoB,SAAA;AACE,WACEC,aAAA,SAAA;AACEC,MAAAA,KAAK,EAAE,KAAK7C,KAAL,CAAW6C;AAClBC,MAAAA,SAAS,EAAE,KAAK9C,KAAL,CAAW8C;AACtBC,MAAAA,OAAO,EAAE,KAAK7B;KAHhB,EAKG,KAAKlB,KAAL,CAAWgD,QALd,CADF;AASD;;;EA7F6CJ;;;;;"}
1
+ {"version":3,"file":"index.modern.js","sources":["../src/interfaces.ts","../src/index.tsx"],"sourcesContent":["export interface IDeveloperField {\n label: string;\n key: string;\n type?: \"string\" | \"checkbox\" | \"select\";\n description?: string;\n alternateMatches?: string[];\n validators?: IValidatorField[];\n selectOptions?: {\n label: string;\n value: string;\n }[];\n}\n\ninterface IAbstractValidator<ValidateKey> {\n validate: ValidateKey;\n errorMessage?: string;\n level?: \"info\" | \"warning\" | \"error\";\n}\n\nexport type IRequiredValidator = IAbstractValidator<\"required\">;\n\nexport type IUniqueValidator = IAbstractValidator<\n \"unique\" | \"unique_case_insensitive\"\n>;\n\nexport interface IUniqueWithValidator\n extends IAbstractValidator<\"unique_with\"> {\n uniqueKey: string;\n}\n\nexport interface IRegexValidator\n extends IAbstractValidator<\"regex_match\" | \"regex_exclude\"> {\n regex: string;\n regexOptions?: {\n ignoreCase?: boolean;\n dotAll?: boolean;\n multiline?: boolean;\n unicode?: boolean;\n };\n}\n\nexport interface IRequireWithValidator\n extends IAbstractValidator<\n | \"require_with\"\n | \"require_without\"\n | \"require_with_all\"\n | \"require_without_all\"\n > {\n fields: string[];\n}\n\nexport interface IRequireWithValuesValidator\n extends IAbstractValidator<\n | \"require_with_values\"\n | \"require_without_values\"\n | \"require_with_all_values\"\n | \"require_without_all_values\"\n > {\n fieldValues: { [key: string]: string };\n}\n\nexport type IValidatorField =\n | IRequiredValidator\n | IUniqueValidator\n | IUniqueWithValidator\n | IRegexValidator\n | IRequireWithValidator\n | IRequireWithValuesValidator;\n\nexport interface IDeveloperSettings {\n importIdentifier: string;\n title?: string;\n allowInvalidSubmit?: boolean;\n backendSync?: boolean;\n manualInputDisabled?: boolean;\n manualInputOnly?: boolean;\n allowCustomFields?: boolean;\n maxRecords?: number | null;\n developmentMode?: boolean;\n displayEncoding?: boolean;\n styleOverrides?: IDeveloperStyleOverrides;\n webhookUrl?: string;\n initialData?: { [key: string]: string }[] | any[][] | null;\n matchingStep?: {\n headerRowOverride?: number | null;\n };\n autoMapHeaders?: boolean;\n delimiter?: string;\n backendOverride?: {\n url: string;\n type: \"AWS\" | \"AZURE\";\n } | null;\n locale?: TLocaleShorthand;\n templateDownloadFilename?: string;\n}\n\n// If you update this, also update IDeveloperStylesOverridesStrict\n// in interfaces.tsx\nexport interface IDeveloperStyleOverrides {\n global?: {\n textColor?: string;\n primaryTextColor?: string;\n secondaryTextColor?: string;\n successColor?: string;\n warningColor?: string;\n customFontURL?: string | null;\n customFontFamily?: string | null;\n };\n primaryButton?: {\n borderRadius?: string;\n backgroundColor?: string;\n textColor?: string;\n border?: string;\n hoverBackgroundColor?: string;\n hoverTextColor?: string;\n hoverBorder?: string;\n };\n secondaryButton?: {\n borderRadius?: string;\n backgroundColor?: string;\n textColor?: string;\n border?: string;\n hoverBackgroundColor?: string;\n hoverTextColor?: string;\n hoverBorder?: string;\n };\n tertiaryButton?: {\n borderRadius?: string;\n backgroundColor?: string;\n textColor?: string;\n border?: string;\n hoverBackgroundColor?: string;\n hoverTextColor?: string;\n hoverBorder?: string;\n };\n dropzone?: {\n borderWidth?: number;\n borderRadius?: number;\n borderColor?: string;\n borderStyle?: string;\n color?: string;\n outline?: string;\n };\n stepperBar?: {\n completeColor?: string;\n incompleteColor?: string;\n currentColor?: string;\n };\n}\n\nexport interface IUser {\n id: string;\n name?: string;\n email?: string;\n companyId?: string;\n companyName?: string;\n}\n\nexport interface ICellRef {\n rowIndex: number;\n fieldKey: string;\n}\n\nexport interface ITableMessage {\n message: string;\n level: \"info\" | \"warning\" | \"error\";\n}\n\nexport interface IMessagesForCell extends ICellRef {\n messages: ITableMessage[];\n}\n\nexport interface IColumnHook {\n fieldName: string;\n callback: (\n values: IColumnHookInput[]\n ) => IColumnHookOutput[] | Promise<IColumnHookOutput[]>;\n}\n\nexport interface IRowHook {\n (data: IRowHookInput, mode: \"init\" | \"update\"):\n | IRowHookOutput\n | Promise<IRowHookOutput>;\n}\n\nexport interface IColumnHookInput {\n index: number;\n value: any;\n}\n\nexport interface IColumnHookOutput {\n index: number;\n value?: any;\n info?: ITableMessage[];\n}\n\nexport interface IRowHookInput {\n row: {\n [key: string]: {\n value: any;\n info?: ITableMessage[];\n };\n };\n index: number;\n}\n\nexport interface IRowHookOutput {\n row: {\n [key: string]: {\n value?: any;\n info?: ITableMessage[];\n };\n };\n}\n\nexport interface IRowHookOutputInternal extends IRowHookOutput {\n index: number;\n}\n\nexport interface IResultMetadata {\n id: string | null;\n importIdentifier: string;\n user: IUser;\n rowsWithError: number[];\n}\n\nexport type TLocaleShorthand = \"en\" | \"de\";\n\nexport enum EStepHook {\n UPLOAD_STEP = \"UPLOAD_STEP\",\n REVIEW_STEP = \"REVIEW_STEP\",\n REVIEW_STEP_POST_HOOKS = \"REVIEW_STEP_POST_HOOKS\",\n}\n\nexport interface IUploadStepData {\n filename: string | undefined;\n dataPreview: any[][];\n}\n\nexport interface IReviewStepData {\n rawHeaders: string[] | null;\n headerMapping: { [header: string]: string | undefined };\n}\n\nexport interface IReviewStepPostHooksData {\n headerMapping: { [header: string]: string | undefined };\n}\n\nexport interface IStepHook {\n type: keyof typeof EStepHook;\n callback: (\n uploader: any,\n data: IUploadStepData | IReviewStepData | IReviewStepPostHooksData\n ) => void | Promise<void>;\n}\n\n","import * as React from 'react'\nimport {\n IColumnHookInput,\n IColumnHookOutput,\n IColumnHook,\n IDeveloperField,\n IValidatorField,\n IDeveloperSettings,\n IRowHookInput,\n IRowHookOutput,\n IRowHook,\n IDeveloperStyleOverrides,\n IUser,\n IResultMetadata,\n EStepHook,\n IStepHook\n} from './interfaces'\n\ninterface Props {\n style?: React.CSSProperties\n className?: string\n licenseKey: string\n user: IUser\n fields: IDeveloperField[]\n settings: IDeveloperSettings\n rowHooks?: IRowHook[]\n columnHooks?: IColumnHook[]\n stepHooks?: IStepHook[]\n onResults?: (data: any, metadata: IResultMetadata) => void\n onCancel?: () => void\n children: React.ReactNode\n}\n\ndeclare var DromoUploader: any\n\nconst SCRIPT_SRC = 'https://unpkg.com/dromo-uploader-js/dist/DromoUploader.js'\nconst SCRIPT_LOADED_EVENT = 'DROMO_SCRIPT_LOADED'\n\nexport default class DromoReactUploader extends React.Component<Props> {\n dromo: any\n\n componentDidMount() {\n // Add event listener post load to set up Dromo\n window.addEventListener(SCRIPT_LOADED_EVENT, this.scriptLoaded.bind(this))\n\n const loadingScript = Array.from(\n document.getElementsByTagName('script')\n ).find((s) => s.src === SCRIPT_SRC)\n\n // If there is no script tag added to HTML then we add. Prevents multiple\n // adds if there are multiple components\n if (!loadingScript) {\n const script = document.createElement('script')\n script.src = SCRIPT_SRC\n script.async = true\n script.onload = () => {\n const event = new Event(SCRIPT_LOADED_EVENT)\n window.dispatchEvent(event)\n }\n document.body.appendChild(script)\n } else {\n if ('DromoUploader' in window) {\n // If the script has been injected and has been loaded we can call\n // scriptLoaded\n const event = new Event(SCRIPT_LOADED_EVENT)\n window.dispatchEvent(event)\n } else {\n // If the script has been injected but hasn't been loaded, we wait\n // for load\n loadingScript.onload = () => {\n const event = new Event(SCRIPT_LOADED_EVENT)\n window.dispatchEvent(event)\n }\n }\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener(\n SCRIPT_LOADED_EVENT,\n this.scriptLoaded.bind(this)\n )\n }\n\n scriptLoaded = () => {\n this.dromo = new DromoUploader(\n this.props.licenseKey,\n this.props.fields,\n this.props.settings,\n this.props.user\n )\n\n if (this.props.rowHooks) {\n this.props.rowHooks.forEach((hook) => this.dromo.registerRowHook(hook))\n }\n\n if (this.props.columnHooks) {\n this.props.columnHooks.forEach((hook) => {\n this.dromo.registerColumnHook(hook.fieldName, hook.callback)\n })\n }\n\n if (this.props.onResults) {\n this.dromo.onResults(this.props.onResults)\n }\n\n if (this.props.onCancel) {\n this.dromo.onCancel(this.props.onCancel)\n }\n\n if (this.props.stepHooks) {\n this.props.stepHooks.forEach((hook) => {\n this.dromo.registerStepHook(hook.type, hook.callback)\n })\n }\n }\n\n open = () => {\n if (this.dromo) this.dromo.open()\n }\n\n render() {\n return (\n <button\n style={this.props.style}\n className={this.props.className}\n onClick={this.open}\n >\n {this.props.children}\n </button>\n )\n }\n}\n\nexport {\n IDeveloperField,\n IDeveloperSettings,\n IUser,\n IColumnHookInput,\n IColumnHookOutput,\n IColumnHook,\n IRowHookInput,\n IRowHookOutput,\n IRowHook,\n IValidatorField,\n IDeveloperStyleOverrides,\n IResultMetadata,\n EStepHook,\n IStepHook\n}\n"],"names":["EStepHook","SCRIPT_SRC","SCRIPT_LOADED_EVENT","DromoReactUploader","dromo","DromoUploader","props","licenseKey","fields","settings","user","rowHooks","forEach","hook","registerRowHook","columnHooks","registerColumnHook","fieldName","callback","onResults","onCancel","stepHooks","registerStepHook","type","open","componentDidMount","window","addEventListener","scriptLoaded","bind","loadingScript","Array","from","document","getElementsByTagName","find","s","src","script","createElement","async","onload","event","Event","dispatchEvent","body","appendChild","componentWillUnmount","removeEventListener","render","React","style","className","onClick","children"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export interface IDeveloperField {
2
2
  label: string;
3
3
  key: string;
4
- type?: 'string' | 'checkbox' | 'select';
4
+ type?: "string" | "checkbox" | "select";
5
5
  description?: string;
6
6
  alternateMatches?: string[];
7
7
  validators?: IValidatorField[];
@@ -10,14 +10,18 @@ export interface IDeveloperField {
10
10
  value: string;
11
11
  }[];
12
12
  }
13
- export interface IValidatorField {
14
- validate: 'required' | 'unique' | 'unique_case_insensitive' | 'regex_match' | 'regex_exclude' | 'require_with' | 'require_without' | 'require_with_all' | 'require_without_all' | 'require_with_values' | 'require_without_values' | 'require_with_all_values' | 'require_without_all_values';
13
+ interface IAbstractValidator<ValidateKey> {
14
+ validate: ValidateKey;
15
15
  errorMessage?: string;
16
- fields?: string[];
17
- fieldValues?: {
18
- [key: string]: any;
19
- };
20
- regex?: string;
16
+ level?: "info" | "warning" | "error";
17
+ }
18
+ export declare type IRequiredValidator = IAbstractValidator<"required">;
19
+ export declare type IUniqueValidator = IAbstractValidator<"unique" | "unique_case_insensitive">;
20
+ export interface IUniqueWithValidator extends IAbstractValidator<"unique_with"> {
21
+ uniqueKey: string;
22
+ }
23
+ export interface IRegexValidator extends IAbstractValidator<"regex_match" | "regex_exclude"> {
24
+ regex: string;
21
25
  regexOptions?: {
22
26
  ignoreCase?: boolean;
23
27
  dotAll?: boolean;
@@ -25,6 +29,15 @@ export interface IValidatorField {
25
29
  unicode?: boolean;
26
30
  };
27
31
  }
32
+ export interface IRequireWithValidator extends IAbstractValidator<"require_with" | "require_without" | "require_with_all" | "require_without_all"> {
33
+ fields: string[];
34
+ }
35
+ export interface IRequireWithValuesValidator extends IAbstractValidator<"require_with_values" | "require_without_values" | "require_with_all_values" | "require_without_all_values"> {
36
+ fieldValues: {
37
+ [key: string]: string;
38
+ };
39
+ }
40
+ export declare type IValidatorField = IRequiredValidator | IUniqueValidator | IUniqueWithValidator | IRegexValidator | IRequireWithValidator | IRequireWithValuesValidator;
28
41
  export interface IDeveloperSettings {
29
42
  importIdentifier: string;
30
43
  title?: string;
@@ -38,7 +51,9 @@ export interface IDeveloperSettings {
38
51
  displayEncoding?: boolean;
39
52
  styleOverrides?: IDeveloperStyleOverrides;
40
53
  webhookUrl?: string;
41
- initialData?: any[] | null;
54
+ initialData?: {
55
+ [key: string]: string;
56
+ }[] | any[][] | null;
42
57
  matchingStep?: {
43
58
  headerRowOverride?: number | null;
44
59
  };
@@ -46,7 +61,7 @@ export interface IDeveloperSettings {
46
61
  delimiter?: string;
47
62
  backendOverride?: {
48
63
  url: string;
49
- type: 'AWS' | 'AZURE';
64
+ type: "AWS" | "AZURE";
50
65
  } | null;
51
66
  locale?: TLocaleShorthand;
52
67
  templateDownloadFilename?: string;
@@ -111,19 +126,21 @@ export interface IUser {
111
126
  }
112
127
  export interface ICellRef {
113
128
  rowIndex: number;
114
- column: string;
129
+ fieldKey: string;
115
130
  }
116
131
  export interface ITableMessage {
117
132
  message: string;
118
- level: 'info' | 'warning' | 'error';
133
+ level: "info" | "warning" | "error";
134
+ }
135
+ export interface IMessagesForCell extends ICellRef {
136
+ messages: ITableMessage[];
119
137
  }
120
- export declare type ITableMessageWithRef = ITableMessage & ICellRef;
121
138
  export interface IColumnHook {
122
139
  fieldName: string;
123
140
  callback: (values: IColumnHookInput[]) => IColumnHookOutput[] | Promise<IColumnHookOutput[]>;
124
141
  }
125
142
  export interface IRowHook {
126
- (data: IRowHookInput, mode: 'init' | 'update'): IRowHookOutput | Promise<IRowHookOutput>;
143
+ (data: IRowHookInput, mode: "init" | "update"): IRowHookOutput | Promise<IRowHookOutput>;
127
144
  }
128
145
  export interface IColumnHookInput {
129
146
  index: number;
@@ -160,13 +177,14 @@ export interface IResultMetadata {
160
177
  user: IUser;
161
178
  rowsWithError: number[];
162
179
  }
163
- export declare type TLocaleShorthand = 'en';
180
+ export declare type TLocaleShorthand = "en" | "de";
164
181
  export declare enum EStepHook {
165
182
  UPLOAD_STEP = "UPLOAD_STEP",
166
183
  REVIEW_STEP = "REVIEW_STEP",
167
184
  REVIEW_STEP_POST_HOOKS = "REVIEW_STEP_POST_HOOKS"
168
185
  }
169
186
  export interface IUploadStepData {
187
+ filename: string | undefined;
170
188
  dataPreview: any[][];
171
189
  }
172
190
  export interface IReviewStepData {
@@ -181,6 +199,7 @@ export interface IReviewStepPostHooksData {
181
199
  };
182
200
  }
183
201
  export interface IStepHook {
184
- type: EStepHook;
202
+ type: keyof typeof EStepHook;
185
203
  callback: (uploader: any, data: IUploadStepData | IReviewStepData | IReviewStepPostHooksData) => void | Promise<void>;
186
204
  }
205
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dromo-uploader-react",
3
- "version": "1.2.13",
3
+ "version": "1.2.16",
4
4
  "description": "Easy to use data (CSV, TSV, Excel) importer",
5
5
  "author": "ankitgoyal100",
6
6
  "license": "MIT",