plugin-file-preview-auth 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,37 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ import React from 'react';
10
+ import type { Application } from '@nocobase/client';
11
+ export declare const FILE_PREVIEW_WORK_CONTEXT_TYPE = "file-preview";
12
+ export declare function createFilePreviewWorkContext(file: any): {
13
+ type: string;
14
+ uid: string;
15
+ title: string;
16
+ content: {
17
+ source: string;
18
+ file: {
19
+ id: any;
20
+ uid: any;
21
+ url: any;
22
+ preview: any;
23
+ filename: any;
24
+ name: any;
25
+ title: any;
26
+ extname: any;
27
+ mimetype: any;
28
+ size: any;
29
+ path: any;
30
+ storageId: any;
31
+ };
32
+ };
33
+ };
34
+ export declare const AIFilePreviewAction: React.FC<{
35
+ file: any;
36
+ }>;
37
+ export declare function registerFilePreviewAIWorkContext(app: Application): void;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ import { Plugin } from '@nocobase/client';
10
+ export declare class PluginFilePreviewAuthClient extends Plugin {
11
+ load(): Promise<void>;
12
+ private patchUploadPreviewBase64Fallback;
13
+ }
14
+ export default PluginFilePreviewAuthClient;
@@ -7,4 +7,4 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@nocobase/plugin-ai/client"),require("@nocobase/plugin-file-manager/client"),require("@nocobase/client"),require("react"),require("@ant-design/icons"),require("antd")):"function"==typeof define&&define.amd?define("plugin-file-preview-auth",["@nocobase/plugin-ai/client","@nocobase/plugin-file-manager/client","@nocobase/client","react","@ant-design/icons","antd"],t):"object"==typeof exports?exports["plugin-file-preview-auth"]=t(require("@nocobase/plugin-ai/client"),require("@nocobase/plugin-file-manager/client"),require("@nocobase/client"),require("react"),require("@ant-design/icons"),require("antd")):e["plugin-file-preview-auth"]=t(e["@nocobase/plugin-ai/client"],e["@nocobase/plugin-file-manager/client"],e["@nocobase/client"],e.react,e["@ant-design/icons"],e.antd)}(self,function(e,t,n,r,i,o){return function(){var l,a,u,c,s,f,d={41:function(e){e.exports=function(e,t){return"undefined"!=typeof __deoptimization_sideEffect__&&__deoptimization_sideEffect__(e,t),t}},482:function(e){"use strict";e.exports=i},772:function(e){"use strict";e.exports=n},645:function(t){"use strict";t.exports=e},183:function(e){"use strict";e.exports=t},721:function(e){"use strict";e.exports=o},156:function(e){"use strict";e.exports=r}},p={};function m(e){var t=p[e];if(void 0!==t)return t.exports;var n=p[e]={exports:{}};return d[e](n,n.exports,m),n.exports}m.m=d,m.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return m.d(t,{a:t}),t},m.d=function(e,t){for(var n in t)m.o(t,n)&&!m.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},m.f={},m.e=function(e){return Promise.all(Object.keys(m.f).reduce(function(t,n){return m.f[n](e,t),t},[]))},m.u=function(e){return""+e+"."+({166:"17caa11c2ba40313",351:"0f0ce45c92425c8f",374:"96762d13b15e7467",514:"2a8b6aa0d2fcd4b2"})[e]+".js"},m.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),m.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l={},a="plugin-file-preview-auth:",m.l=function(e,t,n,r){if(l[e])return void l[e].push(t);if(void 0!==n)for(var i,o,u=document.getElementsByTagName("script"),c=0;c<u.length;c++){var s=u[c];if(s.getAttribute("src")==e||s.getAttribute("data-webpack")==a+n){i=s;break}}i||(o=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,m.nc&&i.setAttribute("nonce",m.nc),i.setAttribute("data-webpack",a+n),i.src=e),l[e]=[t];var f=function(t,n){i.onerror=i.onload=null,clearTimeout(d);var r=l[e];if(delete l[e],i.parentNode&&i.parentNode.removeChild(i),r&&r.forEach(function(e){return e(n)}),t)return t(n)},d=setTimeout(f.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.bind(null,i.onload),o&&document.head.appendChild(i)},m.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(u=window.__webpack_public_path__||"/").endsWith("/")||(u+="/"),m.p=u+"static/plugins/plugin-file-preview-auth/dist/client/",c={909:0},m.f.j=function(e,t){var n=m.o(c,e)?c[e]:void 0;if(0!==n)if(n)t.push(n[2]);else{var r=new Promise(function(t,r){n=c[e]=[t,r]});t.push(n[2]=r);var i=m.p+m.u(e),o=Error();m.l(i,function(t){if(m.o(c,e)&&(0!==(n=c[e])&&(c[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;o.message="Loading chunk "+e+" failed.\n("+r+": "+i+")",o.name="ChunkLoadError",o.type=r,o.request=i,n[1](o)}},"chunk-"+e,e)}},s=function(e,t){var n,r,i=t[0],o=t[1],l=t[2],a=0;if(i.some(function(e){return 0!==c[e]})){for(n in o)m.o(o,n)&&(m.m[n]=o[n]);l&&l(m)}for(e&&e(t);a<i.length;a++)r=i[a],m.o(c,r)&&c[r]&&c[r][0](),c[r]=0},(f=self.webpackChunkplugin_file_preview_auth=self.webpackChunkplugin_file_preview_auth||[]).forEach(s.bind(null,0)),f.push=s.bind(null,f.push.bind(f));var v={};return!function(){"use strict";m.r(v),m.d(v,{default:function(){return eT},PluginFilePreviewAuthClient:function(){return ej}});var e=m(156),t=m.n(e),n=m(482),r=m(721),i=m(772),o=m(183),l=JSON.parse('{"u2":"plugin-file-preview-auth"}');function a(){var e=(0,i.useApp)();return function(t){return e.i18n.t(t,{ns:[l.u2,"client"]})}}var u=m(645);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function s(e,t,n,r,i,o,l){try{var a=e[o](l),u=a.value}catch(e){n(e);return}a.done?t(u):Promise.resolve(u).then(r,i)}function f(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var o=[],l=!0,a=!1;try{for(i=i.call(e);!(l=(n=i.next()).done)&&(o.push(n.value),!t||o.length!==t);l=!0);}catch(e){a=!0,r=e}finally{try{l||null==i.return||i.return()}finally{if(a)throw r}}return o}}(e,t)||g(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||g(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}}function b(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(b=function(){return!!e})()}var w="file-preview",x="plugin-file-preview-auth.aiEmployee";function E(e){return e?e.title&&e.extname?"".concat(e.title).concat(e.extname):e.filename||e.name||e.title||"file":"file"}var S=function(e){var t,n;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function r(e){var t,n,i;if(!(this instanceof r))throw TypeError("Cannot call a class as a function");return n=r,i=[e],n=d(n),(t=function(e,t){var n;if(t&&("object"==((n=t)&&"undefined"!=typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,b()?Reflect.construct(n,i||[],d(this).constructor):n.apply(this,i))).state={hasError:!1},t}return r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),e&&p(r,e),n=[{key:"getDerivedStateFromError",value:function(){return{hasError:!0}}}],t=[{key:"render",value:function(){return this.state.hasError?null:this.props.children}}],f(r.prototype,t),n&&f(r,n),r}(t().Component),k=function(i){var o,l,c=i.file,f=a(),d=(0,u.useAIConfigRepository)(),p=(0,u.useChatBoxActions)().triggerTask,m=h((0,e.useState)([]),2),v=m[0],g=m[1],b=h((0,e.useState)(!1),2),S=b[0],k=b[1],C=h((0,e.useState)(!1),2),O=C[0],P=C[1];(0,e.useEffect)(function(){var e=!1;if(null==d?void 0:d.getAIEmployees){var t=d.aiEmployees||[];return t.length?void g(y(t)):(k(!0),d.getAIEmployees().then(function(t){e||g(y(t||[]))}).catch(function(){e||g([])}).finally(function(){e||k(!1)}),function(){e=!0})}},[d]);var j=(0,e.useMemo)(function(){var e=function(){try{return window.localStorage.getItem(x)||""}catch(e){return""}}();return e?y(v).sort(function(t,n){return t.username===e?-1:+(n.username===e)}):v},[v]),T=(0,e.useCallback)((o=function(e){return function(e,t){var n,r,i,o,l={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){var u=[o,a];if(n)throw TypeError("Generator is already executing.");for(;l;)try{if(n=1,r&&(i=2&u[0]?r.return:u[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,u[1])).done)return i;switch(r=0,i&&(u=[2&u[0],i.value]),u[0]){case 0:case 1:i=u;break;case 4:return l.label++,{value:u[1],done:!1};case 5:l.label++,r=u[1],u=[0];continue;case 7:u=l.ops.pop(),l.trys.pop();continue;default:if(!(i=(i=l.trys).length>0&&i[i.length-1])&&(6===u[0]||2===u[0])){l=0;continue}if(3===u[0]&&(!i||u[1]>i[0]&&u[1]<i[3])){l.label=u[1];break}if(6===u[0]&&l.label<i[1]){l.label=i[1],i=u;break}if(i&&l.label<i[2]){l.label=i[2],l.ops.push(u);break}i[2]&&l.ops.pop(),l.trys.pop();continue}u=t.call(e,l)}catch(e){u=[6,e],r=0}finally{n=i=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(t){switch(t.label){case 0:if(!e||!c)return[2];P(!0),t.label=1;case 1:t.trys.push([1,3,4,5]);var n,i,o,l,a,u=e.username;try{window.localStorage.setItem(x,u)}catch(e){}return[4,p({aiEmployee:e,tasks:[{title:E(c),message:{user:f("Please help me analyze the file currently open in preview."),workContext:[{type:w,uid:(a=null!=(l=null!=(o=null!=(i=null!=(n=null==c?void 0:c.id)?n:null==c?void 0:c.uid)?i:null==c?void 0:c.url)?o:null==c?void 0:c.path)?l:E(c),"file-preview:".concat(String(a))),title:E(c),content:{source:"plugin-file-preview-auth",file:{id:null==c?void 0:c.id,uid:null==c?void 0:c.uid,url:null==c?void 0:c.url,preview:null==c?void 0:c.preview,filename:(null==c?void 0:c.filename)||(null==c?void 0:c.name),name:(null==c?void 0:c.name)||(null==c?void 0:c.filename),title:null==c?void 0:c.title,extname:null==c?void 0:c.extname,mimetype:null==c?void 0:c.mimetype,size:null==c?void 0:c.size,path:null==c?void 0:c.path,storageId:null==c?void 0:c.storageId}}}]},autoSend:!1}]})];case 2:return t.sent(),[3,5];case 3:return t.sent(),r.message.error(f("Failed to open AI chat")),[3,5];case 4:return P(!1),[7];case 5:return[2]}})},l=function(){var e=this,t=arguments;return new Promise(function(n,r){var i=o.apply(e,t);function l(e){s(i,n,r,l,a,"next",e)}function a(e){s(i,n,r,l,a,"throw",e)}l(void 0)})},function(e){return l.apply(this,arguments)}),[c,f,p]),A=j.map(function(e){return{key:e.username,label:(null==e?void 0:e.nickname)||(null==e?void 0:e.username)||"",onClick:function(){return T(e)}}});return S||j.length?1===j.length?t().createElement(r.Tooltip,{title:f("Ask AI")},t().createElement(r.Button,{type:"text",size:"small",icon:t().createElement(n.RobotOutlined,null),loading:O||S,onClick:function(e){e.stopPropagation(),T(j[0])}},f("Ask AI"))):t().createElement(r.Tooltip,{title:f("Ask AI")},t().createElement(r.Dropdown,{menu:{items:A},trigger:["click"],placement:"bottomRight",disabled:O||S},t().createElement(r.Button,{type:"text",size:"small",icon:t().createElement(n.RobotOutlined,null),loading:O||S,onClick:function(e){return e.stopPropagation()}},f("Ask AI")))):null},C=function(e){var n=e.file;return t().createElement(S,null,t().createElement(k,{file:n}))},O=m(41);function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function j(e,t,n,r,i,o,l){try{var a=e[o](l),u=a.value}catch(e){n(e);return}a.done?t(u):Promise.resolve(u).then(r,i)}function T(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function l(e){j(o,r,i,l,a,"next",e)}function a(e){j(o,r,i,l,a,"throw",e)}l(void 0)})}}function A(e,t,n){return(A=B()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&F(i,n.prototype),i}).apply(null,arguments)}function R(e){return(R=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function I(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}function _(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function F(e,t){return(F=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function L(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var o=[],l=!0,a=!1;try{for(i=i.call(e);!(l=(n=i.next()).done)&&(o.push(n.value),!t||o.length!==t);l=!0);}catch(e){a=!0,r=e}finally{try{l||null==i.return||i.return()}finally{if(a)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return P(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return P(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function D(e){var t="function"==typeof Map?new Map:void 0;return(D=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return A(e,arguments,R(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),F(n,e)})(e)}function B(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(B=function(){return!!e})()}function z(e,t){var n,r,i,o,l={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){var u=[o,a];if(n)throw TypeError("Generator is already executing.");for(;l;)try{if(n=1,r&&(i=2&u[0]?r.return:u[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,u[1])).done)return i;switch(r=0,i&&(u=[2&u[0],i.value]),u[0]){case 0:case 1:i=u;break;case 4:return l.label++,{value:u[1],done:!1};case 5:l.label++,r=u[1],u=[0];continue;case 7:u=l.ops.pop(),l.trys.pop();continue;default:if(!(i=(i=l.trys).length>0&&i[i.length-1])&&(6===u[0]||2===u[0])){l=0;continue}if(3===u[0]&&(!i||u[1]>i[0]&&u[1]<i[3])){l.label=u[1];break}if(6===u[0]&&l.label<i[1]){l.label=i[1],i=u;break}if(i&&l.label<i[2]){l.label=i[2],l.ops.push(u);break}i[2]&&l.ops.pop(),l.trys.pop();continue}u=t.call(e,l)}catch(e){u=[6,e],r=0}finally{n=i=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}var W=["application/pdf"],M=["image/png","image/jpeg","image/gif","image/webp","image/svg+xml","image/bmp"],U=["text/plain","text/csv","text/html","text/css","text/javascript","application/json","application/xml","text/xml","text/yaml","application/x-yaml"],N=["application/vnd.openxmlformats-officedocument.wordprocessingml.document"],q=["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-excel"],V=["pdf"],H=["png","jpg","jpeg","gif","webp","svg","bmp"],X=["txt","csv","html","css","js","json","xml","log","md","yaml","yml","xaml"],G=["docx"],J=["xlsx","xls"],Y=["application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.ms-powerpoint"],$=["pptx","ppt"],K=function(e){var t=("string"==typeof e?e:(null==e?void 0:e.extname)||(null==e?void 0:e.name)||(null==e?void 0:e.filename)||(null==e?void 0:e.url)||"").split("?")[0].split("#")[0],n=t.lastIndexOf(".");return -1!==n?t.slice(n+1).toLowerCase().replace(/^\./,""):""},Q=function(e){var t="string"==typeof e?e:(null==e?void 0:e.url)||(null==e?void 0:e.preview)||(null==e?void 0:e.path);return t?t.startsWith("https://")||t.startsWith("http://")?t:"".concat(location.origin,"/").concat(t.replace(/^\//,"")):""},Z=function(e){return"string"==typeof e?e:e?[e.id,e.uid,e.url,e.preview,e.path,e.storageId,e.collectionName,e.lastModified,e.size].filter(function(e){return null!=e&&""!==e}).join(":"):""},ee=function(e){if((null==e?void 0:e.mimetype)&&W.includes(e.mimetype))return!0;var t=K(e);return!!t&&V.includes(t)},et=function(e){if((null==e?void 0:e.mimetype)&&M.includes(e.mimetype)||(null==e?void 0:e.mimetype)&&(0,i.matchMimetype)(e,"image/*"))return!0;var t=K(e);return!!t&&H.includes(t)},en=function(e){if((null==e?void 0:e.mimetype)&&U.includes(e.mimetype))return!0;var t=K(e);return!!t&&X.includes(t)},er=function(e){if((null==e?void 0:e.mimetype)&&N.includes(e.mimetype))return!0;var t=K(e);return!!t&&G.includes(t)},ei=function(e){if((null==e?void 0:e.mimetype)&&q.includes(e.mimetype))return!0;var t=K(e);return!!t&&J.includes(t)},eo=function(e){if((null==e?void 0:e.mimetype)&&Y.includes(e.mimetype))return!0;var t=K(e);return!!t&&$.includes(t)},el=function(e){return e?e.title&&e.extname?"".concat(e.title).concat(e.extname):e.filename||e.name||e.title||"download":"download"},ea=new Map;function eu(e){return{id:null==e?void 0:e.id,uid:null==e?void 0:e.uid,url:null==e?void 0:e.url,preview:null==e?void 0:e.preview,filename:(null==e?void 0:e.filename)||(null==e?void 0:e.name),name:(null==e?void 0:e.name)||(null==e?void 0:e.filename),title:null==e?void 0:e.title,extname:null==e?void 0:e.extname,mimetype:null==e?void 0:e.mimetype,size:null==e?void 0:e.size,path:null==e?void 0:e.path,storageId:null==e?void 0:e.storageId,collectionName:null==e?void 0:e.collectionName,lastModified:null==e?void 0:e.lastModified}}function ec(){return(ec=T(function(e,t){var n,r;return z(this,function(i){switch(i.label){case 0:return n={},t&&(n.Authorization="Bearer ".concat(t)),[4,fetch(e,{method:"GET",headers:n,credentials:"include"})];case 1:if(!(r=i.sent()).ok)throw Error("Failed to fetch file: ".concat(r.status," ").concat(r.statusText));return[2,r.blob()]}})})).apply(this,arguments)}function es(e,t){return ef.apply(this,arguments)}function ef(){return(ef=T(function(e,t){var n,r,i;return z(this,function(o){if(!(n=function(e){var t=eu("string"==typeof e?{url:e}:e||{}),n=Q(e);if(n&&function(e){if(!e)return!1;try{var t=new URL(e,location.origin);if(t.origin!==location.origin)return!1;return["/api/filePreviewAuth:download","/api/extStorage:download","/api/skillHub:download","/api/worker-monitor","/api/carboneTemplates:download","/api/attachments:stream"].some(function(e){return t.pathname===e||t.pathname.startsWith("".concat(e,"/"))||t.pathname.startsWith("".concat(e,":"))})}catch(e){return!1}}(n))return n;var r=t.id||t.uid;if(null!=r){var i=t.collectionName||"attachments";return"/api/attachments:stream?filterByTk=".concat(r,"&collection=").concat(i)}return n||""}(e))||n.endsWith("?"))throw Error("No file URL");return r="".concat(t?"auth":"anon",":").concat(t||"",":").concat(Z(e)||n),(i=ea.get(r))||(i=(function(e,t){return ec.apply(this,arguments)})(n,t).catch(function(e){throw ea.delete(r),e}),ea.set(r,i)),[2,i]})})).apply(this,arguments)}function ed(e,t){return ep.apply(this,arguments)}function ep(){return(ep=T(function(e,t){var n,r,i,o;return z(this,function(l){switch(l.label){case 0:return[4,es(e,t)];case 1:return n=l.sent(),r=el(e),(i=document.createElement("a")).href=o=URL.createObjectURL(n),i.download=r,document.body.appendChild(i),i.click(),document.body.removeChild(i),setTimeout(function(){return URL.revokeObjectURL(o)},1e3),[2]}})})).apply(this,arguments)}function em(t,n){var r=L((0,e.useState)(null),2),i=r[0],o=r[1],l=L((0,e.useState)(!0),2),a=l[0],u=l[1],c=L((0,e.useState)(null),2),s=c[0],f=c[1],d=(0,e.useRef)(null),p=(0,e.useRef)(t);p.current=t;var m=Z(t);return(0,e.useEffect)(function(){var e=!1,t=p.current;if(!(Q(t)||"string"!=typeof t&&((null==t?void 0:t.id)||(null==t?void 0:t.uid)))){u(!1),f("No file URL");return}return u(!0),f(null),es(t,n).then(function(t){if(!e){var n=URL.createObjectURL(t);d.current=n,o(n),u(!1)}}).catch(function(t){e||(f(t.message||"Failed to load"),u(!1))}),function(){e=!0,d.current&&(URL.revokeObjectURL(d.current),d.current=null)}},[m,n]),{blobUrl:i,loading:a,error:s}}function ev(e){var n=e.message;return t().createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",width:"100%"}},t().createElement(r.Spin,{tip:n}))}function eh(e){var n=e.message;return t().createElement("div",{style:{padding:20,textAlign:"center",color:"#ff4d4f"}},n)}function ey(e){var i=e.file,o=e.title,l=e.ocrStatus,u=e.isOcrSupported,c=a();return t().createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,paddingRight:40}},t().createElement(r.Space,{size:8,style:{minWidth:0,overflow:"hidden"}},t().createElement("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontWeight:600},title:o},o),function(){if(!u||!l)return null;switch(l){case"pending-ocr":return t().createElement(r.Tag,{color:"processing",icon:t().createElement(n.SyncOutlined,{spin:!0})},c("OCR Pending"));case"waiting-verify":return t().createElement(r.Tag,{color:"warning",icon:t().createElement(n.ClockCircleOutlined,null)},c("Waiting Verify"));case"verified":return t().createElement(r.Tag,{color:"success",icon:t().createElement(n.CheckCircleOutlined,null)},c("OCR Verified"));default:return t().createElement(r.Tag,{color:"default"},c("No OCR"))}}()),t().createElement(C,{file:i}))}function eg(e){var n,r=e.file,o=(0,i.useAPIClient)(),l=a(),u=em(r,(null==(n=o.auth)?void 0:n.token)||""),c=u.blobUrl,s=u.loading,f=u.error;return s?t().createElement(ev,{message:l("Loading preview...")}):f||!c?t().createElement(eh,{message:l("Failed to load file preview")}):t().createElement("iframe",{src:c,width:"100%",height:"100%",style:{border:"none"}})}function eb(e){var n,r=e.file,o=(0,i.useAPIClient)(),l=a(),u=em(r,(null==(n=o.auth)?void 0:n.token)||""),c=u.blobUrl,s=u.loading,f=u.error;return s?t().createElement(ev,{message:l("Loading preview...")}):f||!c?t().createElement(eh,{message:l("Failed to load file preview")}):t().createElement("img",{src:c,style:{maxWidth:"100%",maxHeight:"100%",objectFit:"contain"},alt:(null==r?void 0:r.title)||(null==r?void 0:r.filename)||""})}function ew(n){var r,o,l,u,c,s,f,d,p,m,v,h,y=n.file,g=(0,i.useAPIClient)(),b=a(),w=(null==(h=g.auth)?void 0:h.token)||"",x=(o=(r=L((0,e.useState)(null),2))[0],l=r[1],c=(u=L((0,e.useState)(!0),2))[0],s=u[1],d=(f=L((0,e.useState)(null),2))[0],p=f[1],(m=(0,e.useRef)(y)).current=y,v=Z(y),(0,e.useEffect)(function(){var e=!1,t=m.current;if(!(Q(t)||"string"!=typeof t&&((null==t?void 0:t.id)||(null==t?void 0:t.uid)))){s(!1),p("No file URL");return}return s(!0),p(null),es(t,w).then(function(e){return e.text()}).then(function(t){e||(l(t),s(!1))}).catch(function(t){e||(p(t.message||"Failed to load"),s(!1))}),function(){e=!0}},[v,w]),{text:o,loading:c,error:d}),E=x.text,S=x.loading,k=x.error;return S?t().createElement(ev,{message:b("Loading preview...")}):k||null===E?t().createElement(eh,{message:b("Failed to load file preview")}):t().createElement("pre",{style:{width:"100%",height:"100%",overflow:"auto",padding:16,margin:0,fontSize:13,lineHeight:1.6,whiteSpace:"pre-wrap",wordWrap:"break-word",background:"#f5f5f5",border:"none"}},E)}function ex(n){var r,o=n.file,l=(0,i.useAPIClient)(),u=a(),c=(null==(r=l.auth)?void 0:r.token)||"",s=(0,e.useRef)(null),f=(0,e.useRef)(o);f.current=o;var d=Z(o),p=L((0,e.useState)(!0),2),v=p[0],h=p[1],y=L((0,e.useState)(null),2),g=y[0],b=y[1];return(0,e.useEffect)(function(){var e=!1,t=f.current;if(!(Q(t)||"string"!=typeof t&&((null==t?void 0:t.id)||(null==t?void 0:t.uid)))||!s.current){h(!1),b("No file URL");return}return h(!0),b(null),T(function(){var n,r,i;return z(this,function(o){switch(o.label){case 0:return o.trys.push([0,4,,5]),[4,es(t,c)];case 1:if(n=o.sent(),e)return[2];return[4,O("imported_-1dm6lbf_component",m.e("374").then(m.bind(m,335)))];case 2:if(r=o.sent(),e||!s.current)return[2];return s.current.innerHTML="",[4,r.renderAsync(n,s.current,void 0,{className:"docx-preview-wrapper",inWrapper:!0,ignoreWidth:!1,ignoreHeight:!1,ignoreFonts:!1,breakPages:!0,ignoreLastRenderedPageBreak:!0,experimental:!1,trimXmlDeclaration:!0,useBase64URL:!0,renderHeaders:!0,renderFooters:!0,renderFootnotes:!0,renderEndnotes:!0})];case 3:return o.sent(),h(!1),[3,5];case 4:if(i=o.sent(),e)return[2];return b(i.message||"Failed to render DOCX"),h(!1),[3,5];case 5:return[2]}})})(),function(){e=!0}},[d,c]),t().createElement("div",{style:{width:"100%",height:"100%",position:"relative"}},v&&t().createElement(ev,{message:u("Loading preview...")}),g&&t().createElement(eh,{message:u("Failed to load file preview")}),t().createElement("div",{ref:s,style:{width:"100%",height:"100%",overflow:"auto",display:v||g?"none":"block"}}))}function eE(n){var r,o=n.file,l=(0,i.useAPIClient)(),u=a(),c=(null==(r=l.auth)?void 0:r.token)||"",s=(0,e.useRef)(null),f=(0,e.useRef)(o);f.current=o;var d=Z(o),p=L((0,e.useState)(!0),2),v=p[0],h=p[1],y=L((0,e.useState)(null),2),g=y[0],b=y[1],w=L((0,e.useState)([]),2),x=w[0],E=w[1],S=L((0,e.useState)(""),2),k=S[0],C=S[1],P=L((0,e.useState)({}),2),j=P[0],A=P[1];return(0,e.useEffect)(function(){var e=!1,t=f.current;if(!(Q(t)||"string"!=typeof t&&((null==t?void 0:t.id)||(null==t?void 0:t.uid)))){h(!1),b("No file URL");return}return h(!0),b(null),T(function(){var n,r,i,o,l,a,u,s,f,d,p,v,y,g;return z(this,function(w){switch(w.label){case 0:return w.trys.push([0,4,,5]),[4,es(t,c)];case 1:if(n=w.sent(),e)return[2];return[4,O("imported_-1lj2ifg_component",m.e("166").then(m.bind(m,907)))];case 2:if(r=w.sent(),e)return[2];return[4,n.arrayBuffer()];case 3:if(i=w.sent(),e)return[2];l=(o=r.read(i,{type:"array"})).SheetNames,a={},u=!0,s=!1,f=void 0;try{for(d=l[Symbol.iterator]();!(u=(p=d.next()).done);u=!0)v=p.value,y=o.Sheets[v],a[v]=r.utils.sheet_to_html(y,{id:"xlsx-preview-table"})}catch(e){s=!0,f=e}finally{try{u||null==d.return||d.return()}finally{if(s)throw f}}if(e)return[2];return E(l),C(l[0]||""),A(a),h(!1),[3,5];case 4:if(g=w.sent(),e)return[2];return b(g.message||"Failed to render XLSX"),h(!1),[3,5];case 5:return[2]}})})(),function(){e=!0}},[d,c]),t().createElement("div",{style:{width:"100%",height:"100%",display:"flex",flexDirection:"column"}},v&&t().createElement(ev,{message:u("Loading preview...")}),g&&t().createElement(eh,{message:u("Failed to load file preview")}),!v&&!g&&t().createElement(t().Fragment,null,x.length>1&&t().createElement("div",{style:{display:"flex",gap:0,borderBottom:"1px solid #e8e8e8",background:"#fafafa",padding:"0 8px",flexShrink:0,overflowX:"auto"}},x.map(function(e){return t().createElement("button",{key:e,onClick:function(){return C(e)},style:{padding:"8px 16px",border:"none",borderBottom:k===e?"2px solid #1890ff":"2px solid transparent",background:k===e?"#fff":"transparent",color:k===e?"#1890ff":"#666",fontWeight:k===e?600:400,cursor:"pointer",fontSize:13,whiteSpace:"nowrap",transition:"all 0.2s"}},e)})),t().createElement("div",{ref:s,style:{flex:1,overflow:"auto",padding:0},dangerouslySetInnerHTML:{__html:j[k]||""}}),t().createElement("style",null,"\n #xlsx-preview-table {\n border-collapse: collapse;\n width: 100%;\n font-size: 13px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n #xlsx-preview-table td,\n #xlsx-preview-table th {\n border: 1px solid #e8e8e8;\n padding: 6px 10px;\n text-align: left;\n max-width: 33vw;\n white-space: normal;\n word-break: break-word;\n }\n #xlsx-preview-table tr:first-child td,\n #xlsx-preview-table tr:first-child th {\n background: #fafafa;\n font-weight: 600;\n position: sticky;\n top: 0;\n z-index: 1;\n }\n #xlsx-preview-table tr:nth-child(even) {\n background: #fafafa;\n }\n #xlsx-preview-table tr:hover {\n background: #f0f7ff;\n }\n ")))}function eS(n){var r,o=n.file,l=(0,i.useAPIClient)(),u=a(),c=(null==(r=l.auth)?void 0:r.token)||"",s=L((0,e.useState)(!0),2),f=s[0],d=s[1],p=L((0,e.useState)(null),2),v=p[0],h=p[1],y=L((0,e.useState)(null),2),g=y[0],b=y[1],w=L((0,e.useState)(null),2),x=w[0],E=w[1],S=(0,e.useRef)(o);S.current=o;var k=Z(o);return(0,e.useEffect)(function(){var e=!1,t=S.current;if(!(Q(t)||"string"!=typeof t&&((null==t?void 0:t.id)||(null==t?void 0:t.uid)))){d(!1),h("No file URL");return}return d(!0),h(null),T(function(){var n,r,i,o;return z(this,function(l){switch(l.label){case 0:return l.trys.push([0,2,,3]),[4,Promise.all([es(t,c),O("imported_tpp3om_component",m.e("514").then(m.bind(m,581)))])];case 1:if(r=(n=L.apply(void 0,[l.sent(),2]))[0],i=n[1],e)return[2];return b(r),E(function(){return i.PptxPreview}),d(!1),[3,3];case 2:if(o=l.sent(),e)return[2];return h(o.message||"Failed to render PPTX"),d(!1),[3,3];case 3:return[2]}})})(),function(){e=!0}},[k,c]),t().createElement("div",{style:{width:"100%",height:"100%",position:"relative"}},f&&t().createElement(ev,{message:u("Loading preview...")}),v&&t().createElement(eh,{message:u("Failed to load file preview")}),!f&&!v&&x&&t().createElement("div",{style:{width:"100%",height:"100%",overflow:"auto"}},t().createElement(x,{file:g})))}var ek=function(o){return function(l){var u,c=l.open,s=l.onOpenChange,f=l.onClose,d=l.file,p=l.index,m=l.list,v=l.onSwitchIndex;l.onDownload;var h=(0,i.useAPIClient)(),y=a(),g=L((0,e.useState)("visual"),2),b=g[0],w=g[1],x=(0,e.useCallback)((u=T(function(e){var t,n,i;return z(this,function(o){switch(o.label){case 0:if(!(n=e||d))return[2];i=(null==(t=h.auth)?void 0:t.token)||"",o.label=1;case 1:return o.trys.push([1,3,,4]),[4,ed(n,i)];case 2:return o.sent(),[3,4];case 3:return o.sent(),r.message.error(y("Failed to download file")),[3,4];case 4:return[2]}})}),function(e){return u.apply(this,arguments)}),[d,h,y]);if("boolean"!=typeof c)return t().createElement(o,_(I({},l),{onDownload:x}));var E=el(d),S="number"==typeof p&&!!v&&p>0,k="number"==typeof p&&!!v&&p<m.length-1;return t().createElement(r.Modal,{open:c,title:t().createElement(ey,{file:d,title:E}),onCancel:function(){null==s||s(!1),null==f||f(),w("visual")},footer:t().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",width:"100%"}},t().createElement("div",{key:"left-actions"},t().createElement(r.Button,{onClick:function(){return w(function(e){return"visual"===e?"raw":"visual"})}},"visual"===b?y("View Raw Parsed Text"):y("View Visual Preview"))),t().createElement(r.Space,{size:14,style:{fontSize:"20px"}},t().createElement(n.LeftOutlined,{style:{cursor:S?"pointer":"not-allowed"},onClick:function(){return S&&(null==v?void 0:v(p-1))}}),t().createElement(n.RightOutlined,{style:{cursor:k?"pointer":"not-allowed"},onClick:function(){return k&&(null==v?void 0:v(p+1))}}),t().createElement(n.DownloadOutlined,{onClick:function(){return x(d)}}))),width:"90%",centered:!0},t().createElement("div",{style:{maxWidth:"100%",maxHeight:"calc(100vh - 256px)",height:"80vh",width:"100%",background:"white",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",overflowY:"auto"}},"raw"===b?t().createElement(eC,{file:d}):t().createElement(o,_(I({},l),{onDownload:x}))))}};function eC(o){var l=o.file,u=(0,i.useAPIClient)(),c=a(),s=L((0,e.useState)(""),2),f=s[0],d=s[1],p=L((0,e.useState)(!0),2),m=p[0],v=p[1],h=L((0,e.useState)(null),2),y=h[0],g=h[1],b=(0,i.useComponent)("MarkdownVditor"),w=(0,i.useComponent)("Markdown.Void");return((0,e.useEffect)(function(){var e=!1;return T(function(){var t,n,r,i,o,a,c,s,f,p;return z(this,function(m){switch(m.label){case 0:v(!0),g(null),m.label=1;case 1:return m.trys.push([1,4,,5]),[4,es(l,(null==(t=u.auth)?void 0:t.token)||"")];case 2:if(i=m.sent(),e)return[2];return(o=new FormData).append("file",i,el(l)),o.append("attachment",JSON.stringify(eu(l))),[4,u.request({url:"filePreviewAuth:getContent",method:"post",data:o,headers:{"Content-Type":"multipart/form-data"}})];case 3:if(a=m.sent(),e)return[2];return s=c=(null==a||null==(r=a.data)||null==(n=r.data)?void 0:n.content)||"",(f=c.match(/<file_preview[^>]*>([\s\S]*?)<\/file_preview>/i))&&(s=f[1].trim()),d(s),v(!1),[3,5];case 4:if(p=m.sent(),e)return[2];return g(p.message||"Failed to fetch raw text"),v(!1),[3,5];case 5:return[2]}})})(),function(){e=!0}},[l,u]),m)?t().createElement(r.Spin,{size:"large",tip:c("Extracting raw text..."),style:{marginTop:"40px"}}):y?t().createElement(r.Alert,{type:"error",message:y,style:{width:"100%",margin:"20px"}}):f?t().createElement("div",{style:{width:"100%",height:"100%",display:"flex",flexDirection:"column",position:"relative"}},t().createElement("span",{onClick:function(){if(navigator.clipboard&&navigator.clipboard.writeText)navigator.clipboard.writeText(f).then(function(){r.message.success(c("Copied to clipboard"))}).catch(function(e){r.message.error(c("Failed to copy")),console.error("Copy error",e)});else{var e=document.createElement("textarea");e.value=f,document.body.appendChild(e),e.select();try{document.execCommand("copy"),r.message.success(c("Copied to clipboard"))}catch(e){r.message.error(c("Failed to copy"))}document.body.removeChild(e)}},style:{position:"absolute",top:"20px",right:"25px",zIndex:10,cursor:"pointer",padding:"4px 10px",background:"rgba(255, 255, 255, 0.85)",border:"1px solid #e8e8e8",borderRadius:"4px",color:"#1890ff",display:"flex",alignItems:"center",gap:"6px",boxShadow:"0 2px 4px rgba(0,0,0,0.05)",fontSize:"13px"},title:c("Copy")},t().createElement(n.CopyOutlined,null),c("Copy")),t().createElement("div",{style:{flex:1,overflow:"auto",padding:"20px",textAlign:"left"}},t().createElement("style",null,"\n .hide-vditor-toolbar .vditor-toolbar {\n display: none !important;\n }\n .hide-vditor-toolbar .vditor {\n border: none !important;\n }\n "),t().createElement("div",{className:"hide-vditor-toolbar",style:{height:"100%"}},b?t().createElement(b,{value:f,disabled:!1}):w?t().createElement(w,{content:f}):t().createElement("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"monospace",fontSize:"13px"}},f)))):t().createElement(r.Alert,{type:"info",style:{width:"100%",margin:"20px"},description:c("No text content could be extracted from this file."),showIcon:!0})}function eO(o){var l,u,c=o.index,s=o.list,f=o.onSwitchIndex,d=a(),p=(0,i.useAPIClient)(),m=s[c],v=L((0,e.useState)(!1),2),h=v[0],y=v[1],g=L((0,e.useState)("visual"),2),b=g[0],w=g[1],x=L((0,e.useState)("preview"),2),E=x[0],S=x[1],k=L((0,e.useState)("no-ocr"),2),C=k[0],O=k[1],P=L((0,e.useState)(null),2),j=(P[0],P[1]),A=(0,e.useMemo)(function(){return!!m&&(ee(m)||et(m))},[m]),R=(0,i.useComponent)("OcrVerifyBlock");(0,e.useEffect)(function(){if(null==m?void 0:m.id){var e=!1;return O(m.ocrStatus||"no-ocr"),j(m.ocrData||null),p.resource("attachments").get({filterByTk:m.id}).then(function(t){if(!e){var n,r=null==t||null==(n=t.data)?void 0:n.data;r&&(O(r.ocrStatus||"no-ocr"),j(r.ocrData||null))}}).catch(console.error),function(){e=!0}}},[null==m?void 0:m.id,null==m?void 0:m.ocrData,null==m?void 0:m.ocrStatus,p]),(0,e.useEffect)(function(){if("pending-ocr"===C&&(null==m?void 0:m.id)){var e,t=null,n=!1,i=(e=T(function(){var e,o,l;return z(this,function(a){switch(a.label){case 0:return a.trys.push([0,2,,3]),[4,p.resource("attachments").get({filterByTk:m.id})];case 1:if(o=a.sent(),n)return[2];return(l=null==o||null==(e=o.data)?void 0:e.data)&&("pending-ocr"!==l.ocrStatus?(O(l.ocrStatus||"no-ocr"),j(l.ocrData||null),r.message.success(d("OCR processing completed!"))):t=setTimeout(i,3e3)),[3,3];case 2:return console.error("Polling error",a.sent()),t=setTimeout(i,3e3),[3,3];case 3:return[2]}})}),function(){return e.apply(this,arguments)});return t=setTimeout(i,3e3),function(){n=!0,t&&clearTimeout(t)}}},[C,null==m?void 0:m.id,p,d]);var I=(l=T(function(){var e;return z(this,function(t){switch(t.label){case 0:if(!(null==m?void 0:m.id))return[2];t.label=1;case 1:return t.trys.push([1,3,,4]),O("pending-ocr"),[4,p.request({url:"filePreviewAuth:runOcr",method:"post",data:{attachmentId:m.id}})];case 2:return t.sent(),r.message.info(d("OCR process started in the background.")),[3,4];case 3:return e=t.sent(),r.message.error((null==e?void 0:e.message)||d("Failed to start OCR process.")),O("no-ocr"),[3,4];case 4:return[2]}})}),function(){return l.apply(this,arguments)}),_=(0,e.useCallback)((u=T(function(e){var t,n,i,o;return z(this,function(l){switch(l.label){case 0:null==e||null==(t=e.preventDefault)||t.call(e),null==e||null==(n=e.stopPropagation)||n.call(e),o=(null==(i=p.auth)?void 0:i.token)||"",y(!0),l.label=1;case 1:return l.trys.push([1,3,4,5]),[4,ed(m,o)];case 2:return l.sent(),[3,5];case 3:return l.sent(),r.message.error(d("Failed to download file")),[3,5];case 4:return y(!1),[7];case 5:return[2]}})}),function(e){return u.apply(this,arguments)}),[m,p,d]),F=(0,e.useCallback)(function(){f(null),w("visual"),S("preview")},[f]),D=(0,e.useMemo)(function(){return ee(m)?eg:et(m)?eb:en(m)?ew:er(m)?ex:ei(m)?eE:eo(m)?eS:null},[m]),B=null!=D||"raw"===b,W=[{key:"preview",label:t().createElement("span",null,t().createElement(n.EyeOutlined,null)," ",d("Visual Preview")),children:t().createElement("div",{style:{height:"70vh",width:"100%",overflow:"auto",background:"#f5f5f5",display:"flex",justifyContent:"center",alignItems:"center"}},D?t().createElement(D,{file:m}):null)},{key:"ocr",label:t().createElement("span",null,t().createElement(n.ScanOutlined,null)," ",d("OCR & Verify")),children:t().createElement("div",{style:{height:"70vh",width:"100%",display:"flex",flexDirection:"column"}},"no-ocr"===C&&t().createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"100%",padding:"40px",background:"#fafafa",borderRadius:"8px"}},t().createElement(n.ScanOutlined,{style:{fontSize:"64px",color:"#1890ff",marginBottom:"20px"}}),t().createElement("h3",{style:{fontSize:"18px",fontWeight:600,marginBottom:"10px"}},d("Word-level Song ngữ (English & Vietnamese) OCR")),t().createElement("p",{style:{color:"#8c8c8c",maxWidth:"480px",textAlign:"center",marginBottom:"24px"}},d("Chưa c\xf3 dữ liệu OCR cấp độ Từ (Word-level) cho tệp n\xe0y. H\xe3y chạy nhận dạng Tesseract-OCR để bắt đầu đối so\xe1t v\xe0 verify toạ độ.")),t().createElement(r.Button,{type:"primary",size:"large",icon:t().createElement(n.ThunderboltOutlined,null),onClick:I},d("Run Tesseract OCR"))),"pending-ocr"===C&&t().createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"100%",padding:"40px"}},t().createElement(r.Spin,{size:"large",tip:d("Analyzing layout structure and running song ngữ OCR...")}),t().createElement("p",{style:{color:"#8c8c8c",marginTop:"20px",fontSize:"13px",textAlign:"center"}},d("Extracting word-level coordinates via Tesseract-OCR. This will automatically refresh when complete."))),("waiting-verify"===C||"verified"===C)&&t().createElement("div",{style:{flex:1,height:"100%",overflow:"hidden"}},R?t().createElement(R,{collection:"attachments",recordId:m.id,pdfField:"url",jsonField:"ocrData",statusField:"ocrStatus"}):t().createElement("div",{style:{padding:"20px"}},t().createElement(r.Alert,{type:"error",message:d("Plugin OCR Verify Block is not enabled"),description:d("Please enable the plugin-ocr-verify-block plugin to display the verify splitter layout."),showIcon:!0}))))}];return t().createElement(r.Modal,{open:null!=c,title:t().createElement(ey,{file:m,title:(null==m?void 0:m.title)||(null==m?void 0:m.filename)||(null==m?void 0:m.name)||"File",ocrStatus:C,isOcrSupported:A}),onCancel:F,footer:t().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",width:"100%"}},t().createElement("div",{key:"left-actions"},!A&&t().createElement(r.Button,{onClick:function(){return w(function(e){return"visual"===e?"raw":"visual"})}},"visual"===b?d("View Raw Parsed Text"):d("View Visual Preview"))),t().createElement(r.Space,null,t().createElement(r.Button,{key:"download",onClick:_,loading:h},d("Download")),t().createElement(r.Button,{key:"close",onClick:F},d("Close")))),width:B?"90%":520,centered:!0},A?t().createElement(r.Tabs,{activeKey:E,onChange:function(e){return S(e)},items:W,style:{width:"100%",height:"100%"}}):t().createElement("div",{style:{maxWidth:"100%",maxHeight:B?"calc(100vh - 256px)":"auto",height:B?"70vh":"auto",width:"100%",background:"white",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",overflowY:"auto"}},"raw"===b?t().createElement(eC,{file:m}):D?t().createElement(D,{file:m}):t().createElement(r.Alert,{type:"info",style:{width:"100%"},description:d("This file type cannot be previewed. Click Download to save the file."),showIcon:!0})))}function eP(n){var o=n.file,l=(0,i.useAPIClient)(),u=a(),c=(0,e.useCallback)(T(function(){var e,t;return z(this,function(n){switch(n.label){case 0:t=(null==(e=l.auth)?void 0:e.token)||"",n.label=1;case 1:return n.trys.push([1,3,,4]),[4,ed(o,t)];case 2:return n.sent(),[3,4];case 3:return n.sent(),r.message.error(u("Failed to download file")),[3,4];case 4:return[2]}})}),[o,l,u]);return t().createElement(r.Alert,{type:"info",style:{width:"100%"},description:t().createElement("span",null,u("This file type cannot be previewed. ")," ",t().createElement("a",{onClick:c,style:{textDecoration:"underline",cursor:"pointer"}},u("Download"))),showIcon:!0})}var ej=function(e){var l;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function a(){var e,t;if(!(this instanceof a))throw TypeError("Cannot call a class as a function");return e=a,t=arguments,e=R(e),function(e,t){var n;if(t&&("object"==((n=t)&&"undefined"!=typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,B()?Reflect.construct(e,t||[],R(this).constructor):e.apply(this,t))}return a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),e&&F(a,e),l=[{key:"load",value:function(){var e=this;return T(function(){return z(this,function(l){return!function(e){try{i=e.pm.get("ai")}catch(e){return}var i,o,l=null==i?void 0:i.aiManager;if(null==l?void 0:l.registerWorkContext)try{(null==(o=l.getWorkContext)?void 0:o.call(l,w))||l.registerWorkContext(w,{name:w,tag:{Component:function(e){var i=e.item;return t().createElement(r.Space,null,t().createElement(n.FileTextOutlined,null),t().createElement("span",null,(null==i?void 0:i.title)||""))}},chatbox:{Component:function(e){var i=e.item;return t().createElement(r.Space,null,t().createElement(n.FileTextOutlined,null),t().createElement("span",null,(null==i?void 0:i.title)||""))}}})}catch(e){}}(e.app),i.attachmentFileTypes.add({match:function(){return!0},Previewer:eO}),o.filePreviewTypes.add({match:function(){return!0},Previewer:ek(eP)}),o.filePreviewTypes.add({match:ee,Previewer:ek(eg)}),o.filePreviewTypes.add({match:et,getThumbnailURL:function(e){return(null==e?void 0:e.url)||(null==e?void 0:e.preview)||null},Previewer:ek(eb)}),o.filePreviewTypes.add({match:en,Previewer:ek(ew)}),o.filePreviewTypes.add({match:er,Previewer:ek(ex)}),o.filePreviewTypes.add({match:ei,Previewer:ek(eE)}),o.filePreviewTypes.add({match:eo,Previewer:ek(eS)}),[2]})})()}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(a.prototype,l),a}(D(i.Plugin)),eT=ej}(),v}()});
10
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@nocobase/plugin-ai/client"),require("@nocobase/plugin-file-manager/client"),require("@nocobase/client"),require("react"),require("@ant-design/icons"),require("antd")):"function"==typeof define&&define.amd?define("plugin-file-preview-auth",["@nocobase/plugin-ai/client","@nocobase/plugin-file-manager/client","@nocobase/client","react","@ant-design/icons","antd"],t):"object"==typeof exports?exports["plugin-file-preview-auth"]=t(require("@nocobase/plugin-ai/client"),require("@nocobase/plugin-file-manager/client"),require("@nocobase/client"),require("react"),require("@ant-design/icons"),require("antd")):e["plugin-file-preview-auth"]=t(e["@nocobase/plugin-ai/client"],e["@nocobase/plugin-file-manager/client"],e["@nocobase/client"],e.react,e["@ant-design/icons"],e.antd)}(self,function(e,t,n,r,i,l){return function(){var o,a,u,c,s,f,d={41:function(e){e.exports=function(e,t){return"undefined"!=typeof __deoptimization_sideEffect__&&__deoptimization_sideEffect__(e,t),t}},482:function(e){"use strict";e.exports=i},772:function(e){"use strict";e.exports=n},645:function(t){"use strict";t.exports=e},183:function(e){"use strict";e.exports=t},721:function(e){"use strict";e.exports=l},156:function(e){"use strict";e.exports=r}},p={};function m(e){var t=p[e];if(void 0!==t)return t.exports;var n=p[e]={exports:{}};return d[e](n,n.exports,m),n.exports}m.m=d,m.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return m.d(t,{a:t}),t},m.d=function(e,t){for(var n in t)m.o(t,n)&&!m.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},m.f={},m.e=function(e){return Promise.all(Object.keys(m.f).reduce(function(t,n){return m.f[n](e,t),t},[]))},m.u=function(e){return""+e+"."+({166:"17caa11c2ba40313",351:"0f0ce45c92425c8f",374:"96762d13b15e7467",514:"2a8b6aa0d2fcd4b2"})[e]+".js"},m.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),m.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o={},a="plugin-file-preview-auth:",m.l=function(e,t,n,r){if(o[e])return void o[e].push(t);if(void 0!==n)for(var i,l,u=document.getElementsByTagName("script"),c=0;c<u.length;c++){var s=u[c];if(s.getAttribute("src")==e||s.getAttribute("data-webpack")==a+n){i=s;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,m.nc&&i.setAttribute("nonce",m.nc),i.setAttribute("data-webpack",a+n),i.src=e),o[e]=[t];var f=function(t,n){i.onerror=i.onload=null,clearTimeout(d);var r=o[e];if(delete o[e],i.parentNode&&i.parentNode.removeChild(i),r&&r.forEach(function(e){return e(n)}),t)return t(n)},d=setTimeout(f.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.bind(null,i.onload),l&&document.head.appendChild(i)},m.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(u=window.__webpack_public_path__||"/").endsWith("/")||(u+="/"),m.p=u+"static/plugins/plugin-file-preview-auth/dist/client/",c={909:0},m.f.j=function(e,t){var n=m.o(c,e)?c[e]:void 0;if(0!==n)if(n)t.push(n[2]);else{var r=new Promise(function(t,r){n=c[e]=[t,r]});t.push(n[2]=r);var i=m.p+m.u(e),l=Error();m.l(i,function(t){if(m.o(c,e)&&(0!==(n=c[e])&&(c[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+r+": "+i+")",l.name="ChunkLoadError",l.type=r,l.request=i,n[1](l)}},"chunk-"+e,e)}},s=function(e,t){var n,r,i=t[0],l=t[1],o=t[2],a=0;if(i.some(function(e){return 0!==c[e]})){for(n in l)m.o(l,n)&&(m.m[n]=l[n]);o&&o(m)}for(e&&e(t);a<i.length;a++)r=i[a],m.o(c,r)&&c[r]&&c[r][0](),c[r]=0},(f=self.webpackChunkplugin_file_preview_auth=self.webpackChunkplugin_file_preview_auth||[]).forEach(s.bind(null,0)),f.push=s.bind(null,f.push.bind(f));var v={};return!function(){"use strict";m.r(v),m.d(v,{default:function(){return eR},PluginFilePreviewAuthClient:function(){return eA}});var e=m(156),t=m.n(e),n=m(482),r=m(721),i=m(772),l=m(183),o=JSON.parse('{"u2":"plugin-file-preview-auth"}');function a(){var e=(0,i.useApp)();return function(t){return e.i18n.t(t,{ns:[o.u2,"client"]})}}var u=m(645);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function s(e,t,n,r,i,l,o){try{var a=e[l](o),u=a.value}catch(e){n(e);return}a.done?t(u):Promise.resolve(u).then(r,i)}function f(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var l=[],o=!0,a=!1;try{for(i=i.call(e);!(o=(n=i.next()).done)&&(l.push(n.value),!t||l.length!==t);o=!0);}catch(e){a=!0,r=e}finally{try{o||null==i.return||i.return()}finally{if(a)throw r}}return l}}(e,t)||g(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||g(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}}function b(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(b=function(){return!!e})()}var w="file-preview",x="plugin-file-preview-auth.aiEmployee";function E(e){return e?e.title&&e.extname?"".concat(e.title).concat(e.extname):e.filename||e.name||e.title||"file":"file"}var k=function(e){var t,n;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function r(e){var t,n,i;if(!(this instanceof r))throw TypeError("Cannot call a class as a function");return n=r,i=[e],n=d(n),(t=function(e,t){var n;if(t&&("object"==((n=t)&&"undefined"!=typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,b()?Reflect.construct(n,i||[],d(this).constructor):n.apply(this,i))).state={hasError:!1},t}return r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),e&&p(r,e),n=[{key:"getDerivedStateFromError",value:function(){return{hasError:!0}}}],t=[{key:"render",value:function(){return this.state.hasError?null:this.props.children}}],f(r.prototype,t),n&&f(r,n),r}(t().Component),S=function(i){var l,o,c=i.file,f=a(),d=(0,u.useAIConfigRepository)(),p=(0,u.useChatBoxActions)().triggerTask,m=h((0,e.useState)([]),2),v=m[0],g=m[1],b=h((0,e.useState)(!1),2),k=b[0],S=b[1],C=h((0,e.useState)(!1),2),O=C[0],P=C[1];(0,e.useEffect)(function(){var e=!1;if(null==d?void 0:d.getAIEmployees){var t=d.aiEmployees||[];return t.length?void g(y(t)):(S(!0),d.getAIEmployees().then(function(t){e||g(y(t||[]))}).catch(function(){e||g([])}).finally(function(){e||S(!1)}),function(){e=!0})}},[d]);var j=(0,e.useMemo)(function(){var e=function(){try{return window.localStorage.getItem(x)||""}catch(e){return""}}();return e?y(v).sort(function(t,n){return t.username===e?-1:+(n.username===e)}):v},[v]),T=(0,e.useCallback)((l=function(e){return function(e,t){var n,r,i,l,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return l={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function a(l){return function(a){var u=[l,a];if(n)throw TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(i=2&u[0]?r.return:u[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,u[1])).done)return i;switch(r=0,i&&(u=[2&u[0],i.value]),u[0]){case 0:case 1:i=u;break;case 4:return o.label++,{value:u[1],done:!1};case 5:o.label++,r=u[1],u=[0];continue;case 7:u=o.ops.pop(),o.trys.pop();continue;default:if(!(i=(i=o.trys).length>0&&i[i.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!i||u[1]>i[0]&&u[1]<i[3])){o.label=u[1];break}if(6===u[0]&&o.label<i[1]){o.label=i[1],i=u;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(u);break}i[2]&&o.ops.pop(),o.trys.pop();continue}u=t.call(e,o)}catch(e){u=[6,e],r=0}finally{n=i=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(t){switch(t.label){case 0:if(!e||!c)return[2];P(!0),t.label=1;case 1:t.trys.push([1,3,4,5]);var n,i,l,o,a,u=e.username;try{window.localStorage.setItem(x,u)}catch(e){}return[4,p({aiEmployee:e,tasks:[{title:E(c),message:{user:f("Please help me analyze the file currently open in preview."),workContext:[{type:w,uid:(a=null!=(o=null!=(l=null!=(i=null!=(n=null==c?void 0:c.id)?n:null==c?void 0:c.uid)?i:null==c?void 0:c.url)?l:null==c?void 0:c.path)?o:E(c),"file-preview:".concat(String(a))),title:E(c),content:{source:"plugin-file-preview-auth",file:{id:null==c?void 0:c.id,uid:null==c?void 0:c.uid,url:null==c?void 0:c.url,preview:null==c?void 0:c.preview,filename:(null==c?void 0:c.filename)||(null==c?void 0:c.name),name:(null==c?void 0:c.name)||(null==c?void 0:c.filename),title:null==c?void 0:c.title,extname:null==c?void 0:c.extname,mimetype:null==c?void 0:c.mimetype,size:null==c?void 0:c.size,path:null==c?void 0:c.path,storageId:null==c?void 0:c.storageId}}}]},autoSend:!1}]})];case 2:return t.sent(),[3,5];case 3:return t.sent(),r.message.error(f("Failed to open AI chat")),[3,5];case 4:return P(!1),[7];case 5:return[2]}})},o=function(){var e=this,t=arguments;return new Promise(function(n,r){var i=l.apply(e,t);function o(e){s(i,n,r,o,a,"next",e)}function a(e){s(i,n,r,o,a,"throw",e)}o(void 0)})},function(e){return o.apply(this,arguments)}),[c,f,p]),A=j.map(function(e){return{key:e.username,label:(null==e?void 0:e.nickname)||(null==e?void 0:e.username)||"",onClick:function(){return T(e)}}});return k||j.length?1===j.length?t().createElement(r.Tooltip,{title:f("Ask AI")},t().createElement(r.Button,{type:"text",size:"small",icon:t().createElement(n.RobotOutlined,null),loading:O||k,onClick:function(e){e.stopPropagation(),T(j[0])}},f("Ask AI"))):t().createElement(r.Tooltip,{title:f("Ask AI")},t().createElement(r.Dropdown,{menu:{items:A},trigger:["click"],placement:"bottomRight",disabled:O||k},t().createElement(r.Button,{type:"text",size:"small",icon:t().createElement(n.RobotOutlined,null),loading:O||k,onClick:function(e){return e.stopPropagation()}},f("Ask AI")))):null},C=function(e){var n=e.file;return t().createElement(k,null,t().createElement(S,{file:n}))},O=m(41);function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function j(e,t,n,r,i,l,o){try{var a=e[l](o),u=a.value}catch(e){n(e);return}a.done?t(u):Promise.resolve(u).then(r,i)}function T(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var l=e.apply(t,n);function o(e){j(l,r,i,o,a,"next",e)}function a(e){j(l,r,i,o,a,"throw",e)}o(void 0)})}}function A(e,t,n){return(A=z()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&F(i,n.prototype),i}).apply(null,arguments)}function R(e){return(R=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function I(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}function _(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function F(e,t){return(F=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function B(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var l=[],o=!0,a=!1;try{for(i=i.call(e);!(o=(n=i.next()).done)&&(l.push(n.value),!t||l.length!==t);o=!0);}catch(e){a=!0,r=e}finally{try{o||null==i.return||i.return()}finally{if(a)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return P(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return P(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function L(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function D(e){var t="function"==typeof Map?new Map:void 0;return(D=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return A(e,arguments,R(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),F(n,e)})(e)}function z(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(z=function(){return!!e})()}function U(e,t){var n,r,i,l,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return l={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function a(l){return function(a){var u=[l,a];if(n)throw TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(i=2&u[0]?r.return:u[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,u[1])).done)return i;switch(r=0,i&&(u=[2&u[0],i.value]),u[0]){case 0:case 1:i=u;break;case 4:return o.label++,{value:u[1],done:!1};case 5:o.label++,r=u[1],u=[0];continue;case 7:u=o.ops.pop(),o.trys.pop();continue;default:if(!(i=(i=o.trys).length>0&&i[i.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!i||u[1]>i[0]&&u[1]<i[3])){o.label=u[1];break}if(6===u[0]&&o.label<i[1]){o.label=i[1],i=u;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(u);break}i[2]&&o.ops.pop(),o.trys.pop();continue}u=t.call(e,o)}catch(e){u=[6,e],r=0}finally{n=i=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}var M=["application/pdf"],W=["image/png","image/jpeg","image/gif","image/webp","image/svg+xml","image/bmp"],N=["text/plain","text/csv","text/html","text/css","text/javascript","application/json","application/xml","text/xml","text/yaml","application/x-yaml"],q=["application/vnd.openxmlformats-officedocument.wordprocessingml.document"],V=["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-excel"],H=["pdf"],X=["png","jpg","jpeg","gif","webp","svg","bmp"],G=["txt","csv","html","css","js","json","xml","log","md","yaml","yml","xaml"],J=["docx"],Y=["xlsx","xls"],$=["application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.ms-powerpoint"],K=["pptx","ppt"];function Q(e){if(!e||"string"==typeof e)return e;var t,n,r,i,l,o,a,u,c,s,f,d,p,m=e.response;return m&&(void 0===m?"undefined":L(m))==="object"?_(I({},m,e),{id:null!=(t=e.id)?t:m.id,uid:null!=(n=e.uid)?n:m.uid,url:null!=(r=e.url)?r:m.url,preview:e.preview||m.preview,filename:null!=(i=e.filename)?i:m.filename,name:null!=(l=e.name)?l:m.name,title:null!=(o=e.title)?o:m.title,extname:null!=(a=e.extname)?a:m.extname,mimetype:null!=(u=e.mimetype)?u:m.mimetype,size:null!=(c=e.size)?c:m.size,path:null!=(s=e.path)?s:m.path,storageId:null!=(f=e.storageId)?f:m.storageId,collectionName:null!=(d=e.collectionName)?d:m.collectionName,lastModified:null!=(p=e.lastModified)?p:m.lastModified}):e}var Z=function(e){var t=Q(e),n=("string"==typeof t?t:(null==t?void 0:t.extname)||(null==t?void 0:t.name)||(null==t?void 0:t.filename)||(null==t?void 0:t.url)||"").split("?")[0].split("#")[0],r=n.lastIndexOf(".");return -1!==r?n.slice(r+1).toLowerCase().replace(/^\./,""):""},ee=function(e){var t=Q(e),n="string"==typeof t?t:(null==t?void 0:t.url)||(null==t?void 0:t.preview)||(null==t?void 0:t.path);return n?n.startsWith("https://")||n.startsWith("http://")?n:"".concat(location.origin,"/").concat(n.replace(/^\//,"")):""},et=function(e){if("string"==typeof e)return e;var t=Q(e);return t?[t.id,t.uid,t.url,t.preview,t.path,t.storageId,t.collectionName,t.lastModified,t.size].filter(function(e){return null!=e&&""!==e}).join(":"):""},en=function(e){var t=Q(e);if((null==t?void 0:t.mimetype)&&M.includes(t.mimetype))return!0;var n=Z(e);return!!n&&H.includes(n)},er=function(e){var t=Q(e);if((null==t?void 0:t.mimetype)&&W.includes(t.mimetype)||(null==t?void 0:t.mimetype)&&(0,i.matchMimetype)(t,"image/*"))return!0;var n=Z(e);return!!n&&X.includes(n)},ei=function(e){var t=Q(e);if((null==t?void 0:t.mimetype)&&N.includes(t.mimetype))return!0;var n=Z(e);return!!n&&G.includes(n)},el=function(e){var t=Q(e);if((null==t?void 0:t.mimetype)&&q.includes(t.mimetype))return!0;var n=Z(e);return!!n&&J.includes(n)},eo=function(e){var t=Q(e);if((null==t?void 0:t.mimetype)&&V.includes(t.mimetype))return!0;var n=Z(e);return!!n&&Y.includes(n)},ea=function(e){var t=Q(e);if((null==t?void 0:t.mimetype)&&$.includes(t.mimetype))return!0;var n=Z(e);return!!n&&K.includes(n)},eu=function(e){var t=Q(e);return t?t.title&&t.extname?"".concat(t.title).concat(t.extname):t.filename||t.name||t.title||"download":"download"},ec=new Map;function es(e){var t=Q(e);return{id:null==t?void 0:t.id,uid:null==t?void 0:t.uid,url:null==t?void 0:t.url,preview:null==t?void 0:t.preview,filename:(null==t?void 0:t.filename)||(null==t?void 0:t.name),name:(null==t?void 0:t.name)||(null==t?void 0:t.filename),title:null==t?void 0:t.title,extname:null==t?void 0:t.extname,mimetype:null==t?void 0:t.mimetype,size:null==t?void 0:t.size,path:null==t?void 0:t.path,storageId:null==t?void 0:t.storageId,collectionName:null==t?void 0:t.collectionName,lastModified:null==t?void 0:t.lastModified}}function ef(){return(ef=T(function(e,t){var n,r;return U(this,function(i){switch(i.label){case 0:return n={},t&&(n.Authorization="Bearer ".concat(t)),[4,fetch(e,{method:"GET",headers:n,credentials:"include"})];case 1:if(!(r=i.sent()).ok)throw Error("Failed to fetch file: ".concat(r.status," ").concat(r.statusText));return[2,r.blob()]}})})).apply(this,arguments)}function ed(e,t){return ep.apply(this,arguments)}function ep(){return(ep=T(function(e,t){var n,r,i;return U(this,function(l){if(!(n=function(e){var t=es("string"==typeof e?{url:e}:e||{}),n=ee(e);if(n&&function(e){if(!e)return!1;try{var t=new URL(e,location.origin);if(t.origin!==location.origin)return!1;return["/api/filePreviewAuth:download","/api/extStorage:download","/api/skillHub:download","/api/worker-monitor","/api/carboneTemplates:download","/api/attachments:stream"].some(function(e){return t.pathname===e||t.pathname.startsWith("".concat(e,"/"))||t.pathname.startsWith("".concat(e,":"))})}catch(e){return!1}}(n))return n;var r=t.id||t.uid;if(null!=r){var i=t.collectionName||"attachments";return"/api/attachments:stream?filterByTk=".concat(r,"&collection=").concat(i)}return n||""}(e))||n.endsWith("?"))throw Error("No file URL");return r="".concat(t?"auth":"anon",":").concat(t||"",":").concat(et(e)||n),(i=ec.get(r))||(i=(function(e,t){return ef.apply(this,arguments)})(n,t).catch(function(e){throw ec.delete(r),e}),ec.set(r,i)),[2,i]})})).apply(this,arguments)}function em(e,t){return ev.apply(this,arguments)}function ev(){return(ev=T(function(e,t){var n,r,i,l;return U(this,function(o){switch(o.label){case 0:return[4,ed(e,t)];case 1:return n=o.sent(),r=eu(e),(i=document.createElement("a")).href=l=URL.createObjectURL(n),i.download=r,document.body.appendChild(i),i.click(),document.body.removeChild(i),setTimeout(function(){return URL.revokeObjectURL(l)},1e3),[2]}})})).apply(this,arguments)}function eh(t,n){var r=B((0,e.useState)(null),2),i=r[0],l=r[1],o=B((0,e.useState)(!0),2),a=o[0],u=o[1],c=B((0,e.useState)(null),2),s=c[0],f=c[1],d=(0,e.useRef)(null),p=(0,e.useRef)(t);p.current=t;var m=et(t);return(0,e.useEffect)(function(){var e=!1,t=p.current;if(!(ee(t)||"string"!=typeof t&&((null==t?void 0:t.id)||(null==t?void 0:t.uid)))){u(!1),f("No file URL");return}return u(!0),f(null),ed(t,n).then(function(t){if(!e){var n=URL.createObjectURL(t);d.current=n,l(n),u(!1)}}).catch(function(t){e||(f(t.message||"Failed to load"),u(!1))}),function(){e=!0,d.current&&(URL.revokeObjectURL(d.current),d.current=null)}},[m,n]),{blobUrl:i,loading:a,error:s}}function ey(e){var n=e.message;return t().createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",width:"100%"}},t().createElement(r.Spin,{tip:n}))}function eg(e){var n=e.message;return t().createElement("div",{style:{padding:20,textAlign:"center",color:"#ff4d4f"}},n)}function eb(e){var i=e.file,l=e.title,o=e.ocrStatus,u=e.isOcrSupported,c=a();return t().createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,paddingRight:40}},t().createElement(r.Space,{size:8,style:{minWidth:0,overflow:"hidden"}},t().createElement("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontWeight:600},title:l},l),function(){if(!u||!o)return null;switch(o){case"pending-ocr":return t().createElement(r.Tag,{color:"processing",icon:t().createElement(n.SyncOutlined,{spin:!0})},c("OCR Pending"));case"waiting-verify":return t().createElement(r.Tag,{color:"warning",icon:t().createElement(n.ClockCircleOutlined,null)},c("Waiting Verify"));case"verified":return t().createElement(r.Tag,{color:"success",icon:t().createElement(n.CheckCircleOutlined,null)},c("OCR Verified"));default:return t().createElement(r.Tag,{color:"default"},c("No OCR"))}}()),t().createElement(C,{file:i}))}function ew(e){var n,r=e.file,l=(0,i.useAPIClient)(),o=a(),u=eh(r,(null==(n=l.auth)?void 0:n.token)||""),c=u.blobUrl,s=u.loading,f=u.error;return s?t().createElement(ey,{message:o("Loading preview...")}):f||!c?t().createElement(eg,{message:o("Failed to load file preview")}):t().createElement("iframe",{src:c,width:"100%",height:"100%",style:{border:"none"}})}function ex(e){var n,r=e.file,l=(0,i.useAPIClient)(),o=a(),u=eh(r,(null==(n=l.auth)?void 0:n.token)||""),c=u.blobUrl,s=u.loading,f=u.error;return s?t().createElement(ey,{message:o("Loading preview...")}):f||!c?t().createElement(eg,{message:o("Failed to load file preview")}):t().createElement("img",{src:c,style:{maxWidth:"100%",maxHeight:"100%",objectFit:"contain"},alt:(null==r?void 0:r.title)||(null==r?void 0:r.filename)||""})}function eE(n){var r,l,o,u,c,s,f,d,p,m,v,h,y=n.file,g=(0,i.useAPIClient)(),b=a(),w=(null==(h=g.auth)?void 0:h.token)||"",x=(l=(r=B((0,e.useState)(null),2))[0],o=r[1],c=(u=B((0,e.useState)(!0),2))[0],s=u[1],d=(f=B((0,e.useState)(null),2))[0],p=f[1],(m=(0,e.useRef)(y)).current=y,v=et(y),(0,e.useEffect)(function(){var e=!1,t=m.current;if(!(ee(t)||"string"!=typeof t&&((null==t?void 0:t.id)||(null==t?void 0:t.uid)))){s(!1),p("No file URL");return}return s(!0),p(null),ed(t,w).then(function(e){return e.text()}).then(function(t){e||(o(t),s(!1))}).catch(function(t){e||(p(t.message||"Failed to load"),s(!1))}),function(){e=!0}},[v,w]),{text:l,loading:c,error:d}),E=x.text,k=x.loading,S=x.error;return k?t().createElement(ey,{message:b("Loading preview...")}):S||null===E?t().createElement(eg,{message:b("Failed to load file preview")}):t().createElement("pre",{style:{width:"100%",height:"100%",overflow:"auto",padding:16,margin:0,fontSize:13,lineHeight:1.6,whiteSpace:"pre-wrap",wordWrap:"break-word",background:"#f5f5f5",border:"none"}},E)}function ek(n){var r,l=n.file,o=(0,i.useAPIClient)(),u=a(),c=(null==(r=o.auth)?void 0:r.token)||"",s=(0,e.useRef)(null),f=(0,e.useRef)(l);f.current=l;var d=et(l),p=B((0,e.useState)(!0),2),v=p[0],h=p[1],y=B((0,e.useState)(null),2),g=y[0],b=y[1];return(0,e.useEffect)(function(){var e=!1,t=f.current;if(!(ee(t)||"string"!=typeof t&&((null==t?void 0:t.id)||(null==t?void 0:t.uid)))||!s.current){h(!1),b("No file URL");return}return h(!0),b(null),T(function(){var n,r,i;return U(this,function(l){switch(l.label){case 0:return l.trys.push([0,4,,5]),[4,ed(t,c)];case 1:if(n=l.sent(),e)return[2];return[4,O("imported_-1dm6lbf_component",m.e("374").then(m.bind(m,335)))];case 2:if(r=l.sent(),e||!s.current)return[2];return s.current.innerHTML="",[4,r.renderAsync(n,s.current,void 0,{className:"docx-preview-wrapper",inWrapper:!0,ignoreWidth:!1,ignoreHeight:!1,ignoreFonts:!1,breakPages:!0,ignoreLastRenderedPageBreak:!0,experimental:!1,trimXmlDeclaration:!0,useBase64URL:!0,renderHeaders:!0,renderFooters:!0,renderFootnotes:!0,renderEndnotes:!0})];case 3:return l.sent(),h(!1),[3,5];case 4:if(i=l.sent(),e)return[2];return b(i.message||"Failed to render DOCX"),h(!1),[3,5];case 5:return[2]}})})(),function(){e=!0}},[d,c]),t().createElement("div",{style:{width:"100%",height:"100%",position:"relative"}},v&&t().createElement(ey,{message:u("Loading preview...")}),g&&t().createElement(eg,{message:u("Failed to load file preview")}),t().createElement("div",{ref:s,style:{width:"100%",height:"100%",overflow:"auto",display:v||g?"none":"block"}}))}function eS(n){var r,l=n.file,o=(0,i.useAPIClient)(),u=a(),c=(null==(r=o.auth)?void 0:r.token)||"",s=(0,e.useRef)(null),f=(0,e.useRef)(l);f.current=l;var d=et(l),p=B((0,e.useState)(!0),2),v=p[0],h=p[1],y=B((0,e.useState)(null),2),g=y[0],b=y[1],w=B((0,e.useState)([]),2),x=w[0],E=w[1],k=B((0,e.useState)(""),2),S=k[0],C=k[1],P=B((0,e.useState)({}),2),j=P[0],A=P[1];return(0,e.useEffect)(function(){var e=!1,t=f.current;if(!(ee(t)||"string"!=typeof t&&((null==t?void 0:t.id)||(null==t?void 0:t.uid)))){h(!1),b("No file URL");return}return h(!0),b(null),T(function(){var n,r,i,l,o,a,u,s,f,d,p,v,y,g;return U(this,function(w){switch(w.label){case 0:return w.trys.push([0,4,,5]),[4,ed(t,c)];case 1:if(n=w.sent(),e)return[2];return[4,O("imported_-1lj2ifg_component",m.e("166").then(m.bind(m,907)))];case 2:if(r=w.sent(),e)return[2];return[4,n.arrayBuffer()];case 3:if(i=w.sent(),e)return[2];o=(l=r.read(i,{type:"array"})).SheetNames,a={},u=!0,s=!1,f=void 0;try{for(d=o[Symbol.iterator]();!(u=(p=d.next()).done);u=!0)v=p.value,y=l.Sheets[v],a[v]=r.utils.sheet_to_html(y,{id:"xlsx-preview-table"})}catch(e){s=!0,f=e}finally{try{u||null==d.return||d.return()}finally{if(s)throw f}}if(e)return[2];return E(o),C(o[0]||""),A(a),h(!1),[3,5];case 4:if(g=w.sent(),e)return[2];return b(g.message||"Failed to render XLSX"),h(!1),[3,5];case 5:return[2]}})})(),function(){e=!0}},[d,c]),t().createElement("div",{style:{width:"100%",height:"100%",display:"flex",flexDirection:"column"}},v&&t().createElement(ey,{message:u("Loading preview...")}),g&&t().createElement(eg,{message:u("Failed to load file preview")}),!v&&!g&&t().createElement(t().Fragment,null,x.length>1&&t().createElement("div",{style:{display:"flex",gap:0,borderBottom:"1px solid #e8e8e8",background:"#fafafa",padding:"0 8px",flexShrink:0,overflowX:"auto"}},x.map(function(e){return t().createElement("button",{key:e,onClick:function(){return C(e)},style:{padding:"8px 16px",border:"none",borderBottom:S===e?"2px solid #1890ff":"2px solid transparent",background:S===e?"#fff":"transparent",color:S===e?"#1890ff":"#666",fontWeight:S===e?600:400,cursor:"pointer",fontSize:13,whiteSpace:"nowrap",transition:"all 0.2s"}},e)})),t().createElement("div",{ref:s,style:{flex:1,overflow:"auto",padding:0},dangerouslySetInnerHTML:{__html:j[S]||""}}),t().createElement("style",null,"\n #xlsx-preview-table {\n border-collapse: collapse;\n width: 100%;\n font-size: 13px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n #xlsx-preview-table td,\n #xlsx-preview-table th {\n border: 1px solid #e8e8e8;\n padding: 6px 10px;\n text-align: left;\n max-width: 33vw;\n white-space: normal;\n word-break: break-word;\n }\n #xlsx-preview-table tr:first-child td,\n #xlsx-preview-table tr:first-child th {\n background: #fafafa;\n font-weight: 600;\n position: sticky;\n top: 0;\n z-index: 1;\n }\n #xlsx-preview-table tr:nth-child(even) {\n background: #fafafa;\n }\n #xlsx-preview-table tr:hover {\n background: #f0f7ff;\n }\n ")))}function eC(n){var r,l=n.file,o=(0,i.useAPIClient)(),u=a(),c=(null==(r=o.auth)?void 0:r.token)||"",s=B((0,e.useState)(!0),2),f=s[0],d=s[1],p=B((0,e.useState)(null),2),v=p[0],h=p[1],y=B((0,e.useState)(null),2),g=y[0],b=y[1],w=B((0,e.useState)(null),2),x=w[0],E=w[1],k=(0,e.useRef)(l);k.current=l;var S=et(l);return(0,e.useEffect)(function(){var e=!1,t=k.current;if(!(ee(t)||"string"!=typeof t&&((null==t?void 0:t.id)||(null==t?void 0:t.uid)))){d(!1),h("No file URL");return}return d(!0),h(null),T(function(){var n,r,i,l;return U(this,function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),[4,Promise.all([ed(t,c),O("imported_tpp3om_component",m.e("514").then(m.bind(m,581)))])];case 1:if(r=(n=B.apply(void 0,[o.sent(),2]))[0],i=n[1],e)return[2];return b(r),E(function(){return i.PptxPreview}),d(!1),[3,3];case 2:if(l=o.sent(),e)return[2];return h(l.message||"Failed to render PPTX"),d(!1),[3,3];case 3:return[2]}})})(),function(){e=!0}},[S,c]),t().createElement("div",{style:{width:"100%",height:"100%",position:"relative"}},f&&t().createElement(ey,{message:u("Loading preview...")}),v&&t().createElement(eg,{message:u("Failed to load file preview")}),!f&&!v&&x&&t().createElement("div",{style:{width:"100%",height:"100%",overflow:"auto"}},t().createElement(x,{file:g})))}var eO=function(l){return function(o){var u,c=o.open,s=o.onOpenChange,f=o.onClose,d=o.file,p=o.index,m=o.list,v=o.onSwitchIndex;o.onDownload;var h=(0,i.useAPIClient)(),y=a(),g=B((0,e.useState)("visual"),2),b=g[0],w=g[1],x=(0,e.useCallback)((u=T(function(e){var t,n,i;return U(this,function(l){switch(l.label){case 0:if(!(n=e||d))return[2];i=(null==(t=h.auth)?void 0:t.token)||"",l.label=1;case 1:return l.trys.push([1,3,,4]),[4,em(n,i)];case 2:return l.sent(),[3,4];case 3:return l.sent(),r.message.error(y("Failed to download file")),[3,4];case 4:return[2]}})}),function(e){return u.apply(this,arguments)}),[d,h,y]);if("boolean"!=typeof c)return t().createElement(l,_(I({},o),{onDownload:x}));var E=eu(d),k="number"==typeof p&&!!v&&p>0,S="number"==typeof p&&!!v&&p<m.length-1;return t().createElement(r.Modal,{open:c,title:t().createElement(eb,{file:d,title:E}),onCancel:function(){null==s||s(!1),null==f||f(),w("visual")},footer:t().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",width:"100%"}},t().createElement("div",{key:"left-actions"},t().createElement(r.Button,{onClick:function(){return w(function(e){return"visual"===e?"raw":"visual"})}},"visual"===b?y("View Raw Parsed Text"):y("View Visual Preview"))),t().createElement(r.Space,{size:14,style:{fontSize:"20px"}},t().createElement(n.LeftOutlined,{style:{cursor:k?"pointer":"not-allowed"},onClick:function(){return k&&(null==v?void 0:v(p-1))}}),t().createElement(n.RightOutlined,{style:{cursor:S?"pointer":"not-allowed"},onClick:function(){return S&&(null==v?void 0:v(p+1))}}),t().createElement(n.DownloadOutlined,{onClick:function(){return x(d)}}))),width:"90%",centered:!0},t().createElement("div",{style:{maxWidth:"100%",maxHeight:"calc(100vh - 256px)",height:"80vh",width:"100%",background:"white",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",overflowY:"auto"}},"raw"===b?t().createElement(eP,{file:d}):t().createElement(l,_(I({},o),{onDownload:x}))))}};function eP(l){var o=l.file,u=(0,i.useAPIClient)(),c=a(),s=B((0,e.useState)(""),2),f=s[0],d=s[1],p=B((0,e.useState)(!0),2),m=p[0],v=p[1],h=B((0,e.useState)(null),2),y=h[0],g=h[1],b=(0,i.useComponent)("MarkdownVditor"),w=(0,i.useComponent)("Markdown.Void");return((0,e.useEffect)(function(){var e=!1;return T(function(){var t,n,r,i,l,a,c,s,f,p;return U(this,function(m){switch(m.label){case 0:v(!0),g(null),m.label=1;case 1:return m.trys.push([1,4,,5]),[4,ed(o,(null==(t=u.auth)?void 0:t.token)||"")];case 2:if(i=m.sent(),e)return[2];return(l=new FormData).append("file",i,eu(o)),l.append("attachment",JSON.stringify(es(o))),[4,u.request({url:"filePreviewAuth:getContent",method:"post",data:l,headers:{"Content-Type":"multipart/form-data"}})];case 3:if(a=m.sent(),e)return[2];return s=c=(null==a||null==(r=a.data)||null==(n=r.data)?void 0:n.content)||"",(f=c.match(/<file_preview[^>]*>([\s\S]*?)<\/file_preview>/i))&&(s=f[1].trim()),d(s),v(!1),[3,5];case 4:if(p=m.sent(),e)return[2];return g(p.message||"Failed to fetch raw text"),v(!1),[3,5];case 5:return[2]}})})(),function(){e=!0}},[o,u]),m)?t().createElement(r.Spin,{size:"large",tip:c("Extracting raw text..."),style:{marginTop:"40px"}}):y?t().createElement(r.Alert,{type:"error",message:y,style:{width:"100%",margin:"20px"}}):f?t().createElement("div",{style:{width:"100%",height:"100%",display:"flex",flexDirection:"column",position:"relative"}},t().createElement("span",{onClick:function(){if(navigator.clipboard&&navigator.clipboard.writeText)navigator.clipboard.writeText(f).then(function(){r.message.success(c("Copied to clipboard"))}).catch(function(e){r.message.error(c("Failed to copy")),console.error("Copy error",e)});else{var e=document.createElement("textarea");e.value=f,document.body.appendChild(e),e.select();try{document.execCommand("copy"),r.message.success(c("Copied to clipboard"))}catch(e){r.message.error(c("Failed to copy"))}document.body.removeChild(e)}},style:{position:"absolute",top:"20px",right:"25px",zIndex:10,cursor:"pointer",padding:"4px 10px",background:"rgba(255, 255, 255, 0.85)",border:"1px solid #e8e8e8",borderRadius:"4px",color:"#1890ff",display:"flex",alignItems:"center",gap:"6px",boxShadow:"0 2px 4px rgba(0,0,0,0.05)",fontSize:"13px"},title:c("Copy")},t().createElement(n.CopyOutlined,null),c("Copy")),t().createElement("div",{style:{flex:1,overflow:"auto",padding:"20px",textAlign:"left"}},t().createElement("style",null,"\n .hide-vditor-toolbar .vditor-toolbar {\n display: none !important;\n }\n .hide-vditor-toolbar .vditor {\n border: none !important;\n }\n "),t().createElement("div",{className:"hide-vditor-toolbar",style:{height:"100%"}},b?t().createElement(b,{value:f,disabled:!1}):w?t().createElement(w,{content:f}):t().createElement("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"monospace",fontSize:"13px"}},f)))):t().createElement(r.Alert,{type:"info",style:{width:"100%",margin:"20px"},description:c("No text content could be extracted from this file."),showIcon:!0})}function ej(l){var o,u,c=l.index,s=l.list,f=l.onSwitchIndex,d=a(),p=(0,i.useAPIClient)(),m=s[c],v=B((0,e.useState)(!1),2),h=v[0],y=v[1],g=B((0,e.useState)("visual"),2),b=g[0],w=g[1],x=B((0,e.useState)("preview"),2),E=x[0],k=x[1],S=B((0,e.useState)("no-ocr"),2),C=S[0],O=S[1],P=B((0,e.useState)(null),2),j=(P[0],P[1]),A=(0,e.useMemo)(function(){return!!m&&(en(m)||er(m))},[m]),R=(0,i.useComponent)("OcrVerifyBlock");(0,e.useEffect)(function(){if(null==m?void 0:m.id){var e=!1;return O(m.ocrStatus||"no-ocr"),j(m.ocrData||null),p.resource("attachments").get({filterByTk:m.id}).then(function(t){if(!e){var n,r=null==t||null==(n=t.data)?void 0:n.data;r&&(O(r.ocrStatus||"no-ocr"),j(r.ocrData||null))}}).catch(console.error),function(){e=!0}}},[null==m?void 0:m.id,null==m?void 0:m.ocrData,null==m?void 0:m.ocrStatus,p]),(0,e.useEffect)(function(){if("pending-ocr"===C&&(null==m?void 0:m.id)){var e,t=null,n=!1,i=(e=T(function(){var e,l,o;return U(this,function(a){switch(a.label){case 0:return a.trys.push([0,2,,3]),[4,p.resource("attachments").get({filterByTk:m.id})];case 1:if(l=a.sent(),n)return[2];return(o=null==l||null==(e=l.data)?void 0:e.data)&&("pending-ocr"!==o.ocrStatus?(O(o.ocrStatus||"no-ocr"),j(o.ocrData||null),r.message.success(d("OCR processing completed!"))):t=setTimeout(i,3e3)),[3,3];case 2:return console.error("Polling error",a.sent()),t=setTimeout(i,3e3),[3,3];case 3:return[2]}})}),function(){return e.apply(this,arguments)});return t=setTimeout(i,3e3),function(){n=!0,t&&clearTimeout(t)}}},[C,null==m?void 0:m.id,p,d]);var I=(o=T(function(){var e;return U(this,function(t){switch(t.label){case 0:if(!(null==m?void 0:m.id))return[2];t.label=1;case 1:return t.trys.push([1,3,,4]),O("pending-ocr"),[4,p.request({url:"filePreviewAuth:runOcr",method:"post",data:{attachmentId:m.id}})];case 2:return t.sent(),r.message.info(d("OCR process started in the background.")),[3,4];case 3:return e=t.sent(),r.message.error((null==e?void 0:e.message)||d("Failed to start OCR process.")),O("no-ocr"),[3,4];case 4:return[2]}})}),function(){return o.apply(this,arguments)}),_=(0,e.useCallback)((u=T(function(e){var t,n,i,l;return U(this,function(o){switch(o.label){case 0:null==e||null==(t=e.preventDefault)||t.call(e),null==e||null==(n=e.stopPropagation)||n.call(e),l=(null==(i=p.auth)?void 0:i.token)||"",y(!0),o.label=1;case 1:return o.trys.push([1,3,4,5]),[4,em(m,l)];case 2:return o.sent(),[3,5];case 3:return o.sent(),r.message.error(d("Failed to download file")),[3,5];case 4:return y(!1),[7];case 5:return[2]}})}),function(e){return u.apply(this,arguments)}),[m,p,d]),F=(0,e.useCallback)(function(){f(null),w("visual"),k("preview")},[f]),L=(0,e.useMemo)(function(){return en(m)?ew:er(m)?ex:ei(m)?eE:el(m)?ek:eo(m)?eS:ea(m)?eC:null},[m]),D=null!=L||"raw"===b,z=[{key:"preview",label:t().createElement("span",null,t().createElement(n.EyeOutlined,null)," ",d("Visual Preview")),children:t().createElement("div",{style:{height:"70vh",width:"100%",overflow:"auto",background:"#f5f5f5",display:"flex",justifyContent:"center",alignItems:"center"}},L?t().createElement(L,{file:m}):null)},{key:"ocr",label:t().createElement("span",null,t().createElement(n.ScanOutlined,null)," ",d("OCR & Verify")),children:t().createElement("div",{style:{height:"70vh",width:"100%",display:"flex",flexDirection:"column"}},"no-ocr"===C&&t().createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"100%",padding:"40px",background:"#fafafa",borderRadius:"8px"}},t().createElement(n.ScanOutlined,{style:{fontSize:"64px",color:"#1890ff",marginBottom:"20px"}}),t().createElement("h3",{style:{fontSize:"18px",fontWeight:600,marginBottom:"10px"}},d("Word-level Song ngữ (English & Vietnamese) OCR")),t().createElement("p",{style:{color:"#8c8c8c",maxWidth:"480px",textAlign:"center",marginBottom:"24px"}},d("Chưa c\xf3 dữ liệu OCR cấp độ Từ (Word-level) cho tệp n\xe0y. H\xe3y chạy nhận dạng Tesseract-OCR để bắt đầu đối so\xe1t v\xe0 verify toạ độ.")),t().createElement(r.Button,{type:"primary",size:"large",icon:t().createElement(n.ThunderboltOutlined,null),onClick:I},d("Run Tesseract OCR"))),"pending-ocr"===C&&t().createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"100%",padding:"40px"}},t().createElement(r.Spin,{size:"large",tip:d("Analyzing layout structure and running song ngữ OCR...")}),t().createElement("p",{style:{color:"#8c8c8c",marginTop:"20px",fontSize:"13px",textAlign:"center"}},d("Extracting word-level coordinates via Tesseract-OCR. This will automatically refresh when complete."))),("waiting-verify"===C||"verified"===C)&&t().createElement("div",{style:{flex:1,height:"100%",overflow:"hidden"}},R?t().createElement(R,{collection:"attachments",recordId:m.id,pdfField:"url",jsonField:"ocrData",statusField:"ocrStatus"}):t().createElement("div",{style:{padding:"20px"}},t().createElement(r.Alert,{type:"error",message:d("Plugin OCR Verify Block is not enabled"),description:d("Please enable the plugin-ocr-verify-block plugin to display the verify splitter layout."),showIcon:!0}))))}];return t().createElement(r.Modal,{open:null!=c,title:t().createElement(eb,{file:m,title:(null==m?void 0:m.title)||(null==m?void 0:m.filename)||(null==m?void 0:m.name)||"File",ocrStatus:C,isOcrSupported:A}),onCancel:F,footer:t().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",width:"100%"}},t().createElement("div",{key:"left-actions"},!A&&t().createElement(r.Button,{onClick:function(){return w(function(e){return"visual"===e?"raw":"visual"})}},"visual"===b?d("View Raw Parsed Text"):d("View Visual Preview"))),t().createElement(r.Space,null,t().createElement(r.Button,{key:"download",onClick:_,loading:h},d("Download")),t().createElement(r.Button,{key:"close",onClick:F},d("Close")))),width:D?"90%":520,centered:!0},A?t().createElement(r.Tabs,{activeKey:E,onChange:function(e){return k(e)},items:z,style:{width:"100%",height:"100%"}}):t().createElement("div",{style:{maxWidth:"100%",maxHeight:D?"calc(100vh - 256px)":"auto",height:D?"70vh":"auto",width:"100%",background:"white",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",overflowY:"auto"}},"raw"===b?t().createElement(eP,{file:m}):L?t().createElement(L,{file:m}):t().createElement(r.Alert,{type:"info",style:{width:"100%"},description:d("This file type cannot be previewed. Click Download to save the file."),showIcon:!0})))}function eT(n){var l=n.file,o=(0,i.useAPIClient)(),u=a(),c=(0,e.useCallback)(T(function(){var e,t;return U(this,function(n){switch(n.label){case 0:t=(null==(e=o.auth)?void 0:e.token)||"",n.label=1;case 1:return n.trys.push([1,3,,4]),[4,em(l,t)];case 2:return n.sent(),[3,4];case 3:return n.sent(),r.message.error(u("Failed to download file")),[3,4];case 4:return[2]}})}),[l,o,u]);return t().createElement(r.Alert,{type:"info",style:{width:"100%"},description:t().createElement("span",null,u("This file type cannot be previewed. ")," ",t().createElement("a",{onClick:c,style:{textDecoration:"underline",cursor:"pointer"}},u("Download"))),showIcon:!0})}var eA=function(e){var o;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function a(){var e,t;if(!(this instanceof a))throw TypeError("Cannot call a class as a function");return e=a,t=arguments,e=R(e),function(e,t){if(t&&("object"===L(t)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,z()?Reflect.construct(e,t||[],R(this).constructor):e.apply(this,t))}return a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),e&&F(a,e),o=[{key:"load",value:function(){var e=this;return T(function(){return U(this,function(o){return e.patchUploadPreviewBase64Fallback(),!function(e){try{i=e.pm.get("ai")}catch(e){return}var i,l,o=null==i?void 0:i.aiManager;if(null==o?void 0:o.registerWorkContext)try{(null==(l=o.getWorkContext)?void 0:l.call(o,w))||o.registerWorkContext(w,{name:w,tag:{Component:function(e){var i=e.item;return t().createElement(r.Space,null,t().createElement(n.FileTextOutlined,null),t().createElement("span",null,(null==i?void 0:i.title)||""))}},chatbox:{Component:function(e){var i=e.item;return t().createElement(r.Space,null,t().createElement(n.FileTextOutlined,null),t().createElement("span",null,(null==i?void 0:i.title)||""))}}})}catch(e){}}(e.app),i.attachmentFileTypes.add({match:function(){return!0},Previewer:ej}),l.filePreviewTypes.add({match:function(){return!0},Previewer:eO(eT)}),l.filePreviewTypes.add({match:en,Previewer:eO(ew)}),l.filePreviewTypes.add({match:er,getThumbnailURL:function(e){var t=Q(e);return(null==t?void 0:t.url)||(null==t?void 0:t.preview)||null},Previewer:eO(ex)}),l.filePreviewTypes.add({match:ei,Previewer:eO(eE)}),l.filePreviewTypes.add({match:el,Previewer:eO(ek)}),l.filePreviewTypes.add({match:eo,Previewer:eO(eS)}),l.filePreviewTypes.add({match:ea,Previewer:eO(eC)}),[2]})})()}},{key:"patchUploadPreviewBase64Fallback",value:function(){if("undefined"!=typeof window){var e,t=null==(e=window.FileReader)?void 0:e.prototype;if(t&&!t.__filePreviewAuthBase64FallbackPatched){var n=t.readAsDataURL;"function"==typeof n&&(Object.defineProperty(t,"__filePreviewAuthBase64FallbackPatched",{value:!0,configurable:!0}),t.readAsDataURL=function(e){var t=this;if(null!=e)return n.call(this,e);setTimeout(function(){var e,n;try{Object.defineProperty(t,"result",{value:"",configurable:!0})}catch(e){}null==(e=t.onload)||e.call(t,new ProgressEvent("load")),null==(n=t.onloadend)||n.call(t,new ProgressEvent("loadend"))},0)})}}}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(a.prototype,o),a}(D(i.Plugin)),eR=eA}(),v}()});
@@ -0,0 +1,10 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ export declare function useT(): (str: string) => string;
10
+ export declare function tStr(key: string): string;
@@ -11,10 +11,10 @@ module.exports = {
11
11
  "react": "18.2.0",
12
12
  "@ant-design/icons": "5.6.1",
13
13
  "antd": "5.24.2",
14
- "@nocobase/client": "2.0.56",
15
- "@nocobase/plugin-ai": "2.0.56",
16
- "@nocobase/plugin-file-manager": "2.0.56",
17
- "@nocobase/actions": "2.0.56",
18
- "@nocobase/server": "2.0.56",
19
- "@nocobase/utils": "2.0.56"
14
+ "@nocobase/client": "2.0.57",
15
+ "@nocobase/plugin-ai": "2.0.57",
16
+ "@nocobase/plugin-file-manager": "2.0.57",
17
+ "@nocobase/actions": "2.0.57",
18
+ "@nocobase/server": "2.0.57",
19
+ "@nocobase/utils": "2.0.57"
20
20
  };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ export * from './server';
10
+ export { default } from './server';
@@ -0,0 +1,13 @@
1
+ declare const _default: {
2
+ name: string;
3
+ fields: ({
4
+ name: string;
5
+ type: string;
6
+ defaultValue: string;
7
+ } | {
8
+ name: string;
9
+ type: string;
10
+ defaultValue?: undefined;
11
+ })[];
12
+ };
13
+ export default _default;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * DUMMY COLLECTION
3
+ * This collection is created to prevent NocoBase workflow/ACL from throwing the error:
4
+ * '[Workflow pre-action]: collection "filePreviewAuth" not found'
5
+ *
6
+ * Since 'filePreviewAuth' is registered as a resourcer in plugin.ts, NocoBase
7
+ * implicitly looks for a collection with the same name.
8
+ * We set dumpRules: 'skip' and avoid timestamps to ensure this collection
9
+ * is completely ignored during backups/migrations and doesn't pollute the actual DB.
10
+ */
11
+ declare const _default: {
12
+ name: string;
13
+ dumpRules: string;
14
+ autoGenId: boolean;
15
+ createdAt: boolean;
16
+ updatedAt: boolean;
17
+ fields: {
18
+ name: string;
19
+ type: string;
20
+ }[];
21
+ };
22
+ export default _default;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ import type { Context } from '@nocobase/actions';
10
+ interface AttachmentLike {
11
+ id?: string | number;
12
+ filename?: string;
13
+ name?: string;
14
+ mimetype?: string;
15
+ extname?: string;
16
+ url?: string;
17
+ storageId?: number;
18
+ size?: number;
19
+ meta?: Record<string, any>;
20
+ [key: string]: any;
21
+ }
22
+ interface InternalParseResult {
23
+ text: string;
24
+ handled: boolean;
25
+ }
26
+ export interface InternalParserHandler {
27
+ name: string;
28
+ supports(attachment: AttachmentLike): boolean;
29
+ parse(attachment: AttachmentLike, ctx: Context): Promise<InternalParseResult>;
30
+ }
31
+ /**
32
+ * Server-side Excel parser handler.
33
+ *
34
+ * Uses SheetJS (xlsx) — the same library already bundled by this plugin for
35
+ * client-side XLSX preview — to extract plain text from .xlsx/.xls files on
36
+ * the server.
37
+ *
38
+ * Each worksheet is converted to CSV and separated by a section header so LLMs
39
+ * can distinguish sheet boundaries:
40
+ *
41
+ * === Sheet: Sheet1 ===
42
+ * col1,col2,col3
43
+ * val1,val2,val3
44
+ *
45
+ * === Sheet: Sheet2 ===
46
+ * ...
47
+ *
48
+ * This handler is registered into plugin-document-parser's InternalParserRegistry
49
+ * by PluginFilePreviewAuthServer with `prepend: true` so it takes priority over
50
+ * any other handlers that might be registered later.
51
+ *
52
+ * File bytes are fetched via plugin-document-parser's public `fetchFileBuffer`
53
+ * helper, which transparently handles both S3 URLs and local file paths.
54
+ */
55
+ export declare class ExcelParserHandler implements InternalParserHandler {
56
+ readonly name = "file-preview-auth-excel-parser";
57
+ supports(attachment: AttachmentLike): boolean;
58
+ parse(attachment: AttachmentLike, ctx: Context): Promise<InternalParseResult>;
59
+ }
60
+ export {};
@@ -0,0 +1,9 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ export { default } from './plugin';
@@ -0,0 +1,34 @@
1
+ export interface OcrRect {
2
+ x: number;
3
+ y: number;
4
+ width: number;
5
+ height: number;
6
+ unit: string;
7
+ }
8
+ export interface OcrWordItem {
9
+ id: string;
10
+ key: string;
11
+ value: string;
12
+ page: number;
13
+ confidence: number;
14
+ rect: OcrRect;
15
+ status: string;
16
+ }
17
+ export declare class TesseractRunner {
18
+ private log;
19
+ constructor(app: any);
20
+ /**
21
+ * Run Tesseract OCR on a file (PDF or Image).
22
+ * Generates word-level coordinates and text.
23
+ */
24
+ runOcr(filePath: string, attachmentId: number): Promise<{
25
+ pages: Array<{
26
+ page_number: number;
27
+ items: OcrWordItem[];
28
+ }>;
29
+ }>;
30
+ private executeTesseract;
31
+ private parseTsv;
32
+ private convertPdfToImages;
33
+ private generateMockOcrData;
34
+ }
@@ -0,0 +1,26 @@
1
+ export declare class TesseractWorker {
2
+ private app;
3
+ private db;
4
+ private log;
5
+ private runner;
6
+ private isRunning;
7
+ private pollTimer;
8
+ private redisKey;
9
+ constructor(app: any);
10
+ /**
11
+ * Start the background worker.
12
+ */
13
+ start(): Promise<void>;
14
+ /**
15
+ * Stop the background worker.
16
+ */
17
+ stop(): void;
18
+ /**
19
+ * Enqueue a new OCR job.
20
+ */
21
+ enqueue(attachmentId: number): Promise<boolean>;
22
+ private getRedisClient;
23
+ private listenRedisQueue;
24
+ private startDbPolling;
25
+ private processJob;
26
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ import { Plugin } from '@nocobase/server';
10
+ export declare class PluginFilePreviewAuthServer extends Plugin {
11
+ private cache;
12
+ private ocrWorker;
13
+ beforeLoad(): Promise<void>;
14
+ load(): Promise<void>;
15
+ afterEnable(): Promise<void>;
16
+ beforeDisable(): Promise<void>;
17
+ beforeDestroy(): Promise<void>;
18
+ /**
19
+ * Disable NocoBase's built-in Office previewer after plugins have loaded.
20
+ * This keeps this authenticated previewer as the active Office handler without causing a restart loop.
21
+ */
22
+ private disableBuiltinOfficePreviewer;
23
+ private registerDownloadApi;
24
+ private registerAIWorkContext;
25
+ private resolveAttachment;
26
+ private getParentCollections;
27
+ private checkParentCollectionAccess;
28
+ private assertCanAccessAttachment;
29
+ private assertAuthenticated;
30
+ private consumeUploadedParseFile;
31
+ private extractUploadedFileText;
32
+ private getMarkItDownParserPlugin;
33
+ private extractAttachmentText;
34
+ private readAttachmentAsText;
35
+ private formatAttachmentWorkContext;
36
+ /**
37
+ * Register Excel handler into plugin-document-parser's InternalParserRegistry.
38
+ * Uses prepend:true so SheetJS takes priority over the AI-loader fallback.
39
+ * Silent no-op when plugin-document-parser is not loaded.
40
+ */
41
+ private registerExcelParser;
42
+ }
43
+ export default PluginFilePreviewAuthServer;
package/package.json CHANGED
@@ -1,44 +1,44 @@
1
- {
2
- "name": "plugin-file-preview-auth",
3
- "displayName": "Authenticated File Previewer",
4
- "displayName.vi-VN": "Xem trước file có xác thực",
5
- "displayName.zh-CN": "认证文件预览",
6
- "description": "Preview PDF, image, and text files with Bearer token authentication via blob URLs.",
7
- "description.vi-VN": "Xem trước file PDF, hình ảnh và văn bản với xác thực Bearer token qua blob URL.",
8
- "description.zh-CN": "通过 Bearer 令牌认证和 Blob URL 预览 PDF、图片和文本文件。",
9
- "version": "1.3.0",
10
- "main": "dist/server/index.js",
11
- "files": [
12
- "dist",
13
- "public",
14
- "client.js",
15
- "client.d.ts",
16
- "server.js",
17
- "server.d.ts",
18
- "README.md"
19
- ],
20
- "peerDependencies": {
21
- "@nocobase/client": "2.x",
22
- "@nocobase/plugin-ai": "2.x",
23
- "@nocobase/plugin-file-manager": "2.x",
24
- "@nocobase/server": "2.x",
25
- "@nocobase/utils": "2.x"
26
- },
27
- "peerDependenciesMeta": {
28
- "@nocobase/plugin-ai": {
29
- "optional": true
30
- }
31
- },
32
- "devDependencies": {},
33
- "keywords": [
34
- "File manager",
35
- "File preview",
36
- "Authentication"
37
- ],
38
- "license": "Apache-2.0",
39
- "dependencies": {
40
- "docx-preview": "^0.3.3",
41
- "react-pptx-preview-kit": "^0.1.9",
42
- "xlsx": "^0.18.5"
43
- }
44
- }
1
+ {
2
+ "name": "plugin-file-preview-auth",
3
+ "displayName": "Authenticated File Previewer",
4
+ "displayName.vi-VN": "Xem trước file có xác thực",
5
+ "displayName.zh-CN": "认证文件预览",
6
+ "description": "Preview PDF, image, and text files with Bearer token authentication via blob URLs.",
7
+ "description.vi-VN": "Xem trước file PDF, hình ảnh và văn bản với xác thực Bearer token qua blob URL.",
8
+ "description.zh-CN": "通过 Bearer 令牌认证和 Blob URL 预览 PDF、图片和文本文件。",
9
+ "version": "1.3.1",
10
+ "main": "dist/server/index.js",
11
+ "files": [
12
+ "dist",
13
+ "public",
14
+ "client.js",
15
+ "client.d.ts",
16
+ "server.js",
17
+ "server.d.ts",
18
+ "README.md"
19
+ ],
20
+ "peerDependencies": {
21
+ "@nocobase/client": "2.x",
22
+ "@nocobase/plugin-ai": "2.x",
23
+ "@nocobase/plugin-file-manager": "2.x",
24
+ "@nocobase/server": "2.x",
25
+ "@nocobase/utils": "2.x"
26
+ },
27
+ "peerDependenciesMeta": {
28
+ "@nocobase/plugin-ai": {
29
+ "optional": true
30
+ }
31
+ },
32
+ "devDependencies": {},
33
+ "keywords": [
34
+ "File manager",
35
+ "File preview",
36
+ "Authentication"
37
+ ],
38
+ "license": "Apache-2.0",
39
+ "dependencies": {
40
+ "docx-preview": "^0.3.3",
41
+ "react-pptx-preview-kit": "^0.1.9",
42
+ "xlsx": "^0.18.5"
43
+ }
44
+ }