UNPKG

@flatfile/angular-sdk

Version:

Flatfile SDK for Angular

1 lines 30.1 kB
{"version":3,"file":"flatfile-angular-sdk.mjs","sources":["../../src/utils/authenticate.ts","../../src/utils/getSpace.ts","../../src/lib/sdk/space.service.ts","../../src/lib/sdk/space-frame/embeddedStyles.ts","../../src/lib/sdk/space-close-modal/spaceCloseModal.component.ts","../../src/lib/sdk/space-close-modal/spaceCloseModal.component.html","../../src/lib/sdk/space-frame/iframeSafePipe.ts","../../src/lib/sdk/space-frame/spaceFrame.component.ts","../../src/lib/sdk/space-frame/spaceFrame.component.html","../../src/lib/sdk/spinner/spinner.component.ts","../../src/lib/sdk/spinner/spinner.component.html","../../src/lib/sdk/space.component.ts","../../src/lib/sdk/space.component.html","../../src/lib/sdk/space.module.ts","../../src/public-api.ts","../../src/flatfile-angular-sdk.ts"],"sourcesContent":["import { FlatfileClient } from '@flatfile/api'\n\nconst authenticate = (\n key: string,\n apiUrl = 'https://platform.flatfile.com/api'\n) =>\n new FlatfileClient({\n token: key,\n environment: `${apiUrl}/v1`,\n })\n\nexport default authenticate\n","import { ISpace, getErrorMessage } from '@flatfile/embedded-utils'\nimport authenticate from './authenticate'\nimport { Flatfile } from '@flatfile/api'\n\nexport type GetSpaceReturn = {\n space: Flatfile.Space\n}\n\nconst getSpace = async (spaceProps: ISpace): Promise<GetSpaceReturn> => {\n const {\n space,\n apiUrl,\n spaceUrl = 'https://platform.flatfile.com/s/',\n } = spaceProps\n let spaceResponse\n\n try {\n if (!space?.id) {\n throw new Error('Missing required ID for Space')\n }\n if (!space?.accessToken) {\n throw new Error('Missing required accessToken for Space')\n }\n\n const limitedAccessApi = authenticate(space?.accessToken, apiUrl)\n try {\n spaceResponse = await limitedAccessApi.spaces.get(space?.id)\n } catch (error) {\n throw new Error(`Failed to get space: ${getErrorMessage(error)}`)\n }\n\n if (!spaceResponse.data.accessToken) {\n throw new Error('Failed to retrieve accessToken')\n }\n\n if (!spaceResponse.data.guestLink) {\n const guestLink = `${spaceUrl}space/${space?.id}?token=${spaceResponse.data.accessToken}`\n spaceResponse.data.guestLink = guestLink\n }\n\n return { space: spaceResponse.data }\n } catch (error) {\n const message = getErrorMessage(error)\n console.error(`Failed to initialize space: ${message}`)\n throw error\n }\n}\n\nexport default getSpace\n","import { Injectable, signal, computed } from '@angular/core'\nimport {\n type ISpace,\n type ReusedSpaceWithAccessToken,\n type SimpleOnboarding,\n createWorkbookFromSheet,\n initNewSpace,\n InitialResourceData,\n} from '@flatfile/embedded-utils'\nimport getSpace, { GetSpaceReturn } from '../../utils/getSpace'\nimport { Flatfile } from '@flatfile/api'\n\ntype ReusedOrOnboarding = ReusedSpaceWithAccessToken | SimpleOnboarding\n\nconst DEFAULT_API_URL = 'https://platform.flatfile.com/api'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SpaceService {\n private readonly _loading = signal(false)\n readonly loading = computed(() => this._loading())\n\n private readonly _spaceInitialized = signal<object | undefined>(undefined)\n readonly spaceInitialized = computed(() => this._spaceInitialized())\n\n private currentSpaceProps?: ISpace\n localSpaceData: Record<string, any> | undefined\n\n spaceResponse?: Partial<InitialResourceData> & { space: Flatfile.Space }\n\n config?: {\n resetOnClose: boolean\n }\n\n private async getOrCreateSpace(\n spaceProps: ReusedOrOnboarding\n ): Promise<InitialResourceData | GetSpaceReturn> {\n const { publishableKey } = spaceProps\n if (!publishableKey) {\n return getSpace(spaceProps)\n }\n\n const {\n name,\n namespace,\n languageOverride,\n translationsPath,\n workbook,\n document,\n themeConfig,\n sidebarConfig,\n userInfo,\n apiUrl,\n sheet,\n onSubmit,\n } = spaceProps\n\n let createdWorkbook = workbook\n const isAutoConfig = !createdWorkbook && !sheet\n\n if (!createdWorkbook && sheet) {\n createdWorkbook = createWorkbookFromSheet(sheet, !!onSubmit)\n }\n\n return initNewSpace({\n name,\n namespace,\n languageOverride,\n translationsPath,\n publishableKey,\n workbook: createdWorkbook,\n document,\n themeConfig,\n sidebarConfig,\n userInfo,\n isAutoConfig,\n apiUrl: apiUrl || DEFAULT_API_URL,\n })\n }\n\n async initSpace(spaceProps: ISpace): Promise<any> {\n if (!spaceProps) {\n console.warn('spaceProps is required')\n return\n }\n\n if (this.spaceInitialized() && !this.config?.resetOnClose) {\n console.warn('Space is already initialized')\n return\n }\n this._loading.set(true)\n\n spaceProps.apiUrl ||= DEFAULT_API_URL\n ;(window as any).CROSSENV_FLATFILE_API_URL = spaceProps.apiUrl\n\n this.currentSpaceProps = spaceProps\n\n try {\n this.spaceResponse = await this.getOrCreateSpace(spaceProps)\n const { space } = this.spaceResponse\n\n if (!space) {\n throw new Error('Missing space from response')\n }\n\n const { id: spaceId, accessToken, guestLink } = space\n\n if (!spaceId || typeof spaceId !== 'string') {\n throw new Error('Missing spaceId from space response')\n }\n\n if (!guestLink || typeof guestLink !== 'string') {\n throw new Error('Missing guest link from space response')\n }\n\n if (!accessToken || typeof accessToken !== 'string') {\n throw new Error('Missing access token from space response')\n }\n\n const formattedSpaceProps = {\n ...spaceProps,\n spaceUrl: guestLink,\n localAccessToken: accessToken,\n apiUrl: spaceProps.apiUrl,\n workbook: spaceProps.workbook || this.spaceResponse.workbooks?.[0],\n }\n this._spaceInitialized.set(formattedSpaceProps)\n this._loading.set(false)\n return formattedSpaceProps\n } catch (error) {\n console.error('Failed to initialize space:', error)\n throw error\n }\n }\n\n OpenEmbed = this.startFlatfile\n async startFlatfile(spaceProps: ISpace): Promise<void> {\n this.currentSpaceProps = spaceProps\n return this.initSpace(this.currentSpaceProps)\n }\n\n closeEmbed(): void {\n this._loading.set(false)\n this._spaceInitialized.set(undefined)\n }\n}\n","export const getIframeStyles = (styles: any) =>\n styles ?? {\n width: '100%',\n height: '750px',\n borderWidth: 0,\n borderRadius: '20px',\n background: '#fff',\n padding: '16px',\n }\n\nexport const getContainerStyles = (isModal: boolean) => {\n if (isModal) {\n return {\n width: 'calc(100% - 100px)',\n height: 'calc(100vh - 40px)',\n position: 'fixed',\n top: 0,\n left: 0,\n zIndex: 1000,\n backgroundColor: 'rgba(0,0,0,0.2)',\n display: 'flex',\n padding: '50px',\n }\n }\n return {\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }\n}\n","import { Component, Input, OnInit } from '@angular/core'\n\nexport type SpaceCloseModalPropsType = {\n onConfirm: () => void\n onCancel: () => void\n exitText: string | undefined\n exitTitle: string | undefined\n exitPrimaryButtonText: string | undefined\n exitSecondaryButtonText: string | undefined\n}\n\n@Component({\n selector: 'space-close-modal',\n templateUrl: './spaceCloseModal.component.html',\n styleUrls: ['./spaceCloseModal.component.scss'],\n})\nexport class SpaceCloseModal implements OnInit {\n title = 'space-close-modal'\n\n @Input({ required: true }) spaceCloseModalProps: SpaceCloseModalPropsType =\n {} as SpaceCloseModalPropsType\n ngOnInit(): void {}\n}\n","<div\ndata-testid=\"close-confirm-modal\"\nclass=\"flatfile_outer-shell\"\n>\n <div class=\"flatfile_inner-shell\">\n <div class=\"flatfile_modal\">\n <div class=\"flatfile_modal-heading\">\n {{this.spaceCloseModalProps.exitTitle || \"Close Window\"}}\n </div>\n \n <div class=\"flatfile_modal-text\">\n {{this.spaceCloseModalProps.exitText || \"Are you sure you want to exit? Any unsaved changes will be lost.\"}}\n </div>\n\n <div class=\"flatfile_button-group\">\n <button\n class=\"flatfile_button flatfile_secondary\"\n (click)=\"this.spaceCloseModalProps.onCancel()\"\n >\n <div>\n {{ this.spaceCloseModalProps.exitSecondaryButtonText || \"Cancel\" }}\n </div>\n </button>\n\n <button\n class=\"flatfile_button flatfile_primary\"\n (click)=\"this.spaceCloseModalProps.onConfirm()\"\n >\n <div>\n {{ this.spaceCloseModalProps.exitPrimaryButtonText || \"Confirm\" }}\n </div>\n </button>\n\n </div>\n </div>\n </div>\n</div>","import { Pipe, PipeTransform } from '@angular/core'\nimport { DomSanitizer } from '@angular/platform-browser'\n\n@Pipe({ name: 'safe' })\nexport class SafePipe implements PipeTransform {\n constructor(private domSanitizer: DomSanitizer) {}\n transform(url: string) {\n return this.domSanitizer.bypassSecurityTrustResourceUrl(url)\n }\n}\n","import { Component, Input, OnInit } from '@angular/core'\nimport {\n ISpace,\n SimpleOnboarding,\n createListener,\n createSimpleListener,\n} from '@flatfile/embedded-utils'\nimport { FlatfileEvent } from '@flatfile/listener'\nimport { SpaceCloseModalPropsType } from '../space-close-modal/spaceCloseModal.component'\nimport { getContainerStyles, getIframeStyles } from './embeddedStyles'\nexport type SpaceFramePropsType = ISpace & {\n spaceId: string\n spaceUrl: string\n localAccessToken: string\n handleCloseInstance: () => void\n closeInstance: boolean\n}\n\n@Component({\n selector: 'space-frame',\n templateUrl: './spaceFrame.component.html',\n styleUrls: ['./spaceFrame.component.scss'],\n})\nexport class SpaceFrame implements OnInit {\n title = 'space-frame'\n showExitWarnModal = false\n spaceCloseModalProps: SpaceCloseModalPropsType =\n {} as SpaceCloseModalPropsType\n iframeWrapperStyle = {}\n iframeStyle = {}\n handlePostMessageInstance: (\n event: MessageEvent<{ flatfileEvent: FlatfileEvent }>\n ) => void = () => {}\n\n @Input({ required: true }) spaceFrameProps: SpaceFramePropsType =\n {} as SpaceFramePropsType\n @Input({ required: true }) loading: boolean = false\n\n async created() {\n const { listener, apiUrl, closeSpace, workbook } = this.spaceFrameProps\n\n function closeSpaceNow() {\n removeMessageListener?.()\n }\n const accessToken = this.spaceFrameProps.localAccessToken\n let removeMessageListener: (() => void) | undefined\n const simpleListenerSlug = workbook?.sheets?.[0].slug || 'slug'\n\n if (listener) {\n removeMessageListener = await createListener(\n accessToken,\n apiUrl!,\n listener,\n closeSpace,\n closeSpaceNow,\n // TODO: add onInit for translations\n () => {}\n )\n } else {\n removeMessageListener = await createListener(\n accessToken,\n apiUrl!,\n createSimpleListener({\n onRecordHook: (this.spaceFrameProps as SimpleOnboarding).onRecordHook,\n onSubmit: (this.spaceFrameProps as SimpleOnboarding).onSubmit,\n slug: simpleListenerSlug,\n submitSettings: (this.spaceFrameProps as SimpleOnboarding)\n .submitSettings,\n }),\n closeSpace,\n closeSpaceNow,\n // TODO: add onInit for translations\n () => {}\n )\n }\n }\n\n openCloseModalDialog() {\n this.showExitWarnModal = true\n }\n\n handleConfirm() {\n const { closeSpace, handleCloseInstance } = this.spaceFrameProps\n if (closeSpace?.onClose && typeof closeSpace.onClose === 'function') {\n closeSpace.onClose({})\n }\n handleCloseInstance && handleCloseInstance()\n }\n\n handleCancel() {\n this.showExitWarnModal = false\n }\n\n ngOnInit(): void {\n const {\n exitText,\n exitTitle,\n exitPrimaryButtonText,\n exitSecondaryButtonText,\n } = this.spaceFrameProps\n\n this.iframeWrapperStyle = getContainerStyles(\n this.spaceFrameProps.displayAsModal || false\n )\n this.iframeStyle = getIframeStyles(this.spaceFrameProps.iframeStyles)\n\n if (!this.spaceFrameProps.localAccessToken)\n throw new Error('please wait until access token is received')\n const accessToken = this.spaceFrameProps.localAccessToken\n\n window.CROSSENV_FLATFILE_API_KEY = accessToken\n\n this.spaceCloseModalProps = {\n onConfirm: this.handleConfirm.bind(this),\n onCancel: this.handleCancel.bind(this),\n exitText,\n exitTitle,\n exitPrimaryButtonText,\n exitSecondaryButtonText,\n }\n\n this.created()\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('message', this.handlePostMessageInstance)\n }\n}\n\ndeclare global {\n interface Window {\n CROSSENV_FLATFILE_API_KEY: string\n }\n}\n","<div class=\"flatfile_iframe-wrapper\" [ngClass]=\"{ 'flatfile_displayAsModal': this.spaceFrameProps.displayAsModal }\"\n data-testid=\"space-contents\" [ngStyle]=\"this.iframeWrapperStyle\">\n <space-close-modal *ngIf=\"this.showExitWarnModal\" [spaceCloseModalProps]=\"this.spaceCloseModalProps\" />\n <iframe *ngIf=\"this.spaceFrameProps.spaceUrl\"\n [ngClass]=\"{ 'flatfile_iFrameContainer': this.spaceFrameProps.mountElement }\"\n [attr.data-testid]=\"this.spaceFrameProps.mountElement && 'flatfile_iFrameContainer'\"\n [src]=\"this.spaceFrameProps.spaceUrl | safe\" id=\"flatfile_iframe\" allow=\"clipboard-read; clipboard-write\"\n [ngStyle]=\"this.iframeStyle\">\n </iframe>\n\n <div (click)=\"this.openCloseModalDialog()\" data-testid=\"flatfile-close-button\" class=\"flatfile-close-button\"\n style=\"position: absolute; margin: 30px;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 100 100\">\n <line x1=\"10\" y1=\"10\" x2=\"90\" y2=\"90\" stroke=\"white\" :stroke-width=\"10\" />\n <line x1=\"10\" y1=\"90\" x2=\"90\" y2=\"10\" stroke=\"white\" :stroke-width=\"10\" />\n </svg>\n </div>\n</div>","import { Component } from '@angular/core'\n\n@Component({\n selector: 'spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n})\nexport class Spinner {}\n","<div>\n <div\n class=\"ff_spinner\"\n data-testid=\"spinner-icon\"\n ></div>\n</div>","import { Component, effect, Input, OnInit } from '@angular/core'\nimport { type ISpace } from '@flatfile/embedded-utils'\nimport { SpaceFramePropsType } from './space-frame/spaceFrame.component'\nimport { SpaceService } from './space.service'\n\n@Component({\n selector: 'flatfile-space',\n templateUrl: './space.component.html',\n styleUrls: ['./space.component.scss'],\n})\nexport class Space implements OnInit {\n @Input() spaceProps!: ISpace\n @Input() openDirectly = false\n @Input() config?: {\n resetOnClose: boolean\n } = {\n resetOnClose: true,\n }\n\n readonly title = 'Space'\n spaceFrameProps?: SpaceFramePropsType\n error?: { message: string }\n loading = false\n closeInstance = false\n\n constructor(private readonly spaceService: SpaceService) {\n effect(() => {\n this.loading = this.spaceService.loading()\n this.spaceFrameProps = this.spaceService.spaceInitialized()\n ? ({\n ...this.spaceService.spaceInitialized(),\n handleCloseInstance: this.handleCloseInstance.bind(this),\n } as SpaceFramePropsType)\n : undefined\n })\n }\n\n async ngOnInit(): Promise<void> {\n if (!this.spaceProps) {\n throw new Error('Please define the space props')\n }\n this.spaceService.config = this.config\n if (this.openDirectly) {\n await this.spaceService.initSpace(this.spaceProps)\n }\n }\n\n handleCloseInstance(): void {\n this.closeInstance = true\n this.spaceFrameProps = undefined\n }\n}\n","<div *ngIf=\"!this.closeInstance\">\n <spinner *ngIf=\"this.loading\" />\n <div *ngIf=\"this.spaceFrameProps !== undefined;else error_content\">\n <space-frame *ngIf=\"this.spaceFrameProps.localAccessToken && !this.loading\" [loading]=\"this.loading\"\n [spaceFrameProps]=\"this.spaceFrameProps\" />\n </div>\n <ng-template #error_content>\n <div *ngIf=\"this.error\" class=\"ff_error_container\">\n <h3 class=\"ff_error_heading\">Something Went Wrong</h3>\n <p class=\"ff_error_text\">\n {{this.error.message}}\n </p>\n </div>\n </ng-template>\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { SpaceCloseModal } from './space-close-modal/spaceCloseModal.component'\nimport { SafePipe } from './space-frame/iframeSafePipe'\nimport { SpaceFrame } from './space-frame/spaceFrame.component'\nimport { Space } from './space.component'\nimport { Spinner } from './spinner/spinner.component'\nimport { SpaceService } from './space.service'\n\n@NgModule({\n declarations: [Space, SpaceFrame, SpaceCloseModal, SafePipe, Spinner],\n imports: [CommonModule],\n providers: [SpaceService],\n exports: [Space],\n})\nexport class SpaceModule {}\n","/*\n * Public API Surface of flatfile\n */\n\nexport * from './lib/sdk/space.component';\nexport * from './lib/sdk/space.module';\nexport * from './lib/sdk/space.service';\n\nexport type { ISpace, SimpleOnboarding } from '@flatfile/embedded-utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.SpaceCloseModal","i3.SafePipe","i1.SpaceService","i2","i3.SpaceFrame","i4.Spinner"],"mappings":"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"}