plugin-file-preview-auth 1.2.6 → 1.2.8
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.
- package/dist/client/index.js +1 -1
- package/dist/server/plugin.js +78 -21
- package/package.json +1 -1
package/dist/client/index.js
CHANGED
|
@@ -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 eP},PluginFilePreviewAuthClient:function(){return eO}});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=D()?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 I(e){return(I=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _(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 R(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 B(e){var t="function"==typeof Map?new Map:void 0;return(B=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,I(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),F(n,e)})(e)}function D(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(D=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 M=["application/pdf"],U=["image/png","image/jpeg","image/gif","image/webp","image/svg+xml","image/bmp"],W=["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;return t?t.startsWith("https://")||t.startsWith("http://")?t:"".concat(location.origin,"/").concat(t.replace(/^\//,"")):""},Z=function(e){if((null==e?void 0:e.mimetype)&&M.includes(e.mimetype))return!0;var t=K(e);return!!t&&V.includes(t)},ee=function(e){if((null==e?void 0:e.mimetype)&&U.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)},et=function(e){if((null==e?void 0:e.mimetype)&&W.includes(e.mimetype))return!0;var t=K(e);return!!t&&X.includes(t)},en=function(e){if((null==e?void 0:e.mimetype)&&N.includes(e.mimetype))return!0;var t=K(e);return!!t&&G.includes(t)},er=function(e){if((null==e?void 0:e.mimetype)&&q.includes(e.mimetype))return!0;var t=K(e);return!!t&&J.includes(t)},ei=function(e){if((null==e?void 0:e.mimetype)&&Y.includes(e.mimetype))return!0;var t=K(e);return!!t&&$.includes(t)},eo=function(e){return e?e.title&&e.extname?"".concat(e.title).concat(e.extname):e.filename||e.name||e.title||"download":"download"},el=new Map;function ea(){return(ea=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 eu(e,t){return ec.apply(this,arguments)}function ec(){return(ec=T(function(e,t){var n,r,i;return z(this,function(o){if(!(n=Q(e)))throw Error("No file URL");return r="".concat(t?"auth":"anon",":").concat(t||"",":").concat(n),(i=el.get(r))||(i=(function(e,t){return ea.apply(this,arguments)})(n,t).catch(function(e){throw el.delete(r),e}),el.set(r,i)),[2,i]})})).apply(this,arguments)}function es(e,t){return ef.apply(this,arguments)}function ef(){return(ef=T(function(e,t){var n,r,i,o;return z(this,function(l){switch(l.label){case 0:if(!Q(e))return[2];return[4,eu(e,t)];case 1:return n=l.sent(),r=eo(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 ed(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);return(0,e.useEffect)(function(){var e=!1;if(!Q(t)){u(!1),f("No file URL");return}return u(!0),f(null),eu(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)}},["string"==typeof t?t:null==t?void 0:t.url,n]),{blobUrl:i,loading:a,error:s}}function ep(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 em(e){var n=e.message;return t().createElement("div",{style:{padding:20,textAlign:"center",color:"#ff4d4f"}},n)}function ev(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 eh(e){var n,r=e.file,o=(0,i.useAPIClient)(),l=a(),u=ed(r,(null==(n=o.auth)?void 0:n.token)||""),c=u.blobUrl,s=u.loading,f=u.error;return s?t().createElement(ep,{message:l("Loading preview...")}):f||!c?t().createElement(em,{message:l("Failed to load file preview")}):t().createElement("iframe",{src:c,width:"100%",height:"100%",style:{border:"none"}})}function ey(e){var n,r=e.file,o=(0,i.useAPIClient)(),l=a(),u=ed(r,(null==(n=o.auth)?void 0:n.token)||""),c=u.blobUrl,s=u.loading,f=u.error;return s?t().createElement(ep,{message:l("Loading preview...")}):f||!c?t().createElement(em,{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 eg(n){var r,o,l,u,c,s,f,d,p,m,v=n.file,h=(0,i.useAPIClient)(),y=a(),g=(null==(m=h.auth)?void 0:m.token)||"",b=(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],(0,e.useEffect)(function(){var e=!1;if(!Q(v)){s(!1),p("No file URL");return}return s(!0),p(null),eu(v,g).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}},["string"==typeof v?v:null==v?void 0:v.url,g]),{text:o,loading:c,error:d}),w=b.text,x=b.loading,E=b.error;return x?t().createElement(ep,{message:y("Loading preview...")}):E||null===w?t().createElement(em,{message:y("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"}},w)}function eb(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=L((0,e.useState)(!0),2),d=f[0],p=f[1],v=L((0,e.useState)(null),2),h=v[0],y=v[1];return(0,e.useEffect)(function(){var e=!1;if(!Q(o)||!s.current){p(!1),y("No file URL");return}return p(!0),y(null),T(function(){var t,n,r;return z(this,function(i){switch(i.label){case 0:return i.trys.push([0,4,,5]),[4,eu(o,c)];case 1:if(t=i.sent(),e)return[2];return[4,O("imported_-1dm6lbf_component",m.e("374").then(m.bind(m,335)))];case 2:if(n=i.sent(),e||!s.current)return[2];return s.current.innerHTML="",[4,n.renderAsync(t,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 i.sent(),p(!1),[3,5];case 4:if(r=i.sent(),e)return[2];return y(r.message||"Failed to render DOCX"),p(!1),[3,5];case 5:return[2]}})})(),function(){e=!0}},["string"==typeof o?o:null==o?void 0:o.url,c]),t().createElement("div",{style:{width:"100%",height:"100%",position:"relative"}},d&&t().createElement(ep,{message:u("Loading preview...")}),h&&t().createElement(em,{message:u("Failed to load file preview")}),t().createElement("div",{ref:s,style:{width:"100%",height:"100%",overflow:"auto",display:d||h?"none":"block"}}))}function ew(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=L((0,e.useState)(!0),2),d=f[0],p=f[1],v=L((0,e.useState)(null),2),h=v[0],y=v[1],g=L((0,e.useState)([]),2),b=g[0],w=g[1],x=L((0,e.useState)(""),2),E=x[0],S=x[1],k=L((0,e.useState)({}),2),C=k[0],P=k[1];return(0,e.useEffect)(function(){var e=!1;if(!Q(o)){p(!1),y("No file URL");return}return p(!0),y(null),T(function(){var t,n,r,i,l,a,u,s,f,d,v,h,g,b;return z(this,function(x){switch(x.label){case 0:return x.trys.push([0,4,,5]),[4,eu(o,c)];case 1:if(t=x.sent(),e)return[2];return[4,O("imported_-1lj2ifg_component",m.e("166").then(m.bind(m,907)))];case 2:if(n=x.sent(),e)return[2];return[4,t.arrayBuffer()];case 3:if(r=x.sent(),e)return[2];l=(i=n.read(r,{type:"array"})).SheetNames,a={},u=!0,s=!1,f=void 0;try{for(d=l[Symbol.iterator]();!(u=(v=d.next()).done);u=!0)h=v.value,g=i.Sheets[h],a[h]=n.utils.sheet_to_html(g,{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 w(l),S(l[0]||""),P(a),p(!1),[3,5];case 4:if(b=x.sent(),e)return[2];return y(b.message||"Failed to render XLSX"),p(!1),[3,5];case 5:return[2]}})})(),function(){e=!0}},["string"==typeof o?o:null==o?void 0:o.url,c]),t().createElement("div",{style:{width:"100%",height:"100%",display:"flex",flexDirection:"column"}},d&&t().createElement(ep,{message:u("Loading preview...")}),h&&t().createElement(em,{message:u("Failed to load file preview")}),!d&&!h&&t().createElement(t().Fragment,null,b.length>1&&t().createElement("div",{style:{display:"flex",gap:0,borderBottom:"1px solid #e8e8e8",background:"#fafafa",padding:"0 8px",flexShrink:0,overflowX:"auto"}},b.map(function(e){return t().createElement("button",{key:e,onClick:function(){return S(e)},style:{padding:"8px 16px",border:"none",borderBottom:E===e?"2px solid #1890ff":"2px solid transparent",background:E===e?"#fff":"transparent",color:E===e?"#1890ff":"#666",fontWeight:E===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:C[E]||""}}),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 ex(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];return(0,e.useEffect)(function(){var e=!1;if(!Q(o)){d(!1),h("No file URL");return}return d(!0),h(null),T(function(){var t,n,r,i,l;return z(this,function(a){switch(a.label){case 0:return a.trys.push([0,3,,4]),[4,Promise.all([eu(o,c),O("imported_tpp3om_component",m.e("514").then(m.bind(m,581)))])];case 1:if(n=(t=L.apply(void 0,[a.sent(),2]))[0],r=t[1],e)return[2];return[4,n.arrayBuffer()];case 2:if(i=a.sent(),e)return[2];return b(i),E(function(){return r.PptxPreview}),d(!1),[3,4];case 3:if(l=a.sent(),e)return[2];return h(l.message||"Failed to render PPTX"),d(!1),[3,4];case 4:return[2]}})})(),function(){e=!0}},["string"==typeof o?o:null==o?void 0:o.url,c]),t().createElement("div",{style:{width:"100%",height:"100%",position:"relative"}},f&&t().createElement(ep,{message:u("Loading preview...")}),v&&t().createElement(em,{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 eE=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=(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,es(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,R(_({},l),{onDownload:g}));var b=eo(d),w="number"==typeof p&&!!v&&p>0,x="number"==typeof p&&!!v&&p<m.length-1,E=L((0,e.useState)("visual"),2),S=E[0],k=E[1];return t().createElement(r.Modal,{open:c,title:t().createElement(ev,{file:d,title:b}),onCancel:function(){null==s||s(!1),null==f||f(),k("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 k(function(e){return"visual"===e?"raw":"visual"})}},"visual"===S?y("View Raw Parsed Text"):y("View Visual Preview"))),t().createElement(r.Space,{size:14,style:{fontSize:"20px"}},t().createElement(n.LeftOutlined,{style:{cursor:w?"pointer":"not-allowed"},onClick:function(){return w&&(null==v?void 0:v(p-1))}}),t().createElement(n.RightOutlined,{style:{cursor:x?"pointer":"not-allowed"},onClick:function(){return x&&(null==v?void 0:v(p+1))}}),t().createElement(n.DownloadOutlined,{onClick:function(){return g(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"===S?t().createElement(eS,{file:d}):t().createElement(o,R(_({},l),{onDownload:g}))))}};function eS(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,eu(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,eo(l)),o.append("attachment",JSON.stringify({id:null==l?void 0:l.id,uid:null==l?void 0:l.uid,url:null==l?void 0:l.url,preview:null==l?void 0:l.preview,filename:(null==l?void 0:l.filename)||(null==l?void 0:l.name),name:(null==l?void 0:l.name)||(null==l?void 0:l.filename),title:null==l?void 0:l.title,extname:null==l?void 0:l.extname,mimetype:null==l?void 0:l.mimetype,size:null==l?void 0:l.size,path:null==l?void 0:l.path,storageId:null==l?void 0:l.storageId,collectionName:null==l?void 0:l.collectionName,lastModified:null==l?void 0:l.lastModified})),[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 ek(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&&(Z(m)||ee(m))},[m]),I=(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,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 _=(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)}),R=(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,es(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]),B=(0,e.useMemo)(function(){return Z(m)?eh:ee(m)?ey:et(m)?eg:en(m)?eb:er(m)?ew:ei(m)?ex:null},[m]),D=null!=B||"raw"===b,M=[{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"}},B?t().createElement(B,{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:_},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"}},I?t().createElement(I,{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(ev,{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:R,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 S(e)},items:M,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(eS,{file:m}):B?t().createElement(B,{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 eC(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,es(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 eO=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=I(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,D()?Reflect.construct(e,t||[],I(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:ek}),o.filePreviewTypes.add({match:function(){return!0},Previewer:eE(eC)}),o.filePreviewTypes.add({match:Z,Previewer:eE(eh)}),o.filePreviewTypes.add({match:ee,getThumbnailURL:function(e){return(null==e?void 0:e.url)||(null==e?void 0:e.preview)||null},Previewer:eE(ey)}),o.filePreviewTypes.add({match:et,Previewer:eE(eg)}),o.filePreviewTypes.add({match:en,Previewer:eE(eb)}),o.filePreviewTypes.add({match:er,Previewer:eE(ew)}),o.filePreviewTypes.add({match:ei,Previewer:eE(ex)}),[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}(B(i.Plugin)),eP=eO}(),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,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=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 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 z(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(z=function(){return!!e})()}function B(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 U=["application/pdf"],W=["image/png","image/jpeg","image/gif","image/webp","image/svg+xml","image/bmp"],M=["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)&&U.includes(e.mimetype))return!0;var t=K(e);return!!t&&V.includes(t)},et=function(e){if((null==e?void 0:e.mimetype)&&W.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)&&M.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 B(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 B(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"].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=new URLSearchParams;return n&&r.set("url",n),null!=t.id&&r.set("id",String(t.id)),null!=t.uid&&r.set("uid",String(t.uid)),t.collectionName&&r.set("collection",t.collectionName),null!=t.storageId&&r.set("storageId",String(t.storageId)),t.filename&&r.set("filename",t.filename),t.mimetype&&r.set("mimetype",t.mimetype),t.path&&r.set("path",t.path),t.preview&&r.set("preview",t.preview),"/api/filePreviewAuth:download?".concat(r.toString())}(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 B(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 B(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 B(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 B(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 B(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 B(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 B(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 B(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 B(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]),z=null!=D||"raw"===b,U=[{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:z?"90%":520,centered:!0},A?t().createElement(r.Tabs,{activeKey:E,onChange:function(e){return S(e)},items:U,style:{width:"100%",height:"100%"}}):t().createElement("div",{style:{maxWidth:"100%",maxHeight:z?"calc(100vh - 256px)":"auto",height:z?"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 B(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,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),l=[{key:"load",value:function(){var e=this;return T(function(){return B(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}()});
|
package/dist/server/plugin.js
CHANGED
|
@@ -133,19 +133,31 @@ class PluginFilePreviewAuthServer extends import_server.Plugin {
|
|
|
133
133
|
},
|
|
134
134
|
download: async (ctx, next) => {
|
|
135
135
|
const params = ctx.action.params || {};
|
|
136
|
+
const values = params.values || {};
|
|
136
137
|
const reqQuery = ctx.request.query || {};
|
|
137
138
|
const reqBody = ctx.request.body || {};
|
|
138
|
-
let
|
|
139
|
-
if (
|
|
140
|
-
|
|
139
|
+
let fileInput = values.file || params.file || reqQuery.file || reqBody.file || {};
|
|
140
|
+
if (typeof fileInput === "string") {
|
|
141
|
+
try {
|
|
142
|
+
fileInput = JSON.parse(fileInput);
|
|
143
|
+
} catch {
|
|
144
|
+
fileInput = { url: fileInput };
|
|
145
|
+
}
|
|
141
146
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
147
|
+
const rawUrl = values.url || params.url || reqQuery.url || reqBody.url || fileInput.url || fileInput.preview || fileInput.path;
|
|
148
|
+
const requestedId = values.id || params.id || reqQuery.id || reqBody.id || fileInput.id || fileInput.uid;
|
|
149
|
+
if (!rawUrl && !requestedId) {
|
|
150
|
+
ctx.throw(400, "url or id is required");
|
|
146
151
|
}
|
|
147
|
-
|
|
148
|
-
|
|
152
|
+
let url = rawUrl || "";
|
|
153
|
+
if (rawUrl) {
|
|
154
|
+
try {
|
|
155
|
+
url = decodeURIComponent(rawUrl);
|
|
156
|
+
} catch (e) {
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const collection = values.collection || values.collectionName || params.collection || params.collectionName || reqQuery.collection || reqQuery.collectionName || reqBody.collection || reqBody.collectionName || fileInput.collectionName;
|
|
160
|
+
const storageIdInput = values.storageId || params.storageId || reqQuery.storageId || reqBody.storageId || fileInput.storageId;
|
|
149
161
|
let storageId = storageIdInput;
|
|
150
162
|
const fileManager = this.pm.get("@nocobase/plugin-file-manager");
|
|
151
163
|
if (!fileManager) {
|
|
@@ -163,22 +175,67 @@ class PluginFilePreviewAuthServer extends import_server.Plugin {
|
|
|
163
175
|
let attachment = null;
|
|
164
176
|
let isVirtual = false;
|
|
165
177
|
const collectionsToTry = Array.from(new Set([collection, "aiFiles", "attachments"].filter(Boolean)));
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
178
|
+
if (requestedId || (fileInput == null ? void 0 : fileInput.id) || (fileInput == null ? void 0 : fileInput.uid)) {
|
|
179
|
+
try {
|
|
180
|
+
attachment = await this.resolveAttachment(ctx, {
|
|
181
|
+
...fileInput,
|
|
182
|
+
id: requestedId || fileInput.id,
|
|
183
|
+
uid: fileInput.uid,
|
|
184
|
+
url,
|
|
185
|
+
preview: fileInput.preview,
|
|
186
|
+
path: fileInput.path,
|
|
187
|
+
storageId,
|
|
188
|
+
collectionName: collection,
|
|
189
|
+
filename: values.filename || params.filename || reqQuery.filename || reqBody.filename || fileInput.filename,
|
|
190
|
+
mimetype: values.mimetype || params.mimetype || reqQuery.mimetype || reqBody.mimetype || fileInput.mimetype
|
|
191
|
+
});
|
|
192
|
+
} catch {
|
|
193
|
+
attachment = null;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (!attachment && url) {
|
|
197
|
+
try {
|
|
198
|
+
attachment = await this.resolveAttachment(ctx, {
|
|
199
|
+
...fileInput,
|
|
200
|
+
url,
|
|
201
|
+
preview: fileInput.preview,
|
|
202
|
+
path: fileInput.path,
|
|
203
|
+
storageId,
|
|
204
|
+
collectionName: collection,
|
|
205
|
+
filename: values.filename || params.filename || reqQuery.filename || reqBody.filename || fileInput.filename,
|
|
206
|
+
mimetype: values.mimetype || params.mimetype || reqQuery.mimetype || reqBody.mimetype || fileInput.mimetype
|
|
207
|
+
});
|
|
208
|
+
} catch {
|
|
209
|
+
attachment = null;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if (!attachment) {
|
|
213
|
+
for (const colName of collectionsToTry) {
|
|
214
|
+
const repo = this.db.getRepository(colName);
|
|
215
|
+
if (repo) {
|
|
216
|
+
if (filterByTk) {
|
|
217
|
+
attachment = await repo.findOne({ filterByTk });
|
|
218
|
+
}
|
|
219
|
+
if (!attachment && requestedId) {
|
|
220
|
+
attachment = await repo.findOne({ filterByTk: requestedId });
|
|
221
|
+
}
|
|
222
|
+
if (!attachment && url) {
|
|
223
|
+
attachment = await repo.findOne({ filter: { url } });
|
|
224
|
+
}
|
|
225
|
+
if (attachment) {
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
177
228
|
}
|
|
178
229
|
}
|
|
179
230
|
}
|
|
180
231
|
if (!attachment && storageId) {
|
|
181
|
-
attachment = {
|
|
232
|
+
attachment = {
|
|
233
|
+
...fileInput,
|
|
234
|
+
url,
|
|
235
|
+
storageId,
|
|
236
|
+
filename: values.filename || params.filename || reqQuery.filename || reqBody.filename || fileInput.filename || "file",
|
|
237
|
+
mimetype: values.mimetype || params.mimetype || reqQuery.mimetype || reqBody.mimetype || fileInput.mimetype
|
|
238
|
+
};
|
|
182
239
|
isVirtual = true;
|
|
183
240
|
}
|
|
184
241
|
if (!attachment) {
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"description": "Preview PDF, image, and text files with Bearer token authentication via blob URLs.",
|
|
7
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
8
|
"description.zh-CN": "通过 Bearer 令牌认证和 Blob URL 预览 PDF、图片和文本文件。",
|
|
9
|
-
"version": "1.2.
|
|
9
|
+
"version": "1.2.8",
|
|
10
10
|
"main": "dist/server/index.js",
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|