@nocobase/plugin-action-export 1.7.0-beta.3 → 1.7.0-beta.31

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.
@@ -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("react-i18next"),require("file-saver"),require("@formily/shared"),require("@nocobase/client"),require("lodash"),require("antd"),require("@formily/react"),require("react"),require("@formily/antd-v5")):"function"==typeof define&&define.amd?define("@nocobase/plugin-action-export",["react-i18next","file-saver","@formily/shared","@nocobase/client","lodash","antd","@formily/react","react","@formily/antd-v5"],t):"object"==typeof exports?exports["@nocobase/plugin-action-export"]=t(require("react-i18next"),require("file-saver"),require("@formily/shared"),require("@nocobase/client"),require("lodash"),require("antd"),require("@formily/react"),require("react"),require("@formily/antd-v5")):e["@nocobase/plugin-action-export"]=t(e["react-i18next"],e["file-saver"],e["@formily/shared"],e["@nocobase/client"],e.lodash,e.antd,e["@formily/react"],e.react,e["@formily/antd-v5"])}(self,function(e,t,n,r,o,i,a,l,u){return function(){"use strict";var c={632:function(e){e.exports=u},505:function(e){e.exports=a},875:function(e){e.exports=n},772:function(e){e.exports=r},721:function(e){e.exports=i},346:function(e){e.exports=t},467:function(e){e.exports=o},156:function(e){e.exports=l},238:function(t){t.exports=e}},s={};function p(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}};return c[e](n,n.exports,p),n.exports}p.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return p.d(t,{a:t}),t},p.d=function(e,t){for(var n in t)p.o(t,n)&&!p.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},p.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},p.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var f={};p.r(f),p.d(f,{ExportPluginProvider:function(){return T},default:function(){return K},ExportDesigner:function(){return k},ExportActionInitializer:function(){return g},PluginActionExportClient:function(){return Y},useExportAction:function(){return z}});var d=p("875"),m=p("772"),v=p("156"),y=p.n(v),b=p("505");function x(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}var h=function(e){var t,n=(0,b.useFieldSchema)();null==n||null===(t=n["x-component-props"])||void 0===t||t.nonfilterable;var r=(0,m.useCollectionManager_deprecated)().getCollectionFields,o=r(e),i=function(e,t){if(!!e.interface){var n={name:e.name,title:(null==e?void 0:null===(o=e.uiSchema)||void 0===o?void 0:o.title)||e.name,schema:null==e?void 0:e.uiSchema};if(!e.target||t>=3)return n;if(e.target&&["hasOne","hasMany","belongsTo","belongsToMany","belongsToArray"].includes(e.type)){var o,i,l,u=a(r(e.target),t+1).filter(Boolean);n.children=n.children||[],(i=n.children).push.apply(i,function(e){if(Array.isArray(e))return x(e)}(l=u)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(l)||function(e,t){if(e){if("string"==typeof e)return x(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 x(e,t)}}(l)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())}return n}},a=function(e,t){var n=[];return e.forEach(function(e){var r=i(e,t);r&&n.push(r)}),n};return a(o,1)},g=function(){var e=(0,m.useSchemaInitializerItem)(),t=(0,m.useSchemaInitializer)().insert,n=h((0,m.useCollection_deprecated)().name),r={type:"void",title:'{{ t("Export") }}',"x-action":"export","x-action-settings":{exportSettings:[]},"x-toolbar":"ActionSchemaToolbar","x-settings":"actionSettings:export","x-decorator":"ACLActionProvider","x-component":"Action","x-use-component-props":"useExportAction","x-component-props":{icon:"clouddownloadoutlined"}};return y().createElement(m.SchemaInitializerItem,{title:e.title,onClick:function(){r["x-action-settings"].exportSettings=null==(o=n)?void 0:o.filter(function(e){return!e.children}).map(function(e){return{dataIndex:[e.name]}});var o,i,a=(0,d.merge)(r||{},e.schema||{});null==e||null===(i=e.schemaInitialize)||void 0===i||i.call(e,a),t(a)}})},S=p("632");function A(e,t){return!t&&(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function I(){var e=A(["\n width: 100%;\n & .ant-space-item:nth-child(2),\n & .ant-space-item:nth-child(3) {\n flex: 1;\n }\n "]);return I=function(){return e},e}function w(){var e=A(["\n border-color: var(--colorSettings);\n color: var(--colorSettings);\n &.ant-btn-dashed:hover {\n border-color: var(--colorSettings);\n color: var(--colorSettings);\n }\n "]);return w=function(){return e},e}var O=function(){var e=h((0,m.useCollection_deprecated)().name);return{schema:{type:"void","x-component":"Grid",properties:{exportSettings:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",items:{type:"object",properties:{space:{type:"void","x-component":"Space","x-component-props":{className:(0,m.css)(I())},properties:{sort:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.SortHandle"},dataIndex:{type:"array","x-decorator":"FormItem","x-component":m.Cascader,required:!0,enum:e,"x-component-props":{fieldNames:{label:"title",value:"name",children:"children"},changeOnSelect:!1}},title:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:'{{ t("Custom column title") }}'}},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove"}}}}},properties:{add:{type:"void",title:'{{ t("Add exportable field") }}',"x-component":"ArrayItems.Addition","x-component-props":{className:(0,m.css)(w())}}}}}}}},E=p("238");function j(){return(0,E.useTranslation)(["action-export","client"],{nsMode:"fallback"})}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 C(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var k=function(){var e,t,n,r,o,i,a,l=(0,b.useField)(),u=(0,b.useFieldSchema)(),c=j().t,s=(0,m.useDesignable)().dn;var p=(e=(0,v.useState)(),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],a=!0,l=!1;try{for(o=o.call(e);!(a=(n=o.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(e){l=!0,r=e}finally{try{!a&&null!=o.return&&o.return()}finally{if(l)throw r}}return i}}(e,2)||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.")}()),f=p[0],d=p[1],x=O().schema;return(0,v.useEffect)(function(){d(x)},[l.address,null==u?void 0:null===(n=u["x-action-settings"])||void 0===n?void 0:n.exportSettings]),y().createElement(m.GeneralSchemaDesigner,{disableInitializer:!0},y().createElement(m.SchemaSettingsModalItem,{title:c("Edit button"),schema:{type:"object",title:c("Edit button"),properties:{title:{"x-decorator":"FormItem","x-component":"Input",title:c("Button title"),default:u.title,"x-component-props":{}},icon:{"x-decorator":"FormItem","x-component":"IconPicker",title:c("Button icon"),default:null==u?void 0:null===(r=u["x-component-props"])||void 0===r?void 0:r.icon,"x-component-props":{}},type:{"x-decorator":"FormItem","x-component":"Radio.Group",title:c("Button background color"),default:(null==u?void 0:null===(o=u["x-component-props"])||void 0===o?void 0:o.danger)?"danger":(null==u?void 0:null===(i=u["x-component-props"])||void 0===i?void 0:i.type)==="primary"?"primary":"default",enum:[{value:"default",label:'{{t("Default")}}'},{value:"primary",label:'{{t("Highlight")}}'},{value:"danger",label:'{{t("Danger red")}}'}]}}},onSubmit:function(e){var t,n=e.title,r=e.icon,o=e.type;u.title=n,l.title=n,l.componentProps.icon=r,l.componentProps.danger="danger"===o,l.componentProps.type=o,u["x-component-props"]=u["x-component-props"]||{},u["x-component-props"].icon=r,u["x-component-props"].danger="danger"===o,u["x-component-props"].type=o,s.emit("patch",{schema:(C(t={},"x-uid",u["x-uid"]),C(t,"title",n),C(t,"x-component-props",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){C(e,t,n[t])})}return e}({},u["x-component-props"])),t)}),s.refresh()}}),y().createElement(m.SchemaSettingsActionModalItem,{title:c("Exportable fields"),schema:f,initialValues:{exportSettings:null==u?void 0:null===(a=u["x-action-settings"])||void 0===a?void 0:a.exportSettings},scope:{t:c},components:{ArrayItems:S.ArrayItems},onSubmit:function(e){var t,n=e.exportSettings;u["x-action-settings"].exportSettings=null==n?void 0:n.filter(function(e){var t;return null==e?void 0:null===(t=e.dataIndex)||void 0===t?void 0:t.length}).map(function(e){return{dataIndex:e.dataIndex.map(function(e){var t;return null!==(t=e.name)&&void 0!==t?t:e}),title:e.title}}),s.emit("patch",{schema:(C(t={},"x-uid",u["x-uid"]),C(t,"x-action-settings",u["x-action-settings"]),t)}),s.refresh()}}),y().createElement(m.SchemaSettingsDivider,null),y().createElement(m.SchemaSettingsRemove,{removeParentsIfNoChildren:!0,breakRemoveOn:function(e){return"Space"===e["x-component"]||e["x-component"].endsWith("ActionBar")},confirm:{title:c("Delete action")}}))},T=function(e){return y().createElement(m.SchemaComponentOptions,{components:{ExportActionInitializer:g,ExportDesigner:k},scope:{useExportAction:z}},e.children)},F=p("467"),M=p.n(F),q=p("346"),_=p("721");function B(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 D(e,t,n,r,o,i,a){try{var l=e[i](a),u=l.value}catch(e){n(e);return}l.done?t(u):Promise.resolve(u).then(r,o)}var z=function(){var e,t,n=(0,m.useBlockRequestContext)(),r=n.service,o=n.props,i=(0,m.useDataBlockResource)(),a=(0,m.useTableBlockContext)().params,l=(0,m.useCurrentAppInfo)(),u=null==o?void 0:o.params.filter,c=(0,b.useFieldSchema)(),s=(0,m.useCompile)(),p=(0,m.useCollectionManager_deprecated)().getCollectionJoinField,f=(0,m.useCollection_deprecated)(),d=f.name,y=f.title,x=j().t,h=_.App.useApp().modal,g=(null===(t=r.params)||void 0===t?void 0:null===(e=t[1])||void 0===e?void 0:e.filters)||{},S=(0,b.useField)(),A=(0,v.useMemo)(function(){var e;return(null==l?void 0:null===(e=l.data)||void 0===e?void 0:e.exportLimit)?l.data.exportLimit:2e3},[l]);return{onClick:function(){var e;return(e=function(){var e,t,n,o,l;return function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}}(this,function(f){switch(f.label){case 0:return S.data=S.data||{},[4,h.confirm({title:x("Export"),content:x("Export warning",{limit:A}),okText:x("Start export")})];case 1:var v;if(!f.sent())return[2];return S.data.loading=!0,(o=M().cloneDeep(null!==(n=null==c?void 0:c["x-action-settings"])&&void 0!==n?n:{}).exportSettings).forEach(function(e){var t,n,r=null!==(n=p("".concat(d,".").concat(e.dataIndex.join("."))))&&void 0!==n?n:{},o=r.uiSchema;r.interface,e.enum=null==o?void 0:null===(t=o.enum)||void 0===t?void 0:t.map(function(e){return{value:e.value,label:e.label}}),!e.enum&&(null==o?void 0:o.type)==="boolean"&&(e.enum=[{value:!0,label:x("Yes")},{value:!1,label:x("No")}]),e.defaultTitle=null==o?void 0:o.title}),[4,i.export({title:s(y),appends:null===(t=r.params[0])||void 0===t?void 0:null===(e=t.appends)||void 0===e?void 0:e.join(),filter:(0,m.mergeFilter)(((function(e){if(Array.isArray(e))return B(e)})(v=Object.values(g))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(v)||function(e,t){if(e){if("string"==typeof e)return B(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 B(e,t)}}(v)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).concat([u])),sort:null==a?void 0:a.sort,values:{columns:s(o)}},{responseType:"blob"})];case 2:return l=new Blob([f.sent().data],{type:"application/x-xls"}),S.data.loading=!1,(0,q.saveAs)(l,"".concat(s(y),".xlsx")),[2]}})},function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function a(e){D(i,r,o,a,l,"next",e)}function l(e){D(i,r,o,a,l,"throw",e)}a(void 0)})})()}}};function R(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 N(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var G=new m.SchemaSettings({name:"actionSettings:export",items:[{name:"editButton",Component:m.ButtonEditor,useComponentProps:function(){return(0,m.useSchemaToolbar)().buttonEditorProps}},{name:"exportableFields",type:"actionModal",useComponentProps:function(){var e,t,n,r,o=(0,b.useField)(),i=(0,b.useFieldSchema)(),a=(0,E.useTranslation)().t,l=(0,m.useDesignable)().dn;var u=(e=(0,v.useState)(),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],a=!0,l=!1;try{for(o=o.call(e);!(a=(n=o.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(e){l=!0,r=e}finally{try{!a&&null!=o.return&&o.return()}finally{if(l)throw r}}return i}}(e,2)||function(e,t){if(e){if("string"==typeof e)return R(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 R(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.")}()),c=u[0],s=u[1],p=O().schema;return(0,v.useEffect)(function(){s(p)},[o.address,null==i?void 0:null===(n=i["x-action-settings"])||void 0===n?void 0:n.exportSettings]),{title:a("Exportable fields"),schema:c,initialValues:{exportSettings:null==i?void 0:null===(r=i["x-action-settings"])||void 0===r?void 0:r.exportSettings},components:{ArrayItems:S.ArrayItems},onSubmit:function(e){var t,n=e.exportSettings;i["x-action-settings"].exportSettings=null==n?void 0:n.filter(function(e){var t;return null==e?void 0:null===(t=e.dataIndex)||void 0===t?void 0:t.length}).map(function(e){return{dataIndex:e.dataIndex.map(function(e){var t;return null!==(t=e.name)&&void 0!==t?t:e}),title:e.title}}),l.emit("patch",{schema:(N(t={},"x-uid",i["x-uid"]),N(t,"x-action-settings",i["x-action-settings"]),t)}),l.refresh()}}}},{name:"divider",type:"divider"},{name:"delete",type:"remove",useComponentProps:function(){return{removeParentsIfNoChildren:!0,breakRemoveOn:function(e){return"Space"===e["x-component"]||e["x-component"].endsWith("ActionBar")},confirm:{title:(0,(0,E.useTranslation)().t)("Delete action")}}}}]});function L(e,t,n,r,o,i,a){try{var l=e[i](a),u=l.value}catch(e){n(e);return}l.done?t(u):Promise.resolve(u).then(r,o)}function U(e,t,n){return(U=J()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&H(o,n.prototype),o}).apply(null,arguments)}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)}}function V(e){return(V=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function H(e,t){return(H=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function W(e){var t="function"==typeof Map?new Map:void 0;return(W=function(e){var n;if(null===e||(n=e,-1===Function.toString.call(n).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,r)}function r(){return U(e,arguments,V(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),H(r,e)})(e)}function J(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(J=function(){return!!e})()}var Y=function(e){var t,n,r;function o(){var e,t,n;return!function(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}(this,o),e=this,t=o,n=arguments,t=V(t),function(e,t){return t&&("object"===function(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}(t)||"function"==typeof t)?t:function(e){if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,J()?Reflect.construct(t,n||[],V(e).constructor):t.apply(e,n))}return!function(e,t){if("function"!=typeof t&&null!==t)throw TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&H(e,t)}(o,e),t=o,n=[{key:"load",value:function(){var e,t=this;return(e=function(){var e,n;return function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}}(this,function(r){return t.app.use(T),e={title:"{{t('Export')}}",Component:"ExportActionInitializer",schema:{"x-align":"right","x-decorator":"ACLActionProvider","x-acl-action-props":{skipScopeCheck:!0}},useVisible:function(){return(0,m.useActionAvailable)("export")}},null==(n=t.app.schemaInitializerManager.get("table:configureActions"))||n.add("enableActions.export",e),t.app.schemaInitializerManager.addItem("gantt:configureActions","enableActions.export",e),t.app.schemaSettingsManager.add(G),[2]})},function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function a(e){L(i,r,o,a,l,"next",e)}function l(e){L(i,r,o,a,l,"throw",e)}a(void 0)})})()}}],$(t.prototype,n),o}(W(m.Plugin)),K=Y;return f}()});
10
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("file-saver"),require("@formily/shared"),require("@nocobase/client"),require("@formily/antd-v5"),require("react"),require("@formily/react"),require("lodash"),require("antd"),require("react-i18next")):"function"==typeof define&&define.amd?define("@nocobase/plugin-action-export",["file-saver","@formily/shared","@nocobase/client","@formily/antd-v5","react","@formily/react","lodash","antd","react-i18next"],t):"object"==typeof exports?exports["@nocobase/plugin-action-export"]=t(require("file-saver"),require("@formily/shared"),require("@nocobase/client"),require("@formily/antd-v5"),require("react"),require("@formily/react"),require("lodash"),require("antd"),require("react-i18next")):e["@nocobase/plugin-action-export"]=t(e["file-saver"],e["@formily/shared"],e["@nocobase/client"],e["@formily/antd-v5"],e.react,e["@formily/react"],e.lodash,e.antd,e["react-i18next"])}(self,function(e,t,n,r,o,i,a,l,u){return function(){"use strict";var c={632:function(e){e.exports=r},505:function(e){e.exports=i},875:function(e){e.exports=t},772:function(e){e.exports=n},721:function(e){e.exports=l},346:function(t){t.exports=e},467:function(e){e.exports=a},156:function(e){e.exports=o},238:function(e){e.exports=u}},s={};function p(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}};return c[e](n,n.exports,p),n.exports}p.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return p.d(t,{a:t}),t},p.d=function(e,t){for(var n in t)p.o(t,n)&&!p.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},p.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},p.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var f={};return!function(){p.r(f),p.d(f,{ExportActionInitializer:function(){return l},ExportDesigner:function(){return h},PluginActionExportClient:function(){return B},default:function(){return D},useExportAction:function(){return E},ExportPluginProvider:function(){return g}});var e=p(875),t=p(772),n=p(156),r=p.n(n),o=p(505);function i(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}var a=function(e){var n,r=(0,o.useFieldSchema)();null==r||null==(n=r["x-component-props"])||n.nonfilterable;var a=(0,t.useCollectionManager_deprecated)().getCollectionFields,l=a(e),u=function(e,t){if(e.interface){var n={name:e.name,title:(null==e||null==(r=e.uiSchema)?void 0:r.title)||e.name,schema:null==e?void 0:e.uiSchema};if(!e.target||t>=3)return n;if(e.target&&["hasOne","hasMany","belongsTo","belongsToMany","belongsToArray"].includes(e.type)){var r,o,l=c(a(e.target),t+1).filter(Boolean);n.children=n.children||[],(o=n.children).push.apply(o,function(e){if(Array.isArray(e))return i(e)}(l)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(l)||function(e,t){if(e){if("string"==typeof e)return i(e,void 0);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 i(e,t)}}(l)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())}return n}},c=function(e,t){var n=[];return e.forEach(function(e){var r=u(e,t);r&&n.push(r)}),n};return c(l,1)},l=function(){var n=(0,t.useSchemaInitializerItem)(),o=(0,t.useSchemaInitializer)().insert,i=a((0,t.useCollection_deprecated)().name),l={type:"void",title:'{{ t("Export") }}',"x-action":"export","x-action-settings":{exportSettings:[]},"x-toolbar":"ActionSchemaToolbar","x-settings":"actionSettings:export","x-decorator":"ACLActionProvider","x-component":"Action","x-use-component-props":"useExportAction","x-component-props":{icon:"clouddownloadoutlined"}};return r().createElement(t.SchemaInitializerItem,{title:n.title,onClick:function(){l["x-action-settings"].exportSettings=null==i?void 0:i.filter(function(e){return!e.children}).map(function(e){return{dataIndex:[e.name]}});var t,r=(0,e.merge)(l||{},n.schema||{});null==n||null==(t=n.schemaInitialize)||t.call(n,r),o(r)}})},u=p(632);function c(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function s(){var e=c(["\n width: 100%;\n & .ant-space-item:nth-child(2),\n & .ant-space-item:nth-child(3) {\n flex: 1;\n }\n "]);return s=function(){return e},e}function d(){var e=c(["\n border-color: var(--colorSettings);\n color: var(--colorSettings);\n &.ant-btn-dashed:hover {\n border-color: var(--colorSettings);\n color: var(--colorSettings);\n }\n "]);return d=function(){return e},e}var m=function(){var e=(0,t.useCollection_deprecated)().name,n=(0,t.useCompile)(),r=a(e);return{schema:{type:"void","x-component":"Grid",properties:{exportSettings:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",items:{type:"object",properties:{space:{type:"void","x-component":"Space","x-component-props":{className:(0,t.css)(s())},properties:{sort:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.SortHandle"},dataIndex:{type:"array","x-decorator":"FormItem","x-component":"Cascader",required:!0,"x-component-props":{fieldNames:{label:"title",value:"name",children:"children"},changeOnSelect:!1},"x-use-component-props":function(){return{options:n(r)}}},title:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:'{{ t("Custom column title") }}'}},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove"}}}}},properties:{add:{type:"void",title:'{{ t("Add exportable field") }}',"x-component":"ArrayItems.Addition","x-component-props":{className:(0,t.css)(d())}}}}}}}},y=p(238);function v(){return(0,y.useTranslation)(["action-export","client"],{nsMode:"fallback"})}function b(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 x(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var h=function(){var e,i,a,l,c,s,p=(0,o.useField)(),f=(0,o.useFieldSchema)(),d=v().t,y=(0,t.useDesignable)().dn,h=(e=(0,n.useState)(),function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],a=!0,l=!1;try{for(o=o.call(e);!(a=(n=o.next()).done)&&(i.push(n.value),i.length!==t);a=!0);}catch(e){l=!0,r=e}finally{try{a||null==o.return||o.return()}finally{if(l)throw r}}return i}}(e,2)||function(e,t){if(e){if("string"==typeof e)return b(e,2);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 b(e,t)}}(e,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=h[0],S=h[1],A=m().schema;return(0,n.useEffect)(function(){S(A)},[p.address,null==f||null==(i=f["x-action-settings"])?void 0:i.exportSettings]),r().createElement(t.GeneralSchemaDesigner,{disableInitializer:!0},r().createElement(t.SchemaSettingsModalItem,{title:d("Edit button"),schema:{type:"object",title:d("Edit button"),properties:{title:{"x-decorator":"FormItem","x-component":"Input",title:d("Button title"),default:f.title,"x-component-props":{}},icon:{"x-decorator":"FormItem","x-component":"IconPicker",title:d("Button icon"),default:null==f||null==(a=f["x-component-props"])?void 0:a.icon,"x-component-props":{}},type:{"x-decorator":"FormItem","x-component":"Radio.Group",title:d("Button background color"),default:(null==f||null==(l=f["x-component-props"])?void 0:l.danger)?"danger":(null==f||null==(c=f["x-component-props"])?void 0:c.type)==="primary"?"primary":"default",enum:[{value:"default",label:'{{t("Default")}}'},{value:"primary",label:'{{t("Highlight")}}'},{value:"danger",label:'{{t("Danger red")}}'}]}}},onSubmit:function(e){var t,n=e.title,r=e.icon,o=e.type;f.title=n,p.title=n,p.componentProps.icon=r,p.componentProps.danger="danger"===o,p.componentProps.type=o,f["x-component-props"]=f["x-component-props"]||{},f["x-component-props"].icon=r,f["x-component-props"].danger="danger"===o,f["x-component-props"].type=o,y.emit("patch",{schema:(x(t={},"x-uid",f["x-uid"]),x(t,"title",n),x(t,"x-component-props",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){x(e,t,n[t])})}return e}({},f["x-component-props"])),t)}),y.refresh()}}),r().createElement(t.SchemaSettingsActionModalItem,{title:d("Exportable fields"),schema:g,initialValues:{exportSettings:null==f||null==(s=f["x-action-settings"])?void 0:s.exportSettings},scope:{t:d},components:{ArrayItems:u.ArrayItems},onSubmit:function(e){var t,n=e.exportSettings;f["x-action-settings"].exportSettings=null==n?void 0:n.filter(function(e){var t;return null==e||null==(t=e.dataIndex)?void 0:t.length}).map(function(e){return{dataIndex:e.dataIndex.map(function(e){var t;return null!=(t=e.name)?t:e}),title:e.title}}),y.emit("patch",{schema:(x(t={},"x-uid",f["x-uid"]),x(t,"x-action-settings",f["x-action-settings"]),t)}),y.refresh()}}),r().createElement(t.SchemaSettingsDivider,null),r().createElement(t.SchemaSettingsRemove,{removeParentsIfNoChildren:!0,breakRemoveOn:function(e){return"Space"===e["x-component"]||e["x-component"].endsWith("ActionBar")},confirm:{title:d("Delete action")}}))},g=function(e){return r().createElement(t.SchemaComponentOptions,{components:{ExportActionInitializer:l,ExportDesigner:h},scope:{useExportAction:E}},e.children)},S=p(467),A=p.n(S),I=p(346),O=p(721);function w(e,t,n,r,o,i,a){try{var l=e[i](a),u=l.value}catch(e){n(e);return}l.done?t(u):Promise.resolve(u).then(r,o)}var E=function(){var e,r=(0,t.useBlockRequestContext)(),i=r.service,a=r.props,l=(0,t.useDataBlockResource)(),u=(0,t.useTableBlockContext)().params,c=(0,t.useCurrentAppInfo)(),s=null==a?void 0:a.params.filter,p=(0,o.useFieldSchema)(),f=(0,t.useCompile)(),d=(0,t.useCollectionManager_deprecated)().getCollectionJoinField,m=(0,t.useCollection_deprecated)(),y=m.name,b=m.title,x=v().t,h=O.App.useApp().modal,g=(null==(e=i.params[0])?void 0:e.filter)||{},S=(0,o.useField)(),E=(0,n.useMemo)(function(){var e;return(null==c||null==(e=c.data)?void 0:e.exportLimit)?c.data.exportLimit:2e3},[c]);return{onClick:function(){var e;return(e=function(){var e,n,r,o,a;return function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){var u=[i,l];if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,r=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===u[0]||2===u[0])){a=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){a.label=u[1];break}if(6===u[0]&&a.label<o[1]){a.label=o[1],o=u;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(u);break}o[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],r=0}finally{n=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(c){switch(c.label){case 0:return S.data=S.data||{},[4,h.confirm({title:x("Export"),content:x("Export warning",{limit:E}),okText:x("Start export")})];case 1:if(!c.sent())return[2];return S.data.loading=!0,(o=A().cloneDeep(null!=(r=null==p?void 0:p["x-action-settings"])?r:{}).exportSettings).forEach(function(e){var t,n,r=null!=(n=d("".concat(y,".").concat(e.dataIndex.join("."))))?n:{},o=r.uiSchema;r.interface,e.enum=null==o||null==(t=o.enum)?void 0:t.map(function(e){return{value:e.value,label:e.label}}),e.enum||(null==o?void 0:o.type)!=="boolean"||(e.enum=[{value:!0,label:x("Yes")},{value:!1,label:x("No")}]),e.defaultTitle=null==o?void 0:o.title}),[4,l.export({title:f(b),appends:null==(n=i.params[0])||null==(e=n.appends)?void 0:e.join(),filter:(0,t.mergeFilter)([g,s]),sort:null==u?void 0:u.sort,values:{columns:f(o)}},{responseType:"blob"})];case 2:return a=new Blob([c.sent().data],{type:"application/x-xls"}),S.data.loading=!1,(0,I.saveAs)(a,"".concat(f(b),".xlsx")),[2]}})},function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function a(e){w(i,r,o,a,l,"next",e)}function l(e){w(i,r,o,a,l,"throw",e)}a(void 0)})})()}}};function j(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 P(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var C=new t.SchemaSettings({name:"actionSettings:export",items:[{name:"editButton",Component:t.ButtonEditor,useComponentProps:function(){return(0,t.useSchemaToolbar)().buttonEditorProps}},{name:"linkageRules",Component:t.SchemaSettingsLinkageRules,useComponentProps:function(){return 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){P(e,t,n[t])})}return e}({},(0,t.useSchemaToolbar)().linkageRulesProps)}},{name:"exportableFields",type:"actionModal",useComponentProps:function(){var e,r,i,a=(0,o.useField)(),l=(0,o.useFieldSchema)(),c=(0,y.useTranslation)().t,s=(0,t.useDesignable)().dn,p=(e=(0,n.useState)(),function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],a=!0,l=!1;try{for(o=o.call(e);!(a=(n=o.next()).done)&&(i.push(n.value),i.length!==t);a=!0);}catch(e){l=!0,r=e}finally{try{a||null==o.return||o.return()}finally{if(l)throw r}}return i}}(e,2)||function(e,t){if(e){if("string"==typeof e)return j(e,2);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 j(e,t)}}(e,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),f=p[0],d=p[1],v=m().schema;return(0,n.useEffect)(function(){d(v)},[a.address,null==l||null==(r=l["x-action-settings"])?void 0:r.exportSettings]),{title:c("Exportable fields"),schema:f,initialValues:{exportSettings:null==l||null==(i=l["x-action-settings"])?void 0:i.exportSettings},components:{ArrayItems:u.ArrayItems},onSubmit:function(e){var t,n=e.exportSettings;l["x-action-settings"].exportSettings=null==n?void 0:n.filter(function(e){var t;return null==e||null==(t=e.dataIndex)?void 0:t.length}).map(function(e){return{dataIndex:e.dataIndex.map(function(e){var t;return null!=(t=e.name)?t:e}),title:e.title}}),s.emit("patch",{schema:(P(t={},"x-uid",l["x-uid"]),P(t,"x-action-settings",l["x-action-settings"]),t)}),s.refresh()}}}},{name:"divider",type:"divider"},{name:"delete",type:"remove",useComponentProps:function(){return{removeParentsIfNoChildren:!0,breakRemoveOn:function(e){return"Space"===e["x-component"]||e["x-component"].endsWith("ActionBar")},confirm:{title:(0,(0,y.useTranslation)().t)("Delete action")}}}}]});function k(e,t,n,r,o,i,a){try{var l=e[i](a),u=l.value}catch(e){n(e);return}l.done?t(u):Promise.resolve(u).then(r,o)}function T(e,t,n){return(T=_()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&q(o,n.prototype),o}).apply(null,arguments)}function F(e){return(F=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function q(e,t){return(q=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function M(e){var t="function"==typeof Map?new Map:void 0;return(M=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 T(e,arguments,F(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),q(n,e)})(e)}function _(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(_=function(){return!!e})()}var B=function(e){var n;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function r(){var e,t;if(!(this instanceof r))throw TypeError("Cannot call a class as a function");return e=r,t=arguments,e=F(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,_()?Reflect.construct(e,t||[],F(this).constructor):e.apply(this,t))}return r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),e&&q(r,e),n=[{key:"load",value:function(){var e,n=this;return(e=function(){var e,r;return function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){var u=[i,l];if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,r=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===u[0]||2===u[0])){a=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){a.label=u[1];break}if(6===u[0]&&a.label<o[1]){a.label=o[1],o=u;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(u);break}o[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],r=0}finally{n=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(o){return n.app.use(g),e={title:"{{t('Export')}}",Component:"ExportActionInitializer",schema:{"x-align":"right","x-decorator":"ACLActionProvider","x-acl-action-props":{skipScopeCheck:!0}},useVisible:function(){return(0,t.useActionAvailable)("export")}},null==(r=n.app.schemaInitializerManager.get("table:configureActions"))||r.add("enableActions.export",e),n.app.schemaInitializerManager.addItem("gantt:configureActions","enableActions.export",e),n.app.schemaSettingsManager.add(C),[2]})},function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function a(e){k(i,r,o,a,l,"next",e)}function l(e){k(i,r,o,a,l,"throw",e)}a(void 0)})})()}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(r.prototype,n),r}(M(t.Plugin)),D=B}(),f}()});
@@ -1,12 +1,3 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
- /// <reference types="react" />
10
1
  export declare const useShared: () => {
11
2
  schema: {
12
3
  type: string;
@@ -34,9 +25,8 @@ export declare const useShared: () => {
34
25
  dataIndex: {
35
26
  type: string;
36
27
  'x-decorator': string;
37
- 'x-component': import("react").FunctionComponent<Partial<import("@nocobase/client").CascaderProps<any>> & import("react").RefAttributes<unknown>>;
28
+ 'x-component': string;
38
29
  required: boolean;
39
- enum: any[];
40
30
  'x-component-props': {
41
31
  fieldNames: {
42
32
  label: string;
@@ -45,6 +35,9 @@ export declare const useShared: () => {
45
35
  };
46
36
  changeOnSelect: boolean;
47
37
  };
38
+ 'x-use-component-props': () => {
39
+ options: any;
40
+ };
48
41
  };
49
42
  title: {
50
43
  type: string;
@@ -10,16 +10,16 @@
10
10
  module.exports = {
11
11
  "@formily/react": "2.3.0",
12
12
  "@formily/shared": "2.3.2",
13
- "@nocobase/client": "1.7.0-beta.3",
13
+ "@nocobase/client": "1.7.0-beta.31",
14
14
  "react": "18.2.0",
15
- "@formily/antd-v5": "1.1.9",
15
+ "@formily/antd-v5": "1.2.3",
16
16
  "react-i18next": "11.18.6",
17
17
  "lodash": "4.17.21",
18
18
  "file-saver": "2.0.5",
19
- "antd": "5.12.8",
20
- "@nocobase/server": "1.7.0-beta.3",
21
- "@nocobase/actions": "1.7.0-beta.3",
22
- "@nocobase/database": "1.7.0-beta.3",
19
+ "antd": "5.24.2",
20
+ "@nocobase/server": "1.7.0-beta.31",
21
+ "@nocobase/actions": "1.7.0-beta.31",
22
+ "@nocobase/database": "1.7.0-beta.31",
23
23
  "async-mutex": "0.5.0",
24
- "@nocobase/data-source-manager": "1.7.0-beta.3"
24
+ "@nocobase/data-source-manager": "1.7.0-beta.31"
25
25
  };
@@ -1,6 +1,7 @@
1
1
  {
2
- "Export warning": "You can export up to {{limit}} rows of data at a time, any excess will be ignored.",
3
- "Start export": "Start export",
4
- "True": "True",
5
- "False": "False"
2
+ "Export warning": "Je kunt maximaal {{limit}} rijen gegevens tegelijk exporteren, eventuele overschrijdingen worden genegeerd.",
3
+ "Start export": "Start exporteren",
4
+ "another export action is running, please try again later.": "Er is al een andere exportactie bezig, probeer het later opnieuw.",
5
+ "True": "Waar",
6
+ "False": "Onwaar"
6
7
  }
@@ -1 +1 @@
1
- {"name":"xlsx","version":"0.20.2","author":"sheetjs","description":"SheetJS Spreadsheet data parser and writer","keywords":["excel","xls","xlsx","xlsb","xlsm","ods","csv","dbf","dif","sylk","office","spreadsheet"],"bin":{"xlsx":"./bin/xlsx.njs"},"main":"xlsx.js","module":"xlsx.mjs","unpkg":"dist/xlsx.full.min.js","jsdelivr":"dist/xlsx.full.min.js","types":"types/index.d.ts","exports":{".":{"import":"./xlsx.mjs","require":"./xlsx.js","types":"./types/index.d.ts"},"./xlsx.mjs":{"import":"./xlsx.mjs","types":"./types/index.d.ts"},"./xlsx.js":{"require":"./xlsx.js","types":"./types/index.d.ts"},"./dist/xlsx.core.min":{"import":"./dist/xlsx.core.min.js","require":"./dist/xlsx.core.min.js","types":"./types/index.d.ts"},"./dist/xlsx.core.min.js":{"import":"./dist/xlsx.core.min.js","require":"./dist/xlsx.core.min.js","types":"./types/index.d.ts"},"./dist/xlsx.full.min":{"import":"./dist/xlsx.full.min.js","require":"./dist/xlsx.full.min.js","types":"./types/index.d.ts"},"./dist/xlsx.full.min.js":{"import":"./dist/xlsx.full.min.js","require":"./dist/xlsx.full.min.js","types":"./types/index.d.ts"},"./dist/xlsx.mini.min":{"import":"./dist/xlsx.mini.min.js","require":"./dist/xlsx.mini.min.js","types":"./types/index.d.ts"},"./dist/xlsx.mini.min.js":{"import":"./dist/xlsx.mini.min.js","require":"./dist/xlsx.mini.min.js","types":"./types/index.d.ts"},"./dist/xlsx.zahl":{"import":"./dist/xlsx.zahl.mjs","require":"./dist/xlsx.zahl.js","types":"./dist/zahl.d.ts"},"./dist/xlsx.zahl.mjs":{"import":"./dist/xlsx.zahl.mjs","types":"./dist/zahl.d.ts"},"./dist/xlsx.zahl.js":{"require":"./dist/xlsx.zahl.js","types":"./dist/zahl.d.ts"},"./dist/cpexcel":{"import":"./dist/cpexcel.full.mjs","require":"./dist/cpexcel.js","types":"./dist/cpexcel.d.ts"},"./dist/cpexcel.js":{"require":"./dist/cpexcel.js","types":"./dist/cpexcel.d.ts"},"./dist/cpexcel.full":{"import":"./dist/cpexcel.full.mjs","require":"./dist/cpexcel.js","types":"./dist/cpexcel.d.ts"},"./dist/cpexcel.full.mjs":{"import":"./dist/cpexcel.full.mjs","types":"./dist/cpexcel.d.ts"}},"browser":{"buffer":false,"crypto":false,"stream":false,"process":false,"fs":false},"sideEffects":false,"dependencies":{},"devDependencies":{"@sheetjs/uglify-js":"~2.7.3","@types/node":"^8.5.9","acorn":"7.4.1","adler-32":"~1.3.1","alex":"8.1.1","blanket":"~1.2.3","cfb":"~1.2.2","codepage":"~1.15.0","commander":"~2.17.1","crc-32":"~1.2.2","dtslint":"^0.1.2","eslint":"7.23.0","eslint-plugin-html":"^6.1.2","eslint-plugin-json":"^2.1.2","exit-on-epipe":"~1.0.1","fflate":"^0.7.1","jsdom":"~11.1.0","markdown-spellcheck":"^1.3.1","mocha":"~2.5.3","sinon":"^1.17.7","ssf":"~0.11.2","typescript":"2.2.0","wmf":"~1.0.1","word":"~0.3.0"},"repository":{"type":"git","url":"https://git.sheetjs.com/SheetJS/sheetjs"},"scripts":{"pretest":"npm run lint","test":"npm run tests-only","pretest-only":"git submodule init && git submodule update","tests-only":"make travis","build":"make","lint":"make fullint","dtslint":"dtslint types"},"config":{"blanket":{"pattern":"xlsx.js"}},"alex":{"allow":["chinese","special","simple","just","crash","wtf","holes"]},"homepage":"https://sheetjs.com/","files":["CHANGELOG.md","LICENSE","README.md","bower.json","package.json","xlsx.js","xlsx.mjs","xlsxworker.js","bin/xlsx.njs","dist/LICENSE","dist/*.mjs","dist/*.js","dist/*.map","dist/*.d.ts","types/index.d.ts","types/tsconfig.json"],"bugs":{"url":"https://git.sheetjs.com/SheetJS/sheetjs/issues"},"license":"Apache-2.0","engines":{"node":">=0.8"},"_lastModified":"2025-03-13T23:27:24.344Z"}
1
+ {"name":"xlsx","version":"0.20.2","author":"sheetjs","description":"SheetJS Spreadsheet data parser and writer","keywords":["excel","xls","xlsx","xlsb","xlsm","ods","csv","dbf","dif","sylk","office","spreadsheet"],"bin":{"xlsx":"./bin/xlsx.njs"},"main":"xlsx.js","module":"xlsx.mjs","unpkg":"dist/xlsx.full.min.js","jsdelivr":"dist/xlsx.full.min.js","types":"types/index.d.ts","exports":{".":{"import":"./xlsx.mjs","require":"./xlsx.js","types":"./types/index.d.ts"},"./xlsx.mjs":{"import":"./xlsx.mjs","types":"./types/index.d.ts"},"./xlsx.js":{"require":"./xlsx.js","types":"./types/index.d.ts"},"./dist/xlsx.core.min":{"import":"./dist/xlsx.core.min.js","require":"./dist/xlsx.core.min.js","types":"./types/index.d.ts"},"./dist/xlsx.core.min.js":{"import":"./dist/xlsx.core.min.js","require":"./dist/xlsx.core.min.js","types":"./types/index.d.ts"},"./dist/xlsx.full.min":{"import":"./dist/xlsx.full.min.js","require":"./dist/xlsx.full.min.js","types":"./types/index.d.ts"},"./dist/xlsx.full.min.js":{"import":"./dist/xlsx.full.min.js","require":"./dist/xlsx.full.min.js","types":"./types/index.d.ts"},"./dist/xlsx.mini.min":{"import":"./dist/xlsx.mini.min.js","require":"./dist/xlsx.mini.min.js","types":"./types/index.d.ts"},"./dist/xlsx.mini.min.js":{"import":"./dist/xlsx.mini.min.js","require":"./dist/xlsx.mini.min.js","types":"./types/index.d.ts"},"./dist/xlsx.zahl":{"import":"./dist/xlsx.zahl.mjs","require":"./dist/xlsx.zahl.js","types":"./dist/zahl.d.ts"},"./dist/xlsx.zahl.mjs":{"import":"./dist/xlsx.zahl.mjs","types":"./dist/zahl.d.ts"},"./dist/xlsx.zahl.js":{"require":"./dist/xlsx.zahl.js","types":"./dist/zahl.d.ts"},"./dist/cpexcel":{"import":"./dist/cpexcel.full.mjs","require":"./dist/cpexcel.js","types":"./dist/cpexcel.d.ts"},"./dist/cpexcel.js":{"require":"./dist/cpexcel.js","types":"./dist/cpexcel.d.ts"},"./dist/cpexcel.full":{"import":"./dist/cpexcel.full.mjs","require":"./dist/cpexcel.js","types":"./dist/cpexcel.d.ts"},"./dist/cpexcel.full.mjs":{"import":"./dist/cpexcel.full.mjs","types":"./dist/cpexcel.d.ts"}},"browser":{"buffer":false,"crypto":false,"stream":false,"process":false,"fs":false},"sideEffects":false,"dependencies":{},"devDependencies":{"@sheetjs/uglify-js":"~2.7.3","@types/node":"^8.5.9","acorn":"7.4.1","adler-32":"~1.3.1","alex":"8.1.1","blanket":"~1.2.3","cfb":"~1.2.2","codepage":"~1.15.0","commander":"~2.17.1","crc-32":"~1.2.2","dtslint":"^0.1.2","eslint":"7.23.0","eslint-plugin-html":"^6.1.2","eslint-plugin-json":"^2.1.2","exit-on-epipe":"~1.0.1","fflate":"^0.7.1","jsdom":"~11.1.0","markdown-spellcheck":"^1.3.1","mocha":"~2.5.3","sinon":"^1.17.7","ssf":"~0.11.2","typescript":"2.2.0","wmf":"~1.0.1","word":"~0.3.0"},"repository":{"type":"git","url":"https://git.sheetjs.com/SheetJS/sheetjs"},"scripts":{"pretest":"npm run lint","test":"npm run tests-only","pretest-only":"git submodule init && git submodule update","tests-only":"make travis","build":"make","lint":"make fullint","dtslint":"dtslint types"},"config":{"blanket":{"pattern":"xlsx.js"}},"alex":{"allow":["chinese","special","simple","just","crash","wtf","holes"]},"homepage":"https://sheetjs.com/","files":["CHANGELOG.md","LICENSE","README.md","bower.json","package.json","xlsx.js","xlsx.mjs","xlsxworker.js","bin/xlsx.njs","dist/LICENSE","dist/*.mjs","dist/*.js","dist/*.map","dist/*.d.ts","types/index.d.ts","types/tsconfig.json"],"bugs":{"url":"https://git.sheetjs.com/SheetJS/sheetjs/issues"},"license":"Apache-2.0","engines":{"node":">=0.8"},"_lastModified":"2025-05-15T09:23:55.788Z"}
@@ -7,11 +7,9 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
- var __create = Object.create;
11
10
  var __defProp = Object.defineProperty;
12
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
14
- var __getProtoOf = Object.getPrototypeOf;
15
13
  var __hasOwnProp = Object.prototype.hasOwnProperty;
16
14
  var __export = (target, all) => {
17
15
  for (var name in all)
@@ -25,14 +23,6 @@ var __copyProps = (to, from, except, desc) => {
25
23
  }
26
24
  return to;
27
25
  };
28
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
29
- // If the importer is in node compatibility mode or this is not an ESM
30
- // file that has been converted to a CommonJS file using a Babel-
31
- // compatible transform (i.e. "__esModule" has not been set), then set
32
- // "default" to the CommonJS "module.exports" for node compatibility.
33
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
34
- mod
35
- ));
36
26
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
37
27
  var export_xlsx_exports = {};
38
28
  __export(export_xlsx_exports, {
@@ -40,7 +30,6 @@ __export(export_xlsx_exports, {
40
30
  });
41
31
  module.exports = __toCommonJS(export_xlsx_exports);
42
32
  var import_xlsx_exporter = require("../services/xlsx-exporter");
43
- var import_xlsx = __toESM(require("xlsx"));
44
33
  var import_async_mutex = require("async-mutex");
45
34
  const mutex = new import_async_mutex.Mutex();
46
35
  async function exportXlsxAction(ctx, next) {
@@ -66,7 +55,7 @@ async function exportXlsxAction(ctx, next) {
66
55
  }
67
56
  });
68
57
  const wb = await xlsxExporter.run(ctx);
69
- ctx.body = import_xlsx.default.write(wb, { type: "buffer", bookType: "xlsx" });
58
+ ctx.body = import_xlsx_exporter.XlsxExporter.xlsxSafeWrite(wb, { type: "buffer", bookType: "xlsx" });
70
59
  ctx.set({
71
60
  "Content-Type": "application/octet-stream",
72
61
  "Content-Disposition": `attachment; filename=${encodeURI(title)}.xlsx`
@@ -1,3 +1,11 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
1
9
  /// <reference types="node" />
2
10
  import { FindOptions, ICollection, ICollectionManager, IField, IModel } from '@nocobase/data-source-manager';
3
11
  import EventEmitter from 'events';
@@ -29,8 +37,8 @@ declare abstract class BaseExporter<T extends ExportOptions = ExportOptions> ext
29
37
  abstract finalize(): Promise<any>;
30
38
  abstract handleRow(row: any, ctx?: any): Promise<void>;
31
39
  run(ctx?: any): Promise<any>;
32
- protected getAppendOptionsFromFields(): string[];
33
- protected getFindOptions(): any;
40
+ protected getAppendOptionsFromFields(ctx?: any): string[];
41
+ protected getFindOptions(ctx?: any): any;
34
42
  protected findFieldByDataIndex(dataIndex: Array<string>): IField;
35
43
  protected renderRawValue(value: any): any;
36
44
  protected getFieldRenderer(field?: IField, ctx?: any): (value: any) => any;
@@ -40,9 +40,10 @@ __export(base_exporter_exports, {
40
40
  });
41
41
  module.exports = __toCommonJS(base_exporter_exports);
42
42
  var import_events = __toESM(require("events"));
43
- var import_deep_get = require("../utils/deep-get");
44
- var import_path = __toESM(require("path"));
43
+ var import_lodash = __toESM(require("lodash"));
45
44
  var import_os = __toESM(require("os"));
45
+ var import_path = __toESM(require("path"));
46
+ var import_deep_get = require("../utils/deep-get");
46
47
  class BaseExporter extends import_events.default {
47
48
  constructor(options) {
48
49
  super();
@@ -64,10 +65,10 @@ class BaseExporter extends import_events.default {
64
65
  async run(ctx) {
65
66
  await this.init(ctx);
66
67
  const { collection, chunkSize, repository } = this.options;
67
- const total = await (repository || collection.repository).count(this.getFindOptions());
68
+ const total = await (repository || collection.repository).count(this.getFindOptions(ctx));
68
69
  let current = 0;
69
70
  await (repository || collection.repository).chunk({
70
- ...this.getFindOptions(),
71
+ ...this.getFindOptions(ctx),
71
72
  chunkSize: chunkSize || 200,
72
73
  callback: async (rows, options) => {
73
74
  for (const row of rows) {
@@ -82,24 +83,32 @@ class BaseExporter extends import_events.default {
82
83
  });
83
84
  return this.finalize();
84
85
  }
85
- getAppendOptionsFromFields() {
86
- return this.options.fields.map((field) => {
87
- const fieldInstance = this.options.collection.getField(field[0]);
86
+ getAppendOptionsFromFields(ctx) {
87
+ var _a, _b, _c, _d, _e;
88
+ const fields = this.options.fields.map((x) => x[0]);
89
+ const hasPermissionFields = import_lodash.default.isEmpty((_b = (_a = ctx == null ? void 0 : ctx.permission) == null ? void 0 : _a.can) == null ? void 0 : _b.params) ? fields : import_lodash.default.intersection(((_e = (_d = (_c = ctx == null ? void 0 : ctx.permission) == null ? void 0 : _c.can) == null ? void 0 : _d.params) == null ? void 0 : _e.appends) || [], fields);
90
+ return hasPermissionFields.map((field) => {
91
+ const fieldInstance = this.options.collection.getField(field);
88
92
  if (!fieldInstance) {
89
- throw new Error(`Field "${field[0]}" not found: , please check the fields configuration.`);
93
+ throw new Error(`Field "${field}" not found: , please check the fields configuration.`);
94
+ }
95
+ const keys = field.split(".");
96
+ keys.pop();
97
+ if (import_lodash.default.get(fieldInstance, "collection.options.template") === "file") {
98
+ return keys.join(".");
90
99
  }
91
100
  if (fieldInstance.isRelationField()) {
92
- return field.join(".");
101
+ return field;
93
102
  }
94
103
  return null;
95
104
  }).filter(Boolean);
96
105
  }
97
- getFindOptions() {
106
+ getFindOptions(ctx) {
98
107
  const { findOptions = {} } = this.options;
99
108
  if (this.limit) {
100
109
  findOptions.limit = this.limit;
101
110
  }
102
- const appendOptions = this.getAppendOptionsFromFields();
111
+ const appendOptions = this.getAppendOptionsFromFields(ctx);
103
112
  if (appendOptions.length) {
104
113
  return {
105
114
  ...findOptions,
@@ -1,3 +1,11 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
1
9
  import XLSX from 'xlsx';
2
10
  import { BaseExporter, ExportOptions } from './base-exporter';
3
11
  type ExportColumn = {
@@ -30,5 +38,6 @@ export declare class XlsxExporter extends BaseExporter<XlsxExportOptions & {
30
38
  handleRow(row: any, ctx?: any): Promise<void>;
31
39
  finalize(): Promise<XLSX.WorkBook>;
32
40
  private renderHeaders;
41
+ static xlsxSafeWrite(wb: XLSX.WorkBook, opts: XLSX.WritingOptions, path?: string): any;
33
42
  }
34
43
  export {};
@@ -42,6 +42,7 @@ module.exports = __toCommonJS(xlsx_exporter_exports);
42
42
  var import_xlsx = __toESM(require("xlsx"));
43
43
  var import_base_exporter = require("./base-exporter");
44
44
  var import_database = require("@nocobase/database");
45
+ const XLSX_LIMIT_CHAER = 32767;
45
46
  class XlsxExporter extends import_base_exporter.BaseExporter {
46
47
  /**
47
48
  * You can adjust the maximum number of exported rows based on business needs and system
@@ -103,6 +104,17 @@ class XlsxExporter extends import_base_exporter.BaseExporter {
103
104
  return col.title || (fieldInstance == null ? void 0 : fieldInstance.options.title) || col.defaultTitle;
104
105
  });
105
106
  }
107
+ static xlsxSafeWrite(wb, opts, path) {
108
+ var _a;
109
+ const data = wb.Sheets.Data;
110
+ for (const key of Object.keys(data)) {
111
+ const v = (_a = data[key]) == null ? void 0 : _a.v;
112
+ if ((v == null ? void 0 : v.length) > XLSX_LIMIT_CHAER) {
113
+ data[key].v = v.slice(0, XLSX_LIMIT_CHAER);
114
+ }
115
+ }
116
+ return path ? import_xlsx.default.writeFileXLSX(wb, path) : import_xlsx.default.write(wb, opts);
117
+ }
106
118
  }
107
119
  function isNumeric(n) {
108
120
  return !isNaN(parseFloat(n)) && isFinite(n);
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "displayName.zh-CN": "操作:导出记录",
5
5
  "description": "Export filtered records to excel, you can configure which fields to export.",
6
6
  "description.zh-CN": "导出筛选后的记录到 Excel 中,可以配置导出哪些字段。",
7
- "version": "1.7.0-beta.3",
7
+ "version": "1.7.0-beta.31",
8
8
  "license": "AGPL-3.0",
9
9
  "main": "./dist/server/index.js",
10
10
  "homepage": "https://docs.nocobase.com/handbook/action-export",
@@ -29,7 +29,7 @@
29
29
  "@nocobase/test": "1.x",
30
30
  "@nocobase/utils": "1.x"
31
31
  },
32
- "gitHead": "8d52cb1d366a968f87c1cd3f98f55f24be3056a5",
32
+ "gitHead": "84bf8bcfeeaf3a05086e24cef00507ca209ac3c5",
33
33
  "keywords": [
34
34
  "Actions"
35
35
  ]