@nocobase/plugin-public-forms 2.2.0-beta.8 → 2.3.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,9 +7,11 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
+ var __create = Object.create;
10
11
  var __defProp = Object.defineProperty;
11
12
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
13
  var __getOwnPropNames = Object.getOwnPropertyNames;
14
+ var __getProtoOf = Object.getPrototypeOf;
13
15
  var __hasOwnProp = Object.prototype.hasOwnProperty;
14
16
  var __export = (target, all) => {
15
17
  for (var name in all)
@@ -23,6 +25,14 @@ var __copyProps = (to, from, except, desc) => {
23
25
  }
24
26
  return to;
25
27
  };
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
+ ));
26
36
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
37
  var plugin_exports = {};
28
38
  __export(plugin_exports, {
@@ -31,11 +41,66 @@ __export(plugin_exports, {
31
41
  });
32
42
  module.exports = __toCommonJS(plugin_exports);
33
43
  var import_server = require("@nocobase/server");
44
+ var import_utils = require("@nocobase/utils");
45
+ var import_crypto = __toESM(require("crypto"));
34
46
  var import_hook = require("./hook");
35
47
  class PasswordError extends Error {
36
48
  }
49
+ const PUBLIC_FORM_COOKIE_PREFIX = "nb_pf_";
50
+ const PUBLIC_FORM_TOKEN_EXPIRES_IN = "1h";
51
+ const PUBLIC_FORM_COOKIE_MAX_AGE = 60 * 60 * 1e3;
52
+ function parseCookieHeader(header) {
53
+ const cookies = [];
54
+ if (!header) {
55
+ return cookies;
56
+ }
57
+ for (const item of header.split(";")) {
58
+ const index = item.indexOf("=");
59
+ if (index < 0) {
60
+ continue;
61
+ }
62
+ const name = item.slice(0, index).trim();
63
+ const value = item.slice(index + 1).trim();
64
+ if (!name) {
65
+ continue;
66
+ }
67
+ try {
68
+ cookies.push([name, decodeURIComponent(value)]);
69
+ } catch {
70
+ cookies.push([name, value]);
71
+ }
72
+ }
73
+ return cookies;
74
+ }
75
+ function normalizeFiles(value) {
76
+ const files = {};
77
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
78
+ return files;
79
+ }
80
+ for (const [key, ids] of Object.entries(value)) {
81
+ if (typeof key !== "string" || !Array.isArray(ids)) {
82
+ continue;
83
+ }
84
+ files[key] = ids.filter((id) => typeof id === "string" || typeof id === "number");
85
+ }
86
+ return files;
87
+ }
88
+ function getResponseRecordId(body) {
89
+ const responseBody = body && typeof body === "object" && "data" in body ? body.data : body;
90
+ if (!responseBody || typeof responseBody !== "object") {
91
+ return null;
92
+ }
93
+ if ("get" in responseBody && typeof responseBody.get === "function") {
94
+ return responseBody.get("id");
95
+ }
96
+ if ("id" in responseBody) {
97
+ return responseBody.id;
98
+ }
99
+ return null;
100
+ }
37
101
  class PluginPublicFormsServer extends import_server.Plugin {
38
102
  associationFieldTypes = ["hasOne", "hasMany", "belongsTo", "belongsToMany", "belongsToArray"];
103
+ fileAccessAuthorizerRegistered = false;
39
104
  async parseCollectionData(dataSourceKey, formCollection, appends) {
40
105
  const dataSource = this.app.dataSourceManager.dataSources.get(dataSourceKey);
41
106
  const serializeCollection = (collection2) => ({
@@ -223,33 +288,92 @@ class PluginPublicFormsServer extends import_server.Plugin {
223
288
  ])
224
289
  ];
225
290
  const collections = await this.parseCollectionData(dataSourceKey, collectionName, appends);
291
+ const tokenPayload = {
292
+ collectionName,
293
+ formKey: filterByTk,
294
+ targetCollections: appends
295
+ };
226
296
  return {
227
297
  dataSource: {
228
298
  key: dataSourceKey,
229
299
  displayName: dataSourceKey,
230
300
  collections
231
301
  },
232
- token: this.app.authManager.jwt.sign(
233
- {
234
- collectionName,
235
- formKey: filterByTk,
236
- targetCollections: appends
237
- },
238
- {
239
- expiresIn: "1h"
240
- }
241
- ),
302
+ token: this.app.authManager.jwt.sign(tokenPayload, {
303
+ expiresIn: PUBLIC_FORM_TOKEN_EXPIRES_IN
304
+ }),
242
305
  schema,
243
306
  flowModel,
244
307
  title
245
308
  };
246
309
  }
310
+ getPublicFormCookieName(formKey) {
311
+ const appName = this.app.name || "main";
312
+ const hash = import_crypto.default.createHash("sha256").update(`${appName}:${formKey}`).digest("hex").slice(0, 32);
313
+ return `${PUBLIC_FORM_COOKIE_PREFIX}${hash}`;
314
+ }
315
+ async decodePublicFormCookie(value) {
316
+ if (!value) {
317
+ return null;
318
+ }
319
+ const decoded = await this.app.authManager.jwt.decode(value);
320
+ if ((decoded == null ? void 0 : decoded.v) !== 1 || typeof decoded.formKey !== "string" || typeof decoded.collectionName !== "string" || !Array.isArray(decoded.targetCollections)) {
321
+ return null;
322
+ }
323
+ return {
324
+ v: 1,
325
+ appName: typeof decoded.appName === "string" ? decoded.appName : void 0,
326
+ formKey: decoded.formKey,
327
+ collectionName: decoded.collectionName,
328
+ targetCollections: decoded.targetCollections.filter((name) => typeof name === "string"),
329
+ files: normalizeFiles(decoded.files),
330
+ exp: typeof decoded.exp === "number" ? decoded.exp : void 0
331
+ };
332
+ }
333
+ async readPublicFormCookie(ctx, formKey) {
334
+ var _a;
335
+ try {
336
+ return await this.decodePublicFormCookie((_a = ctx.cookies) == null ? void 0 : _a.get(this.getPublicFormCookieName(formKey)));
337
+ } catch {
338
+ return null;
339
+ }
340
+ }
341
+ setPublicFormCookie(ctx, payload, maxAge = PUBLIC_FORM_COOKIE_MAX_AGE) {
342
+ var _a;
343
+ (_a = ctx.cookies) == null ? void 0 : _a.set(
344
+ this.getPublicFormCookieName(payload.formKey),
345
+ this.app.authManager.jwt.sign(
346
+ {
347
+ v: 1,
348
+ appName: this.app.name || "main",
349
+ formKey: payload.formKey,
350
+ collectionName: payload.collectionName,
351
+ targetCollections: payload.targetCollections,
352
+ files: normalizeFiles(payload.files)
353
+ },
354
+ { expiresIn: Math.max(1, Math.floor(maxAge / 1e3)) }
355
+ ),
356
+ (0, import_utils.getAuthCookieOptions)(ctx, true, maxAge)
357
+ );
358
+ }
247
359
  // TODO
248
360
  getPublicFormsMeta = async (ctx, next) => {
361
+ var _a;
249
362
  const token = ctx.get("X-Form-Token");
250
363
  const { filterByTk, password } = ctx.action.params;
251
364
  try {
365
+ const existingCookie = password === void 0 ? await this.readPublicFormCookie(ctx, filterByTk) : null;
252
366
  ctx.body = await this.getMetaByTk(filterByTk, { password, token });
367
+ if (((_a = ctx.body) == null ? void 0 : _a.token) && (password !== void 0 || !existingCookie)) {
368
+ const tokenPayload = await this.app.authManager.jwt.decode(ctx.body.token);
369
+ this.setPublicFormCookie(ctx, {
370
+ v: 1,
371
+ formKey: tokenPayload.formKey,
372
+ collectionName: tokenPayload.collectionName,
373
+ targetCollections: tokenPayload.targetCollections,
374
+ files: (existingCookie == null ? void 0 : existingCookie.formKey) === tokenPayload.formKey ? existingCookie.files : {}
375
+ });
376
+ }
253
377
  } catch (error) {
254
378
  if (error instanceof PasswordError) {
255
379
  ctx.throw(401, error.message);
@@ -285,7 +409,8 @@ class PluginPublicFormsServer extends import_server.Plugin {
285
409
  ctx.PublicForm = {
286
410
  collectionName: tokenData.collectionName,
287
411
  formKey: tokenData.formKey,
288
- targetCollections: tokenData.targetCollections
412
+ targetCollections: tokenData.targetCollections,
413
+ exp: tokenData.exp
289
414
  };
290
415
  const publicForms = this.db.getRepository("publicForms");
291
416
  const instance = await publicForms.findOne({
@@ -320,13 +445,100 @@ class PluginPublicFormsServer extends import_server.Plugin {
320
445
  ctx.permission = {
321
446
  skip: true
322
447
  };
323
- } else if (["list", "get"].includes(actionName) && ctx.PublicForm["targetCollections"].includes(resourceName) || (collection == null ? void 0 : collection.options.template) === "file" && actionName === "create" || resourceName === "storages" && ["getBasicInfo", "createPresignedUrl"].includes(actionName) || resourceName === "vditor" && ["check"].includes(actionName) || resourceName === "map-configuration" && actionName === "get") {
448
+ } else if (["list", "get"].includes(actionName) && ctx.PublicForm["targetCollections"].includes(resourceName) || (collection == null ? void 0 : collection.options.template) === "file" && ["create", "upload"].includes(actionName) || resourceName === "storages" && ["getBasicInfo", "createPresignedUrl", "check"].includes(actionName) || resourceName === "vditor" && ["check"].includes(actionName) || resourceName === "map-configuration" && actionName === "get") {
324
449
  ctx.permission = {
325
450
  skip: true
326
451
  };
327
452
  }
328
453
  await next();
329
454
  };
455
+ appendUploadedFileToPublicFormCookie = async (ctx, next) => {
456
+ var _a, _b, _c, _d, _e, _f, _g, _h;
457
+ await next();
458
+ if (!ctx.PublicForm || !["create", "upload"].includes((_a = ctx.action) == null ? void 0 : _a.actionName)) {
459
+ return;
460
+ }
461
+ const collection = ((_c = (_b = ctx.dataSource) == null ? void 0 : _b.collectionManager) == null ? void 0 : _c.getCollection(ctx.action.resourceName)) || ((_e = (_d = ctx.db) == null ? void 0 : _d.getCollection) == null ? void 0 : _e.call(_d, ctx.action.resourceName));
462
+ if (((_f = collection == null ? void 0 : collection.options) == null ? void 0 : _f.template) !== "file") {
463
+ return;
464
+ }
465
+ const id = getResponseRecordId(ctx.body);
466
+ if (id === null || id === void 0 || id === "") {
467
+ return;
468
+ }
469
+ const formKey = ctx.PublicForm.formKey;
470
+ const existingCookie = await this.readPublicFormCookie(ctx, formKey);
471
+ const files = normalizeFiles(existingCookie == null ? void 0 : existingCookie.files);
472
+ const dataSourceKey = ((_g = ctx.dataSource) == null ? void 0 : _g.name) || ((_h = ctx.action.params) == null ? void 0 : _h.dataSourceKey) || "main";
473
+ const fileKey = `${dataSourceKey}/${collection.name}`;
474
+ const ids = files[fileKey] || [];
475
+ if (!ids.some((existingId) => String(existingId) === String(id))) {
476
+ ids.push(id);
477
+ }
478
+ files[fileKey] = ids;
479
+ const expiresAt = (existingCookie == null ? void 0 : existingCookie.exp) || ctx.PublicForm.exp;
480
+ const maxAge = expiresAt ? expiresAt * 1e3 - Date.now() : PUBLIC_FORM_COOKIE_MAX_AGE;
481
+ if (maxAge <= 0) {
482
+ return;
483
+ }
484
+ this.setPublicFormCookie(
485
+ ctx,
486
+ {
487
+ v: 1,
488
+ formKey,
489
+ collectionName: ctx.PublicForm.collectionName,
490
+ targetCollections: ctx.PublicForm.targetCollections || [],
491
+ files
492
+ },
493
+ maxAge
494
+ );
495
+ };
496
+ authorizePublicFormFileAccess = async (ctx, params) => {
497
+ var _a, _b;
498
+ const cookies = parseCookieHeader((_a = ctx.get) == null ? void 0 : _a.call(ctx, "cookie"));
499
+ const fileKey = `${params.dataSourceKey}/${params.collectionName}`;
500
+ for (const [name, value] of cookies) {
501
+ if (!name.startsWith(PUBLIC_FORM_COOKIE_PREFIX)) {
502
+ continue;
503
+ }
504
+ try {
505
+ const payload = await this.decodePublicFormCookie(value);
506
+ if (!payload) {
507
+ continue;
508
+ }
509
+ if (payload.appName && payload.appName !== params.appName) {
510
+ continue;
511
+ }
512
+ if ((_b = payload.files[fileKey]) == null ? void 0 : _b.some((id) => String(id) === String(params.id))) {
513
+ const instance = await this.db.getRepository("publicForms").findOne({
514
+ filter: {
515
+ key: payload.formKey
516
+ }
517
+ });
518
+ if (instance == null ? void 0 : instance.get("enabled")) {
519
+ return true;
520
+ }
521
+ }
522
+ } catch {
523
+ continue;
524
+ }
525
+ }
526
+ return false;
527
+ };
528
+ registerFileAccessAuthorizer() {
529
+ if (this.fileAccessAuthorizerRegistered) {
530
+ return;
531
+ }
532
+ const fileManager = this.app.pm.get("file-manager") || this.app.pm.get("@nocobase/plugin-file-manager");
533
+ if (typeof (fileManager == null ? void 0 : fileManager.registerFileAccessAuthorizer) !== "function") {
534
+ return;
535
+ }
536
+ fileManager.registerFileAccessAuthorizer({
537
+ name: "public-forms",
538
+ authorize: this.authorizePublicFormFileAccess
539
+ });
540
+ this.fileAccessAuthorizerRegistered = true;
541
+ }
330
542
  async load() {
331
543
  this.app.acl.registerSnippet({
332
544
  name: `pm.${this.name}`,
@@ -337,10 +549,17 @@ class PluginPublicFormsServer extends import_server.Plugin {
337
549
  "publicForms:getMeta": this.getPublicFormsMeta,
338
550
  "publicForms:getFlowModel": this.getPublicFormFlowModel
339
551
  });
552
+ this.registerFileAccessAuthorizer();
553
+ this.app.on("afterLoad", () => {
554
+ this.registerFileAccessAuthorizer();
555
+ });
340
556
  this.app.dataSourceManager.afterAddDataSource((dataSource) => {
341
557
  dataSource.resourceManager.use(this.parseToken, {
342
558
  before: "auth"
343
559
  });
560
+ dataSource.resourceManager.use(this.appendUploadedFileToPublicFormCookie, {
561
+ after: "acl"
562
+ });
344
563
  dataSource.acl.use(this.parseACL, {
345
564
  before: "core"
346
565
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/plugin-public-forms",
3
- "version": "2.2.0-beta.8",
3
+ "version": "2.3.0-alpha.1",
4
4
  "main": "dist/server/index.js",
5
5
  "displayName": "Public forms",
6
6
  "displayName.ru-RU": "Публичные формы",
@@ -20,10 +20,11 @@
20
20
  "@nocobase/plugin-flow-engine": "2.x",
21
21
  "@nocobase/plugin-ui-schema-storage": "2.x",
22
22
  "@nocobase/server": "2.x",
23
- "@nocobase/test": "2.x"
23
+ "@nocobase/test": "2.x",
24
+ "@nocobase/utils": "2.x"
24
25
  },
25
26
  "devDependencies": {
26
27
  "react-device-detect": "2.2.3"
27
28
  },
28
- "gitHead": "fa2502c1e9faf6d74b3f51b42dbc6546638d46af"
29
+ "gitHead": "2377df8ceb12549149017f7f14a61207bf6e49a2"
29
30
  }
@@ -1,10 +0,0 @@
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
-
10
- "use strict";(self.webpackChunk_nocobase_plugin_public_forms=self.webpackChunk_nocobase_plugin_public_forms||[]).push([["192"],{3155:function(e,t,n){n.r(t),n.d(t,{AdminPublicFormPage:function(){return g}});var r=n(7375),o=n(3342),a=n(2059),l=n(9155),c=n.n(l),i=n(2707),u=n(4442),s=n(418),p=n(5473),m=n(5375);function f(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 b(e,t,n,r,o,a,l){try{var c=e[a](l),i=c.value}catch(e){n(e);return}c.done?t(i):Promise.resolve(i).then(r,o)}function y(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function l(e){b(a,r,o,l,c,"next",e)}function c(e){b(a,r,o,l,c,"throw",e)}l(void 0)})}}function d(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 h(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),c=Object.defineProperty;return c(l,"next",{value:i(0)}),c(l,"throw",{value:i(1)}),c(l,"return",{value:i(2)}),"function"==typeof Symbol&&c(l,Symbol.iterator,{value:function(){return this}}),l;function i(c){return function(i){var u=[c,i];if(n)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(a=0)),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}}}}var v=function(){var e,t=function(e){if(Array.isArray(e))return e}(e=(0,l.useState)(!1))||function(e){var t,n,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o=[],a=!0,l=!1;try{for(r=r.call(e);!(a=(t=r.next()).done)&&(o.push(t.value),2!==o.length);a=!0);}catch(e){l=!0,n=e}finally{try{a||null==r.return||r.return()}finally{if(l)throw n}}return o}}(e)||function(e){if(e){if("string"==typeof e)return f(e,2);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return f(e,2)}}(e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),n=t[0],r=t[1],u=(0,m.kO)().t,s=(0,i.useParams)(),p=(0,o.useApp)(),b=window.location.origin+p.getHref("public-forms/".concat(s.name));return c().createElement(a.Popover,{trigger:"hover",open:n,onOpenChange:function(e){r(e)},content:n?c().createElement(a.QRCode,{value:b,bordered:!1}):" "},c().createElement("a",null,u("QR code",{ns:m.CU})))};function g(){var e=(0,i.useParams)(),t=(0,m.kO)().t,n=(0,o.useGlobalTheme)().theme,l=(0,o.useAPIClient)(),f=(0,o.useCompile)(),b=a.theme.useToken().token,g=(0,o.useApp)(),w=(0,o.useGlobalVariable)("$env"),E=(0,o.useRequest)({url:"publicForms:get/".concat(e.name)}),k=E.data,O=E.loading,x=E.refresh,C=(null==k?void 0:k.data)||{},S=C.enabled,P=C.title,j=function(e,t){if(null==e)return{};var n,r,o,a={};if("u">typeof Reflect&&Reflect.ownKeys){for(o=0,n=Reflect.ownKeys(Object(e));o<n.length;o++)r=n[o],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}if(a=function(e,t){if(null==e)return{};var n,r,o={},a=Object.getOwnPropertyNames(e);for(r=0;r<a.length;r++)n=a[r],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n]);return o}(e,t),Object.getOwnPropertySymbols)for(o=0,n=Object.getOwnPropertySymbols(e);o<n.length;o++)r=n[o],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}(C,["enabled","title"]);if(O)return c().createElement(a.Spin,null);var A=function(t){return y(function(){return h(this,function(n){switch(n.label){case 0:return[4,l.resource("publicForms").update({filterByTk:e.name,values:d({},t)})];case 1:return n.sent(),[4,x()];case 2:return n.sent(),[2]}})})()};return c().createElement("div",{style:{marginTop:"-50px"}},c().createElement("div",{style:{margin:"-24px",padding:"10px",display:"flex",alignItems:"center",justifyContent:"space-between",background:"".concat(b.colorBgContainer),borderBottom:"1px solid ".concat(b.colorBorderSecondary)}},c().createElement(a.Breadcrumb,{style:{marginLeft:"10px"},items:[{title:c().createElement(u.Link,{to:"/admin/settings/public-forms"},t("Public forms",{ns:m.CU}))},{title:f(P)}]}),c().createElement(a.Space,null,c().createElement(u.Link,{target:"_blank",to:"/public-forms/".concat(e.name)},c().createElement(a.Button,{disabled:!S,icon:c().createElement(r.EyeOutlined,null)},t("Open form",{ns:m.CU}))),c().createElement(a.Dropdown,{menu:{items:[{key:"enabled",label:c().createElement("a",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},onClick:function(){return A({enabled:!S})}},c().createElement("span",{style:{marginRight:"10px"}},t("Enable form",{ns:m.CU})),c().createElement(a.Switch,{size:"small",checked:S}))},{key:"password",label:c().createElement("a",{onClick:function(){return y(function(){return h(this,function(e){switch(e.label){case 0:return[4,(0,o.FormDialog)(t("Password"),function(){return c().createElement(o.ApplicationContext.Provider,{value:g},c().createElement(o.SchemaComponentOptions,{components:{Checkbox:o.Checkbox,TextAreaWithGlobalScope:o.TextAreaWithGlobalScope,FormItem:o.FormItem}},c().createElement(s.FormLayout,{layout:"vertical"},c().createElement(o.SchemaComponent,{schema:{properties:{password:{type:"string","x-decorator":"FormItem","x-component":"TextAreaWithGlobalScope","x-component-props":{password:!0,scope:[w]}}}}}))))},n).open({initialValues:d({},j)})];case 1:return[4,A({password:e.sent().password})];case 2:return e.sent(),[2]}})})()}}," ",t("Set password"))},{key:"divider1",type:"divider"},{key:"copyLink",label:c().createElement("a",{onClick:function(){var n=window.location.origin+g.getHref("public-forms/".concat(e.name));navigator.clipboard.writeText(n),a.message.success(t("Link copied successfully"))}},t("Copy link"))},{key:"qrcode",label:c().createElement(v,null)}]}},c().createElement(a.Button,{icon:c().createElement(r.SettingOutlined,null)},t("Settings"))))),c().createElement("div",{style:{maxWidth:800,margin:"100px auto",position:"relative",zIndex:0}},c().createElement(o.VariablesProvider,{filterVariables:function(e){return!["$user","$nRole","$nToken"].includes(e.key)}},c().createElement(o.RemoteSchemaComponent,{uid:e.name,scope:{useCreateActionProps:p.nQ},components:{PublicFormMessageProvider:function(e){return e.children}}})),c().createElement(o.PoweredBy,null)))}}}]);
@@ -1,10 +0,0 @@
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
-
10
- "use strict";(self.webpackChunk_nocobase_plugin_public_forms=self.webpackChunk_nocobase_plugin_public_forms||[]).push([["595"],{3170:function(e,t,r){r.r(t),r.d(t,{PageBackgroundColor:function(){return _},PublicFormMessageContext:function(){return B},PublicFormPage:function(){return $}});var n=r(5477),o=r(5230),a=r(3342),l=r(2059),i=r(7601),u=r(9155),c=r.n(u),s=r(1878),f=r(2707),p=r(5473),d=r(9185),b=r.n(d),y=r(5953);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var v=(0,o.connect)(function(e){var t,r,n,o=(0,y.useTranslation)().t,l=e.value,s=e.onChange,f=(e.dateFormat,e.timeFormat),p=e.showTime,d=void 0!==p&&p,v=e.picker,h=e.disabled,g=function(e,t){if(null==e)return{};var r,n,o,a={};if("u">typeof Reflect&&Reflect.ownKeys){for(o=0,r=Reflect.ownKeys(Object(e));o<r.length;o++)n=r[o],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n]);return a}if(a=function(e,t){if(null==e)return{};var r,n,o={},a=Object.getOwnPropertyNames(e);for(n=0;n<a.length;n++)r=a[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r]);return o}(e,t),Object.getOwnPropertySymbols)for(o=0,r=Object.getOwnPropertySymbols(e);o<r.length;o++)n=r[o],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n]);return a}(e,["value","onChange","dateFormat","timeFormat","showTime","picker","disabled"]),w=function(e){if(Array.isArray(e))return e}(t=(0,u.useState)(!1))||function(e){var t,r,n=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o=[],a=!0,l=!1;try{for(n=n.call(e);!(a=(t=n.next()).done)&&(o.push(t.value),2!==o.length);a=!0);}catch(e){l=!0,r=e}finally{try{a||null==n.return||n.return()}finally{if(l)throw r}}return o}}(t)||function(e){if(e){if("string"==typeof e)return m(e,2);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return m(e,2)}}(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.")}(),O=w[0],P=w[1],S=(0,u.useCallback)(function(t){P(!1);var r=new Date(t);e.dateOnly?s(b()(t)):s(r)},[d,s]),k=(0,u.useCallback)(function(){P(!1),s(null)},[s]),j=(0,u.useCallback)(function(e,t){return t},[]);return c().createElement(c().Fragment,null,c().createElement("div",{onClick:function(){return!h&&P(!0)}},c().createElement(a.DatePicker,(r=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({onClick:function(){return P(!0)},value:l,picker:v,disabled:h},g),n=n={popupStyle:{display:"none"},style:{pointerEvents:"none",width:"100%"}},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(n)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))}),r))),c().createElement(i.lr,{cancelText:o("Cancel"),confirmText:o("Confirm"),visible:O,title:c().createElement("a",{onClick:k},o("Clear")),onClose:function(){P(!1)},precision:d?function(e){var t=e.toLowerCase();if(/\bss?\b/.test(t))return"second";if(/\bmm?\b/.test(t))return"minute";if(/\bhh?\b/.test(t))return"hour";throw Error("Invalid time format")}(void 0===f?"HH:mm":f):"date"===v?"day":v,renderLabel:j,min:new Date(1950,0,1),max:new Date(2050,11,31),onConfirm:function(e){S(e)}}))},(0,o.mapProps)((0,a.mapDatePicker)()),(0,o.mapReadPretty)(a.DatePicker.ReadPretty));function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function g(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{l||null==o.return||o.return()}finally{if(i)throw n}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return h(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return h(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.")}()}var w=(0,o.connect)(function(e){var t=e.value,r=e.onChange,n=e.options,o=void 0===n?[]:n,l=e.mode,s=e.disabled,f=(0,y.useTranslation)().t,p=g((0,u.useState)(!1),2),d=p[0],b=p[1],m=g((0,u.useState)(t||[]),2),v=m[0],h=m[1],w=g((0,u.useState)(null),2),O=w[0],P=w[1],S=(0,u.useMemo)(function(){return O?o.filter(function(e){return e.label.toLowerCase().includes(O.toLowerCase())}):o},[o,O]);return(0,u.useEffect)(function(){d||P(null)},[d]),c().createElement(c().Fragment,null,c().createElement("div",{onClick:function(){return!s&&b(!0)}},c().createElement(a.Select,{placeholder:f("Select"),value:t,dropdownStyle:{display:"none"},multiple:"multiple"===l,disabled:s,onClear:function(){b(!1),r(null),h(null)},onFocus:function(e){return e.preventDefault()},style:{pointerEvents:"none"}})),c().createElement(i.zD,{visible:d,onMaskClick:function(){b(!1),t&&(null==t?void 0:t.length)!==0||h([])},destroyOnClose:!0},c().createElement("div",{style:{margin:"10px"}},c().createElement(i.IW,{placeholder:f("search"),value:O,onChange:function(e){return P(e)},showCancelButton:!0})),c().createElement("div",{style:{maxHeight:"60vh",overflowY:"auto"}},c().createElement(i.Pg,{multiple:"multiple"===l,value:Array.isArray(v)?v:[v],onChange:function(e){"multiple"===l?h(e):(h(e[0]),r(e[0]),b(!1))}},S.map(function(e){return c().createElement(i.Pg.Item,{key:e.value,value:e.value},e.label)}))),"multiple"===l&&c().createElement(i.$n,{block:!0,color:"primary",onClick:function(){r(v),b(!1)},style:{marginTop:"16px"}},f("Confirm"))))},(0,o.mapProps)({dataSource:"options"})),O=r(5375),P=function(){var e=(0,O.kO)().t;return c().createElement(a.BlockItemCard,{style:{boxShadow:"unset"}},c().createElement(l.Result,{status:"403",subTitle:e("The form is not enabled and cannot be accessed",{ns:O.CU})}))},S=function(){return(0,O.kO)().t,c().createElement(a.BlockItemCard,{style:{boxShadow:"unset"}},c().createElement(l.Result,{status:"404"}))};function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function j(e,t,r,n,o,a,l){try{var i=e[a](l),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,o)}function C(e){return(C=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function E(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function x(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function A(e,t){return(A=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function D(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{l||null==o.return||o.return()}finally{if(i)throw n}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return k(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return k(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 T(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(T=function(){return!!e})()}function F(){var e,t,r=(e=["\n @media (min-width: 1025px) {\n padding-top: 10vh;\n }\n padding-top: 0px;\n "],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return F=function(){return r},r}var I=function(e){var t;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=C(e),function(e,t){var r;if(t&&("object"==((r=t)&&"u">typeof Symbol&&r.constructor===Symbol?"symbol":typeof r)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,T()?Reflect.construct(e,t||[],C(this).constructor):e.apply(this,t))}return r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),e&&A(r,e),t=[{key:"getDataSource",value:function(){var e;return(e=function(){return function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:u(0)}),i(l,"throw",{value:u(1)}),i(l,"return",{value:u(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(e){return[2,{}]})},function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function l(e){j(a,n,o,l,i,"next",e)}function i(e){j(a,n,o,l,i,"throw",e)}l(void 0)})})()}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(r.prototype,t),r}(a.DataSource);function M(e){var t=e.dataSource,r=(0,a.useApp)(),n=D((0,u.useMemo)(function(){var e=new a.DataSourceManager({},r),n=e.addDataSource(I,t);return[e,new a.CollectionManager([],n)]},[r,t]),2),o=n[0],l=n[1];return c().createElement("div",null,c().createElement(a.DataSourceApplicationProvider,{dataSource:t.key,dataSourceManager:o,instance:l},e.children))}function R(e){var t=e.children,r=(0,a.useApp)();return(0,u.useEffect)(function(){var e=r.apiClient.axios.interceptors.request.use(function(e){return e.headers&&(e.headers["X-Form-Token"]=localStorage.getItem("NOCOBASE_FORM_TOKEN")||""),e});return function(){r.apiClient.axios.interceptors.request.eject(e)}},[r.apiClient.axios.interceptors.request]),c().createElement(a.APIClientProvider,{apiClient:r.apiClient},t)}var B=(0,u.createContext)({}),_="#f5f5f5",q=function(e){var t=e.children,r=D((0,u.useState)(!1),2),n=r[0],a=r[1],l=(0,o.useField)(),i=function(e,t){l.form.query(e).take(function(e){e&&(e.visible=t,e.hidden=!t)})};return(0,u.useEffect)(function(){i("success",n),i("form",!n),n||l.form.query("promptMessage").take(function(e){e&&(e.visible=!1,e.hidden=!0)})},[n]),c().createElement(B.Provider,{value:{showMessage:n,setShowMessage:a}},t)},V=function(e){return c().createElement(a.AssociationField,x(E({},e),{popupMatchSelectWidth:!0}))};V.SubTable=a.AssociationField.SubTable,V.Nester=a.AssociationField.Nester,V.AddNewer=a.Action.Container,V.Selector=a.Action.Container,V.Viewer=a.Action.Container,V.InternalSelect=a.AssociationField.InternalSelect,V.ReadPretty=a.AssociationField.ReadPretty,V.FileSelector=a.AssociationField.FileSelector;var N=function(e){return c().createElement(v,e)};N.FilterWithPicker=a.DatePicker.FilterWithPicker,N.RangePicker=a.DatePicker.RangePicker;var K={Button:i.$n,Select:function(e){return c().createElement(w,e)},DatePicker:N,UnixTimestamp:v,Modal:i.lG,AssociationField:V};function W(){var e,t,r,o,i,d,b=(0,f.useParams)(),y=(0,a.useRequest)({url:"publicForms:getMeta/".concat(b.name),skipAuth:!0},{onSuccess:function(e){var t;localStorage.setItem("NOCOBASE_FORM_TOKEN",null==e||null==(t=e.data)?void 0:t.token)}}),m=y.error,v=y.data,h=y.loading,g=y.run,w=D((0,u.useState)(""),2),O=w[0],k=w[1],j=(0,u.useContext)(a.SchemaComponentContext);if(e=(0,a.useCompile)(),(0,u.useEffect)(function(){var t;v&&(document.title=e(null==v||null==(t=v.data)?void 0:t.title))},[v]),(0,u.useEffect)(function(){if(!s.isDesktop){var e=document.querySelector('meta[name="viewport"]');e||((e=document.createElement("meta")).setAttribute("name","viewport"),document.head.appendChild(e)),e.setAttribute("content","width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"),document.body.style.backgroundColor=_,document.body.style.overflow="hidden";var t=document.createElement("div");document.body.appendChild(t),document.body.removeChild(t)}},[]),(null==m||null==(t=m.response)?void 0:t.status)===401||(null==v||null==(r=v.data)?void 0:r.passwordRequired))return c().createElement("div",null,c().createElement(l.Modal,{centered:!0,title:"Password",open:!0,cancelButtonProps:{hidden:!0},onOk:function(){g({password:O})}},c().createElement(l.Input.Password,{onChange:function(e){k(e.target.value)}})));if((null==m||null==(o=m.response)?void 0:o.status)===500)return c().createElement(S,null);if(h)return c().createElement(l.Spin,null);if(!(null==v?void 0:v.data))return c().createElement(P,null);var C=s.isMobile?K:{};return c().createElement(a.ACLCustomContext.Provider,{value:{allowAll:!0}},c().createElement(R,null,c().createElement("div",{style:{minHeight:"100vh",background:_,height:"100%",overflow:"auto"}},c().createElement("div",{style:{maxWidth:800,margin:"0 auto",position:"relative",zIndex:0},className:(0,n.css)(F())},c().createElement(M,{dataSource:null==v||null==(i=v.data)?void 0:i.dataSource},c().createElement(a.SchemaComponentContext.Provider,{value:x(E({},j),{designable:!1})},c().createElement(a.SchemaComponent,{schema:null==v||null==(d=v.data)?void 0:d.schema,scope:{useCreateActionProps:p.nQ},components:E({PublicFormMessageProvider:q},C)}))),c().createElement("div",{style:{marginBottom:"20px"}},c().createElement(a.PoweredBy,null))))))}function $(){return c().createElement(a.GlobalThemeProvider,{theme:{token:{marginBlock:18,borderRadiusBlock:0,boxShadowTertiary:"none",fontSize:14}}},c().createElement(a.VariablesProvider,{filterVariables:function(e){return!["$user","$nRole","$nToken"].includes(e.key)}},c().createElement(W,null)))}},5473:function(e,t,r){r.d(t,{yY:function(){return g},W2:function(){return c},nQ:function(){return d},vT:function(){return l}});var n=r(3342),o=r(2059);function a(e,t,r,n,o,a,l){try{var i=e[a](l),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,o)}function l(){var e=o.App.useApp().message,t=(0,n.useCollectionRecordData)(),r=(0,n.useDataBlockResource)(),l=(0,n.useBlockRequestContext)().service,i=(0,n.useCollection)();return{confirm:{title:"Delete",content:"Are you sure you want to delete it?"},onClick:function(){var n;return(n=function(){return function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:u(0)}),i(l,"throw",{value:u(1)}),i(l,"return",{value:u(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(n){switch(n.label){case 0:if(!i)throw Error("collection does not exist");return[4,r.destroy({filterByTk:t[i.filterTargetKey]})];case 1:return n.sent(),[4,l.refresh()];case 2:return n.sent(),e.success("Deleted!"),[2]}})},function(){var e=this,t=arguments;return new Promise(function(r,o){var l=n.apply(e,t);function i(e){a(l,r,o,i,u,"next",e)}function u(e){a(l,r,o,i,u,"throw",e)}i(void 0)})})()}}}var i=r(9452),u=r(9155),c=function(){var e=(0,n.useCollectionRecordData)();return{form:(0,u.useMemo)(function(){return(0,i.createForm)({initialValues:e})},[e])}},s=r(5230),f=r(3170);function p(e,t,r,n,o,a,l){try{var i=e[a](l),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,o)}var d=function(){var e=(0,s.useForm)(),t=(0,n.useDataBlockResource)(),r=(0,s.useField)(),o=(0,n.useCollectValuesToSubmit)(),a=(0,s.useFieldSchema)(),l=(0,n.useFormBlockContext)().updateAssociationValues,i=(0,u.useContext)(f.PublicFormMessageContext).setShowMessage;return{type:"primary",onClick:function(){var n;return(n=function(){var n,u,c,s,f;return function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:u(0)}),i(l,"throw",{value:u(1)}),i(l,"return",{value:u(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(p){switch(p.label){case 0:if(c=(u=null!=(n=null==a?void 0:a["x-action-settings"])?n:{}).skipValidator,s=u.triggerWorkflows,c)return[3,2];return[4,e.submit()];case 1:p.sent(),p.label=2;case 2:return[4,o()];case 3:f=p.sent(),r.data=r.data||{},r.data.loading=!0,p.label=4;case 4:return p.trys.push([4,8,,9]),[4,e.submit()];case 5:return p.sent(),[4,t.publicSubmit({values:f,triggerWorkflows:(null==s?void 0:s.length)?s.map(function(e){return[e.workflowKey,e.context].filter(Boolean).join("!")}).join(","):void 0,updateAssociationValues:l})];case 6:return p.sent(),[4,e.reset()];case 7:return p.sent(),r.data.loading=!1,i(!0),[3,9];case 8:return p.sent(),r.data.loading=!1,[3,9];case 9:return[2]}})},function(){var e=this,t=arguments;return new Promise(function(r,o){var a=n.apply(e,t);function l(e){p(a,r,o,l,i,"next",e)}function i(e){p(a,r,o,l,i,"throw",e)}l(void 0)})})()}}},b=r(166),y=r(3127);function m(e,t,r,n,o,a,l){try{var i=e[a](l),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,o)}function v(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function h(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}var g=function(){var e=(0,n.useActionContext)().setVisible,t=o.App.useApp().message,r=(0,s.useForm)(),a=(0,n.useDataBlockResource)(),l=(0,n.useCollection)(),i=(0,n.useAPIClient)(),u=(0,n.usePlugin)(y.default),c=(0,n.useBlockRequestContext)().service;return{type:"primary",onClick:function(){var n;return(n=function(){var n,o,s,f,p;return function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:u(0)}),i(l,"throw",{value:u(1)}),i(l,"return",{value:u(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(d){switch(d.label){case 0:return[4,r.submit()];case 1:if(d.sent(),!(n=r.values)[l.filterTargetKey])return[3,3];return[4,a.update({values:h(v({},n),{version:"v1"}),filterByTk:n[l.filterTargetKey]})];case 2:return d.sent(),[3,6];case 3:var y,m;return o=(0,b.uid)(),s=u.getFormSchemaByType(n.type),y=s({collection:(f=n.collection.split(":")).pop(),dataSource:f.pop()||"main"}),m=u.t.bind(u),(p={type:"void",name:(0,b.uid)(),"x-decorator":"PublicFormMessageProvider",properties:{form:y,promptMessage:{type:"void","x-component":"h3","x-component-props":{style:{margin:"10px 0px 10px"},children:'{{ t("Prompt after successful submission",{ns:"public-forms"})}}'}},success:{type:"void","x-editable":!1,"x-toolbar-props":{draggable:!1},"x-settings":"blockSettings:publicMarkdown","x-component":"Markdown.Void","x-decorator":"CardItem","x-component-props":{content:m("# Submitted successfully!\nThis is a demo text, **supports Markdown syntax**.")},"x-decorator-props":{name:"markdown",engine:"handlebars"}}}})["x-uid"]=o,[4,a.create({values:h(v({},n),{key:o,version:"v1"})})];case 4:return d.sent(),[4,i.resource("uiSchemas").insert({values:p})];case 5:d.sent(),d.label=6;case 6:return r.reset(),[4,c.refresh()];case 7:return d.sent(),t.success("Saved successfully!"),e(!1),[2]}})},function(){var e=this,t=arguments;return new Promise(function(r,o){var a=n.apply(e,t);function l(e){m(a,r,o,l,i,"next",e)}function i(e){m(a,r,o,l,i,"throw",e)}l(void 0)})})()}}}}}]);
@@ -1,10 +0,0 @@
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
-
10
- "use strict";(self.webpackChunk_nocobase_plugin_public_forms_client_v2=self.webpackChunk_nocobase_plugin_public_forms_client_v2||[]).push([["169"],{648:function(e,t,n){n.r(t),n.d(t,{default:function(){return y}});var r=n(694),o=n(59),l=n(155),u=n.n(l),a=n(442),i=n(913);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 f(e,t,n,r,o,l,u){try{var a=e[l](u),i=a.value}catch(e){n(e);return}a.done?t(i):Promise.resolve(i).then(r,o)}function s(e,t){return null!=t&&"u">typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}function p(e){var t,n=e.model,a=(0,r.useFlowContext)(),i=function(e){if(Array.isArray(e))return e}(t=(0,l.useState)(null))||function(e){var t,n,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o=[],l=!0,u=!1;try{for(r=r.call(e);!(l=(t=r.next()).done)&&(o.push(t.value),2!==o.length);l=!0);}catch(e){u=!0,n=e}finally{try{l||null==r.return||r.return()}finally{if(u)throw n}}return o}}(t)||function(e){if(e){if("string"==typeof e)return c(e,2);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return c(e,2)}}(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.")}(),p=i[0],y=i[1],d=(0,l.useMemo)(function(){var e=new r.FlowContext;return s(a,r.FlowContext)&&e.addDelegate(a),e.defineProperty("view",{value:{type:"embed",inputArgs:{},Header:null,Footer:null,close:function(){var e;return(e=function(){return function(e,t){var n,r,o,l={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},u=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),a=Object.defineProperty;return a(u,"next",{value:i(0)}),a(u,"throw",{value:i(1)}),a(u,"return",{value:i(2)}),"function"==typeof Symbol&&a(u,Symbol.iterator,{value:function(){return this}}),u;function i(a){return function(i){var c=[a,i];if(n)throw TypeError("Generator is already executing.");for(;u&&(u=0,c[0]&&(l=0)),l;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return l.label++,{value:c[1],done:!1};case 5:l.label++,r=c[1],c=[0];continue;case 7:c=l.ops.pop(),l.trys.pop();continue;default:if(!(o=(o=l.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){l=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){l.label=c[1];break}if(6===c[0]&&l.label<o[1]){l.label=o[1],o=c;break}if(o&&l.label<o[2]){l.label=o[2],l.ops.push(c);break}o[2]&&l.ops.pop(),l.trys.pop();continue}c=t.call(e,l)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(e){return[2,void 0]})},function(){var t=this,n=arguments;return new Promise(function(r,o){var l=e.apply(t,n);function u(e){f(l,r,o,u,a,"next",e)}function a(e){f(l,r,o,u,a,"throw",e)}u(void 0)})})()},update:function(){}}}),e.defineProperty("flowSettingsEnabled",{value:!0}),e},[a]),v=(0,l.useMemo)(function(){return!!(s(n.context,r.FlowContext)&&s(d,r.FlowContext))},[n.context,d]);return((0,l.useLayoutEffect)(function(){return s(n.context,r.FlowContext)&&s(d,r.FlowContext)?(n.context.addDelegate(d),y({model:n,context:d}),function(){s(n.context,r.FlowContext)&&n.context.removeDelegate(d)}):void y(null)},[n,n.context,d]),v&&((null==p?void 0:p.model)!==n||p.context!==d))?u().createElement(o.Spin,null):u().createElement(r.FlowViewContextProvider,{context:d},u().createElement(r.FlowModelRenderer,{model:n,showFlowSettings:!1}))}function y(){var e=(0,a.useParams)().name;return u().createElement(i.PublicFormsSettingsDetailView,{pageUid:e},function(e){var t,n,r=Array.isArray(n=null==(t=e.subModels)?void 0:t.page)?n[0]:n;return r?u().createElement(p,{model:r}):u().createElement(o.Spin,null)})}}}]);