{"context":{"domain":"bazan-playground"},"layers":{"ApplicationLayer":{"reference":"ApplicationLayer","availableInstances":[{"reference":"ComponentsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"SystemsDataSet","params":{"filter":{"domain":"data2"},"pagination":{"size":1},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSource"}}}},{"reference":"ExternalComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"SystemsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5e3b796d6228227ca637d0f4","name":"data2","domain":"data2","organization":"62292184611f480b3191c37c","visibility":"public","updatedAt":"2022-03-09T02:01:26.213Z"}]}},{"reference":"OrganizationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"DataComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"OneFileComponentInstancesDataSet","params":{"pagination":{"size":1},"master":{"dataset":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSet"}},"localField":"system","masterField":"_id"},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"FileComponentInstancesDataSource"}}}},{"reference":"ApplicationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ServiceComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@Data2TableDataSource","reference":"FileComponentInstancesDataSource","params":{"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}}]}},{"component":"data2-core@MemoryDataSource","reference":"EmptyDataSource","params":{"initialData":[]}},{"reference":"ComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"UserComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"DataComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ServiceComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ExternalComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ApplicationsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}}],"processesParams":{}},"HostApplicationLayer":{"reference":"HostApplicationLayer","availableInstances":[{"_id":"5f15ff190528b92601890f71","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"SystemsTableDataSource"}},"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"domain"}}},"pk":"_id","fields":[{"component":"data2-core-types@FieldReference","params":{"key":"_id"}},{"component":"data2-core-types@FieldReference","params":{"key":"name"}},{"component":"data2-core-types@FieldReference","params":{"key":"domain"}},{"component":"data2-core-types@FieldReference","params":{"key":"visibility"}},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization._id"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.name"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.billingStatus"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.publicTrial.active"}}},"break":true}],"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"staticPagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"policies":[{"component":"data2-core-auth@Policy","params":{"allow":{"params":{"actions":[{"params":{"components":[{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"_id"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"domain"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"}]},"component":"data2-core-logical-operators@Or"}]},"component":"data2-core-flow@Series"}}}]},"reference":"SystemsDataSet","updatedAt":"2025-11-05T19:23:47.135Z","createdAt":"2020-07-20T20:31:21.838Z"},{"_id":"5f1601ce0528b92601890f7c","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":1000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"sort":{"params.package":1,"params.component":1},"pk":"_id","autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"staticFilter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}},"filter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}}},"reference":"ComponentsDataSet","updatedAt":"2025-11-05T19:37:01.935Z","createdAt":"2020-07-20T20:42:54.898Z"},{"_id":"5f9041dbc8da12be8b94aea4","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":2000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"UserComponentsDataSet","updatedAt":"2025-11-06T21:06:58.095Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"65d8c4fabc9dbb8f94de8d53","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ExternalComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ExternalComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:23.742Z","createdAt":"2024-02-23T16:17:01.816Z"},{"reference":"SystemsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"69f0ee4e5e3c7228127bae3f","name":"Vinicius Bazan","domain":"bazan-playground","visibility":"public","updatedAt":"2026-04-28T12:56:41.025Z","createdAt":"2026-04-28T12:56:41.025Z"}]}},{"reference":"ComponentsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5f52a278a575399a45d239b4","component":"data2-core-types@Component","params":{"package":"data2-core-primitives","component":"Router","interactions":{"component":"data2-core-types@FieldSet","params":{"fields":{"goBack":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.goBack","args":[]}}}},"icon":{"component":"data2-core-primitives@String","params":{"content":"arrow-left"}},"visibility":"public"}},"goTo":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"component":"data2-core-types@Reference","params":{"reference":"url"}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}}}]}},"parameters":[{"component":"data2-core-primitives@String","params":{"content":"url"}},{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}]},"break":true},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Path to route"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Path to redirect user"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Boolean"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Preserve Query"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Preserve query string parameters  preserve query parameters on navigating."}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"}]}},"open":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"pathname":{"component":"data2-core-types@Reference","params":{"reference":"value"}}}]}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}]}},"close":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":"close"}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"times"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}],"description":{"component":"data2-core-primitives@String","params":{"content":"Closes a window that was opened via router.open."}}}}}}}}},{"_id":"620d28658271aa4129919d89","component":"data2-core-types@Component","params":{"package":"data2-interface-services","component":"DeviceController","interactions":{"params":{"fields":{"postMessage":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@String","title":{"component":"data2-core-primitives@String","params":{"content":"data"}}}}]},"component":"data2-core-types@ComponentParameter"},"print":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"zoom":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Number"}},"title":{"component":"data2-core-primitives@String","params":{"content":"zoom"}},"visibility":"public"}}},"visibility":"public"},"component":"data2-core-types@ComponentParameter"}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"share":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}}},"component":"data2-core-types@ComponentParameter"},"clipboard.copy":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"clipboard.paste":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"download":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}]},"component":"data2-core-types@ComponentParameter"},"downloadUrl":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Url"}}}}]},"component":"data2-core-types@ComponentParameter"},"promptFiles":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"params":{"fields":{"multiple":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Multiple"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Whether or not to allow selecting multiple files"}},"component":"data2-core-primitives@Boolean"}},"acceptedFormats":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Accepted Formats"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Accepted file formats"}},"component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},"timeout":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Timeout"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Max milliseconds to wait for file upload"}},"component":"data2-core-primitives@Number"}}}},"component":"data2-core-types@FieldSet"}}}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"meetingRecord":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","definition":{"params":{"actions":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"meeting"}},"script":{"component":"data2-core-primitives@String","params":{"content":"(function() {\n  let mediaRecorder;\n  let audioChunks = [];\n  let combinedStream;\n  let audioContext;\n  \n  window.meetingCapture = async function() {\n    try {\n      // Solicitar acesso ao áudio da guia (e vídeo, que será ignorado depois)\n      const tabStream = await navigator.mediaDevices.getDisplayMedia({ \n        video: true, // Necessário para alguns navegadores\n        audio: true\n      });\n      \n      // Remover a trilha de vídeo\n      const tabAudioTrack = tabStream.getAudioTracks()[0];\n      \n      // Solicitar acesso ao microfone\n      const micStream = await navigator.mediaDevices.getUserMedia({ audio: true });\n      const micAudioTrack = micStream.getAudioTracks()[0];\n      \n      // Criar um novo MediaStream com ambas as trilhas de áudio\n      combinedStream = new MediaStream([tabAudioTrack, micAudioTrack]);\n      \n      // Criar um contexto de áudio para misturar os streams\n      audioContext = new AudioContext();\n      const destination = audioContext.createMediaStreamDestination();\n      \n      // Conectar a trilha de áudio da guia\n      const tabSource = audioContext.createMediaStreamSource(new MediaStream([tabAudioTrack]));\n      tabSource.connect(destination);\n      \n      // Conectar a trilha de áudio do microfone\n      const micSource = audioContext.createMediaStreamSource(new MediaStream([micAudioTrack]));\n      micSource.connect(destination);\n      \n      // Iniciar gravação com o stream misturado\n      mediaRecorder = new MediaRecorder(destination.stream);\n      audioChunks = [];\n      mediaRecorder.ondataavailable = (e) => audioChunks.push(e.data);\n      mediaRecorder.start();\n      \n      console.log('Gravação iniciada. Chame meetingCaptureStop() para finalizar.');\n    } catch (error) {\n      console.error('Erro ao iniciar a captura:', error);\n    }\n  };\n  \n  window.meetingCaptureStop = function() {\n    return new Promise((resolve, reject) => {\n      if (!mediaRecorder) {\n        reject('Nenhuma gravação em andamento.');\n        return;\n      }\n      \n      mediaRecorder.onstop = () => {\n        const audioBlob = new Blob(audioChunks, { type: 'audio/webm' });\n        combinedStream.getTracks().forEach(track => track.stop());\n        audioContext.close();\n        \n        resolve(audioBlob);\n        console.log('Gravação finalizada. O arquivo de áudio está pronto para upload.');\n      };\n      \n      mediaRecorder.stop();\n    });\n  };\n})();"}}},"component":"data2-core-web@Script"},{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCapture"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"meetingRecordStop":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}],"definition":{"params":{"actions":[{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCaptureStop"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"notify":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"private","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","parameters":{"title":{"params":{"component":"data2-core-primitives@String","index":{"component":"data2-core-primitives@Number","params":{"content":0}},"title":{"component":"data2-core-primitives@String","params":{"content":"title"}}},"component":"data2-core-types@ComponentParameter"},"sound":{"params":{"component":"data2-core-types@FileComponentUrlReference","index":{"component":"data2-core-primitives@Number","params":{"content":1}},"title":{"component":"data2-core-primitives@String","params":{"content":"sound"}}},"component":"data2-core-types@ComponentParameter"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}}]},"component":"data2-core-types@ComponentParameter"}}},"component":"data2-core-types@FieldSet"}}},{"_id":"6a3ec1e8913fdfe1432e28ed","component":"data2-core-types@Component","system":"69f0ee4e5e3c7228127bae3f","params":{"extends":"data2-core-primitives@Block","component":"portal_ocr","package":"bazan-playground","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"export default {\n  css: `\n  *{box-sizing:border-box}\n  .app{height:100%;display:flex;flex-direction:column;font-family:Inter,system-ui,Segoe UI,sans-serif;color:#0f172a;background:#f8fafc}\n  .hdr{display:flex;align-items:center;gap:24px;padding:14px 24px;background:#fff;border-bottom:1px solid #e8edf3;flex:0 0 auto}\n  .brand{display:flex;align-items:center;gap:12px;min-width:200px}\n  .logo{width:40px;height:40px;border-radius:10px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px}\n  .bname{font-weight:800;font-size:17px}\n  .tabs{display:flex;gap:6px;flex:1}\n  .tab{border:0;background:transparent;padding:9px 14px;border-radius:9px;font-size:14px;font-weight:600;color:#64748b;cursor:pointer}\n  .tab:hover{background:#f1f5f9}\n  .tab.active{background:color-mix(in srgb,var(--accent) 14%,#fff);color:var(--accent)}\n  .hdr-sector{padding:8px 10px;border:1px solid #d8e0ea;border-radius:9px;font-size:13px;background:#fff;color:#0f172a}\n  .body{flex:1;overflow:auto;padding:24px}\n  .view-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}\n  .view-head h2{margin:0;font-size:22px;font-weight:800}\n  .muted{color:#94a3b8;font-size:13px}\n  .btn{border:0;border-radius:9px;padding:9px 15px;font-size:13px;font-weight:700;cursor:pointer;background:#eef2f7;color:#334155}\n  .btn:hover{filter:brightness(.97)}\n  .btn.primary{background:var(--accent);color:#fff}\n  .btn.ghost{background:#fff;border:1px solid #d8e0ea;color:#475569}\n  .btn.sm{padding:6px 11px;font-size:12px}\n  .kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}\n  .kpi{background:#fff;border:1px solid #e8edf3;border-radius:14px;padding:16px}\n  .kpi .g{font-size:20px}\n  .kpi .l{font-size:11px;color:#94a3b8;text-transform:uppercase;letter-spacing:.04em;margin:8px 0 4px;font-weight:700}\n  .kpi .v{font-size:30px;font-weight:800}\n  .grid2{display:grid;grid-template-columns:1.3fr 1fr;gap:14px}\n  .card{background:#fff;border:1px solid #e8edf3;border-radius:14px;padding:18px}\n  .card h3{margin:0 0 14px;font-size:15px;font-weight:800}\n  .distrow{display:flex;align-items:center;gap:10px;margin-bottom:10px;font-size:13px}\n  .distrow .name{width:96px;color:#475569;font-weight:600}\n  .distrow .bar{flex:1;height:10px;background:#f1f5f9;border-radius:6px;overflow:hidden}\n  .distrow .bar span{display:block;height:100%}\n  .distrow .num{width:30px;text-align:right;font-weight:700}\n  .act{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid #f1f5f9;font-size:13px}\n  .act:last-child{border:0}\n  .filter-sel{padding:8px 10px;border:1px solid #d8e0ea;border-radius:9px;font-size:13px;background:#fff}\n  .case-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}\n  .case-card{background:#fff;border:1px solid #e8edf3;border-radius:14px;padding:16px;cursor:pointer;transition:.12s}\n  .case-card:hover{border-color:var(--accent);box-shadow:0 6px 18px rgba(15,23,42,.06)}\n  .cc-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}\n  .cc-top b{font-size:15px}\n  .cc-sub{font-size:12px;color:#94a3b8;margin-bottom:12px}\n  .cc-prog{font-size:12px;color:#475569;margin-bottom:6px;font-weight:600}\n  .progbar{height:8px;background:#f1f5f9;border-radius:6px;overflow:hidden}\n  .progbar span{display:block;height:100%;background:var(--accent)}\n  .badge{padding:3px 9px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}\n  .doc-row{background:#fff;border:1px solid #e8edf3;border-radius:14px;padding:16px;margin-bottom:12px}\n  .dr-top{display:flex;align-items:center;justify-content:space-between;gap:12px}\n  .dr-name{font-weight:800;font-size:15px}\n  .dr-meta{font-size:12px;color:#94a3b8}\n  .dr-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}\n  .kvs{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px}\n  .kv{background:#f8fafc;border:1px solid #eef2f7;border-radius:9px;padding:8px 10px}\n  .kv span{display:block;font-size:10px;color:#94a3b8;text-transform:uppercase;letter-spacing:.03em;font-weight:700}\n  .kv b{font-size:13px}\n  .cf{font-size:9px;font-weight:800;margin-left:4px;vertical-align:middle}\n  .cf.ok{color:#16a34a}\n  .cf.no{color:#dc2626}\n  .motivos{margin:12px 0 0;padding:10px 12px;background:#fef2f2;border:1px solid #fee2e2;border-radius:9px}\n  .motivos ul{margin:6px 0 0;padding-left:18px;font-size:12px;color:#b91c1c}\n  .obs{margin-top:10px;font-size:12px;color:#64748b;font-style:italic}\n  .spin{display:inline-flex;align-items:center;gap:8px;color:var(--accent);font-weight:700;font-size:13px}\n  .dot{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:p 1s infinite}\n  @keyframes p{0%,100%{opacity:.3}50%{opacity:1}}\n  .dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:22px;border:2px dashed #cbd5e1;border-radius:12px;background:#f8fafc;cursor:pointer;text-align:center;transition:.12s}\n  .dropzone:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 5%,#fff)}\n  .dropzone.over{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 13%,#fff)}\n  .dropzone.sm{padding:16px}\n  .dz-ico{font-size:24px}\n  .dz-txt{font-size:13px;color:#64748b;font-weight:600;max-width:360px}\n  .type-card{background:#fff;border:1px solid #e8edf3;border-radius:14px;padding:16px;margin-bottom:12px}\n  .tc-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}\n  .tc-left{display:flex;align-items:center;gap:10px}\n  .chip{background:#f1f5f9;color:#475569;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700}\n  .fields{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}\n  .field-chip{background:color-mix(in srgb,var(--accent) 10%,#fff);color:var(--accent);padding:4px 9px;border-radius:7px;font-size:11px;font-weight:600}\n  .form label{display:block;font-size:12px;font-weight:700;color:#475569;margin-bottom:12px}\n  .form input,.form select,.form textarea{display:block;width:100%;margin-top:5px;padding:9px 11px;border:1px solid #d8e0ea;border-radius:9px;font-size:14px;font-family:inherit}\n  .detect-box{margin-bottom:16px}\n  .cb-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:5px}\n  .cb{display:flex !important;align-items:center;gap:8px;font-weight:600;background:#f8fafc;border:1px solid #eef2f7;border-radius:9px;padding:9px 11px;margin:0 !important;cursor:pointer}\n  .cb input{width:auto !important;margin:0 !important}\n  .form-actions{display:flex;gap:10px;margin-top:6px}\n  .back{background:transparent;border:0;color:var(--accent);font-weight:700;cursor:pointer;font-size:13px;padding:0;margin-bottom:14px}\n  .ov-status{display:flex;align-items:center;gap:12px;margin-bottom:18px}\n  .ov-status .name{font-size:22px;font-weight:800}\n  .fld-list{display:flex;flex-direction:column;gap:8px;margin-top:6px}\n  .fld-head{display:grid;grid-template-columns:1fr 1fr 100px 64px 32px;gap:8px;font-size:10px;color:#94a3b8;font-weight:800;text-transform:uppercase;padding:0 8px;margin-top:4px}\n  .fld-row{display:grid;grid-template-columns:1fr 1fr 100px 64px 32px;gap:8px;align-items:center;background:#f8fafc;border:1px solid #eef2f7;border-radius:10px;padding:8px}\n  .fld-row input,.fld-row select{padding:7px 8px;border:1px solid #d8e0ea;border-radius:8px;font-size:13px;width:100%;margin:0}\n  .fld-obr{display:flex !important;align-items:center;justify-content:center;gap:4px;font-size:11px;font-weight:700;color:#475569;margin:0 !important}\n  .fld-obr input{width:auto !important}\n  .fld-del{border:0;background:#fee2e2;color:#b91c1c;border-radius:8px;width:30px;height:30px;cursor:pointer;font-weight:800}\n  .drawer-back{position:fixed;inset:0;background:rgba(2,6,23,.5);z-index:55;display:flex;justify-content:flex-end}\n  .drawer{width:min(580px,96vw);height:100%;background:#fff;display:flex;flex-direction:column;box-shadow:-20px 0 60px rgba(0,0,0,.25);animation:slideIn .18s ease}\n  @keyframes slideIn{from{transform:translateX(40px);opacity:.5}to{transform:translateX(0);opacity:1}}\n  .drawer-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid #e8edf3}\n  .drawer-head h3{margin:0;font-size:17px;font-weight:800}\n  .drawer-body{flex:1;overflow:auto;padding:22px}\n  .drawer-foot{display:flex;gap:10px;padding:16px 22px;border-top:1px solid #e8edf3}\n  .pv-back{position:fixed;inset:0;background:rgba(2,6,23,.74);display:flex;align-items:center;justify-content:center;z-index:60;padding:20px}\n  .pv-box{width:min(940px,94vw);height:min(88vh,900px);background:#fff;border-radius:14px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 30px 80px rgba(0,0,0,.5)}\n  .pv-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid #e8edf3;font-size:14px;flex:0 0 auto}\n  .pv-tools{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:#475569}\n  .pv-tools button{border:1px solid #d8e0ea;background:#fff;border-radius:8px;padding:5px 11px;cursor:pointer;font-weight:800;font-size:13px}\n  .pv-x{border:0 !important;background:#f1f5f9 !important}\n  .pv-stage{flex:1;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#0b1020;cursor:grab}\n  .pv-stage.drag{cursor:grabbing}\n  .pv-img{max-width:100%;max-height:100%;transform-origin:center center;user-select:none;-webkit-user-drag:none;will-change:transform}\n  .pv-pdf{flex:1;width:100%;border:0;background:#fff}\n  `,\n  render(d2){\n    const esc = s => (s==null?'':String(s)).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/\"/g,'&quot;');\n    const brand = d2.store('branding');\n    const accent = brand.get('primaryColor','#4F46E5');\n    const company = brand.get('companyName','Onboard.AI');\n    const logoText = brand.get('logoText','O');\n    const sectors = brand.get('sectors',[]) || [];\n    const activeSector = brand.get('activeSector','');\n    const types = d2.store('document_types').get('types',[]) || [];\n    const cases = d2.store('onboarding_cases').get('cases',[]) || [];\n    const subs = d2.store('submissions').get('records',[]) || [];\n    const view = d2.state.view || 'dashboard';\n\n    const docType = id => types.find(t=>t.id===id);\n    const subFor = (cid,tid) => subs.find(s=>s.casoId===cid && s.tipoDocId===tid);\n    const DEC = {aprovado:['#16a34a','Aprovado'],reprovado:['#dc2626','Reprovado'],revisao:['#d97706','Em revisão'],pendente:['#64748b','Pendente']};\n    const badge = st => { const m=DEC[st]||DEC.pendente; return `<span class=\"badge\" style=\"background:${m[0]}1f;color:${m[0]}\">${m[1]}</span>`; };\n    const camposDe = s => (s.campos && s.campos.length) ? s.campos : Object.entries(s.dadosExtraidos||{}).map(e=>({chave:e[0],valor:e[1],confianca:null}));\n\n    const tabs = [['dashboard','Dashboard','📊'],['casos','Casos','🗂️'],['tipos','Tipos de Documento','📄'],['marca','Marca','🎨']];\n    const header = `<div class=\"hdr\">\n      <div class=\"brand\"><div class=\"logo\">${esc(logoText)}</div><div class=\"bname\">${esc(company)}</div></div>\n      <div class=\"tabs\">${tabs.map(t=>`<button class=\"tab ${view===t[0]?'active':''}\" data-view=\"${t[0]}\">${t[2]} ${t[1]}</button>`).join('')}</div>\n      <div class=\"hdr-right\"><select class=\"hdr-sector\">${sectors.map(s=>`<option ${s===activeSector?'selected':''}>${esc(s)}</option>`).join('')}</select></div>\n    </div>`;\n\n    let bodyHtml='';\n    if(view==='dashboard') bodyHtml=renderDashboard();\n    else if(view==='casos') bodyHtml=renderCasos();\n    else if(view==='tipos') bodyHtml=renderTipos();\n    else bodyHtml=renderMarca();\n\n    return `<div class=\"app\" style=\"--accent:${esc(accent)}\">${header}<div class=\"body\">${bodyHtml}</div>${renderTypeDrawer()}${renderPreview()}</div>`;\n\n    function renderDashboard(){\n      const filter=d2.state.dashFilter||'all';\n      const fsubs=filter==='all'?subs:subs.filter(s=>s.tipoDocId===filter);\n      const total=fsubs.length;\n      const apr=fsubs.filter(s=>s.decisao==='aprovado').length;\n      const rep=fsubs.filter(s=>s.decisao==='reprovado').length;\n      const rev=fsubs.filter(s=>s.decisao==='revisao').length;\n      const pctAuto=total?Math.round(apr/total*100):0;\n      const avg=total?Math.round(fsubs.reduce((a,s)=>a+(Number(s.score)||0),0)/total):0;\n      const kpis=[['Documentos processados',total,'📄'],['Auto-aprovados',pctAuto+'%','✅'],['Confiança média',avg||'—','🎯'],['Pendências',rev+rep,'⚠️']];\n      const distMax=Math.max(1,apr,rev,rep);\n      const dist=[['Aprovados',apr,'#16a34a'],['Em revisão',rev,'#d97706'],['Reprovados',rep,'#dc2626']];\n      const recent=fsubs.slice().reverse().slice(0,6).map(s=>{const dt=docType(s.tipoDocId);const c=cases.find(x=>x.id===s.casoId);const m=DEC[s.decisao]||DEC.pendente;return `<div class=\"act\"><span>${m[1]==='Aprovado'?'✅':m[1]==='Reprovado'?'❌':'⚠️'}</span><div><b>${esc(dt?dt.nome:s.tipoDocId)}</b> · ${esc(c?c.nomeCandidato:'—')}<br><span class=\"muted\">confiança ${s.score}% · ${esc(s.decisao)}</span></div></div>`;}).join('')||'<p class=\"muted\">Sem atividade para este filtro.</p>';\n      const fopts=`<option value=\"all\" ${filter==='all'?'selected':''}>Todos os tipos</option>`+types.map(t=>`<option value=\"${t.id}\" ${filter===t.id?'selected':''}>${esc(t.nome)}</option>`).join('');\n      return `<div class=\"view-head\"><h2>Dashboard</h2><select class=\"filter-sel\">${fopts}</select></div>\n      <div class=\"kpis\">${kpis.map(k=>`<div class=\"kpi\"><div class=\"g\">${k[2]}</div><div class=\"l\">${k[0]}</div><div class=\"v\">${k[1]}</div></div>`).join('')}</div>\n      <div class=\"grid2\">\n        <div class=\"card\"><h3>Distribuição de decisões</h3>${dist.map(d=>`<div class=\"distrow\"><span class=\"name\">${d[0]}</span><span class=\"bar\"><span style=\"width:${d[1]/distMax*100}%;background:${d[2]}\"></span></span><span class=\"num\">${d[1]}</span></div>`).join('')}</div>\n        <div class=\"card\"><h3>Atividade recente</h3>${recent}</div>\n      </div>`;\n    }\n\n    function renderCasos(){\n      if(d2.state.selectedCaseId) return renderCaseDetail(d2.state.selectedCaseId);\n      const form = d2.state.creatingCase ? renderCreateCase() : '';\n      const cards = cases.map(c=>{\n        const req=c.docsExigidos||[];\n        const apr=req.filter(tid=>{const s=subFor(c.id,tid);return s&&s.decisao==='aprovado';}).length;\n        const pct=req.length?apr/req.length*100:0;\n        return `<div class=\"case-card\" data-case=\"${c.id}\"><div class=\"cc-top\"><b>${esc(c.nomeCandidato)}</b>${badge(c.status)}</div><div class=\"cc-sub\">${esc(c.setor)}</div><div class=\"cc-prog\">${apr}/${req.length} documentos aprovados</div><div class=\"progbar\"><span style=\"width:${pct}%\"></span></div></div>`;\n      }).join('');\n      return `<div class=\"view-head\"><h2>Casos de Onboarding</h2><button class=\"btn primary\" data-act=\"new-case\">+ Novo caso</button></div>${form}<div class=\"case-grid\">${cards||'<p class=\"muted\">Nenhum caso ainda. Crie o primeiro.</p>'}</div>`;\n    }\n\n    function renderCreateCase(){\n      const setor = d2.state.formSetor || activeSector || (sectors[0]||'');\n      const opts = sectors.map(s=>`<option ${s===setor?'selected':''}>${esc(s)}</option>`).join('');\n      const cbs = types.map(t=>`<label class=\"cb\"><input type=\"checkbox\" class=\"doctype-cb\" value=\"${t.id}\" ${t.setor===setor?'checked':''}/> ${esc(t.nome)}</label>`).join('');\n      return `<div class=\"card form\" data-key=\"cf-${d2.state.caseKey||0}\" style=\"margin-bottom:18px\"><h3>Novo caso de onboarding</h3>\n        <label>Nome do candidato/cliente<input id=\"nc-nome\" placeholder=\"Ex.: Ana Martins\"/></label>\n        <label>Setor<select id=\"nc-setor\" class=\"case-setor\">${opts}</select></label>\n        <label>Documentos exigidos<div class=\"cb-grid\">${cbs}</div></label>\n        <div class=\"form-actions\"><button class=\"btn primary\" data-act=\"save-case\">Criar caso</button><button class=\"btn ghost\" data-act=\"cancel-case\">Cancelar</button></div></div>`;\n    }\n\n    function renderCaseDetail(cid){\n      const c=cases.find(x=>x.id===cid);\n      if(!c) return '<p class=\"muted\">Caso não encontrado.</p>';\n      const req=c.docsExigidos||[];\n      const rows=req.map(tid=>{\n        const dt=docType(tid); const s=subFor(cid,tid);\n        const processing=d2.state.processing===(cid+'|'+tid);\n        let zone;\n        if(processing) zone=`<div class=\"spin\" style=\"justify-content:center;padding:18px\"><span class=\"dot\"></span>Analisando com IA…</div>`;\n        else zone=`<label class=\"dropzone sm\" data-kind=\"doc\" data-case=\"${cid}\" data-doctype=\"${tid}\"><input type=\"file\" class=\"file-input\" accept=\"image/*,.pdf\" hidden/><div class=\"dz-ico\">${s?'↻':'⬆️'}</div><div class=\"dz-txt\">${s?'Arraste para reenviar ou clique':'Arraste o documento aqui ou clique para selecionar'}</div></label>`;\n        let result='';\n        if(s){\n          const kvs=camposDe(s).map(c2=>{const cf=c2.confianca;const tem=c2.valor&&String(c2.valor).trim();const tag=cf===1?(tem?'<span class=\"cf ok\">● confiante</span>':'<span class=\"cf ok\">● vazio (ok)</span>'):(cf===0?'<span class=\"cf no\">● não confiante</span>':'');return `<div class=\"kv\"><span>${esc(c2.chave)}${tag}</span><b>${esc(c2.valor)||'—'}</b></div>`;}).join('');\n          const motivos=(s.motivosReprovacao||[]).length?`<div class=\"motivos\"><b style=\"font-size:12px;color:#b91c1c\">Motivos</b><ul>${s.motivosReprovacao.map(m=>`<li>${esc(m)}</li>`).join('')}</ul></div>`:'';\n          const obs=s.observacoes?`<div class=\"obs\">🛈 ${esc(s.observacoes)}</div>`:'';\n          const isPdf=((s.fileName||'').toLowerCase().indexOf('.pdf')>-1)||((s.fileUrl||'').toLowerCase().indexOf('.pdf')>-1);\n          const nm=esc(dt?dt.nome:'dados');\n          const pv=s.fileUrl?`<button class=\"btn ghost sm\" data-act=\"preview\" data-url=\"${esc(s.fileUrl)}\" data-name=\"${esc(s.fileName||'documento')}\" data-pdf=\"${isPdf?'1':'0'}\">${isPdf?'📄':'👁'} Pré-visualizar</button>`:'';\n          const dl=`<button class=\"btn ghost sm\" data-act=\"csv\" data-sub=\"${s.id}\" data-name=\"${nm}\">⬇ CSV</button><button class=\"btn ghost sm\" data-act=\"xml\" data-sub=\"${s.id}\" data-name=\"${nm}\">⬇ XML</button>`;\n          result=`<div style=\"margin-top:10px\"><div class=\"dr-meta\">Confiança média: <b>${s.score}%</b> · arquivo: ${esc(s.fileName||'—')}</div><div class=\"kvs\">${kvs||'<span class=\"muted\">Nenhum dado extraído.</span>'}</div>${motivos}${obs}<div class=\"dr-actions\" style=\"margin-top:12px\">${pv}${dl}</div></div>`;\n        }\n        return `<div class=\"doc-row\"><div class=\"dr-top\"><div><div class=\"dr-name\">${esc(dt?dt.nome:tid)}</div><div class=\"dr-meta\">${dt?('threshold '+dt.thresholdConfianca+'% · '+(dt.campos||[]).length+' campos'):''} ${s?'· '+badge(s.decisao):''}</div></div></div><div style=\"margin-top:12px\">${zone}</div>${result}</div>`;\n      }).join('');\n      return `<button class=\"back\" data-act=\"back\">← Voltar aos casos</button>\n        <div class=\"ov-status\"><span class=\"name\">${esc(c.nomeCandidato)}</span>${badge(c.status)}<span class=\"muted\">${esc(c.setor)}</span></div>\n        ${rows}`;\n    }\n\n    function renderTipos(){\n      const cards = types.map(t=>`<div class=\"type-card\"><div class=\"tc-top\"><div class=\"tc-left\"><b>${esc(t.nome)}</b><span class=\"chip\">${esc(t.setor)}</span></div><button class=\"btn ghost sm\" data-act=\"edit-type\" data-id=\"${t.id}\">✏️ Editar</button></div><div class=\"muted\">Threshold ${t.thresholdConfianca}% · ${(t.campos||[]).length} campos · ${(t.regrasConformidade||[]).length} regras</div><div class=\"fields\">${(t.campos||[]).map(c=>`<span class=\"field-chip\">${esc(c.label||c.chave)}${c.obrigatorio?' *':''}</span>`).join('')}</div></div>`).join('');\n      return `<div class=\"view-head\"><h2>Tipos de Documento</h2><button class=\"btn primary\" data-act=\"new-type\">+ Novo tipo</button></div>${cards||'<p class=\"muted\">Nenhum tipo cadastrado.</p>'}`;\n    }\n\n    function renderTypeDrawer(){\n      if(!d2.state.creatingType) return '';\n      const tf=d2.state.typeForm||{nome:'',setor:activeSector||sectors[0]||'',threshold:80,campos:[]};\n      const editing=!!tf.id;\n      const opts=sectors.map(s=>`<option ${s===tf.setor?'selected':''}>${esc(s)}</option>`).join('');\n      const detecting=d2.state.detecting;\n      const dz=detecting?`<div class=\"spin\" style=\"justify-content:center;padding:16px\"><span class=\"dot\"></span>Analisando documento e sugerindo a tipagem com IA…</div>`:`<label class=\"dropzone sm\" data-kind=\"example\"><input type=\"file\" class=\"example-input\" accept=\"image/*,.pdf\" hidden/><div class=\"dz-ico\">✨</div><div class=\"dz-txt\">Arraste um documento de exemplo ou clique — a IA preenche nome, setor e campos automaticamente</div></label>`;\n      const tipos=['texto','data','numero','cpf','cnpj'];\n      const fields=(tf.campos||[]).map((c,i)=>`<div class=\"fld-row\" data-key=\"fld-${i}\"><input class=\"fld-chave\" placeholder=\"chave_interna\" value=\"${esc(c.chave||'')}\"/><input class=\"fld-label\" placeholder=\"Label amigável\" value=\"${esc(c.label||'')}\"/><select class=\"fld-tipo\">${tipos.map(tp=>`<option ${c.tipo===tp?'selected':''}>${tp}</option>`).join('')}</select><label class=\"fld-obr\"><input type=\"checkbox\" class=\"fld-obr-cb\" ${c.obrigatorio?'checked':''}/>obr</label><button class=\"fld-del\" data-idx=\"${i}\" title=\"Remover\">✕</button></div>`).join('');\n      return `<div class=\"drawer-back\"><div class=\"drawer\" data-key=\"tf-${d2.state.formKey||0}\">\n        <div class=\"drawer-head\"><h3>${editing?'Editar tipo de documento':'Novo tipo de documento'}</h3><button class=\"btn ghost sm\" data-act=\"drawer-x\">✕</button></div>\n        <div class=\"drawer-body form\">\n          <div class=\"detect-box\">${dz}</div>\n          <label>Nome (amigável)<input id=\"nt-nome\" value=\"${esc(tf.nome||'')}\" placeholder=\"Ex.: Comprovante de Residência\"/></label>\n          <label>Setor<select id=\"nt-setor\">${opts}</select></label>\n          <label>Threshold de confiança média (%)<input id=\"nt-threshold\" type=\"number\" value=\"${tf.threshold||80}\" min=\"0\" max=\"100\"/></label>\n          <label style=\"margin-bottom:4px\">Campos a extrair</label>\n          <div class=\"fld-head\"><span>Chave interna</span><span>Label</span><span>Tipo</span><span>Obrig.</span><span></span></div>\n          <div class=\"fld-list\">${fields||'<p class=\"muted\">Nenhum campo ainda. Adicione abaixo.</p>'}</div>\n          <button class=\"btn ghost sm\" data-act=\"add-field\" style=\"margin-top:10px\">+ Adicionar campo</button>\n        </div>\n        <div class=\"drawer-foot\"><button class=\"btn primary\" data-act=\"save-type\">${editing?'Salvar alterações':'Criar tipo'}</button><button class=\"btn ghost\" data-act=\"drawer-x\">Cancelar</button></div>\n      </div></div>`;\n    }\n\n    function renderMarca(){\n      return `<div class=\"view-head\"><h2>Marca (White-label)</h2></div>\n      <div class=\"card form\" style=\"max-width:480px\"><h3>Identidade visual do portal</h3>\n        <label>Nome da empresa<input id=\"br-company\" value=\"${esc(company)}\"/></label>\n        <label>Sigla do logo (1-2 letras)<input id=\"br-logo\" value=\"${esc(logoText)}\" maxlength=\"2\"/></label>\n        <label>Cor primária<input id=\"br-color\" type=\"color\" value=\"${esc(accent)}\"/></label>\n        <p class=\"muted\">As alterações refletem em tempo real em todo o portal.</p></div>`;\n    }\n\n    function renderPreview(){\n      const p=d2.state.preview;\n      if(!p) return '';\n      if(p.pdf){\n        return `<div class=\"pv-back\"><div class=\"pv-box\"><div class=\"pv-bar\"><b>${esc(p.name)}</b><div class=\"pv-tools\"><button class=\"pv-x\" data-act=\"pv-close\">✕ Fechar</button></div></div><iframe class=\"pv-pdf\" src=\"${esc(p.url)}\"></iframe></div></div>`;\n      }\n      const z=d2.state.zoom||1; const px=d2.state.panX||0; const py=d2.state.panY||0;\n      return `<div class=\"pv-back\"><div class=\"pv-box\"><div class=\"pv-bar\"><b>${esc(p.name)}</b><div class=\"pv-tools\"><button class=\"pv-out\">−</button><span>${Math.round(z*100)}%</span><button class=\"pv-in\">+</button><button class=\"pv-reset\">Reset</button><button class=\"pv-x\" data-act=\"pv-close\">✕ Fechar</button></div></div><div class=\"pv-stage\"><img class=\"pv-img\" src=\"${esc(p.url)}\" style=\"transform:translate(${px}px,${py}px) scale(${z})\"/></div></div></div>`;\n    }\n  },\n  mounted(d2){\n    function recomputeCase(cid){\n      const cases=d2.store('onboarding_cases').get('cases',[])||[];\n      const subs=d2.store('submissions').get('records',[])||[];\n      const c=cases.find(x=>x.id===cid); if(!c) return;\n      const req=c.docsExigidos||[];\n      const decisoes=req.map(tid=>{const s=subs.find(z=>z.casoId===cid&&z.tipoDocId===tid);return s?s.decisao:null;});\n      let status='pendente';\n      if(decisoes.length && decisoes.every(d=>d==='aprovado')) status='aprovado';\n      else if(decisoes.some(d=>d==='reprovado')) status='reprovado';\n      else if(decisoes.some(d=>d==='revisao')) status='revisao';\n      const updated=cases.map(x=>x.id===cid?Object.assign({},x,{status}):x);\n      d2.store('onboarding_cases').set('cases',updated);\n    }\n    async function evaluateDoc(cid,tid,file){\n      d2.state.processing=cid+'|'+tid;\n      try{\n        const types=d2.store('document_types').get('types',[])||[];\n        const dt=types.find(t=>t.id===tid);\n        const up=await d2.drive('drive_documentos').uploadFromFiles([file]);\n        const fileUrl=up&&up[0]&&(up[0].fileUrl||up[0].url);\n        if(!fileUrl) throw new Error('Falha no upload do arquivo');\n        const subs=d2.store('submissions').get('records',[])||[];\n        const nomesAnteriores=subs.filter(s=>s.casoId===cid&&s.tipoDocId!==tid).map(s=>s.dadosExtraidos&&s.dadosExtraidos.nome).filter(Boolean);\n        const out=await d2.rush('avaliar-documento').invoke({fileUrl,docType:dt,dadosCaso:{nomesAnteriores}});\n        const r=(out&&out.decisao!==undefined)?out:(out&&out.data?out.data:out);\n        const rec={id:'sub_'+Date.now()+'_'+Math.random().toString(36).slice(2,6),casoId:cid,tipoDocId:tid,dadosExtraidos:r.dadosExtraidos||{},campos:r.campos||[],score:r.score,decisao:r.decisao,motivosReprovacao:r.motivos||[],validacoes:r.validacoes||[],observacoes:r.observacoes||'',fileUrl,fileName:file.name,timestamp:new Date().toISOString()};\n        const cur=d2.store('submissions').get('records',[])||[];\n        const filtered=cur.filter(x=>!(x.casoId===cid&&x.tipoDocId===tid));\n        d2.store('submissions').set('records',filtered.concat([rec]));\n        recomputeCase(cid);\n      }catch(err){\n        d2.dialog.alert('Erro ao avaliar documento: '+((err&&err.message)||err));\n      }finally{\n        d2.state.processing='';\n      }\n    }\n    async function detectType(file){\n      d2.state.detecting=true;\n      try{\n        const up=await d2.drive('drive_documentos').uploadFromFiles([file]);\n        const fileUrl=up&&up[0]&&(up[0].fileUrl||up[0].url);\n        if(!fileUrl) throw new Error('Falha no upload do arquivo');\n        const sectors=d2.store('branding').get('sectors',[])||[];\n        const out=await d2.rush('detectar-tipo').invoke({fileUrl,sectors});\n        const r=(out&&out.campos)?out:(out&&out.data?out.data:out);\n        const campos=(r.campos||[]).map(c=>({chave:c.chave||'',label:c.label||c.chave||'',tipo:c.tipo||'texto',obrigatorio:!!c.obrigatorio}));\n        const tf=d2.state.typeForm||{};\n        d2.state.typeForm=Object.assign({},tf,{nome:r.nome||tf.nome||'',setor:r.setor||tf.setor||'',threshold:r.thresholdConfianca||tf.threshold||80,campos});\n        d2.state.formKey=(d2.state.formKey||0)+1;\n      }catch(err){\n        d2.dialog.alert('Erro ao detectar o tipo: '+((err&&err.message)||err));\n      }finally{\n        d2.state.detecting=false;\n      }\n    }\n    function readCampos(){\n      return d2.$$('.fld-row').map(row=>({\n        chave:(row.querySelector('.fld-chave').value||'').trim(),\n        label:(row.querySelector('.fld-label').value||'').trim(),\n        tipo:row.querySelector('.fld-tipo').value,\n        obrigatorio:row.querySelector('.fld-obr-cb').checked\n      }));\n    }\n    function syncForm(){\n      const tf=d2.state.typeForm||{};\n      const nomeEl=d2.$('#nt-nome'), setorEl=d2.$('#nt-setor'), thEl=d2.$('#nt-threshold');\n      d2.state.typeForm=Object.assign({},tf,{\n        nome:nomeEl?nomeEl.value:tf.nome,\n        setor:setorEl?setorEl.value:tf.setor,\n        threshold:thEl?parseInt(thEl.value||'80',10):tf.threshold,\n        campos:readCampos()\n      });\n    }\n    function downloadBlob(name,content,mime){\n      const blob=new Blob([content],{type:mime});const url=URL.createObjectURL(blob);\n      const a=document.createElement('a');a.href=url;a.download=name;document.body.appendChild(a);a.click();a.remove();\n      setTimeout(()=>URL.revokeObjectURL(url),1500);\n    }\n    function subById(id){return (d2.store('submissions').get('records',[])||[]).find(s=>s.id===id);}\n    function camposOf(s){return (s.campos&&s.campos.length)?s.campos:Object.entries(s.dadosExtraidos||{}).map(e=>({chave:e[0],valor:e[1],confianca:''}));}\n    function buildCSV(s){\n      const rows=[['campo','valor','confianca']];\n      camposOf(s).forEach(c=>rows.push([c.chave,c.valor,c.confianca]));\n      rows.push(['_confianca_media',s.score+'%','']);rows.push(['_decisao',s.decisao,'']);\n      return rows.map(r=>r.map(v=>'\"'+String(v==null?'':v).replace(/\"/g,'\"\"')+'\"').join(',')).join('\\r\\n');\n    }\n    function buildXML(s){\n      const x=v=>String(v==null?'':v).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/\"/g,'&quot;');\n      const campos=camposOf(s).map(c=>`  <campo chave=\"${x(c.chave)}\" confianca=\"${x(c.confianca)}\">${x(c.valor)}</campo>`).join('\\n');\n      return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<documento confiancaMedia=\"${x(s.score)}\" decisao=\"${x(s.decisao)}\">\\n${campos}\\n</documento>`;\n    }\n    d2.on('.tab','click',(e,el)=>{d2.state.view=el.dataset.view;d2.state.selectedCaseId=null;d2.state.creatingCase=false;d2.state.creatingType=false;});\n    d2.on('.hdr-sector','change',(e,el)=>d2.store('branding').set('activeSector',el.value));\n    d2.on('.filter-sel','change',(e,el)=>{d2.state.dashFilter=el.value;});\n    d2.on('.case-card','click',(e,el)=>{d2.state.selectedCaseId=el.dataset.case;});\n    d2.on('[data-act=\"back\"]','click',()=>{d2.state.selectedCaseId=null;});\n    d2.on('[data-act=\"new-case\"]','click',()=>{d2.state.creatingCase=true;d2.state.formSetor=d2.store('branding').get('activeSector','');d2.state.caseKey=(d2.state.caseKey||0)+1;});\n    d2.on('[data-act=\"cancel-case\"]','click',()=>{d2.state.creatingCase=false;});\n    d2.on('.case-setor','change',(e,el)=>{d2.state.formSetor=el.value;});\n    d2.on('[data-act=\"save-case\"]','click',()=>{\n      const nome=(d2.$('#nc-nome').value||'').trim();\n      const setor=d2.$('#nc-setor').value;\n      const checked=d2.$$('.doctype-cb').filter(el=>el.checked).map(el=>el.value);\n      if(!nome){d2.dialog.alert('Informe o nome do candidato.');return;}\n      if(!checked.length){d2.dialog.alert('Selecione ao menos um documento.');return;}\n      const cases=d2.store('onboarding_cases').get('cases',[])||[];\n      const id='case_'+Date.now().toString(36);\n      const novo={id,nomeCandidato:nome,setor,docsExigidos:checked,status:'pendente',criadoEm:new Date().toISOString().slice(0,10)};\n      d2.store('onboarding_cases').set('cases',cases.concat([novo]));\n      d2.state.creatingCase=false;d2.state.selectedCaseId=id;\n    });\n    d2.on('[data-act=\"new-type\"]','click',()=>{d2.state.typeForm={nome:'',setor:d2.store('branding').get('activeSector','')||'',threshold:80,campos:[{chave:'',label:'',tipo:'texto',obrigatorio:true}]};d2.state.creatingType=true;d2.state.formKey=(d2.state.formKey||0)+1;});\n    d2.on('[data-act=\"edit-type\"]','click',(e,el)=>{\n      const t=(d2.store('document_types').get('types',[])||[]).find(x=>x.id===el.dataset.id);\n      if(!t)return;\n      const campos=(t.campos||[]).map(c=>({chave:c.chave,label:c.label||c.chave,tipo:c.tipo||'texto',obrigatorio:!!c.obrigatorio}));\n      d2.state.typeForm={id:t.id,nome:t.nome,setor:t.setor,threshold:t.thresholdConfianca,campos};\n      d2.state.creatingType=true;d2.state.formKey=(d2.state.formKey||0)+1;\n    });\n    d2.on('[data-act=\"drawer-x\"]','click',()=>{d2.state.creatingType=false;d2.state.typeForm=null;});\n    d2.on('.drawer-back','click',(e,el)=>{if(e.target===el){d2.state.creatingType=false;d2.state.typeForm=null;}});\n    d2.on('[data-act=\"add-field\"]','click',()=>{syncForm();const tf=d2.state.typeForm;tf.campos=(tf.campos||[]).concat([{chave:'',label:'',tipo:'texto',obrigatorio:true}]);d2.state.typeForm=Object.assign({},tf);d2.state.formKey=(d2.state.formKey||0)+1;});\n    d2.on('.fld-del','click',(e,el)=>{syncForm();const tf=d2.state.typeForm;const idx=parseInt(el.dataset.idx,10);tf.campos=(tf.campos||[]).filter((c,i)=>i!==idx);d2.state.typeForm=Object.assign({},tf);d2.state.formKey=(d2.state.formKey||0)+1;});\n    d2.on('.example-input','change',async (e,el)=>{const f=e.target.files&&e.target.files[0];if(!f)return;await detectType(f);e.target.value='';});\n    d2.on('[data-act=\"save-type\"]','click',()=>{\n      syncForm();\n      const tf=d2.state.typeForm||{};\n      const nome=(tf.nome||'').trim();\n      const campos=(tf.campos||[]).map(c=>({chave:(c.chave||'').replace(/\\s+/g,'_').toLowerCase(),label:c.label||c.chave,tipo:c.tipo||'texto',obrigatorio:!!c.obrigatorio})).filter(c=>c.chave);\n      if(!nome){d2.dialog.alert('Informe o nome do tipo.');return;}\n      if(!campos.length){d2.dialog.alert('Adicione ao menos um campo com chave.');return;}\n      const regras=campos.filter(c=>c.obrigatorio).map(c=>({tipo:'campo_obrigatorio',campo:c.chave,descricao:'Campo '+c.label+' deve ser extraído'}));\n      const types=d2.store('document_types').get('types',[])||[];\n      let next;\n      if(tf.id){next=types.map(t=>t.id===tf.id?{id:tf.id,nome,setor:tf.setor,thresholdConfianca:tf.threshold,campos,regrasConformidade:regras}:t);}\n      else{next=types.concat([{id:'dt_'+Date.now().toString(36),nome,setor:tf.setor,thresholdConfianca:tf.threshold,campos,regrasConformidade:regras}]);}\n      d2.store('document_types').set('types',next);\n      d2.state.creatingType=false;d2.state.typeForm=null;\n    });\n    d2.on('.file-input','change',async (e,el)=>{const f=e.target.files&&e.target.files[0];if(!f)return;const dz=el.closest('.dropzone');await evaluateDoc(dz.dataset.case,dz.dataset.doctype,f);e.target.value='';});\n    d2.on('.dropzone','dragover',(e,el)=>{if(e.preventDefault)e.preventDefault();el.classList.add('over');});\n    d2.on('.dropzone','dragleave',(e,el)=>{el.classList.remove('over');});\n    d2.on('.dropzone','drop',async (e,el)=>{if(e.preventDefault)e.preventDefault();el.classList.remove('over');const f=e.dataTransfer&&e.dataTransfer.files&&e.dataTransfer.files[0];if(!f)return;if(el.dataset.kind==='doc'){await evaluateDoc(el.dataset.case,el.dataset.doctype,f);}else if(el.dataset.kind==='example'){await detectType(f);}});\n    d2.on('#br-company','input',(e,el)=>d2.store('branding').set('companyName',el.value));\n    d2.on('#br-logo','input',(e,el)=>d2.store('branding').set('logoText',el.value));\n    d2.on('#br-color','input',(e,el)=>d2.store('branding').set('primaryColor',el.value));\n    d2.on('[data-act=\"csv\"]','click',(e,el)=>{const s=subById(el.dataset.sub);if(!s)return;downloadBlob((el.dataset.name||'dados')+'.csv',buildCSV(s),'text/csv;charset=utf-8');});\n    d2.on('[data-act=\"xml\"]','click',(e,el)=>{const s=subById(el.dataset.sub);if(!s)return;downloadBlob((el.dataset.name||'dados')+'.xml',buildXML(s),'application/xml');});\n    d2.on('[data-act=\"preview\"]','click',(e,el)=>{d2.state.preview={url:el.dataset.url,name:el.dataset.name,pdf:el.dataset.pdf==='1'};d2.state.zoom=1;d2.state.panX=0;d2.state.panY=0;});\n    d2.on('.pv-x','click',()=>{d2.state.preview=null;});\n    d2.on('.pv-back','click',(e,el)=>{if(e.target===el){d2.state.preview=null;}});\n    d2.on('.pv-in','click',()=>{d2.state.zoom=Math.min(6,(d2.state.zoom||1)+0.25);});\n    d2.on('.pv-out','click',()=>{d2.state.zoom=Math.max(0.25,(d2.state.zoom||1)-0.25);});\n    d2.on('.pv-reset','click',()=>{d2.state.zoom=1;d2.state.panX=0;d2.state.panY=0;});\n    d2.on('.pv-stage','wheel',(e)=>{if(e.preventDefault)e.preventDefault();const d=e.deltaY<0?0.2:-0.2;d2.state.zoom=Math.max(0.25,Math.min(6,(d2.state.zoom||1)+d));});\n    let dragging=false,sx=0,sy=0,ox=0,oy=0;\n    d2.on('.pv-img','pointerdown',(e,el)=>{dragging=true;sx=e.clientX;sy=e.clientY;ox=d2.state.panX||0;oy=d2.state.panY||0;if(el.setPointerCapture)el.setPointerCapture(e.pointerId);const st=d2.$('.pv-stage');if(st)st.classList.add('drag');});\n    d2.on(window,'pointermove',(e)=>{if(!dragging)return;d2.state.panX=ox+(e.clientX-sx);d2.state.panY=oy+(e.clientY-sy);});\n    d2.on(window,'pointerup',()=>{if(dragging){dragging=false;const st=d2.$('.pv-stage');if(st)st.classList.remove('drag');}});\n  }\n}"}}}}}}}}]}},{"reference":"ExternalComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_id":"5f060d9b1ca96def42f3c40a","displayName":"Builder AuthStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"credentials":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"UsersDataSet"}},"sessionShared":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},"email":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"nR6Q9d7qdaPtZhJ28Q8Dy"},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"yPCJBTKo8q1Mw0B_3Kpwl"},"component":"data2-core-types@ArtboardReference"}}},"session":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"name"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"sessionMetadata":{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"active"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.status"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is active user"}]},"component":"data2-core-logical-operators@And","displayName":"is active and has _id"}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $user"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-primitives@String","params":{"content":"@data2.app"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.email"}}}}},"component":"data2-core-functions@Includes","displayName":"isData2User"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}},"component":"data2-core-flow@Step"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.d2_app"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"management"}}]},"component":"data2-core-functions@Includes","displayName":"isData2App Exception"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}},"component":"data2-core-flow@Step"},{"params":{"resultName":{"component":"data2-core-primitives@String","params":{"content":"has_access"}},"action":{"params":{"compare":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}]},"component":"data2-core-logical-operators@Or"},"else":{"params":{"actions":[{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $metadata.system"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":"filter","args":[{"_id":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records.length"}}}}},"component":"data2-core-logical-operators@Not","displayName":"systems not found"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check system found"},{"params":{"actions":[{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"organization":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.organization._id"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"}]},"component":"data2-core-flow@Parallel"}]},"component":"data2-core-flow@Series","displayName":"common setup"},{"params":{"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"else":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"compare":{"params":{"components":{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"mapper":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"system"}}],"body":{"params":{"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.visibility"}}}},"defaultCase":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"public"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"billing-owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}},{"component":"data2-core-primitives@String","params":{"content":"member"}}]},"component":"data2-core-functions@Includes","displayName":"has role with access"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"collaborator"}}},"component":"data2-core-comparison-operators@Equal","displayName":"is collaborator"}]},"component":"data2-core-logical-operators@And","displayName":"is org member and collaborator"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is collaborator"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is collaborator and has system access"}]},"component":"data2-core-logical-operators@Or"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"private"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}}]},"component":"data2-core-functions@Includes","displayName":"is owner/admin"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is owner/admin"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is member and has system access"}]},"component":"data2-core-logical-operators@Or","displayName":"is owner/admin or has system access"}}}]},"component":"data2-core-flow@Switch"}}}},"component":"data2-core-functions@ArrayMap"}},"component":"data2-core-logical-operators@And","displayName":"has org member for all systems in request"}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-flow@If"}},"component":"data2-core-flow@Step"},{"params":{"then":{"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"else":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"has_access"}}}}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"sessionExpiresIn":{"component":"data2-core-primitives@Number","params":{"content":604800}},"sessionRenewal":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"reference":"Data2BuilderAuthentication","updatedAt":"2025-10-28T02:48:49.233Z"},{"_id":"5f060ee51ca96def42f3fbd1","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"UsersTableDataSource"}},"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}}},"reference":"UsersDataSet","updatedAt":"2026-03-04T21:16:40.291Z"},{"_id":"68f938cf5fb002e33752a43d","displayName":"InternalApplicationsAuthenticationStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}}},"verifier":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"InternalApplicationsVerifierDataSet"}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"secret"}},"credentials":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}],"session":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}]},"reference":"InternalApplicationsAuthenticationStrategy","updatedAt":"2025-10-22T20:08:54.442Z","createdAt":"2025-10-22T20:04:31.198Z"},{"component":"data2-core@DataSet","reference":"SessionsDataSet","params":{"requiresConfirmation":false,"pk":"key","datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"data2sessionsdatasource"}}}},{"reference":"UsersTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@ServerSessionsDataSource","reference":"data2sessionsdatasource","params":{}},{"_id":"5f1600b70528b92601890f75","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ServiceComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ServiceComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:20.208Z","createdAt":"2020-07-20T20:38:15.436Z"},{"_id":"5f1602190528b92601890f7d","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":40000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentInstancesTableDataSource"}},"sort":{"_id":1},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:07.089Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"5f16017f0528b92601890f7a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"FileComponentInstancesDataSet","updatedAt":"2023-08-03T16:08:18.193Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"5f1601990528b92601890f7b","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ApplicationsTableDataSource"}},"pk":"_id","autoEdit":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"params":{"column":"_id"},"component":"data2-core-types@DataSetColumnReference"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"ApplicationsDataSet","updatedAt":"2022-12-13T21:51:13.995Z","createdAt":"2020-07-20T20:42:01.657Z"},{"_id":"5f16172a0528b92601890f85","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":10000}}},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"DataComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"DataComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:12.831Z","createdAt":"2020-07-20T22:14:02.097Z"},{"_id":"60ddc1bbda3861ca65407c5a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"pagination":{"size":1},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"}},"reference":"OneFileComponentInstancesDataSet","updatedAt":"2022-02-09T19:44:38.036Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"63ee3d38b8c9838c62fb05fb","displayName":"DriveFileComponentInstancesDataSet","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core@Drive"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"DriveFileComponentInstancesDataSet","updatedAt":"2025-12-04T21:58:32.367Z","createdAt":"2023-02-16T14:27:07.797Z"},{"reference":"ServiceComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a3ec20de44ca0e8495d7114","component":"data2-core-primitives@Artboard","system":"69f0ee4e5e3c7228127bae3f","displayName":"Portal OCR — Tela","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Portal OCR — Tela"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"2Ufb0bixW8FYIUeSOdKBI"},{"_id":"e20e22006fe999b18d0a2e2b","parent":"6a3ec20de44ca0e8495d7114","component":"bazan-playground@portal_ocr","system":"69f0ee4e5e3c7228127bae3f","displayName":"portal_ocr","params":{"super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}}}},"reference":"NHOgHiuWpyFbnztQwvlKu"}]}},{"_id":"5fc4faeec8da12be8bf3d08a","component":"data2-core@Data2TableDataSource","system":"5e3b796d6228227ca637d0f4","params":{"paginate":{"default":1000},"super":{},"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"fileId"}},"title":"File ID","component":"data2-core-primitives@ObjectId"},"break":true}],"hooks":{"before":{"all":[{"hook":"softDelete"}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"timestamp","options":{"fields":["createdAt","updatedAt"]}}],"update":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}],"patch":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}]},"after":{"all":[{"hook":"fileUrl","options":{"downloadField":"params.fileUrl","uploadField":"params.uploadFileUrl","enhanceSchema":false}}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"update":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"patch":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"remove":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}]}},"multi":["create"],"useEstimatedDocumentCount":true},"reference":"FileComponentInstancesTableDataSource","updatedAt":"2022-12-19T20:42:51.837Z","createdAt":"2020-11-30T13:59:52.294Z"},{"reference":"ApplicationsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a3ec222a8e70e8e2bbe41fc","displayName":"Portal OCR Documents","reference":"2EXqY7672r4llTauue4lO","params":{"name":{"component":"data2-core-primitives@String","params":{"content":"Portal OCR Documents"}},"shortName":{"component":"data2-core-primitives@String","params":{"content":"Portal OCR Documents"}},"domain":{"component":"data2-core-primitives@String","params":{"content":"poc-ocr"}},"serverSideRendering":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"entryPoint":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"2Ufb0bixW8FYIUeSOdKBI"}},"responseHeaders":{"X-Frame-Options":{"component":"data2-core-primitives@String","params":{"content":""}},"Content-Security-Policy":{"component":"data2-core-primitives@String","params":{"content":""}},"X-XSS-Protection":{"component":"data2-core-primitives@String","params":{"content":""}}}},"system":"69f0ee4e5e3c7228127bae3f","component":"data2-core-primitives@Application"}]}},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}