{"version":3,"sources":["../../../../src/visualBuilder/components/addInstanceButton.tsx"],"sourcesContent":["import React from \"preact/compat\";\nimport classNames from \"classnames\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { PlusIcon } from \"./icons\";\nimport { ISchemaFieldMap } from \"../utils/types/index.types\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { Signal } from \"@preact/signals\";\n\ninterface AddInstanceButtonProps {\n    value: any;\n    onClick: (event: MouseEvent) => void;\n    label?: string | undefined;\n    fieldSchema: ISchemaFieldMap | undefined;\n    fieldMetadata: CslpData;\n    index: number;\n    loading: Signal<boolean>;\n}\n\nfunction AddInstanceButtonComponent(\n    props: AddInstanceButtonProps\n): JSX.Element {\n    const fieldSchema = props.fieldSchema;\n    const fieldMetadata = props.fieldMetadata;\n    const index = props.index;\n    const loading = props.loading;\n\n    const onClick = async (event: MouseEvent) => {\n        loading.value = true;\n        try {\n            await visualBuilderPostMessage?.send(\n                VisualBuilderPostMessageEvents.ADD_INSTANCE,\n                {\n                    fieldMetadata,\n                    index,\n                }\n            );\n        } catch (error) {\n            console.error(\"Visual Builder: Failed to add instance\", error);\n        }\n        loading.value = false;\n        props.onClick(event);\n    };\n\n    const buttonClassName = classNames(\n        \"visual-builder__add-button\",\n        visualBuilderStyles()[\"visual-builder__add-button\"],\n        {\n            \"visual-builder__add-button--with-label\": props.label,\n        },\n        {\n            [visualBuilderStyles()[\"visual-builder__add-button--loading\"]]:\n                loading.value,\n        },\n        visualBuilderStyles()[\"visual-builder__tooltip\"]\n    );\n\n    const maxInstances =\n        fieldSchema && fieldSchema.data_type !== \"block\"\n            ? fieldSchema.max_instance\n            : undefined;\n    const isMaxInstances = maxInstances\n        ? props.value.length >= maxInstances\n        : false;\n    const disabled = loading.value || isMaxInstances;\n\n    return (\n        <button\n            className={buttonClassName}\n            data-tooltip={\"Add section\"}\n            data-testid=\"visual-builder-add-instance-button\"\n            disabled={disabled}\n            title={\n                maxInstances && isMaxInstances\n                    ? `Max ${maxInstances} instances allowed`\n                    : undefined\n            }\n            onClick={(e) => {\n                const event = e as unknown as MouseEvent;\n                onClick(event);\n            }}\n        >\n            <PlusIcon />\n            {props.label ? (\n                <span\n                    title={props.label}\n                    className={classNames(\n                        \"visual-builder__add-button-label\",\n                        visualBuilderStyles()[\n                            \"visual-builder__add-button-label\"\n                        ]\n                    )}\n                >\n                    {props.label}\n                </span>\n            ) : null}\n        </button>\n    );\n}\n\nexport default AddInstanceButtonComponent;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAAuB;AACvB,2BAAoC;AACpC,mBAAyB;AAGzB,sCAAqC;AACrC,yBAA+C;AA6DvC;AAhDR,SAAS,2BACL,OACW;AACX,QAAM,cAAc,MAAM;AAC1B,QAAM,gBAAgB,MAAM;AAC5B,QAAM,QAAQ,MAAM;AACpB,QAAM,UAAU,MAAM;AAEtB,QAAM,UAAU,OAAO,UAAsB;AA5BjD;AA6BQ,YAAQ,QAAQ;AAChB,QAAI;AACA,cAAM,qCAAAA,YAAA,mBAA0B;AAAA,QAC5B,kDAA+B;AAAA,QAC/B;AAAA,UACI;AAAA,UACA;AAAA,QACJ;AAAA;AAAA,IAER,SAAS,OAAO;AACZ,cAAQ,MAAM,0CAA0C,KAAK;AAAA,IACjE;AACA,YAAQ,QAAQ;AAChB,UAAM,QAAQ,KAAK;AAAA,EACvB;AAEA,QAAM,sBAAkB,kBAAAC;AAAA,IACpB;AAAA,QACA,0CAAoB,EAAE,4BAA4B;AAAA,IAClD;AAAA,MACI,0CAA0C,MAAM;AAAA,IACpD;AAAA,IACA;AAAA,MACI,KAAC,0CAAoB,EAAE,qCAAqC,CAAC,GACzD,QAAQ;AAAA,IAChB;AAAA,QACA,0CAAoB,EAAE,yBAAyB;AAAA,EACnD;AAEA,QAAM,eACF,eAAe,YAAY,cAAc,UACnC,YAAY,eACZ;AACV,QAAM,iBAAiB,eACjB,MAAM,MAAM,UAAU,eACtB;AACN,QAAM,WAAW,QAAQ,SAAS;AAElC,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,MACX,gBAAc;AAAA,MACd,eAAY;AAAA,MACZ;AAAA,MACA,OACI,gBAAgB,iBACV,OAAO,YAAY,uBACnB;AAAA,MAEV,SAAS,CAAC,MAAM;AACZ,cAAM,QAAQ;AACd,gBAAQ,KAAK;AAAA,MACjB;AAAA,MAEA;AAAA,oDAAC,yBAAS;AAAA,QACT,MAAM,QACH;AAAA,UAAC;AAAA;AAAA,YACG,OAAO,MAAM;AAAA,YACb,eAAW,kBAAAA;AAAA,cACP;AAAA,kBACA,0CAAoB,EAChB,kCACJ;AAAA,YACJ;AAAA,YAEC,gBAAM;AAAA;AAAA,QACX,IACA;AAAA;AAAA;AAAA,EACR;AAER;AAEA,IAAO,4BAAQ;","names":["visualBuilderPostMessage","classNames"]}