{"version":3,"file":"js/8358-ca6c3a085929b4d7dbaa.js","mappings":"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","sources":["webpack://bizzey/./app/javascript/src/components/BlockEditor/BlockContent.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/BlocksRenderer.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/InputBlocks/IntroBlock.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/InputBlocks/SummaryBlock.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/ImageBlock.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/InputBlock.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/Inputs/AddressInput.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/Inputs/CountriesInput.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/Inputs/DateInput.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/Inputs/DropdownInput.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/Inputs/EmailInput.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/Inputs/FileUploadInput.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/Inputs/LinkInput.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/Inputs/LongTextInput.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/Inputs/NumberInput.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/Inputs/SliderInput.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/Inputs/TextInput.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/IntroBlock.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/ItemsBlock.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/PDFBlock.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/QuestionAndAnswerBlock.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/SignBlock.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/SubmitBlock.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/SummaryBlock.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/RenderBlocks/TextBlock.tsx","webpack://bizzey/./app/javascript/src/components/BlockEditor/SelectionButton.tsx","webpack://bizzey/./app/javascript/src/components/Editor/Editor.tsx","webpack://bizzey/./app/javascript/src/components/Editor/components/VariableList.tsx","webpack://bizzey/./app/javascript/src/components/Editor/plugin/variables.tsx","webpack://bizzey/./app/javascript/src/components/Signature/Signature.tsx","webpack://bizzey/./app/javascript/src/components/Signature/SignatureCanvas.tsx","webpack://bizzey/./app/javascript/src/components/Signature/SignatureContainer.tsx","webpack://bizzey/./app/javascript/src/helpers/ContentBlockHelper.tsx","webpack://bizzey/./app/javascript/src/helpers/EditorHelper.ts"],"sourcesContent":["import * as React from 'react'\n\ninterface IProps {\n\tclassName?: string\n\tchildren: React.ReactNode\n}\n\nconst BlockContent = (props: IProps) => {\n\treturn (\n\t\t
\n\t\t\t{props.children}\n\t\t
\n\t)\n}\n\nexport default BlockContent","import * as React from 'react'\nimport { ContentBlock, ContentBlockType, ContentBlockVariables, ItemsBlock as ItemsBlockType, NumberFormat, Signature, QuestionAndAnswerBlock as QuestionAndAnswerBlockType } from '../../types'\nimport BlockContent from './BlockContent'\nimport ImageBlock from './RenderBlocks/ImageBlock'\nimport IntroBlock from './RenderBlocks/IntroBlock'\nimport SignBlock from './RenderBlocks/SignBlock'\nimport ItemsBlock from './RenderBlocks/ItemsBlock'\nimport SummaryBlock from './RenderBlocks/SummaryBlock'\nimport TextBlock from './RenderBlocks/TextBlock'\nimport SubmitBlock from './RenderBlocks/SubmitBlock'\nimport InputBlock from './RenderBlocks/InputBlock'\nimport PDFBlock from './RenderBlocks/PDFBlock'\nimport QuestionAndAnswerBlock from './RenderBlocks/QuestionAndAnswerBlock'\n\nexport enum BlockRenderMode {\n\tEDITOR = 'editor',\n\tRENDER = 'render',\n}\n\ninterface IProps {\n\trenderMode?: BlockRenderMode\n\tblocks: ContentBlock[]\n\tvariables: ContentBlockVariables\n\tcurrency: string\n\tnumberFormat: NumberFormat\n\tlocked?: boolean\n\tsignKey?: string\n\tsignatures?: Signature[]\n\tonSignClick?: () => void\n\tonItemsBlockItemSelectionChange?: (itemsBlock: ItemsBlockType, itemIndex: number) => void\n\tonAnswerChange?: (block: QuestionAndAnswerBlockType) => void\n}\n\nconst BlocksRenderer = (props: IProps) => {\n\tconst {\n\t\trenderMode,\n\t\tblocks,\n\t\tvariables,\n\t\tcurrency,\n\t\tnumberFormat,\n\t\tsignKey,\n\t\tsignatures,\n\t\tonSignClick,\n\t\tonItemsBlockItemSelectionChange,\n\t} = props\n\tconst itemBlocks: ItemsBlockType[] = blocks.filter(block => block.type === ContentBlockType.ITEMS) as ItemsBlockType[]\n\n\tlet component = null\n\tlet className = ''\n\n\treturn <>\n\t\t{blocks.map(block => {\n\t\t\tswitch (block.type) {\n\t\t\t\tcase ContentBlockType.TEXT:\n\t\t\t\t\tcomponent = \n\t\t\t\t\tclassName = 'block-text'\n\t\t\t\t\tbreak\n\t\t\t\tcase ContentBlockType.IMAGE:\n\t\t\t\t\tcomponent = \n\t\t\t\t\tclassName = 'block-image'\n\t\t\t\t\tbreak\n\t\t\t\tcase ContentBlockType.PDF:\n\t\t\t\t\tcomponent = \n\t\t\t\t\tclassName = 'block-pdf'\n\t\t\t\t\tbreak\n\t\t\t\tcase ContentBlockType.SIGN:\n\t\t\t\t\tcomponent = \n\t\t\t\t\tclassName = 'block-sign'\n\t\t\t\t\tbreak\n\t\t\t\tcase ContentBlockType.INTRO:\n\t\t\t\t\tcomponent = \n\t\t\t\t\tclassName = 'block-intro'\n\t\t\t\t\tbreak\n\t\t\t\tcase ContentBlockType.ITEMS:\n\t\t\t\t\tcomponent = \n\t\t\t\t\tclassName = 'block-items'\n\t\t\t\t\tbreak\n\t\t\t\tcase ContentBlockType.SUMMARY:\n\t\t\t\t\tcomponent = \n\t\t\t\t\tclassName = 'block-summary'\n\t\t\t\t\tbreak\n\t\t\t\tcase ContentBlockType.ADDRESS_INPUT:\n\t\t\t\tcase ContentBlockType.COUNTRIES_INPUT:\n\t\t\t\tcase ContentBlockType.DATE_INPUT:\n\t\t\t\tcase ContentBlockType.DROPDOWN_INPUT:\n\t\t\t\tcase ContentBlockType.EMAIL_INPUT:\n\t\t\t\tcase ContentBlockType.FILE_UPLOAD_INPUT:\n\t\t\t\tcase ContentBlockType.LINK_INPUT:\n\t\t\t\tcase ContentBlockType.LONG_TEXT_INPUT:\n\t\t\t\tcase ContentBlockType.NUMBER_INPUT:\n\t\t\t\tcase ContentBlockType.PHONE_NUMBER_INPUT:\n\t\t\t\tcase ContentBlockType.TEXT_INPUT:\n\t\t\t\tcase ContentBlockType.SLIDER_INPUT:\n\t\t\t\t\tcomponent = \n\t\t\t\t\tclassName = 'block-input'\n\t\t\t\t\tbreak\n\t\t\t\tcase ContentBlockType.QUESTION_AND_ANSWER:\n\t\t\t\t\tcomponent = \n\t\t\t\t\tclassName = 'block-question-and-answer'\n\t\t\t\t\tbreak\n\t\t\t\tcase ContentBlockType.SUBMIT:\n\t\t\t\t\tcomponent = \n\t\t\t\t\tclassName = 'block-submit'\n\t\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif (!component) return null\n\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t{component}\n\t\t\t\t\n\t\t\t)\n\t\t})}\n\t\n}\n\nexport default BlocksRenderer","import * as React from 'react'\nimport mustache from 'mustache'\nimport FroalaEditorView from 'react-froala-wysiwyg/FroalaEditorView'\nimport { WithTranslation, withTranslation } from \"react-i18next\"\nimport styled from 'styled-components'\nimport EditorHelper from '../../../helpers/EditorHelper'\nimport { Style } from '../../../styles'\nimport Editor, { MINIMAL_EDITOR_CONFIG } from '../../Editor/Editor'\nimport { EditBlockProps } from '../Block'\nimport { ContentBlockVariables, IntroBlock } from '../../../types'\n\n\nconst Container = styled.div`\n\tbackground: white;\n\tpadding: 30px 20px;\n\tdisplay: flex;\n\tflex-direction: row;\n\tborder-radius: ${Style.variables.baseBorderRadius};\n\n\t@media screen and (max-width: ${Style.breakpoints.SMALL}) {\n\t\tflex-direction: column;\n\t}\n`\n\nexport const IntroBlockTitle = styled.div`\n\tfont-weight: 700;\n\tfont-size: 18.75px;\n\tmin-height: 30px;\n\tmargin-bottom: ${Style.spacing.x0_5};\n`\n\nconst IntroBlockContainer = styled.div`\n\tflex: 1;\n\n\t&:last-child {\n\t\tmargin-left: ${Style.spacing.x2};\n\n\t\t@media screen and (max-width: ${Style.breakpoints.SMALL}) {\n\t\t\tmargin-left: 0;\n\t\t\tmargin-top: ${Style.spacing.x2};\n\t\t}\n\t}\n`\n\ntype IProps = {\n\tvariables: ContentBlockVariables\n} & EditBlockProps & WithTranslation\n\ninterface IState {\n\teditorMode: 'view' | 'edit'\n\ttoModel: object | string\n\tfromModel: object | string\n}\n\nclass IntroBlockComponent extends React.Component {\n\tprivate container = React.createRef()\n\tprivate toEditor = React.createRef()\n\tprivate fromEditor = React.createRef()\n\n\tconstructor(props: IProps) {\n\t\tsuper(props)\n\n\t\tthis.state = {\n\t\t\teditorMode: 'view',\n\t\t\ttoModel: props.block.to,\n\t\t\tfromModel: props.block.from,\n\t\t}\n\n\t\tthis.onContainerClick = this.onContainerClick.bind(this)\n\t\tthis.onOutsideContainerClick = this.onOutsideContainerClick.bind(this)\n\t\tthis.onToChange = this.onToChange.bind(this)\n\t\tthis.debouncedToModelSubmit = this.debouncedToModelSubmit.bind(this)\n\t\tthis.onFromChange = this.onFromChange.bind(this)\n\t\tthis.debouncedFromModelSubmit = this.debouncedFromModelSubmit.bind(this)\n\t}\n\n\tcomponentDidMount(): void {\n\t\tdocument.addEventListener('mousedown', this.onOutsideContainerClick);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tdocument.removeEventListener('mousedown', this.onOutsideContainerClick);\n\t}\n\n\tonContainerClick() {\n\t\tthis.setState({ editorMode: 'edit' })\n\t}\n\n\tonOutsideContainerClick(e) {\n\t\tif (this.state.editorMode === 'edit') {\n\t\t\tif (this.container && !this.container.current.contains(e.target)) {\n\t\t\t\tthis.setState({ editorMode: 'view' })\n\t\t\t}\n\t\t}\n\t}\n\n\tonToChange(toModel: object) {\n\t\tthis.setState({ toModel: toModel })\n\n\t\tthis.debouncedToModelSubmit()\n\t}\n\n\tdebouncedToModelSubmit() {\n\t\tconst { block } = this.props\n\n\t\tif (this.toEditor.current) {\n\t\t\tconst content = this.toEditor.current.getEditor().html.get()\n\t\t\tthis.props.onChange({ ...block, to: content })\n\t\t}\n\t}\n\n\tonFromChange(fromModel: object) {\n\t\tthis.setState({ fromModel: fromModel })\n\n\t\tthis.debouncedFromModelSubmit()\n\t}\n\n\tdebouncedFromModelSubmit() {\n\t\tconst { block } = this.props\n\n\t\tif (this.fromEditor.current) {\n\t\t\tconst content = this.fromEditor.current.getEditor().html.get()\n\t\t\tthis.props.onChange({ ...block, from: content })\n\t\t}\n\t}\n\n\trender() {\n\t\tconst { variables, t, block } = this.props\n\t\tconst { editorMode, toModel, fromModel } = this.state\n\n\t\tconst editorConfig = {\n\t\t\t...MINIMAL_EDITOR_CONFIG,\n\t\t\tvariableOptions: EditorHelper.getVariableOptions(variables),\n\t\t}\n\n\t\tlet toContent = block.to\n\t\tlet fromContent = block.from\n\t\ttry {\n\t\t\ttoContent = mustache.render(block.to, variables)\n\t\t} catch (error) {\n\t\t\tconsole.log(error.message)\n\t\t}\n\n\t\ttry {\n\t\t\tfromContent = mustache.render(block.from, variables)\n\t\t} catch (error) {\n\t\t\tconsole.log(error.message)\n\t\t}\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{variables && variables.contact && variables.contact.name}\n\t\t\t\t\t\n\t\t\t\t\t{editorMode === 'view' && }\n\n\t\t\t\t\t{editorMode === 'edit' &&\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{variables && variables.workspace && variables.workspace.business_name}\n\t\t\t\t\t\n\t\t\t\t\t{editorMode === 'view' && }\n\n\t\t\t\t\t{editorMode === 'edit' &&\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\n\t\t)\n\t}\n}\n\nexport default withTranslation()(IntroBlockComponent)","import * as React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport styled from 'styled-components'\nimport ContentBlockHelper from '../../../helpers/ContentBlockHelper'\nimport { Style } from '../../../styles'\nimport { ItemsBlock, SummaryBlock as SummaryBlockType } from '../../../types'\nimport NumberFormatter from '../../../utilities/NumberFormatter'\nimport { EditBlockProps } from '../Block'\n\nconst Container = styled.div`\n\tbackground: white;\n\tpadding: 20px;\n\tpadding-top: 16px;\n\tborder-radius: ${Style.variables.baseBorderRadius};\n`\n\nconst OverviewTitle = styled.input`\n\tfont-weight: 700;\n\tfont-size: 18.75px;\n\tborder: none !important;\n\n\t&:active, &:focus {\n\t\tbox-shadow: none !important;\n\t}\n`\n\nexport const Overview = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tborder: 1px solid ${Style.color.border};\n\tborder-radius: 5px;\n`\n\nexport const OverviewItem = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: space-between;\n\n\t&:not(:last-child) {\n\t\tborder-bottom: 1px solid ${Style.color.border};\n\t}\n`\n\nexport const OverviewItemLabel = styled.div`\n\tpadding: ${Style.spacing.x1_5};\n\tfont-weight: bold;\n`\n\nexport const OverviewItemValue = styled.div`\n\tpadding: ${Style.spacing.x1_5};\n\n\t&.bold {\n\t\tfont-weight: bold;\n\t}\n`\n\ntype IProps = {\n\tcurrency: string\n\tnumberFormat: string\n\titems: ItemsBlock[]\n} & EditBlockProps\n\nconst SummaryBlock = (props: IProps) => {\n\tconst { block, items, currency, numberFormat } = props\n\tconst { t } = useTranslation()\n\tconst [title, setTitle] = React.useState(block.title)\n\n\tconst summary = ContentBlockHelper.getSummary(items)\n\n\tconst onTitleChange = (e) => {\n\t\tconst newTitle = e.target.value\n\n\t\tsetTitle(newTitle)\n\n\t\tprops.onChange({ ...block, title: newTitle })\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{t('SummaryBlock::Subtotal')}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{NumberFormatter.formatCurrency(currency, numberFormat, summary.subtotal)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{t('SummaryBlock::Tax')}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{NumberFormatter.formatCurrency(currency, numberFormat, summary.tax)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{t('SummaryBlock::Total')}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{NumberFormatter.formatCurrency(currency, numberFormat, summary.total)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default SummaryBlock","import * as React from 'react'\nimport styled from 'styled-components'\nimport { ImageBlock as ImageBlockType } from '../../../types'\n\nconst Container = styled.div`\n\twidth: 100%;\n\tbreak-inside: avoid;\n`\n\n\ntype IProps = {\n\tblock: ImageBlockType\n}\n\nconst ImageBlock = (props: IProps) => {\n\tconst { block } = props\n\n\tif (!block.image_url) return null\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default ImageBlock","import * as React from 'react'\nimport styled from 'styled-components'\nimport { Style } from '../../../styles'\nimport { useTranslation } from 'react-i18next'\nimport AddressInput from './Inputs/AddressInput'\nimport CountriesInput from './Inputs/CountriesInput'\nimport DateInput from './Inputs/DateInput'\nimport DropdownInput from './Inputs/DropdownInput'\nimport EmailInput from './Inputs/EmailInput'\nimport FileUploadInput from './Inputs/FileUploadInput'\nimport LinkInput from './Inputs/LinkInput'\nimport LongTextInput from './Inputs/LongTextInput'\nimport NumberInput from './Inputs/NumberInput'\nimport TextInput from './Inputs/TextInput'\nimport SliderInput from './Inputs/SliderInput'\nimport { AddressInputBlock, ContentBlockType, CountriesInputBlock, DateInputBlock, DropdownInputBlock, EmailInputBlock, FileUploadInputBlock, LinkInputBlock, LongTextInputBlock, NumberInputBlock, PhonenumberInputBlock, SliderInputBlock, TextInputBlock } from '../../../types'\n\nconst Container = styled.div`\n\tbackground: white;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t@media screen and (max-width: ${Style.breakpoints.SMALL}) {\n\t\tflex-direction: column;\n\t}\n`\n\nexport const Title = styled.div`\n\tfont-weight: 700;\n\tfont-size: 16px;\n\tcolor: black;\n`\n\nconst RequiredIndicator = styled.span`\n\tcolor: ${Style.color.brandDanger};\n`\n\nexport const Description = styled.div``\n\nconst InputContainer = styled.div`\n\tmargin-top: ${Style.spacing.x1};\n`\n\ntype IProps = {\n\tblock: AddressInputBlock | CountriesInputBlock | DateInputBlock | DropdownInputBlock | EmailInputBlock | FileUploadInputBlock | LinkInputBlock | LongTextInputBlock | NumberInputBlock | PhonenumberInputBlock | TextInputBlock | SliderInputBlock\n}\n\nconst InputBlock = (props: IProps) => {\n\tconst { t } = useTranslation()\n\tconst { block } = props\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{block.name}\n\t\t\t\t\t{block.required && <RequiredIndicator>*</RequiredIndicator>}\n\t\t\t\t\n\n\t\t\t\t{block?.description?.length > 0 && \n\t\t\t\t\t{block.description}\n\t\t\t\t}\n\n\t\t\t\t\n\t\t\t\t\t{block.type === ContentBlockType.ADDRESS_INPUT && }\n\t\t\t\t\t{block.type === ContentBlockType.COUNTRIES_INPUT && }\n\t\t\t\t\t{block.type === ContentBlockType.DATE_INPUT && }\n\t\t\t\t\t{block.type === ContentBlockType.DROPDOWN_INPUT && }\n\t\t\t\t\t{block.type === ContentBlockType.EMAIL_INPUT && }\n\t\t\t\t\t{block.type === ContentBlockType.FILE_UPLOAD_INPUT && }\n\t\t\t\t\t{block.type === ContentBlockType.LINK_INPUT && }\n\t\t\t\t\t{block.type === ContentBlockType.LONG_TEXT_INPUT && }\n\t\t\t\t\t{block.type === ContentBlockType.NUMBER_INPUT && }\n\t\t\t\t\t{block.type === ContentBlockType.PHONE_NUMBER_INPUT && }\n\t\t\t\t\t{block.type === ContentBlockType.TEXT_INPUT && }\n\t\t\t\t\t{block.type === ContentBlockType.SLIDER_INPUT && }\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default InputBlock","import * as React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { AddressInputBlock } from '../../../../types'\n\ninterface IProps {\n\tblock: AddressInputBlock\n}\n\nconst AddressInput = (props: IProps) => {\n\tconst { block } = props\n\tconst { t } = useTranslation()\n\tconst [address, setAddress] = React.useState('')\n\tconst [city, setCity] = React.useState('')\n\tconst [country, setCountry] = React.useState('')\n\tconst [postal, setPostal] = React.useState('')\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t setAddress(e.target.value)}\n\t\t\t\t\t\trequired={block.required}\n\t\t\t\t\t/>\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t setCity(e.target.value)}\n\t\t\t\t\t\trequired={block.required}\n\t\t\t\t\t/>\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t setCountry(e.target.value)}\n\t\t\t\t\t\trequired={block.required}\n\t\t\t\t\t/>\n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t setPostal(e.target.value)}\n\t\t\t\t\t\trequired={block.required}\n\t\t\t\t\t/>\n\t\t\t\t
\n\t\t\t
\n\t\t\t v !== '').join(';')}\n\t\t\t\tstyle={{ display: 'none' }}\n\t\t\t/>\n\t\t
\n\t)\n}\n\nexport default AddressInput","import * as React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { CountriesInputBlock } from '../../../../types'\n\ninterface IProps {\n\tblock: CountriesInputBlock\n}\n\nconst CountriesInput = (props: IProps) => {\n\tconst { t } = useTranslation()\n\tconst { block } = props\n\tconst { country_options } = block\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default CountriesInput","import { Moment } from 'moment'\nimport * as React from 'react'\nimport { DateInputBlock } from '../../../../types'\nimport moment from '../../../../utilities/Moment'\nimport DateInput from '../../../Form/DateInput'\n\ninterface IProps {\n\tblock: DateInputBlock\n}\n\nconst DateInputComponent = (props: IProps) => {\n\tconst { block } = props\n\tconst [date, setDate] = React.useState(null)\n\n\tconst onDateChange = (value) => {\n\t\tconst newDate = moment(value)\n\n\t\tif (newDate.isValid()) {\n\t\t\tsetDate(newDate)\n\t\t}\n\t}\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default DateInputComponent","import { Moment } from 'moment'\nimport * as React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { DropdownInputBlock } from '../../../../types'\nimport PowerSelect from '../../../Form/PowerSelect'\n\ninterface IProps {\n\tblock: DropdownInputBlock\n}\n\nconst DropdownInput = (props: IProps) => {\n\tconst { block } = props\n\tconst { t } = useTranslation()\n\tconst [selectedOptions, setSelectedOptions] = React.useState([])\n\n\tconst options = block.options.map(option => ({ label: option, value: option }))\n\tconst selectedDropdownOptions = options.filter(option => selectedOptions.includes(option.value))\n\n\tconst onChange = (option) => {\n\t\tif (block.allow_multiple_selection) {\n\t\t\tconst options: { label: string, value: string }[] = option || []\n\t\t\tsetSelectedOptions(options.map(o => o.value))\n\t\t} else {\n\t\t\tif (option) {\n\t\t\t\tsetSelectedOptions([option.value])\n\t\t\t} else {\n\t\t\t\tsetSelectedOptions([])\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default DropdownInput","import * as React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { EmailInputBlock } from '../../../../types'\n\ninterface IProps {\n\tblock: EmailInputBlock\n}\n\nconst EmailInput = (props: IProps) => {\n\tconst { block } = props\n\tconst { t } = useTranslation()\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default EmailInput","import { Blob } from '@rails/activestorage'\nimport * as React from 'react'\nimport { DropEvent, FileRejection, useDropzone } from 'react-dropzone'\nimport { useTranslation } from 'react-i18next'\nimport styled from 'styled-components'\nimport { ActiveStorageController } from '../../../../controllers'\nimport { Style } from '../../../../styles'\nimport { FileUploadInputBlock } from '../../../../types'\nimport Icon from '../../../Icons/Icon'\n\nconst ButtonContainer = styled.div`\n\twidth: fit-content;\n`\n\nconst Button = styled.a`\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tborder: 1px solid #C4CDD5;\n\tpadding: ${Style.spacing.x1} ${Style.spacing.x2};\n\ttransition: all 250ms ease-in-out;\n\tfont-size: 14px;\n\tcolor: #212B36;\n\tborder-radius: 3px;\n\tpointer-events: auto !important;\n\n\t&:hover {\n\t\tbackground: #FAFBFC;\n\t}\n`\n\nconst FileContainer = styled.div`\n\twidth: fit-content;\n\tpadding: ${Style.spacing.x1};\n\tborder: 1px solid ${Style.color.border};\n\tborder-radius: 4px;\n\t\n\ti {\n\t\tmargin-right: 4px;\n\t}\n`\n\ninterface IProps {\n\tblock: FileUploadInputBlock\n}\n\nconst FileUploadInput = (props: IProps) => {\n\tconst { block } = props\n\tconst { t } = useTranslation()\n\tconst [uploading, setUploading] = React.useState(false)\n\tconst [fileBlob, setFileBlob] = React.useState(null)\n\tconst [fileUrl, setFileUrl] = React.useState(null)\n\n\tconst onDrop = (acceptedFiles: any[], fileRejections: FileRejection[], event: DropEvent) => {\n\t\ttry {\n\t\t\tsetUploading(true)\n\t\t\tActiveStorageController.uploadPublic(acceptedFiles[0], async (error, blob) => {\n\t\t\t\tif (error) { console.error(error) }\n\t\t\t\tif (blob) {\n\t\t\t\t\tsetFileBlob(blob)\n\t\t\t\t\tconst { url } = await ActiveStorageController.getBlobUrl(blob)\n\t\t\t\t\tsetUploading(false)\n\t\t\t\t\tsetFileUrl(url)\n\t\t\t\t}\n\t\t\t})\n\t\t} catch (ex) {\n\t\t\tconsole.error(ex)\n\t\t\tsetUploading(false)\n\t\t}\n\t}\n\n\tconst { getRootProps, getInputProps } = useDropzone({\n\t\tonDrop: onDrop,\n\t\tmultiple: false,\n\t})\n\n\tconst onRemoveFileClick = () => {\n\t\tsetFileBlob(null)\n\t\tsetFileUrl(null)\n\t}\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t{uploading &&
\n\t\t\t\t\t{t('FileUploadInput::Uploading file...')}\n\t\t\t\t
}\n\t\t\t\t{fileBlob &&
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{fileBlob.filename}\n\t\t\t\t\t\n\t\t\t\t
}\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t{fileBlob && }\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default FileUploadInput","import * as React from 'react'\nimport { LinkInputBlock } from '../../../../types'\n\ninterface IProps {\n\tblock: LinkInputBlock\n}\n\nconst LinkInput = (props: IProps) => {\n\tconst { block } = props\n\n\tconst validateUrl = (linkValue: string) => {\n\t\tlet url;\n\n\t\ttry {\n\t\t\turl = new URL(linkValue);\n\t\t} catch (_) {\n\t\t}\n\n\t\treturn url.protocol === \"http:\" || url.protocol === \"https:\";\n\t}\n\n\tconst onBlur = (e) => {\n\t\tconst linkValue = e.target.value\n\n\t\tif (validateUrl(linkValue)) {\n\t\t\t// Valid\n\t\t} else {\n\t\t\t// Add errors here\n\t\t}\n\t}\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default LinkInput ","import * as React from 'react'\nimport { LongTextInputBlock } from '../../../../types'\nimport { useTranslation } from 'react-i18next'\n\ninterface IProps {\n\tblock: LongTextInputBlock\n}\n\nconst LongTextInput = (props: IProps) => {\n\tconst { block } = props\n\tconst { t } = useTranslation()\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default LongTextInput ","import * as React from 'react'\nimport { NumberInputBlock } from '../../../../types'\n\ninterface IProps {\n\tblock: NumberInputBlock\n}\n\nconst NumberInput = (props: IProps) => {\n\tconst { block } = props\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default NumberInput ","import * as React from 'react'\nimport styled from 'styled-components'\nimport { Style } from '../../../../styles'\nimport { SliderInputBlock } from '../../../../types'\n\nconst SliderContainer = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n`\n\nconst SliderInputContainer = styled.div`\n\twidth: 100%;\n\n\tinput {\n\t\theight: 8px !important;\n\t\tpadding: 0px !important;\n\t}\n`\n\n\nconst SliderValue = styled.div`\n\tfont-weight: bold;\n\tmargin-left: ${Style.spacing.x1};\n\tmin-width: 50px;\n`\n\ninterface IProps {\n\tblock: SliderInputBlock\n}\n\nconst SliderInput = (props: IProps) => {\n\tconst { block } = props\n\n\tconst [value, setValue] = React.useState(0)\n\n\tconst onChange = (e) => {\n\t\tconst newValue = e.currentTarget.value\n\n\t\tsetValue(newValue)\n\t}\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t{value}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default SliderInput","import * as React from 'react'\nimport { PhonenumberInputBlock, TextInputBlock } from '../../../../types'\n\ninterface IProps {\n\tblock: TextInputBlock | PhonenumberInputBlock\n\tplaceholder?: string\n}\n\nconst TextInput = (props: IProps) => {\n\tconst { block, placeholder } = props\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default TextInput","import * as React from 'react'\nimport FroalaEditorView from 'react-froala-wysiwyg/FroalaEditorView'\nimport mustache from 'mustache'\nimport styled from 'styled-components'\nimport { IntroBlockTitle } from '../InputBlocks/IntroBlock'\nimport { Style } from '../../../styles'\nimport { ContentBlockVariables, IntroBlock as IntroBlockType } from '../../../types'\n\nconst Container = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n\n\t@media screen and (max-width: ${Style.breakpoints.CONTENTABLE_MOBILE}) {\n\t\tflex-direction: column;\n\t}\n`\n\nconst IntroBlockContainer = styled.div`\n\tflex: 1;\n\tborder: 1px solid ${Style.color.border};\n\tborder-radius: 5px;\n\tpadding: ${Style.spacing.x2};\n\n\t&:last-child {\n\t\tmargin-left: ${Style.spacing.x2};\n\n\t\t@media screen and (max-width: ${Style.breakpoints.CONTENTABLE_MOBILE}) {\n\t\t\tmargin-top: ${Style.spacing.x2};\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n`\n\ntype IProps = {\n\tblock: IntroBlockType\n\tvariables: ContentBlockVariables\n}\n\nconst IntroBlock = (props: IProps) => {\n\tconst { block, variables } = props\n\tconst [toRenderError, setToRenderError] = React.useState(null)\n\tconst [fromRenderError, setFromRenderError] = React.useState(null)\n\n\tlet toContent = block.to\n\tlet fromContent = block.from\n\ttry {\n\t\tif (!toRenderError) toContent = mustache.render(block.to, variables)\n\t} catch (error) {\n\t\tsetToRenderError(error.message)\n\t\tconsole.log(error.message)\n\t}\n\n\ttry {\n\t\tif (!fromRenderError) fromContent = mustache.render(block.from, variables)\n\t} catch (error) {\n\t\tsetFromRenderError(error.message)\n\t\tconsole.log(error.message)\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{variables && variables.contact && variables.contact.name}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{variables && variables.workspace && variables.workspace.business_name}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default IntroBlock","import * as React from 'react'\nimport FroalaEditorView from 'react-froala-wysiwyg/FroalaEditorView'\nimport { useTranslation } from 'react-i18next'\nimport styled, { css } from 'styled-components'\nimport ContentBlockHelper from '../../../helpers/ContentBlockHelper'\nimport { Style } from '../../../styles'\nimport { ItemBlock, ItemsBlock as ItemsBlockType, ItemsSelectionRequirementType, ItemsView, NumberFormat } from '../../../types'\nimport NumberFormatter from '../../../utilities/NumberFormatter'\nimport { BlockRenderMode } from '../BlocksRenderer'\nimport SelectionButton from '../SelectionButton'\n\nconst Container = styled.div`\n\tbackground: white;\n\tbreak-inside: avoid;\n`\n\nconst Title = styled.div`\n\tfont-weight: 700;\n\tfont-size: 18.75px;\n\tmargin-bottom: ${Style.spacing.x1};\n`\n\nconst ContentContainer = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tborder: 1px solid ${Style.color.border};\n\tborder-radius: 5px;\n\n\t&::-webkit-scrollbar {\n background: white;\n height: 8px;\n width: 8px;\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: #c1c1c1;\n border-radius: 4px;\n\n &:hover {\n background: #7d7d7d;\n }\n }\n`\n\nconst TableContainer = styled.div`\n\toverflow: hidden;\n\tborder-radius: 8px;\n\n\t@media screen and (max-width: ${Style.breakpoints.CONTENTABLE_MOBILE}) {\n\t\toverflow-y: auto;\n\t\toverflow-x: visible;\n\t}\n`\n\nconst Table = styled.table`\n\twidth: 100%;\n\tborder-collapse: collapse;\n\n\tthead {\n\t\ttr {\n\t\t\tborder-bottom: 1px solid ${Style.color.border};\n\t\t}\n\n\t\tth {\n\t\t\tposition: sticky;\n\t\t\ttop: 0;\n\t\t\tbackground: #f7f7fa;\n\t\t\tz-index: 1;\n\t\t}\n\t}\n\n\ttbody {\n\t\ttr {\n\t\t\t&:not(:last-child) {\n\t\t\t\tborder-bottom: 1px solid ${Style.color.border};\n\t\t\t}\n\t\t}\n\t}\n\n\tth {\n\t\tfont-size: 14px;\n\t\tpadding: ${Style.spacing.x1};\n\t\tfont-weight: normal;\n\t\ttext-align: right;\n\t}\n\n\ttd {\n\t\ttext-align: right;\n\t\tpadding: ${Style.spacing.x1};\n\t\tvertical-align: top;\n\t\twhite-space: nowrap;\n\n\t\t&.bold {\n\t\t\tfont-weight: 700;\n\t\t}\n\t}\n`\n\nconst ItemContentWrapper = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: flex-start;\n`\n\nconst ItemCover = styled.div`\n\twidth: 50px;\n\theight: 50px;\n\tmin-width: 50px;\n\tmin-height: 50px;\n\tborder-radius: 5px;\n\tbackground-size: cover;\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n\tmargin-right: ${Style.spacing.x1_5};\n`\nconst ItemContent = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\ttext-align: left;\n\twidth: 100%;\n`\nconst ItemTitle = styled.div`\n\tfont-weight: 700;\n\tfont-size: 16px;\n\twhite-space: normal;\n`\nconst ItemDescription = styled.div`\n\twhite-space: normal;\n`\n\nconst Cards = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n\tmargin-left: -${Style.spacing.x1};\n\tmargin-right: -${Style.spacing.x1};\n\n\t@media screen and (max-width: ${Style.breakpoints.CONTENTABLE_MOBILE}) {\n\t\tflex-direction: column;\n\t\tflex-wrap: none;\n\t}\n`\n\nconst Card = styled.div<{ itemsCount: number }>`\n\tdisplay: flex;\n\tflex-direction: column;\n\tborder: 1px solid ${Style.color.border};\n\tborder-radius: 5px;\n\tmargin: ${Style.spacing.x1};\n\tflex: 1 1 calc((100% - 48px) / ${props => Math.min(props.itemsCount, 3)});\n\tmax-width: calc((100% - 48px) / ${props => Math.min(props.itemsCount, 3)});\n\n\t${props => props.itemsCount === 1 && css`\n\t\twidth: 100%;\n\t\tmax-width: calc(100% / 3);\n\t`}\n\n\t@media screen and (max-width: ${Style.breakpoints.CONTENTABLE_MOBILE}) {\n\t\tmax-width: initial;\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n`\n\nconst CardInfo = styled.div`\n\tpadding: ${Style.spacing.x1};\n`\n\nconst CardCover = styled.div`\n\twidth: 100%;\n\tmin-height: 100px;\n\tborder-radius: 5px;\n\tbackground-size: cover;\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n`\n\nconst CardSummary = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1;\n\tjustify-content: flex-end;\n\tpadding: ${Style.spacing.x1};\n\tborder-top: 2px dotted ${Style.color.border};\n`\n\nconst CardSummaryItem = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: space-between;\n\tpadding: ${Style.spacing.x0_5} 0;\n`\n\nconst CardSummaryItemLabel = styled.div`\n\ttext-align: right;\n\tmargin-right: ${Style.spacing.x1};\n`\n\nconst CardSummaryItemValue = styled.div`\n\ttext-align: right;\n\n\t&.bold {\n\t\tfont-weight: bold;\n\t}\n`\n\ntype IProps = {\n\trenderMode?: BlockRenderMode\n\tcurrency: string\n\tnumberFormat: NumberFormat\n\tblock: ItemsBlockType\n\tonItemSelectionChange?: (itemsBlock: ItemsBlockType, itemIndex: number) => void\n}\n\nconst ItemsBlock = (props: IProps) => {\n\tconst { renderMode, currency, numberFormat, block } = props\n\tconst { t } = useTranslation()\n\tconst items = block.items\n\tconst blockSummary = ContentBlockHelper.getItemsBlockSummary(block)\n\tconst selectionEnabled = block.contact_selection_enabled\n\n\tconst onItemSelectionChange = (item: ItemBlock, index: number) => {\n\t\tif (props.onItemSelectionChange) {\n\t\t\tprops.onItemSelectionChange(block, index)\n\t\t}\n\t}\n\n\tconst renderSelectionButton = (item: ItemBlock, index: number) => {\n\t\tconst { selected } = item\n\n\t\treturn (\n\t\t\t onItemSelectionChange(item, index)}\n\t\t\t/>\n\t\t)\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{block.title}\n\t\t\t\n\n\t\t\t{block.view === ItemsView.TABLE && \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\t\t\t\tconst { total, tax } = ContentBlockHelper.getItemSummary(item)\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\n\t\t\t\t\t
{t('ItemsBlocks::Description')}{t('ItemsBlocks::Quantity')}{t('ItemsBlocks::Amount')}{t('ItemsBlocks::VAT')}{t('ItemsBlocks::Total')}
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{item.cover && }\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{item.title}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{item.quantity}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{NumberFormatter.formatCurrency(currency, numberFormat, item.amount)}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{NumberFormatter.formatCurrency(currency, numberFormat, tax || 0)}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{NumberFormatter.formatCurrency(currency, numberFormat, total)}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{selectionEnabled && renderSelectionButton(item, index)}\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t
}\n\t\t\t{block.view === ItemsView.CARD && \n\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\tconst { total, tax } = ContentBlockHelper.getItemSummary(item)\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{item.cover && }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{item.title}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{t('ItemsBlocks::Quantity:')}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{item.quantity}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{t('ItemsBlocks::Amount:')}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{NumberFormatter.formatCurrency(currency, numberFormat, item.amount)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{tax > 0 && \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{t('ItemsBlocks::Tax:')}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{NumberFormatter.formatCurrency(currency, numberFormat, tax)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{t('ItemsBlocks::Total:')}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{NumberFormatter.formatCurrency(currency, numberFormat, total)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{selectionEnabled && <>\n\t\t\t\t\t\t\t\t\t{renderSelectionButton(item, index)}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t}\n\t\t
\n\t)\n}\n\nexport default ItemsBlock","import * as React from 'react'\nimport styled from 'styled-components'\nimport { PDFBlock as PDFBlockType } from '../../../types'\nimport DocumentPreview from '../../LedgerItem/DocumentPreview'\nimport DocumentWrapper from '../../LedgerItem/DocumentWrapper'\n\nconst Container = styled.div`\n\twidth: 100%;\n\tbreak-inside: avoid;\n`\n\n\ntype IProps = {\n\tblock: PDFBlockType\n}\n\nconst PDFBlock = (props: IProps) => {\n\tconst { block } = props\n\n\tif (block?.image_urls?.length === 0) return null\n\n\treturn (\n\t\t\n\t\t\t{block.image_urls.map((url, index) => ())}\n\t\t\n\t)\n}\n\nexport default PDFBlock","import * as React from 'react'\nimport styled from 'styled-components'\nimport { Style } from '../../../styles'\nimport { QuestionAndAnswerBlock as QuestionAndAnswerBlockType, QuestionAndAnswerType } from '../../../types'\nimport { EditBlockProps } from '../Block'\nimport Icon from '../../Icons/Icon'\nimport PowerSelect from '../../Form/PowerSelect'\nimport { useTranslation } from 'react-i18next'\nimport { useDebouncedCallback } from 'use-debounce'\n\nconst Container = styled.div`\n\tbackground: white;\n\tborder-bottom-left-radius: ${Style.variables.baseBorderRadius};\n\tborder-bottom-right-radius: ${Style.variables.baseBorderRadius};\n`\n\nconst Wrapper = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n`\n\nconst QuestionIconContainer = styled.div`\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\twidth: 33px;\n\theight: 33px;\n\tmin-width: 33px;\n\tmin-height: 33px;\n\tborder-radius: 50%;\n\tbackground: rgb(0, 140, 172);\n\tcolor: white;\n\n\ti {\n\t\tfont-size: 20px;\n\t}\n\n\t@media screen and (max-width: ${Style.breakpoints.SMALL}) {\n\t\tdisplay: none;\n\t}\n`\n\nconst QuestionContent = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n\tmargin-left: ${Style.spacing.x1_5};\n\n\t@media screen and (max-width: ${Style.breakpoints.SMALL}) {\n\t\tmargin-left: 0;\n\t}\n`\n\nconst QuestionTitle = styled.div`\n\tfont-size: 16px;\n\tfont-weight: bold;\n\twidth: 100%;\n\tmargin-bottom: ${Style.spacing.x1_5};\n`\n\ntype IProps = {} & EditBlockProps\n\nconst QuestionAndAnswerBlock = (props: IProps) => {\n\tconst { t } = useTranslation()\n\tconst { block } = props\n\tconst [answer, setAnswer] = React.useState(block.answer)\n\tconst options = block?.options?.map(option => ({ label: option, value: option }))\n\tconst selectedOptions = options?.filter(option => Array.isArray(answer) ? answer.includes(option.value) : option.value === answer)\n\n\tReact.useEffect(() => {\n\t\tif (block.answer !== answer) {\n\t\t\tsetAnswer(block.answer)\n\t\t}\n\t}, [block.answer])\n\n\tconst debouncedAnswerChange = useDebouncedCallback(\n\t\t(answer) => onAnswerChange(answer), 500\n\t);\n\n\tconst onAnswerChange = (text) => {\n\t\tsetAnswer(text)\n\t\tprops.onChange({ ...block, answer: text })\n\t}\n\n\tconst onAnswerOptionChange = (options) => {\n\t\tif (block.allow_multiple_selection) {\n\t\t\tconst newValues: string[] = options ? options.map(o => o.value) : null\n\n\t\t\tsetAnswer(newValues)\n\t\t\tprops.onChange({ ...block, answer: newValues })\n\t\t} else {\n\t\t\tconst newValue = options ? options.value : null\n\n\t\t\tsetAnswer(newValue)\n\t\t\tprops.onChange({ ...block, answer: newValue })\n\t\t}\n\t}\n\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{block.title}\n\t\t\t\t\t\n\t\t\t\t\t{block.answer_type === QuestionAndAnswerType.OPEN && debouncedAnswerChange(e.currentTarget.value)}\n\t\t\t\t\t\tplaceholder={t('QuestionAndAnswerBlock::Type your answer here...')}\n\t\t\t\t\t/>}\n\t\t\t\t\t{/* @ts-ignore */}\n\t\t\t\t\t{block.answer_type === QuestionAndAnswerType.LIST && }\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default QuestionAndAnswerBlock","import * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport ContentBlockHelper from '../../../helpers/ContentBlockHelper'\nimport { Style } from '../../../styles'\nimport { Signature as SignatureType, SignBlock as SignBlockType } from '../../../types'\nimport { BlockRenderMode } from '../BlocksRenderer'\nimport Icon from '../../Icons/Icon'\nimport SignatureCanvas from '../../Signature/SignatureCanvas'\nimport SignatureContainer from '../../Signature/SignatureContainer'\nimport Signature from '../../Signature/Signature'\n\nconst Container = styled.div`\n\tbreak-inside: avoid;\n`\n\nconst Title = styled.h2`\n\tfont-size: 22px;\n\tfont-weight: 700;\n\tmargin-bottom: ${Style.spacing.x1};\n`\n\nconst Description = styled.p`\n\tmargin-bottom: ${Style.spacing.x1_5};\n`\n\nexport const SignAction = styled.div`\n\tdisplay: inline-flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\talign-items: center;\n\ttext-align: center;\n\tpadding: 6px ${Style.spacing.x2};\n\tbackground-color: ${Style.color.brandSuccess};\n\tcolor: white;\n\tfont-weight: bold;\n\tborder-radius: 5px;\n\tz-index: 1;\n\n\n\tsvg {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tmargin-right: ${Style.spacing.x1};\n\t}\n\n\t${props => props.onClick && css`\n\t\tcursor: pointer;\n\t`}\n`\n\nconst Signatures = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n\n\t${SignatureContainer} {\n\t\tmargin: 0 8px;\n\n\t\t&:first-child {\n\t\t\tmargin-left: 0;\n\t\t}\n\n\t\t&:last-child {\n\t\t\tmargin-right: 0;\n\t\t}\n\t}\n`\n\ntype IProps = {\n\tblock: SignBlockType\n\tsignKey?: string\n\tsignatures: SignatureType[]\n\trenderMode?: BlockRenderMode\n\tonSignClick?: () => void\n}\n\nconst SignBlock = (props: IProps) => {\n\tconst { renderMode, block, signKey, signatures, onSignClick } = props\n\tconst signedSignatures = ContentBlockHelper.getSignedSignatures(signatures)\n\tconst unsignedUserSignature = ContentBlockHelper.getUnsignedUserSignature(signatures, signKey)\n\tconst signableUnsignedSignature = unsignedUserSignature && onSignClick\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{block.title}\n\t\t\t\n\n\t\t\t\n\t\t\t\t{block.description}\n\t\t\t\n\n\t\t\t\n\t\t\t\t{signedSignatures.map(signature => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t})}\n\n\t\t\t\t{((renderMode === BlockRenderMode.EDITOR || signableUnsignedSignature) && signedSignatures.length !== signatures.length) && \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{block.action}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\t{(renderMode === BlockRenderMode.RENDER && signedSignatures.length !== signatures.length) && \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{block.action}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\n\t\t\n\t)\n}\n\nexport default SignBlock","import * as React from 'react'\nimport styled from 'styled-components'\nimport { Style } from '../../../styles'\nimport { SubmitBlock as SubmitBlockType } from '../../../types'\n\nconst SubmitButton = styled.input`\n\tdisplay: block;\n\tjustify-content: center;\n\talign-items: center;\n\twidth: fit-content !important;\n\tcolor: white !important;\n\tpadding: ${Style.spacing.x1};\n\tbackground-color: ${Style.color.brandSuccess} !important;\n\tborder: none !important;\n\tfont-weight: bold !important;\n\ttext-align: center !important;\n\twidth: 100% !important;\n\tborder-radius: 5px;\n\tcursor: pointer;\n`\n\nconst Container = styled.div``\n\ninterface IProps {\n\tblock: SubmitBlockType\n}\n\nconst SubmitBlock = (props: IProps) => {\n\tconst { block } = props\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default SubmitBlock","import * as React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport styled from 'styled-components'\nimport ContentBlockHelper from '../../../helpers/ContentBlockHelper'\nimport { Style } from '../../../styles'\nimport { ItemsBlock, SummaryBlock as SummaryBlockType } from '../../../types'\nimport NumberFormatter from '../../../utilities/NumberFormatter'\nimport { OverviewItem, OverviewItemLabel, OverviewItemValue } from '../InputBlocks/SummaryBlock'\n\nconst Container = styled.div`\n\tbackground: white;\n\tbreak-inside: avoid;\n`\n\nconst OverviewTitle = styled.div`\n\tfont-weight: 700;\n\tfont-size: 18.75px;\n\tmargin-bottom: ${Style.spacing.x1};\n`\n\nexport const Overview = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tborder: 1px solid ${Style.color.border};\n\tborder-radius: 5px;\n`\n\ntype IProps = {\n\tcurrency: string\n\tnumberFormat: string\n\titems: ItemsBlock[]\n\tblock: SummaryBlockType\n}\n\nconst SummaryBlock = (props: IProps) => {\n\tconst { block, items, currency, numberFormat } = props\n\tconst { t } = useTranslation()\n\n\tconst summary = ContentBlockHelper.getSummary(items)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{block.title}\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{t('SummaryBlock::Subtotal')}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{NumberFormatter.formatCurrency(currency, numberFormat, summary.subtotal)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{t('SummaryBlock::Tax')}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{NumberFormatter.formatCurrency(currency, numberFormat, summary.tax)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{t('SummaryBlock::Total')}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{NumberFormatter.formatCurrency(currency, numberFormat, summary.total)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default SummaryBlock","import * as React from 'react'\nimport FroalaEditorView from 'react-froala-wysiwyg/FroalaEditorView'\nimport mustache from 'mustache'\nimport styled from 'styled-components'\nimport { ContentBlockVariables, TextBlock as TextBlockType } from '../../../types'\n\ntype IProps = {\n\tblock: TextBlockType\n\tvariables: ContentBlockVariables\n}\n\nconst Container = styled.div``\n\nconst TextBlock = (props: IProps) => {\n\tconst { block, variables } = props\n\tconst [renderError, setRenderError] = React.useState(null)\n\n\tif (block.content === '') return null\n\n\tlet content = block.content\n\n\ttry {\n\t\tif (!renderError) {\n\t\t\tcontent = mustache.render(block.content, variables)\n\t\t}\n\t} catch (error) {\n\t\tsetRenderError(error.message)\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default TextBlock","import * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { Style } from '../../styles'\nimport Icon, { IconTypes } from '../Icons/Icon'\n\nconst Backdrop = styled.div`\n\tbackground-color: #c4cdd5;\n\tborder: 1px solid transparent;\n\tbox-shadow: 0 0 0 1px transparent, 0 1px 0 0 rgba(22,29,37,.05);\n\tborder-radius: 3px;\n\ttransition-property: box-shadow,background-color;\n\ttransition-duration: .2s;\n\ttransition-timing-function: cubic-bezier(.64,0,.35,1);\n\tposition: absolute;\n\tz-index: 1;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\n\t&::after {\n\t\tcontent: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: block;\n background: linear-gradient(180deg, #fff, #f9fafb);\n border-radius: 2px;\n\t}\n`\n\nconst Container = styled.div<{ selected: boolean }>`\n\tposition: relative;\n\tcursor: pointer;\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\talign-items: center;\n\tpadding: 5px 12px;\n\n\t${props => props.selected && css`\n\t\tcolor: white;\n\n\t\tsvg {\n\t\t\tfill: white;\n\t\t}\n\t\t\n\t\t${Backdrop} {\n\t\t\tbackground: ${Style.color.brandSuccess};\n\n\t\t\t&::after {\n\t\t\t\tbackground: ${Style.color.brandSuccess};\n\t\t\t}\n\t\t}\n\t`}\n`\n\nconst Wrapper = styled.div`\n\tfont-size: 14px;\n\tfont-weight: 400;\n\tline-height: 24px;\n\ttext-transform: none;\n\tletter-spacing: normal;\n\ttext-rendering: auto;\n\tz-index: 3;\n\twidth: 100%;\n\theight: 100%;\n\tmargin: 0;\n\tappearance: none;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n`\n\nconst IconContainer = styled.div<{ addMarginRight?: boolean }>`\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\n\t${props => props.addMarginRight && css`\n\t\tmargin-right: 8px;\n\t`}\n\n\tsvg {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t}\n`\n\ninterface IProps {\n\tselected: boolean\n\ticon?: IconTypes\n\ttext?: string\n\tonClick?: (e: React.MouseEvent) => void\n}\n\nconst SelectionButton = (props: IProps) => {\n\tconst { selected, icon, text, onClick } = props\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{icon && \n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t{text && text.length > 0 && text}\n\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default SelectionButton","// Require Editor JS files.\nimport 'froala-editor/js/froala_editor.pkgd.min.js';\nimport 'froala-editor/js/plugins/align.min.js'\nimport 'froala-editor/js/plugins/font_family.min.js'\nimport 'froala-editor/js/plugins/font_size.min.js'\nimport 'froala-editor/js/plugins/colors.min.js'\nimport 'froala-editor/js/plugins/fullscreen.min.js'\nimport 'froala-editor/js/plugins/image.min.js'\nimport 'froala-editor/js/plugins/draggable.min.js'\nimport 'froala-editor/js/plugins/link.min.js'\nimport 'froala-editor/js/plugins/lists.min.js'\nimport 'froala-editor/js/plugins/line_breaker.min.js'\nimport 'froala-editor/js/plugins/paragraph_format.min.js'\nimport 'froala-editor/js/plugins/quick_insert.min.js'\nimport 'froala-editor/js/plugins/quote.min.js'\nimport 'froala-editor/js/plugins/table.min.js'\nimport 'froala-editor/js/plugins/url.min.js'\nimport 'froala-editor/js/plugins/word_paste.min.js'\n\n// Import froala css\nimport './css'\n\n// Custom plugin\nimport './plugin/variables'\n\n// Require Font Awesome.\nimport 'font-awesome/css/font-awesome.css';\n\nimport Editor from 'react-froala-wysiwyg';\nimport store from '../../store';\nimport { FROALA_KEY } from '../../Constants';\n\nexport const DEFAULT_EDITOR_CONFIG = {\n\tkey: FROALA_KEY,\n\teditorClass: 'text-editor',\n\tzIndex: 'initial',\n\tattribution: false,\n\tquickInsertEnabled: false,\n\ttoolbarButtons: {\n\t\tmoreText: {\n\t\t\t// List of buttons used in the group.\n\t\t\tbuttons: ['variable', 'quickInsert', 'bold', 'italic', 'underline', 'strikeThrough', 'paragraphFormat', 'fontFamily', 'fontSize', 'clearFormatting', 'color', 'align', 'formatOL', 'formatUL', 'outdent', 'indent', 'quote', 'insertLink', 'insertImage', 'insertTable', 'insertHR'],\n\t\t\tbuttonsVisible: 21,\n\t\t\t// Alignment of the group in the toolbar.\n\t\t\talign: 'left',\n\t\t},\n\t\t'moreActions': {\n\t\t\tbuttons: ['undo', 'redo', 'fullscreen'],\n\t\t\talign: 'right'\n\t\t}\n\t},\n\t// Variable plugin\n\tvariableOptions: [],\n\n\t// Set request headers (authentication)\n\trequestHeaders: {\n\t\t'Authorization': store.getState().authentication.accessToken\n\t},\n\n\t// Set the image upload parameter.\n\timageUploadParam: 'file',\n\n\t// Set the image upload URL.\n\timageUploadURL: '/api/uploads',\n\n\t// Additional upload params.\n\timageUploadParams: {},\n\n\t// Set request type.\n\timageUploadMethod: 'POST',\n\n\t// Set max image size to 5MB.\n\timageMaxSize: 5 * 1024 * 1024,\n\n\t// Allow to upload PNG and JPG.\n\timageAllowedTypes: ['jpeg', 'jpg', 'png', 'svg'],\n\n\tevents: {\n\t\t'image.beforeUpload': (images) => {\n\t\t\t// Return false if you want to stop the image upload.\n\t\t},\n\t\t'image.uploaded': (response) => {\n\t\t\t// Image was uploaded to the server.\n\t\t},\n\t\t'image.inserted': ($img, response) => {\n\t\t\t// Image was inserted in the editor.\n\t\t},\n\t\t'image.replaced': ($img, response) => {\n\t\t\t// Image was replaced in the editor.\n\t\t},\n\t\t'image.error': (error, response) => {\n\t\t\t// Bad link.\n\t\t\tif (error.code == 1) { }\n\n\t\t\t// No link in upload response.\n\t\t\telse if (error.code == 2) { }\n\n\t\t\t// Error during image upload.\n\t\t\telse if (error.code == 3) { }\n\n\t\t\t// Parsing response failed.\n\t\t\telse if (error.code == 4) { }\n\n\t\t\t// Image too text-large.\n\t\t\telse if (error.code == 5) { }\n\n\t\t\t// Invalid image type.\n\t\t\telse if (error.code == 6) { }\n\n\t\t\t// Image can be uploaded only to same domain in IE 8 and IE 9.\n\t\t\telse if (error.code == 7) { }\n\n\t\t\t// Response contains the original server response to the request if available.\n\t\t}\n\t}\n}\n\nexport const NOTES_EDITOR_CONFIG = {\n\t...DEFAULT_EDITOR_CONFIG,\n\ttoolbarButtons: ['paragraphFormat', 'bold', 'italic', 'clearFormatting', 'formatOL', 'formatUL', 'insertLink', 'insertImage', 'insertTable'],\n}\n\nexport const EMAIL_EDITOR_CONFIG = {\n\t...DEFAULT_EDITOR_CONFIG,\n\ttoolbarButtons: ['variable', 'paragraphFormat', 'bold', 'italic', 'clearFormatting', 'formatOL', 'formatUL', 'insertLink'],\n}\n\nexport const MINIMAL_EDITOR_CONFIG = {\n\t...DEFAULT_EDITOR_CONFIG,\n\ttoolbarButtons: ['bold', 'italic', 'underline', 'strikeThrough', 'formatOL', 'formatUL', 'insertLink', 'insertTable', 'insertHR', 'variable'],\n}\n\nexport const VARIABLE_EDITOR_CONFIG = {\n\t...DEFAULT_EDITOR_CONFIG,\n\ttoolbarButtons: ['variable'],\n}\n\nexport const EMAIL_COMPOSER_EDITOR_CONFIG = {\n\t...DEFAULT_EDITOR_CONFIG,\n\teditorClass: 'email-composer',\n\ttoolbarButtons: ['bold', 'italic', 'underline', 'textColor', 'formatOL', 'formatUL', 'insertLink', 'insertImage', 'clearFormatting'],\n\ttoolbarBottom: true\n}\n\nexport const QUESTION_ANSWER_EDITOR_CONFIG = {\n\t...DEFAULT_EDITOR_CONFIG,\n\ttoolbarButtons: ['bold', 'italic', 'underline', 'insertLink', 'clearFormatting'],\n\ttoolbarBottom: true,\n}\n\nexport const BLOCK_EDITOR_CONFIG = {\n\t...DEFAULT_EDITOR_CONFIG,\n\ttoolbarInline: true,\n\ttoolbarButtons: {\n\t\tmoreText: {\n\t\t\tbuttons: ['paragraphFormat', 'bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'fontFamily', 'clearFormatting'],\n\t\t\tbuttonsVisible: 4,\n\t\t\t// Alignment of the group in the toolbar.\n\t\t\talign: 'left',\n\t\t},\n\t\tmoreParagraph: {\n\t\t\tbuttons: ['formatOL', 'formatUL', 'quote', 'alignLeft', 'alignCenter', 'alignRight', 'alignJustify', 'outdent', 'indent'],\n\t\t\talign: 'left',\n\t\t\tbuttonsVisible: 2,\n\t\t},\n\t\tmoreRich: {\n\t\t\tbuttons: ['insertLink', 'insertImage', 'insertTable'],\n\t\t\tbuttonsVisible: 2,\n\t\t\talign: 'right'\n\t\t}\n\t},\n\tparagraphFormatSelection: true,\n\tfontFamilySelection: true\n}\n\nexport const LEDGER_ITEM_EDITOR_CONFIG = {\n\t...DEFAULT_EDITOR_CONFIG,\n\teditorClass: 'text-editor ledger-item-editor',\n\ttoolbarInline: true,\n\ttoolbarButtons: {\n\t\tmoreText: {\n\t\t\tbuttons: ['bold', 'italic', 'underline', 'strikeThrough', 'formatOL', 'formatUL', 'clearFormatting'],\n\t\t\tbuttonsVisible: 10,\n\t\t\t// Alignment of the group in the toolbar.\n\t\t\talign: 'right',\n\t\t},\n\t},\n\tparagraphFormatSelection: true,\n\theightMin: 64,\n}\n\nexport const CALENDAR_EVENT_EDITOR_CONFIG = {\n\t...DEFAULT_EDITOR_CONFIG,\n\ttoolbarButtons: {\n\t\tmoreText: {\n\t\t\tbuttons: ['bold', 'italic', 'underline', 'formatOL', 'formatUL', 'insertLink', 'clearFormatting'],\n\t\t\tbuttonsVisible: 10,\n\t\t},\n\t},\n}\n\nexport default Editor","import * as React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport styled, { css } from 'styled-components'\nimport { Style } from '../../../styles'\n\nconst Container = styled.div`\n flex-direction: column;\n padding: 0 4px 0 0;\n margin: 8px 4px 8px 8px;\n max-height: 390px;\n max-width: 360px;\n\tmin-width: 360px;\n overflow: hidden;\n overflow-y: auto;\n\n &::-webkit-scrollbar {\n background: white;\n height: 8px;\n width: 8px;\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: #c1c1c1;\n border-radius: 4px;\n\n &:hover {\n background: #7d7d7d;\n }\n }\n\n\t@media screen and (max-width: ${Style.breakpoints.SMALL}) {\n\t\tmax-width: 310px;\n\t\tmin-width: 310px;\n\t}\n`\n\nconst EmptyContainer = styled.div`\n\tfont-size: 14px;\n`\n\nconst Section = styled.div``\n\nconst SectionHeader = styled.div`\n\tbackground-color: hsl(0,0%,95%);\n\tfont-weight: 700;\n\tmargin-bottom: 3px;\n\tpadding: 8px;\n\tline-height: 1;\n\tposition: sticky;\n\tz-index: 1;\n\ttop: 0;\n\tborder-radius: ${Style.variables.baseBorderRadius};\n`\n\nconst SectionItem = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tborder-radius: 5px;\n\tborder: 1px solid transparent;\n\tpadding: 8px;\n\tmargin-bottom: 3px;\n\ttransition: none;\n\tmin-height: 31px;\n\tcursor: pointer;\n\tdisplay: flex;\n\tgap: 12px;\n\n &:hover {\n\t\tbackground-color: hsl(0,0%,95%);\n\t\tborder-color: ${Style.color.border};\n\t\tborder-style: solid;\n\t}\n`\n\nconst SectionItemPart = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1;\n\toverflow: hidden;\n\n\tspan {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t}\n\n\t&:first-child {\n\t\tborder-right: 1px solid ${Style.color.border};\n\t}\n`\n\ninterface IProps {\n\tvariables: any[]\n\tonClick: (value: string) => void\n}\n\nconst VariableList = (props: IProps) => {\n\tconst { t } = useTranslation()\n\tconst { variables, onClick } = props\n\n\treturn (\n\t\t\n\t\t\t{variables.length === 0 && \n\t\t\t\t{t('VariableList::No variables found')}\n\t\t\t}\n\t\t\t{variables.length > 0 && variables.map((variable, index) => {\n\t\t\t\tconst { options } = variable\n\t\t\t\treturn (\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{variable.label}\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t{options.map((option, index) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t onClick(option.value)}>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{option.placeholder}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})}\n\t\t\t\t\t
\n\t\t\t\t)\n\t\t\t})}\n\t\t
\n\t)\n}\n\nexport default VariableList","import * as React from 'react'\nimport * as ReactDOM from 'react-dom'\nimport FroalaEditor from 'froala-editor'\nimport VariableList from '../components/VariableList';\n\nFroalaEditor.ICON_TEMPLATES = {\n\t...FroalaEditor.ICON_TEMPLATES,\n\tsvgFull: '[SVG]'\n}\n\n// Define popup template.\nFroalaEditor.POPUP_TEMPLATES[\"variablePlugin.popup\"] = '[_BUTTONS_][_CUSTOM_LAYER_]';\n\n// The custom popup is defined inside a plugin (new or existing).\nFroalaEditor.PLUGINS.variablePlugin = function (editor) {\n\t// Create custom popup.\n\tfunction initPopup() {\n\t\tvar variables = editor.opts.variableOptions || []\n\n\t\t// Load popup template.\n\t\tvar template = {};\n\n\t\t// Create popup.\n\t\tvar $popup = editor.popups.create('variablePlugin.popup', template);\n\n\t\tReactDOM.render(, $popup[0])\n\n\t\treturn $popup;\n\t}\n\n\t// Show the popup\n\tfunction showPopup() {\n\t\t// Get the popup object defined above.\n\t\tvar $popup = editor.popups.get('variablePlugin.popup');\n\n\t\t// If popup doesn't exist then create it.\n\t\t// To improve performance it is best to create the popup when it is first needed\n\t\t// and not when the editor is initialized.\n\t\tif (!$popup) $popup = initPopup();\n\n\t\t// Set the editor toolbar as the popup's container.\n\t\teditor.popups.setContainer('variablePlugin.popup', editor.$tb);\n\n\t\t// This will trigger the refresh event assigned to the popup.\n\t\t// editor.popups.refresh('variablePlugin.popup');\n\n\t\t// This custom popup is opened by pressing a button from the editor's toolbar.\n\t\t// Get the button's object in order to place the popup relative to it.\n\t\tvar $btn = editor.$tb.find('.fr-command[data-cmd=\"variable\"]');\n\n\t\t// Set the popup's position.\n\t\tvar left = $btn.offset().left + $btn.outerWidth() / 2;\n\t\tvar top = $btn.offset().top + (editor.opts.toolbarBottom ? 10 : $btn.outerHeight() - 10);\n\n\t\t// Show the custom popup.\n\t\t// The button's outerHeight is required in case the popup needs to be displayed above it.\n\t\teditor.popups.show('variablePlugin.popup', left, top, $btn.outerHeight());\n\t}\n\n\t// Hide the custom popup.\n\tfunction hidePopup() {\n\t\teditor.popups.hide('variablePlugin.popup');\n\t}\n\n\tfunction onItemSelect(variable: string) {\n\t\teditor.html.insert(variable);\n\t\teditor.undo.saveStep();\n\t\thidePopup()\n\t}\n\n\t// Methods visible outside the plugin.\n\treturn {\n\t\tshowPopup: showPopup,\n\t\thidePopup: hidePopup,\n\n\t}\n}\n\n\nFroalaEditor.DefineIcon('variableIcon', { NAME: 'star', template: 'svgFull', SVG: ' ' })\n\nFroalaEditor.RegisterCommand('variable', {\n\ttitle: 'Insert variable',\n\ticon: 'variableIcon',\n\tundo: true,\n\tfocus: true,\n\tplugin: 'variablePlugin',\n\tcallback: function () {\n\t\tthis.variablePlugin.showPopup();\n\t}\n});\n\nFroalaEditor.RegisterQuickInsertButton('variable', {\n\ticon: 'variableIcon',\n\ttitle: 'Insert variable',\n\tundo: true,\n\tfocus: true,\n\tplugin: 'variablePlugin',\n\t// Callback for the button.\n\tcallback: function () {\n\t\t// Call any editor method here.\n\t\tthis.variablePlugin.showPopup();\n\t},\n})\n","import * as React from 'react'\nimport styled from 'styled-components'\nimport { Signature as SignatureInterface, SignatureType } from '../../types'\nimport SignatureContainer from './SignatureContainer'\nimport SignatureCanvas from './SignatureCanvas'\n\ninterface IProps {\n signature: SignatureInterface\n}\n\nconst SignatureImage = styled.img`\n\twidth: 100%;\n\theight: 100%;\n`\n\nconst SignatureName = styled.div`\n\tfont-weight: bold;\n`\n\nconst SignatureTimestamp = styled.div`\n\tfont-size: 12px;\n`\n\nconst SignatureIpAddress = styled.div`\n\tfont-size: 12px;\n`\n\nconst Signature = (props: IProps) => {\n const { signature } = props\n return (\n \n \n {signature.type === SignatureType.TYPED && <>}\n {[SignatureType.DRAW, SignatureType.UPLOAD].includes(signature.type) && }\n \n\n \n {signature.full_name}\n \n\n {signature.signed_at && \n {signature.signed_at}\n }\n\n {signature.ip_address && \n {`IP ${signature.ip_address}`}\n }\n \n )\n}\n\nexport default Signature","import styled from 'styled-components'\nimport { Style } from '../../styles'\n\nconst SignatureCanvas = styled.div`\n\tposition: relative;\n\tbackground: rgba(53, 48, 150, 0.08);\n\tborder: 1px solid ${Style.color.border};\n\tborder-radius: 3px;\n\tpadding: ${Style.spacing.x1};\n\theight: 70px;\n\tmin-width: 172px;\n\twidth: fit-content;\n\tdisplay: flex;\n\tpage-break-inside: avoid;\n\tjustify-content: center;\n\talign-items: center;\n\toverflow: hidden;\n\tmargin-bottom: ${Style.spacing.x1};\n\n\t&:before {\n\t\tposition: absolute;\n right: 10px;\n bottom: 25px;\n left: 10px;\n content: \"\";\n border-top-width: 1px;\n border-top-style: dashed;\n border-top-color: inherit;\n\t}\n`\n\nexport default SignatureCanvas","import styled from 'styled-components'\n\nconst SignatureContainer = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n`\n\nexport default SignatureContainer","import Fuse from 'fuse.js'\nimport { IPositionable, ItemBlock, ItemsBlock, ItemsSelectionRequirementType, ItemsSelectionType, SearchableContentBlock, Signature } from \"../types\"\n\ninterface Summary {\n\tsubtotal: number\n\ttax: number\n\t// discount: number\n\ttotal: number\n}\n\n\n\nexport default class ContentBlockHelper {\n\tstatic POSITION_STEP_INDEX = 16384\n\n\tstatic getCreatePosition(resources: IPositionable[]): number {\n\t\tif (resources.length === 0) return this.POSITION_STEP_INDEX\n\n\t\treturn resources[0].position / 2\n\t}\n\n\tstatic getCreatePositionFromIndex(items: T[], index: number): number {\n\t\tif (items.length === 0) return this.POSITION_STEP_INDEX\n\n\t\tconst indexContentBlock = items[index]\n\t\tconst destinationContentBlock = items[index + 1]\n\n\t\tif (destinationContentBlock) { // Moved in between\n\t\t\treturn (indexContentBlock.position + destinationContentBlock.position) / 2\n\t\t} else { // Moved to last position\n\t\t\treturn indexContentBlock.position + this.POSITION_STEP_INDEX\n\t\t}\n\t}\n\n\tstatic getSignedSignatures(signatures: Signature[]): Signature[] {\n\t\tif (!signatures) return []\n\n\t\treturn signatures.filter(signature => Boolean(signature.signed_at))\n\t}\n\n\tstatic getUnsignedSignatures(signatures: Signature[]): Signature[] {\n\t\tif (!signatures) return []\n\n\t\treturn signatures.filter(signature => !Boolean(signature.signed_at))\n\t}\n\n\tstatic getUnsignedUserSignature(signatures: Signature[], signKey?: string): Signature | null {\n\t\tif (!signatures || !signKey) return null\n\n\t\treturn signatures.find(signature => signature.key === signKey && !Boolean(signature.signed_at))\n\t}\n\n\tstatic getItemSummary(item: ItemBlock): Summary {\n\t\tlet subtotal = 0\n\t\tlet tax = 0\n\n\t\tif (item.quantity && item.amount) {\n\t\t\tsubtotal = Number(item.quantity) * Number(item.amount)\n\t\t}\n\n\t\tif (item.tax_rate) tax += subtotal * Number(item.tax_rate)\n\n\t\treturn {\n\t\t\tsubtotal: subtotal,\n\t\t\ttax: tax,\n\t\t\t// discount: 0,\n\t\t\ttotal: subtotal + tax\n\t\t}\n\t}\n\n\tstatic getItemsBlockSummary(itemsBlock: ItemsBlock): Summary {\n\t\tconst selectedItems = itemsBlock.contact_selection_enabled ? itemsBlock.items.filter(item => item.selected) : itemsBlock.items\n\n\t\tconst subtotal = selectedItems.reduce((subtotal, item) => subtotal + this.getItemSummary(item).subtotal, 0)\n\t\tconst tax = selectedItems.reduce((tax, item) => tax + this.getItemSummary(item).tax, 0)\n\t\tconst total = subtotal + tax\n\n\t\treturn {\n\t\t\tsubtotal: subtotal,\n\t\t\ttax: tax,\n\t\t\t// discount: 0,\n\t\t\ttotal: total\n\t\t}\n\t}\n\n\tstatic getSummary(items: ItemsBlock[]): Summary {\n\t\treturn {\n\t\t\tsubtotal: items.reduce((subtotal, item) => subtotal + this.getItemsBlockSummary(item).subtotal, 0),\n\t\t\ttax: items.reduce((tax, item) => tax + this.getItemsBlockSummary(item).tax, 0),\n\t\t\t// discount: items.reduce((discount, item) => discount + this.getItemsBlockSummary(item).discount, 0),\n\t\t\ttotal: items.reduce((total, item) => total + this.getItemsBlockSummary(item).total, 0),\n\t\t}\n\t}\n\n\tstatic getSelectionChangeItems(itemsBlock: ItemsBlock, itemIndex: number): ItemBlock[] {\n\t\tconst item = itemsBlock.items[itemIndex]\n\t\tconst newItemBlockSelected = !item.selected\n\n\t\tif (itemsBlock.selection_type === ItemsSelectionType.SINGLE) {\n\t\t\tif (newItemBlockSelected) {\n\t\t\t\tlet newItems = itemsBlock.items.map(item => ({ ...item, selected: false }))\n\n\t\t\t\tnewItems[itemIndex] = { ...item, selected: newItemBlockSelected }\n\n\t\t\t\treturn newItems\n\t\t\t} else {\n\t\t\t\tif (itemsBlock.selection_requirement_type === ItemsSelectionRequirementType.REQUIRED) {\n\t\t\t\t\treturn [...itemsBlock.items]\n\t\t\t\t} else if (itemsBlock.selection_requirement_type === ItemsSelectionRequirementType.OPTIONAL) {\n\t\t\t\t\tlet newItems = [...itemsBlock.items]\n\n\t\t\t\t\tnewItems[itemIndex] = { ...item, selected: newItemBlockSelected }\n\n\t\t\t\t\treturn newItems\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (itemsBlock.selection_type === ItemsSelectionType.MULTI) {\n\t\t\tif (newItemBlockSelected) {\n\t\t\t\tlet newItems = [...itemsBlock.items]\n\n\t\t\t\tnewItems[itemIndex] = { ...item, selected: newItemBlockSelected }\n\n\t\t\t\treturn newItems\n\t\t\t} else {\n\t\t\t\tif (itemsBlock.selection_requirement_type === ItemsSelectionRequirementType.REQUIRED) {\n\t\t\t\t\tconst selectedItemsCount = itemsBlock.items.filter(item => item.selected).length\n\n\t\t\t\t\tif (selectedItemsCount === 1) {\n\t\t\t\t\t\treturn [...itemsBlock.items]\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet newItems = [...itemsBlock.items]\n\n\t\t\t\t\t\tnewItems[itemIndex] = { ...item, selected: newItemBlockSelected }\n\n\t\t\t\t\t\treturn newItems\n\t\t\t\t\t}\n\t\t\t\t} else if (itemsBlock.selection_requirement_type === ItemsSelectionRequirementType.OPTIONAL) {\n\t\t\t\t\tlet newItems = [...itemsBlock.items]\n\n\t\t\t\t\tnewItems[itemIndex] = { ...item, selected: newItemBlockSelected }\n\n\t\t\t\t\treturn newItems\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic getContentBlocksFromSearch(searchValue: string, searchableContentBlocks: SearchableContentBlock[]): SearchableContentBlock[] {\n\t\tconst fuse = new Fuse(searchableContentBlocks, {\n\t\t\tshouldSort: true,\n\t\t\tthreshold: 0.5,\n\t\t\tlocation: 0,\n\t\t\tdistance: 100,\n\t\t\tminMatchCharLength: 1,\n\t\t\tkeys: [\n\t\t\t\t'name',\n\t\t\t\t'notes',\n\t\t\t\t'amount',\n\t\t\t\t'contact.name',\n\t\t\t\t'project.name',\n\t\t\t\t'assignee.email',\n\t\t\t\t'assignee.first_name',\n\t\t\t\t'assignee.last_name'\n\t\t\t]\n\t\t})\n\n\t\tif (searchValue.length > 0) {\n\t\t\treturn fuse.search(searchValue).map(result => result.item)\n\t\t}\n\n\t\treturn searchableContentBlocks\n\t}\n}","import i18n from \"../translations\";\nimport { VariableOption } from \"../types\";\n\nexport default class EditorHelper {\n static isUnquotedVariable(variable: string): boolean {\n return [\"link\", \"link_preview\"].includes(variable);\n }\n\n static getLedgerItemVariableOptions(variables: {\n [key: string]: any;\n }): VariableOption[] {\n const parentKey = \"ledger_item\";\n\n return [\n {\n name: parentKey,\n label: i18n.t(`EditorVariables::${parentKey}::EntityName`),\n value: \"ledger_item\",\n options: Object.entries(variables).map((valueResult) => {\n const [valueKey, valuePlaceholder] = valueResult;\n\n // console.log(i18n.t(`EditorVariables::${parentKey}::${valueKey}`))\n\n return {\n name: valueKey,\n label: i18n.t(`EditorVariables::${parentKey}::${valueKey}`),\n value: this.isUnquotedVariable(valueKey)\n ? `{{{${valueKey}}}}`\n : `{{${valueKey}}}`,\n placeholder: valuePlaceholder,\n };\n }),\n },\n ];\n }\n\n static getVariableOptions(variables: {\n [key: string]: any;\n }): VariableOption[] {\n if (Object.keys(variables).length === 0) return [];\n\n return Object.entries(variables).map((result) => {\n const [variableKey, values] = result;\n\n let variableOptions: VariableOption[] = [];\n\n if (values) {\n variableOptions = Object.entries(values).map((valueResult) => {\n const [valueKey, valuePlaceholder] = valueResult;\n\n // console.log(i18n.t(`EditorVariables::${variableKey}::${valueKey}`))\n\n return {\n name: valueKey,\n label: i18n.t(`EditorVariables::${variableKey}::${valueKey}`),\n value: this.isUnquotedVariable(valueKey)\n ? `{{{${variableKey}.${valueKey}}}}`\n : `{{${variableKey}.${valueKey}}}`,\n placeholder: valuePlaceholder,\n };\n });\n }\n\n // console.log(i18n.t(`EditorVariables::${variableKey}::EntityName`))\n\n return {\n name: variableKey,\n label: i18n.t(`EditorVariables::${variableKey}::EntityName`),\n value: variableKey,\n options: variableOptions,\n };\n });\n }\n}\n"],"names":["props","className","children","BlockRenderMode","renderMode","blocks","variables","currency","numberFormat","signKey","signatures","onSignClick","onItemsBlockItemSelectionChange","itemBlocks","filter","block","type","ContentBlockType","component","map","onItemSelectionChange","items","onChange","onAnswerChange","key","id","Container","styled","Style","IntroBlockTitle","IntroBlockContainer","IntroBlockComponent","React","container","toEditor","fromEditor","constructor","super","this","state","editorMode","toModel","to","fromModel","from","onContainerClick","bind","onOutsideContainerClick","onToChange","debouncedToModelSubmit","onFromChange","debouncedFromModelSubmit","componentDidMount","document","addEventListener","componentWillUnmount","removeEventListener","setState","e","current","contains","target","content","getEditor","html","get","render","t","editorConfig","MINIMAL_EDITOR_CONFIG","variableOptions","EditorHelper","toContent","fromContent","mustache","error","console","log","message","ref","onClick","contact","name","model","config","onModelChange","workspace","business_name","withTranslation","OverviewTitle","Overview","OverviewItem","OverviewItemLabel","OverviewItemValue","useTranslation","title","setTitle","summary","ContentBlockHelper","value","newTitle","NumberFormatter","subtotal","tax","total","image_url","src","Title","RequiredIndicator","Description","InputContainer","required","description","length","placeholder","address","setAddress","city","setCity","country","setCountry","postal","setPostal","v","join","style","display","country_options","defaultValue","countryOption","label","date","setDate","timeFormat","initialValue","inputProps","newDate","moment","isValid","closeOnSelect","format","selectedOptions","setSelectedOptions","options","option","selectedDropdownOptions","includes","allow_multiple_selection","o","isClearable","isMulti","ButtonContainer","Button","FileContainer","uploading","setUploading","fileBlob","setFileBlob","fileUrl","setFileUrl","getRootProps","getInputProps","useDropzone","onDrop","acceptedFiles","fileRejections","event","ActiveStorageController","async","blob","url","ex","multiple","color","icon","filename","href","onBlur","linkValue","URL","_","protocol","validateUrl","min","minimum_limit","max","maximum_limit","SliderContainer","SliderInputContainer","SliderValue","setValue","newValue","currentTarget","toRenderError","setToRenderError","fromRenderError","setFromRenderError","ContentContainer","TableContainer","Table","ItemContentWrapper","ItemCover","ItemContent","ItemTitle","ItemDescription","Cards","Card","Math","itemsCount","css","CardInfo","CardCover","CardSummary","CardSummaryItem","CardSummaryItemLabel","CardSummaryItemValue","selectionEnabled","contact_selection_enabled","renderSelectionButton","item","index","selected","text","selection_requirement_type","ItemsSelectionRequirementType","view","ItemsView","textAlign","maxWidth","cover","backgroundImage","quantity","amount","image_urls","Wrapper","QuestionIconContainer","QuestionContent","QuestionTitle","answer","setAnswer","Array","isArray","debouncedAnswerChange","useDebouncedCallback","answer_type","QuestionAndAnswerType","newValues","Boolean","SignAction","Signatures","SignatureContainer","signedSignatures","signableUnsignedSignature","signature","action","SubmitButton","renderError","setRenderError","Backdrop","IconContainer","addMarginRight","DEFAULT_EDITOR_CONFIG","FROALA_KEY","editorClass","zIndex","attribution","quickInsertEnabled","toolbarButtons","moreText","buttons","buttonsVisible","align","requestHeaders","store","authentication","accessToken","imageUploadParam","imageUploadURL","imageUploadParams","imageUploadMethod","imageMaxSize","imageAllowedTypes","events","images","response","$img","code","NOTES_EDITOR_CONFIG","EMAIL_EDITOR_CONFIG","VARIABLE_EDITOR_CONFIG","EMAIL_COMPOSER_EDITOR_CONFIG","toolbarBottom","QUESTION_ANSWER_EDITOR_CONFIG","BLOCK_EDITOR_CONFIG","toolbarInline","moreParagraph","moreRich","paragraphFormatSelection","fontFamilySelection","LEDGER_ITEM_EDITOR_CONFIG","heightMin","CALENDAR_EVENT_EDITOR_CONFIG","Editor","EmptyContainer","Section","SectionHeader","SectionItem","SectionItemPart","variable","FroalaEditor","svgFull","editor","hidePopup","popups","hide","onItemSelect","insert","undo","saveStep","showPopup","$popup","opts","create","ReactDOM","initPopup","setContainer","$tb","$btn","find","left","offset","outerWidth","top","outerHeight","show","NAME","template","SVG","focus","plugin","callback","variablePlugin","SignatureImage","SignatureName","SignatureTimestamp","SignatureIpAddress","SignatureType","signature_url","full_name","signed_at","ip_address","SignatureCanvas","resources","POSITION_STEP_INDEX","position","indexContentBlock","destinationContentBlock","Number","tax_rate","itemsBlock","selectedItems","reduce","getItemSummary","getItemsBlockSummary","itemIndex","newItemBlockSelected","selection_type","ItemsSelectionType","newItems","selectedItemsCount","searchValue","searchableContentBlocks","fuse","Fuse","shouldSort","threshold","location","distance","minMatchCharLength","keys","search","result","parentKey","i18n","Object","entries","valueResult","valueKey","valuePlaceholder","isUnquotedVariable","variableKey","values"],"sourceRoot":""}