@coffer-org/web 3.1.2 → 3.3.0

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.
Files changed (67) hide show
  1. package/dist/assets/{ChatWidget-DucdkqsL.js → ChatWidget-nNf5Rw0a.js} +2 -2
  2. package/dist/assets/{DiagnosticsPage-BmXQ2wx_.js → DiagnosticsPage-BWHlPR6q.js} +1 -1
  3. package/dist/assets/{ExtendReasonInfo-nosoadn6.js → ExtendReasonInfo-CJ67X4F6.js} +1 -1
  4. package/dist/assets/Icon-BumJSRVW.js +2 -0
  5. package/dist/assets/NewRecordView-BdpK6Egr.js +1 -0
  6. package/dist/assets/{PluginSettingsPage-YthgPItj.js → PluginSettingsPage-Cdb8beej.js} +1 -1
  7. package/dist/assets/{SettingsForm-P7AveuRL.js → SettingsForm-CveAr_ig.js} +1 -1
  8. package/dist/assets/{SettingsPage-F7vhUaoM.js → SettingsPage-CQKhHrWm.js} +1 -1
  9. package/dist/assets/{ThemeSwitcher-CidwMjS9.js → ThemeSwitcher-CfRsyjzE.js} +1 -1
  10. package/dist/assets/Toolbar-BFVsURKo.js +2 -0
  11. package/dist/assets/{chrome-DX8F_v18.js → chrome-Drri9yIC.js} +1 -1
  12. package/dist/assets/{data-size-D-gMRpFc.js → data-size-Byck_i1v.js} +1 -1
  13. package/dist/assets/{dispatch-Z_UJ7sOs.js → dispatch-Dn_1ZBIw.js} +1 -1
  14. package/dist/assets/extend-Dz66ZOVA.js +1 -0
  15. package/dist/assets/{field-frame-Co_Y1euk.js → field-frame-p-0aFlK2.js} +1 -1
  16. package/dist/assets/fields-CdNaYlSV.js +64 -0
  17. package/dist/assets/index-BhD27QjD.js +36 -0
  18. package/dist/assets/index-CbYvPAob.css +2 -0
  19. package/dist/assets/{shared-CybDb-Q0.js → shared-53AEUTK1.js} +1 -1
  20. package/dist/assets/shelf-CYFZoY4Y.js +1 -0
  21. package/dist/assets/{showcase-g9KGsIJf.js → showcase-BEd8Qi9n.js} +1 -1
  22. package/dist/assets/{src-oxroY989.js → src-6BvwolRe.js} +1 -1
  23. package/dist/assets/{src-CIbjpG2X.js → src-6wNB8mAI.js} +1 -1
  24. package/dist/assets/{src-DFYZEu1M.js → src-B3EKJbtB.js} +1 -1
  25. package/dist/assets/{src-C4Lw6UC7.js → src-B5_A2mYY.js} +1 -1
  26. package/dist/assets/{src-I0D69wPd.js → src-BEO9VDg0.js} +2 -2
  27. package/dist/assets/{src-6EFD6CpO.js → src-BEPkH-ct.js} +1 -1
  28. package/dist/assets/{src-HtNjG36u.js → src-BGRdBpoy.js} +1 -1
  29. package/dist/assets/{src-DyJctdPe.js → src-BVH5k75w.js} +1 -1
  30. package/dist/assets/{src-CalRvEpR.js → src-CCmXjawq.js} +1 -1
  31. package/dist/assets/{src-Df0q1za7.js → src-COeSlgp5.js} +1 -1
  32. package/dist/assets/src-CfaMs77p.js +1 -0
  33. package/dist/assets/{src-DZhdHqwF.js → src-CtOhjDAR.js} +1 -1
  34. package/dist/assets/src-CukyJanI.js +1 -0
  35. package/dist/assets/{src-Db-cqkZV.js → src-D3d5pZiz.js} +1 -1
  36. package/dist/assets/src-DBlnH-G8.js +1 -0
  37. package/dist/assets/{src-BpgLWVlc.js → src-DGkgvDff.js} +1 -1
  38. package/dist/assets/{src-CDzj7gs1.js → src-DYI3zRw6.js} +1 -1
  39. package/dist/assets/{src-RuMLw9Df.js → src-DrMNxEnS.js} +1 -1
  40. package/dist/assets/{src-COMSWH4j.js → src-SgNQDm_8.js} +1 -1
  41. package/dist/assets/{src-COfhPliI.js → src-a39U8IWk.js} +1 -1
  42. package/dist/assets/src-i9wl96A-.js +1 -0
  43. package/dist/assets/{src-migt9nqy.js → src-klR9zexB.js} +1 -1
  44. package/dist/assets/{src-BR6hbGmU.js → src-mXu3EbjH.js} +1 -1
  45. package/dist/assets/src-qh6HJOzS.js +1 -0
  46. package/dist/assets/src-skK-v7r6.js +7 -0
  47. package/dist/assets/ui-CElwsbzS.js +2 -0
  48. package/dist/assets/{ui-CGwjZwt9.js → ui-DGTH-Sdo.js} +1 -1
  49. package/dist/assets/{ui-Df14rQUE.js → ui-pNaus2uP.js} +2 -2
  50. package/dist/index.html +16 -16
  51. package/dist-vendor/web-sdk.js +1609 -1485
  52. package/package.json +2 -2
  53. package/dist/assets/Icon-DyZrCblq.js +0 -2
  54. package/dist/assets/NewRecordView-B_kv9qD_.js +0 -1
  55. package/dist/assets/Toolbar-kvM_SekW.js +0 -2
  56. package/dist/assets/extend-C60kAlp4.js +0 -1
  57. package/dist/assets/fields-DA2uwuWg.js +0 -64
  58. package/dist/assets/index-BNqGpvsY.css +0 -2
  59. package/dist/assets/index-Bdz1ZPcL.js +0 -36
  60. package/dist/assets/shelf-CdaVoMG2.js +0 -1
  61. package/dist/assets/src-BZxKxK4W.js +0 -1
  62. package/dist/assets/src-Cns9vFlU.js +0 -1
  63. package/dist/assets/src-KsFUvYvh.js +0 -7
  64. package/dist/assets/src-Wss-Pefj.js +0 -1
  65. package/dist/assets/src-Yyqpiun8.js +0 -1
  66. package/dist/assets/src-tePV5CBX.js +0 -1
  67. package/dist/assets/ui-Iht7bdzK.js +0 -2
@@ -1 +0,0 @@
1
- import{E as e,F as t,L as n,M as r,R as i,c as a,d as o,f as s,u as c}from"./fields-DA2uwuWg.js";var l=/^[a-z][a-z0-9+.-]*:\/\//i;function u(e){let t=e.trim();if(!t)return null;let n=l.test(t),r;try{r=new URL(n?t:`http://${t}`)}catch{return{host:t}}let i={};return n&&(i.scheme=r.protocol.replace(/:$/,``)),r.username&&(i.username=r.username),r.password&&(i.password=r.password),r.hostname&&(i.host=r.hostname),r.port&&(i.port=Number(r.port)),r.pathname&&r.pathname!==`/`&&(i.path=r.pathname),r.search&&(i.query=r.search.slice(1)),r.hash&&(i.hash=r.hash.slice(1)),i}function d(e){return e?`${e.scheme?`${e.scheme}://`:``}${e.username?`${e.username}${e.password?`:${e.password}`:``}@`:``}${e.host??``}${e.port==null?``:`:${e.port}`}${e.path??``}${e.query?`?${e.query}`:``}${e.hash?`#${e.hash}`:``}`:``}function f(e){return!e||!d(e)?``:e.scheme?d(e):`https://${d(e)}`}var p=function(e,t){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},p(e,t)};function m(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);p(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var h=function(e){var t=`[object `+e+`]`;return function(e){return ee(e)===t}},ee=function(e){return Object.prototype.toString.call(e)},g=function(e){return e instanceof Date?e.getTime():_(e)?e.map(g):e&&typeof e.toJSON==`function`?e.toJSON():e},te=function(e){return e??null},_=h(`Array`),ne=h(`Object`),v=h(`Function`),re=function(e,t){return e.hasOwnProperty(t)&&!v(e[t])},ie=function(e){return e&&(e.constructor===Object||e.constructor===Array||e.constructor.toString()===`function Object() { [native code] }`||e.constructor.toString()===`function Array() { [native code] }`)&&!e.toJSON},y=function(e,t){if(e==null&&e==t||e===t)return!0;if(Object.prototype.toString.call(e)!==Object.prototype.toString.call(t))return!1;if(_(e)){if(e.length!==t.length)return!1;for(var n=0,r=e.length;n<r;n++)if(!y(e[n],t[n]))return!1;return!0}else if(ne(e)){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var i in e)if(!y(e[i],t[i]))return!1;return!0}return!1},b=function(e,t,n,r,i,a){var o=t[r];if(_(e)&&isNaN(Number(o))&&!re(e,o)){for(var s=0,c=e.length;s<c;s++)if(!b(e[s],t,n,r,s,e))return!1}return r===t.length||e==null?n(e,i,a,r===0,r===t.length):b(e[o],t,n,r+1,o,e)},x=function(){function e(e,t,n,r){this.params=e,this.owneryQuery=t,this.options=n,this.name=r,this.init()}return e.prototype.init=function(){},e.prototype.reset=function(){this.done=!1,this.keep=!1},e}(),S=function(e){m(t,e);function t(t,n,r,i){var a=e.call(this,t,n,r)||this;return a.children=i,a}return t.prototype.reset=function(){this.keep=!1,this.done=!1;for(var e=0,t=this.children.length;e<t;e++)this.children[e].reset()},t.prototype.childrenNext=function(e,t,n,r,i){for(var a=!0,o=!0,s=0,c=this.children.length;s<c;s++){var l=this.children[s];if(l.done||l.next(e,t,n,r,i),l.keep||(o=!1),l.done){if(!l.keep)break}else a=!1}this.done=a,this.keep=o},t}(x),ae=function(e){m(t,e);function t(t,n,r,i,a){var o=e.call(this,t,n,r,i)||this;return o.name=a,o}return t}(S),oe=function(e){m(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.propop=!0,t}return t.prototype.next=function(e,t,n,r){this.childrenNext(e,t,n,r)},t}(S),C=function(e){m(t,e);function t(t,n,r,i,a){var o=e.call(this,n,r,i,a)||this;return o.keyPath=t,o.propop=!0,o._nextNestedValue=function(e,t,n,r,i){return o.childrenNext(e,t,n,r,i),!o.done},o}return t.prototype.next=function(e,t,n){b(e,this.keyPath,this._nextNestedValue,0,t,n)},t}(S),w=function(e,t){if(e instanceof Function)return e;if(e instanceof RegExp)return function(t){var n=typeof t==`string`&&e.test(t);return e.lastIndex=0,n};var n=g(e);return function(e){return t(n,g(e))}},T=function(e){m(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.propop=!0,t}return t.prototype.init=function(){this._test=w(this.params,this.options.compare)},t.prototype.next=function(e,t,n){(!Array.isArray(n)||n.hasOwnProperty(t))&&this._test(e,t,n)&&(this.done=!0,this.keep=!0)},t}(x),se=function(e){return function(t,n,r,i){return e(t,n,r,i)}},E=function(e){return se(function(t,n,r,i){var a=typeof g(t),o=e(t);return new T(function(e){var t=te(e);return typeof g(t)===a&&o(t)},n,r,i)})},ce=function(e,t,n,r){var i=r.operations[e];return i||D(e),i(t,n,r,e)},D=function(e){throw Error(`Unsupported operation: ${e}`)},O=function(e,t){for(var n in e)if(t.operations.hasOwnProperty(n)||n.charAt(0)===`$`)return!0;return!1},le=function(e,t,n,r,i){if(O(t,i)){var a=A(t,n,i),o=a[0];if(a[1].length)throw Error(`Property queries must contain only operations, or exact objects.`);return new C(e,t,r,i,o)}return new C(e,t,r,i,[new T(t,r,i)])},k=function(e,t,n){t===void 0&&(t=null);var r=n===void 0?{}:n,i=r.compare,a=r.operations,o={compare:i||y,operations:Object.assign({},a||{})},s=A(e,null,o),c=s[0],l=s[1],u=[];return c.length&&u.push(new C([],e,t,o,c)),u.push.apply(u,l),u.length===1?u[0]:new oe(e,t,o,u)},A=function(e,t,n){var r=[],i=[];if(!ie(e))return r.push(new T(e,e,n)),[r,i];for(var a in e)if(n.operations.hasOwnProperty(a)){var o=ce(a,e[a],e,n);if(o&&!o.propop&&t&&!n.operations[t])throw Error(`Malformed query. ${a} cannot be matched against property.`);o!=null&&r.push(o)}else a.charAt(0)===`$`?D(a):i.push(le(a.split(`.`),e[a],a,e,n));return[r,i]},ue=function(e){return function(t,n,r){return e.reset(),e.next(t,n,r),e.keep}},de=function(e){m(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.propop=!0,t}return t.prototype.init=function(){this._test=w(this.params,this.options.compare)},t.prototype.reset=function(){e.prototype.reset.call(this),this.keep=!0},t.prototype.next=function(e){this._test(e)&&(this.done=!0,this.keep=!1)},t}(x),fe=function(e){m(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.propop=!0,t}return t.prototype.init=function(){if(!this.params||typeof this.params!=`object`)throw Error(`Malformed query. $elemMatch must by an object.`);this._queryOperation=k(this.params,this.owneryQuery,this.options)},t.prototype.reset=function(){e.prototype.reset.call(this),this._queryOperation.reset()},t.prototype.next=function(e){if(_(e)){for(var t=0,n=e.length;t<n;t++){this._queryOperation.reset();var r=e[t];this._queryOperation.next(r,t,e,!1),this.keep=this.keep||this._queryOperation.keep}this.done=!0}else this.done=!1,this.keep=!1},t}(x),pe=function(e){m(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.propop=!0,t}return t.prototype.init=function(){this._queryOperation=k(this.params,this.owneryQuery,this.options)},t.prototype.reset=function(){e.prototype.reset.call(this),this._queryOperation.reset()},t.prototype.next=function(e,t,n,r){this._queryOperation.next(e,t,n,r),this.done=this._queryOperation.done,this.keep=!this._queryOperation.keep},t}(x),j=function(e){m(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.propop=!0,t}return t.prototype.init=function(){},t.prototype.next=function(e){_(e)&&e.length===this.params&&(this.done=!0,this.keep=!0)},t}(x),M=function(e){if(e.length===0)throw Error(`$and/$or/$nor must be a nonempty array`)},N=function(e){m(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.propop=!1,t}return t.prototype.init=function(){var e=this;M(this.params),this._ops=this.params.map(function(t){return k(t,null,e.options)})},t.prototype.reset=function(){this.done=!1,this.keep=!1;for(var e=0,t=this._ops.length;e<t;e++)this._ops[e].reset()},t.prototype.next=function(e,t,n){for(var r=!1,i=!1,a=0,o=this._ops.length;a<o;a++){var s=this._ops[a];if(s.next(e,t,n),s.keep){r=!0,i=s.keep;break}}this.keep=i,this.done=r},t}(x),me=function(e){m(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.propop=!1,t}return t.prototype.next=function(t,n,r){e.prototype.next.call(this,t,n,r),this.keep=!this.keep},t}(N),P=function(e){m(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.propop=!0,t}return t.prototype.init=function(){var e=this,t=Array.isArray(this.params)?this.params:[this.params];this._testers=t.map(function(t){if(O(t,e.options))throw Error(`cannot nest \$ under ${e.name.toLowerCase()}`);return w(t,e.options.compare)})},t.prototype.next=function(e,t,n){for(var r=!1,i=!1,a=0,o=this._testers.length;a<o;a++){var s=this._testers[a];if(s(e)){r=!0,i=!0;break}}this.keep=i,this.done=r},t}(x),he=function(e){m(t,e);function t(t,n,r,i){var a=e.call(this,t,n,r,i)||this;return a.propop=!0,a._in=new P(t,n,r,i),a}return t.prototype.next=function(e,t,n,r){this._in.next(e,t,n),_(n)&&!r?this._in.keep?(this.keep=!1,this.done=!0):t==n.length-1&&(this.keep=!0,this.done=!0):(this.keep=!this._in.keep,this.done=!0)},t.prototype.reset=function(){e.prototype.reset.call(this),this._in.reset()},t}(x),ge=function(e){m(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.propop=!0,t}return t.prototype.next=function(e,t,n,r,i){i?n.hasOwnProperty(t)===this.params&&(this.done=!0,this.keep=!0):(this.done=!0,this.keep=!this.params)},t}(x),_e=function(e){m(t,e);function t(t,n,r,i){var a=e.call(this,t,n,r,t.map(function(e){return k(e,n,r)}),i)||this;return a.propop=!1,M(t),a}return t.prototype.next=function(e,t,n,r){this.childrenNext(e,t,n,r)},t}(ae),ve=function(e){m(t,e);function t(t,n,r,i){var a=e.call(this,t,n,r,t.map(function(e){return k(e,n,r)}),i)||this;return a.propop=!0,a}return t.prototype.next=function(e,t,n,r){this.childrenNext(e,t,n,r)},t}(ae),ye=function(e,t,n){return new T(e,t,n)},be=function(e,t,n,r){return new de(e,t,n,r)},xe=function(e,t,n,r){return new N(e,t,n,r)},Se=function(e,t,n,r){return new me(e,t,n,r)},Ce=function(e,t,n,r){return new fe(e,t,n,r)},we=function(e,t,n,r){return new he(e,t,n,r)},Te=function(e,t,n,r){return new P(e,t,n,r)},Ee=E(function(e){return function(t){return t!=null&&t<e}}),De=E(function(e){return function(t){return t===e||t<=e}}),Oe=E(function(e){return function(t){return t!=null&&t>e}}),ke=E(function(e){return function(t){return t===e||t>=e}}),Ae=function(e,t,n){var r=e[0],i=e[1];return new T(function(e){return g(e)%r===i},t,n)},je=function(e,t,n,r){return new ge(e,t,n,r)},Me=function(e,t,n){return new T(new RegExp(e,t.$options),t,n)},Ne=function(e,t,n,r){return new pe(e,t,n,r)},F={number:function(e){return typeof e==`number`},string:function(e){return typeof e==`string`},bool:function(e){return typeof e==`boolean`},array:function(e){return Array.isArray(e)},null:function(e){return e===null},timestamp:function(e){return e instanceof Date}},Pe=Object.freeze({__proto__:null,$Size:j,$all:function(e,t,n,r){return new ve(e,t,n,r)},$and:function(e,t,n,r){return new _e(e,t,n,r)},$elemMatch:Ce,$eq:ye,$exists:je,$gt:Oe,$gte:ke,$in:Te,$lt:Ee,$lte:De,$mod:Ae,$ne:be,$nin:we,$nor:Se,$not:Ne,$options:function(){return null},$or:xe,$regex:Me,$size:function(e,t,n){return new j(e,t,n,`$size`)},$type:function(e,t,n){return new T(function(t){if(typeof e==`string`){if(!F[e])throw Error(`Type alias does not exist`);return F[e](t)}return t==null?!1:t instanceof e||t.constructor===e},t,n)},$where:function(e,t,n){var r;if(v(e))r=e;else if(!{}.CSP_ENABLED)r=Function(`obj`,`return `+e);else throw Error(`In CSP mode, sift does not support strings in "$where" condition`);return new T(function(e){return r.bind(e)(e)},t,n)}}),Fe=function(e,t,n){var r=n===void 0?{}:n,i=r.compare,a=r.operations;return k(e,t,{compare:i,operations:Object.assign({},Pe,a||{})})},Ie=function(e,t){return t===void 0&&(t={}),ue(Fe(e,null,t))},Le=new Set([`$eq`,`$ne`,`$gt`,`$gte`,`$lt`,`$lte`]),Re=new Set([`$in`,`$nin`]),ze=new Set([`$contains`]),Be=Ie.createEqualsOperation,Ve=e=>typeof e==`string`||typeof e==`number`||typeof e==`boolean`,He=(e,t)=>String(e)===String(t),Ue={$contains(e,t,n){return Be(t=>Array.isArray(t)&&t.some(t=>He(t,e)),t,n)}};function I(e,t){if(!e)return!0;try{return Ie(e,{operations:Ue})(t)}catch{return!1}}function We(e,t){return typeof e==`boolean`?e:e?I(e,t):!1}function Ge(e,t,n){if(Ve(t))return[`${e} = ${n(t)}`];let r=[];for(let[i,a]of Object.entries(t))if(a!==void 0)switch(i){case`$eq`:r.push(`${e} = ${n(a)}`);break;case`$ne`:r.push(`${e} ≠ ${n(a)}`);break;case`$gt`:r.push(`${e} > ${String(a)}`);break;case`$lt`:r.push(`${e} < ${String(a)}`);break;case`$gte`:r.push(`${e} ≥ ${String(a)}`);break;case`$lte`:r.push(`${e} ≤ ${String(a)}`);break;case`$in`:r.push(`${e} ∈ {${a.map(n).join(`, `)}}`);break;case`$nin`:r.push(`${e} ∉ {${a.map(n).join(`, `)}}`);break;case`$contains`:r.push(`${e} contains ${n(a)}`);break;default:break}return r}function L(e){if(!e)return[];let t=[];for(let[n,r]of Object.entries(e))if(r!==void 0){if(n===`$and`||n===`$or`){for(let e of r)t.push(...L(e));continue}t.push(n)}return[...new Set(t)]}function R(e,t){if(!e)return[];let n=[];for(let[r,i]of Object.entries(e))if(i!==void 0){if(r===`$and`||r===`$or`){for(let e of i)n.push(...R(e,t));continue}r===t&&(typeof i==`object`&&i&&!Array.isArray(i)?n.push(...Object.keys(i)):n.push(`$eq`))}return[...new Set(n)]}function Ke(e,t,n){let r=n===void 0?void 0:new Set(Array.isArray(n)?n:[n]);return e.filter(e=>r!==void 0&&e.value!==void 0&&r.has(e.value)||!e.when||I(e.when,t))}function z(e,t,n){if(!e)return[];let r=[];for(let[i,a]of Object.entries(e))if(a!==void 0){if(i===`$and`){for(let e of a)r.push(...z(e,t,n));continue}if(i===`$or`){let e=a.map(e=>z(e,t,n)).filter(e=>e.length>0).map(e=>e.length>1?`(${e.join(` and `)})`:e[0]);e.length&&r.push(e.join(` or `));continue}r.push(...Ge(t(i),a,e=>n?n(i,e):String(e)))}return r}function B(e){let t=[];for(let n of e)if(o(n)){let e=n.type.derive;e&&t.push([n.key,e])}else s(n)&&!n.key&&t.push(...B(n.fields));return t}function V(e){let t=new Set;for(let n of e)if(o(n))t.add(n.key);else if(s(n)&&(n.key&&t.add(n.key),!n.key))for(let e of V(n.fields))t.add(e);return t}function H(e){let t=[];for(let n of e)if(o(n))t.push([n.key,n.type]);else if(s(n)){if(a(n))continue;let e=n.key?`${n.key}__`:``;for(let[r,i]of H(n.fields))t.push([e+r,i])}return t}function qe(e,t,n){if(!e.columns||n[t]!==void 0)return n[t];let r={},i=!1;for(let a of Object.keys(e.columns)){let e=n[`${t}__${a}`];e==null||e===``||(r[a]=e,i=!0)}return i?r:void 0}var U=new WeakMap;function W(e){let t=U.get(e);return t||(t=Object.fromEntries(H(e)),U.set(e,t)),t}function Je(e){let t=H(e.fields).map(([e])=>e),n=t.find((e,n)=>t.indexOf(e)!==n);if(n)throw Error(`[shelf] ${e.library}/${e.shelf}: duplicate key '${n}'`);if(e.single&&!e.claude)throw Error(`[shelf] ${e.library}/${e.shelf}: single shelf requires \`claude\` — the agent cannot find it otherwise`);if(e.views?.list!==void 0&&!Array.isArray(e.views.list))throw Error(`[shelf] ${e.library}/${e.shelf}: views.list is a flat array of field keys — the { kind, fields } form is gone; use views.list: [...] plus views.listKind`);if(e.standalone!==!1&&!e.single&&!e.views?.list?.length&&console.warn(`[shelf] ${e.library}/${e.shelf}: standalone shelf without an explicit views.list`),e.views?.title&&!G(e.fields).some(([t])=>t===e.views.title))throw Error(`[shelf] ${e.library}/${e.shelf}: views.title '${e.views.title}' is not a field`);e.views?.list?.includes(K(e))&&console.warn(`[shelf] ${e.library}/${e.shelf}: views.list repeats the title '${K(e)}' — the title is declared separately`);let r=G(e.fields).filter(([,e])=>e.kind===`title`);r.length>1&&console.warn(`[shelf] ${e.library}/${e.shelf}: ${r.length} title fields (${r.map(([e])=>e).join(`, `)}) — '${r[0][0]}' wins`),e.standalone!==!1&&!e.single&&K(e)===`id`&&console.warn(`[shelf] ${e.library}/${e.shelf}: no title declared (field.title() or views.title) — the record renders no heading`);let i=V(e.fields);for(let[t,n]of B(e.fields))for(let r of n.deps)if(!i.has(r))throw Error(`[defineShelf] ${e.library}/${e.shelf}: derive on '${t}' depends on unknown key '${r}'`);return e}function G(e){let t=[];for(let n of e)o(n)?t.push([n.key,n.type]):s(n)&&!a(n)&&!c(n)&&t.push(...G(n.fields));return t}function K(e){if(e.views?.title)return e.views.title;let t=G(e.fields).find(([,e])=>e.kind===`title`);return t?t[0]:`id`}function q(e,t){return String(t[K(e)]??t.id??``)}function J(e,t){let n=W(e.fields);return t.filter(e=>n[e]&&!n[e].virtual)}var Ye=new Set([`image`,`media`,`avatar`,`cover`]),Y=e=>Ye.has(e);function X(e){let t=e.views?.inline?.length?J(e,e.views.inline):[];return t.length?t:[K(e)]}function Z(e){let t=W(e.fields);return X(e).find(e=>t[e]&&Y(t[e].kind))}function Xe(e,t){let n=W(e.fields);return X(e).reduce((e,r)=>{if(!n[r]||!Y(n[r].kind)){let n=t[r];n!=null&&n!==``&&e.push(String(n))}return e},[]).join(` `).trim()||q(e,t)}function Ze(e){let t=K(e);return[t,...e.views?.list?.length?J(e,e.views.list.filter(e=>e!==t)):[]]}function Qe(e){return e.views?.listKind??`table`}var $e=new Set([`select`,`checkbox`,`relation`]);function Q(e){return e.views?.groupBy?.length?J(e,e.views.groupBy):H(e.fields).filter(([,e])=>!e.virtual&&$e.has(e.prim)).map(([e])=>e)}function et(e){let t=e.views?.defaultGroupBy;if(t){let n=W(e.fields);if(n[t]&&!n[t].virtual)return t}return Q(e)[0]}function tt(e){return H(e.fields).find(([,e])=>e.kind===`cover`)?.[0]}function nt(e){let t=W(e.fields),n=[],r=e=>{!e||e===`id`||n.includes(e)||!t[e]||t[e].virtual||n.push(e)};r(K(e)),Ze(e).forEach(r),Q(e).forEach(r),X(e).forEach(r),r(Z(e)),r(tt(e));let i=e.views?.select;return i&&(r(i.icon),(Array.isArray(i.title)?i.title:[i.title]).forEach(r),r(i.subtitle)),[`id`,...n]}function $(l,d){let f={};for(let p of l)if(o(p)){if(p.type.virtual)continue;if(p.type.derive){f[p.key]=t({error:()=>e(`derived`)}).optional();continue}f[p.key]=d?p.type.zod.optional():p.type.zod}else if(s(p))if(a(p)){let e=r(n($(p.fields,d)).passthrough());f[p.key]=d?e.optional():p.required?e:e.optional()}else if(c(p)){let e=n($(p.fields,d)).passthrough();p.kind===`url`&&(e=i(e=>typeof e==`string`?u(e)??{}:e,e)),f[p.key]=d?e.optional():p.required?e:e.optional()}else Object.assign(f,$(p.fields,d));return f}var rt=e=>e==null||e===``||Array.isArray(e)&&e.length===0;function it(e,t,n){return e.superRefine((e,r)=>{for(let[i,a]of H(t.fields))a.virtual||i.includes(`__`)||n&&!(i in e)||a.required!==!0&&We(a.required,e)&&rt(e[i])&&r.addIssue({code:`custom`,path:[i],message:JSON.stringify({code:`required`})})})}function at(e){return it(n($(e.fields,!1)),e,!1)}function ot(e){return it(n($(e.fields,!0)),e,!0)}export{I as C,f as D,d as E,u as O,z as S,Ke as T,Re as _,Je as a,L as b,Q as c,Y as d,nt as f,Ze as g,K as h,et as i,Z as l,q as m,ot as n,H as o,Qe as p,qe as r,W as s,at as t,Xe as u,ze as v,We as w,R as x,Le as y};
@@ -1 +0,0 @@
1
- import{n as e,r as t,t as n}from"./src-KsFUvYvh.js";export{e as default,n as fin,t as iban};
@@ -1 +0,0 @@
1
- import{B as e,C as t,E as n,I as r,L as i,N as a,P as o,V as s,_ as c,i as l,j as u,t as d,w as f,x as p,z as m}from"./fields-DA2uwuWg.js";import{a as h}from"./shelf-CdaVoMG2.js";import{t as g}from"./extend-C60kAlp4.js";import{n as _,r as v}from"./plugin-q1oOYqt7.js";import{t as y}from"./settings-Dfvzj6n2.js";import{i as b,r as x,s as S}from"./data-size-D-gMRpFc.js";import{t as C}from"./showcase-g9KGsIJf.js";var w=(e,r)=>s().superRefine((i,a)=>{e.safeParse(t(i)).success||a.addIssue({code:u.custom,message:n(r)})}),T=()=>r().int().min(0).max(255),E=()=>r().int().min(0).max(65535),D=e([T(),T(),T(),T()]),O=e([E(),E(),E(),E(),E(),E(),E(),E()]),k=i({v:o(4),a:D}),A=i({v:o(6),a:O}),j=a(`v`,[k,A]);function M(e){let t=p(e),n=t.required??!1,r=w(j,`ip_structure`);return c(t,d({kind:`ip`,label:t.label??``,required:n,prim:`ip`,column:`text`,hints:{},zod:f(r,n)},t.multiple??!1))}var N=/^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$/;function P(e){let t=p(e),r=t.required??!1,i=m().regex(N,{message:n(`pattern`,{messageKey:`core.presets.mac`})});return c(t,d({kind:`text`,label:t.label??``,required:r,prim:`text`,column:`text`,hints:{mask:`macAddress`},zod:f(i,r)},t.multiple??!1))}var F=/^[A-Za-z0-9_]([A-Za-z0-9_-]{0,61}[A-Za-z0-9_])?(\.[A-Za-z0-9_]([A-Za-z0-9_-]{0,61}[A-Za-z0-9_])?)*$/;function I(e){let t=p(e),r=t.required??!1,i=m().regex(F,{message:n(`pattern`,{messageKey:`core.presets.hostname`})});return c(t,d({kind:`text`,label:t.label??``,required:r,prim:`text`,column:`text`,hints:{},zod:f(i,r)},t.multiple??!1))}var L=/^\d{15}$/;function R(e){let t=0,n=!1;for(let r=e.length-1;r>=0;r--){let i=e.charCodeAt(r)-48;n&&(i*=2,i>9&&(i-=9)),t+=i,n=!n}return t%10==0}function z(e){let t=p(e),r=t.required??!1,i=m().regex(L,{message:n(`pattern`,{messageKey:`core.presets.imei`})}).refine(R,{message:n(`pattern`,{messageKey:`core.presets.imei`})});return c(t,d({kind:`text`,label:t.label??``,required:r,prim:`text`,column:`text`,hints:{},zod:f(i,r)},t.multiple??!1))}var B=a(`v`,[k.extend({p:r().int().min(0).max(32)}),A.extend({p:r().int().min(0).max(128)})]);function V(e){let t=p(e),n=t.required??!1,r=w(B,`cidr_structure`);return c(t,d({kind:`cidr`,label:t.label??``,required:n,prim:`cidr`,column:`text`,hints:{},zod:f(r,n)},t.multiple??!1))}var H=h({shelf:`network`,library:`devices`,label:`devices.network.label`,icon:`lucide:globe`,claude:`A network segment. subnet — CIDR. gateway — the gateway. domain — the segment's DNS suffix (e.g. lan → host FQDN = hostname.lan).`,views:{list:[`subnet`,`gateway`,`dnsPrimary`]},fields:[l.title({key:`name`,label:`core.fields.name`}),l.text({key:`description`,label:`devices.network.fields.description`,rules:{max:1e3}}),l.int({key:`vlan`,label:`devices.network.fields.vlan`,rules:{min:1,max:4094}}),I({key:`domain`,label:`devices.network.fields.domain`}),V({key:`subnet`,label:`devices.network.fields.subnet`}),M({key:`gateway`,label:`devices.network.fields.gateway`}),M({key:`dnsPrimary`,label:`devices.network.fields.dnsPrimary`}),M({key:`dnsFallback`,label:`devices.network.fields.dnsFallback`}),M({key:`poolStart`,label:`devices.network.fields.poolStart`}),M({key:`poolEnd`,label:`devices.network.fields.poolEnd`}),l.text({key:`notes`,label:`devices.network.fields.notes`,rules:{max:2e3}})]}),U=[`access`,`infra`,`monitoring`,`database`,`automation`,`network`,`media`,`lighting`,`files`,`backup`,`downloads`,`finance`,`calendars`,`communication`,`web`,`ai`,`devices`,`other`].map(e=>({value:e,title:`devices.service.cat.${e}`})),W=[{value:`http`,title:`devices.accessTypes.http`},{value:`https`,title:`devices.accessTypes.https`},{value:`ssh`,title:`devices.accessTypes.ssh`},{value:`mysql`,title:`devices.accessTypes.mysql`},{value:`mqtt`,title:`devices.accessTypes.mqtt`},{value:`ws`,title:`devices.accessTypes.ws`},{value:`dns`,title:`devices.accessTypes.dns`},{value:`other`,title:`devices.accessTypes.other`}],G=h({shelf:`service`,library:`devices`,label:`devices.service_catalog.label`,icon:`lucide:layers`,claude:`Catalog of network service types. name — human-readable name (custom, not translated). code — slug (auto-link key from the scanner). category — tag slugs (multi; SERVICE_CATEGORIES as hints). description_mode — description source: 'key' (i18n key in the description field) or 'own' (free text in the description_text field). SERVICE_META defaults → 'key' + devices.service.desc.<code>; user records are usually 'own'.`,views:{list:[`code`,`category`]},fields:[l.title({key:`name`,label:`core.fields.name`}),l.string({key:`code`,label:`devices.service.code`,rules:{max:60}}),l.select({key:`category`,label:`devices.service.category`,options:[...U],multiple:!0}),l.select({key:`description_mode`,label:`devices.service.description_mode`,options:[{value:`key`,title:`devices.service.description_mode_key`},{value:`own`,title:`devices.service.description_mode_own`}],default:`key`}),l.i18n({key:`description`,label:`devices.service.description`,rules:{max:1e3},view:{hidden:{description_mode:{$ne:`key`}}}}),l.text({key:`description_text`,label:`devices.service.description`,rules:{max:1e3},view:{hidden:{description_mode:{$ne:`own`}}}})]}),K=g({id:`device_info`,label:`devices.device_info.label`,icon:`lucide:monitor`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`device`},claude:`Network and technical specs of a device. hostname — FQDN on the LAN. addresses[] — network addresses (ip/mac, multi-NIC). group — human-friendly. services[] — inline services (type/title/links[]/secrets[]). disks_usage[] — disk usage (SSH).`,fields:[l.sheet({fields:[[l.string({key:`hostname`,label:`devices.device_info.fields.hostname`,rules:{max:120}}),l.select({key:`group`,label:`devices.device_info.fields.group`,options:`device-groups`})],[l.string({key:`vendor`,label:`devices.device_info.fields.vendor`,rules:{max:80}}),l.string({key:`model`,label:`devices.device_info.fields.model`,rules:{max:120}})],[l.string({key:`os`,label:`devices.device_info.fields.os`,rules:{max:100}}),l.string({key:`kernel`,label:`devices.device_info.fields.kernel`,rules:{max:100}}),l.string({key:`arch`,label:`devices.device_info.fields.arch`,rules:{max:30}})],[l.string({key:`cpu`,label:`devices.device_info.fields.cpu`,rules:{max:150}}),l.string({key:`gpu`,label:`devices.device_info.fields.gpu`,rules:{max:150}}),S({key:`ram`,label:`devices.device_info.fields.ram`})]]}),l.table({key:`addresses`,label:`devices.device_info.fields.addresses`,icon:`lucide:network`,fields:[M({key:`ip`,label:`devices.device_info.fields.ip`}),P({key:`mac`,label:`devices.device_info.fields.mac`})]}),l.group({key:`disks_usage`,label:`devices.device_info.fields.disks_usage`,icon:`lucide:hard-drive`,multiple:!0,fields:[l.string({key:`mount`,label:`devices.device_info.disk.mount`,rules:{max:80}}),x({key:`size`,label:`devices.device_info.disk.size`,system:`binary`,unit:`GiB`}),x({key:`used`,label:`devices.device_info.disk.used`,system:`binary`,unit:`GiB`}),x({key:`free`,label:`devices.device_info.disk.free`,system:`binary`,unit:`GiB`})]}),l.keyed({key:`services`,label:`devices.device_info.fields.services`,icon:`lucide:server`,by:l.relation({key:`service`,label:`devices.service.type`,options:{library:`devices`,shelf:`service`}}),fields:[l.smallText({key:`description`,label:`devices.service.description`,rules:{max:500}}),l.boolean({key:`hide`,label:`devices.service.hide`}),l.table({key:`links`,label:`devices.service.links`,icon:`lucide:link`,fields:[l.url({key:`url`,label:`devices.service.url`}),l.select({key:`access`,label:`devices.service.access`,options:`access-types`}),l.select({key:`visibility`,label:`devices.service.visibility`,options:`visibility-types`})]}),l.keyValue({key:`secrets`,label:`devices.service.secrets`,option:l.password({}),multiple:!0,view:{keyLabel:`devices.service.secretName`,valueLabel:`devices.service.secretValue`}})]})]}),q={ssh_config_path:`~/.ssh/config`,pihole_conf_path:``,syncthing_ini_path:`~/.config/syncthingtray.ini`,gtk_bookmarks_path:`~/.config/gtk-3.0/bookmarks`,kodi_sources_path:`~/.local/share/kodi/userdata/sources.xml`,krdc_bookmarks_path:`~/.local/share/krdc/bookmarks.xml`,rclone_config_path:`~/.config/rclone/rclone.conf`,remmina_dir:`~/.local/share/remmina`,remoteview_dir:`~/.local/share/remoteview`,delfin_config_path:`~/.config/delfin/config.toml`},J=`docker compose exec pihole pihole reloaddns`,Y={ip:M,cidr:V,mac:P,hostname:I,imei:z,dataSize:x,ram:S,diskSize:b},X=_({id:`devices`,version:`1.0.0`,dependsOn:[`things`],settings:y({label:`devices.settings.label`,icon:`lucide:radar`,fields:[l.info(`devices.settings.scan_info`),l.button({label:`devices.settings.scan_button`,value:`devices.runScan`,icon:`lucide:radar`}),l.info(`devices.settings.secrets_help`),l.info(`devices.settings.sync_targets_info`),l.localFile({key:`ssh_config_path`,label:`devices.settings.ssh_config_path`,default:q.ssh_config_path}),l.localFile({key:`pihole_conf_path`,label:`devices.settings.pihole_conf_path`,default:q.pihole_conf_path}),l.string({key:`pihole_reload_cmd`,label:`devices.settings.pihole_reload_cmd`,default:J}),l.localFile({key:`syncthing_ini_path`,label:`devices.settings.syncthing_ini_path`,default:q.syncthing_ini_path}),l.localFile({key:`gtk_bookmarks_path`,label:`devices.settings.gtk_bookmarks_path`,default:q.gtk_bookmarks_path}),l.localFile({key:`kodi_sources_path`,label:`devices.settings.kodi_sources_path`,default:q.kodi_sources_path}),l.localFile({key:`krdc_bookmarks_path`,label:`devices.settings.krdc_bookmarks_path`,default:q.krdc_bookmarks_path}),l.localFile({key:`rclone_config_path`,label:`devices.settings.rclone_config_path`,default:q.rclone_config_path}),l.localDir({key:`remmina_dir`,label:`devices.settings.remmina_dir`,default:q.remmina_dir}),l.localDir({key:`remoteview_dir`,label:`devices.settings.remoteview_dir`,default:q.remoteview_dir}),l.localFile({key:`delfin_config_path`,label:`devices.settings.delfin_config_path`,default:q.delfin_config_path})]}),libraries:[{meta:v({id:`devices`,label:`devices.library.label`,icon:`lucide:globe`,agent:`Network subnets and the service catalog (network, service).`}),shelves:[H,G]},{meta:v({id:`hardware`,label:`devices.hardware.label`,icon:`lucide:monitor`,agent:`All owned devices (a view over things/item where type=device). No shelves of its own.`}),shelves:[]}],extends_:[K],showcases:[C({id:`fleet`,library:`devices`,label:`devices.fleet.label`,icon:`lucide:server`,source:{library:`things`,shelf:`item`},filter:{type:`device`,tags:{$contains:`network`}},columns:[`subtype`,`brand`,`model`,`location`,`condition`],createDefaults:{type:`device`}}),C({id:`all`,library:`hardware`,label:`devices.all.label`,icon:`lucide:monitor`,source:{library:`things`,shelf:`item`},filter:{type:`device`},columns:[`subtype`,`brand`,`model`,`location`,`condition`],createDefaults:{type:`device`}})],fieldContribs:[{library:`things`,shelf:`item`,field:`type`,options:[{value:`device`,title:`devices.device_info.label`}]},{library:`things`,shelf:`item`,field:`subtype`,options:[{value:`pc`,title:`devices.deviceGroups.pc`,when:{type:`device`}},{value:`server`,title:`devices.deviceGroups.server`,when:{type:`device`}},{value:`mobile`,title:`devices.deviceGroups.mobile`,when:{type:`device`}},{value:`tv`,title:`devices.deviceGroups.tv`,when:{type:`device`}},{value:`printer`,title:`devices.deviceGroups.printer`,when:{type:`device`}},{value:`iot`,title:`devices.deviceGroups.iot`,when:{type:`device`}},{value:`network`,title:`devices.deviceGroups.network`,when:{type:`device`}},{value:`other`,title:`devices.deviceGroups.other`,when:{type:`device`}}]}],optionLists:[{name:`access-types`,options:[...W]},{name:`visibility-types`,options:[{value:`lan`,title:`devices.visibilityTypes.lan`},{value:`public`,title:`devices.visibilityTypes.public`}]},{name:`device-groups`,options:[{value:`pc`,title:`devices.deviceGroups.pc`},{value:`server`,title:`devices.deviceGroups.server`},{value:`mobile`,title:`devices.deviceGroups.mobile`},{value:`tv`,title:`devices.deviceGroups.tv`},{value:`printer`,title:`devices.deviceGroups.printer`},{value:`iot`,title:`devices.deviceGroups.iot`},{value:`network`,title:`devices.deviceGroups.network`},{value:`other`,title:`devices.deviceGroups.other`}]}]});export{z as a,I as i,X as n,M as o,V as r,P as s,Y as t};
@@ -1,7 +0,0 @@
1
- import{E as e,_ as t,i as n,t as r,w as i,z as a}from"./fields-DA2uwuWg.js";import{a as o}from"./shelf-CdaVoMG2.js";import{t as s}from"./extend-C60kAlp4.js";import{n as c,r as l}from"./plugin-q1oOYqt7.js";import{t as u}from"./settings-Dfvzj6n2.js";var d=/^[A-Za-z]{2}\d{2}[A-Za-z0-9]{11,30}$/;function f(e){let t=e.toUpperCase().replace(/\s+/g,``),n=t.slice(4)+t.slice(0,4),r=``;for(let e of n){let t=e.charCodeAt(0);t>=65&&t<=90?r+=(t-55).toString():r+=e}let i=0;for(let e of r)i=(i*10+(e.charCodeAt(0)-48))%97;return i===1}function p(n){let o=n.required??!1,s=a().regex(d,{message:e(`pattern`,{messageKey:`core.presets.iban`})}).refine(f,{message:e(`pattern`,{messageKey:`core.presets.iban`})});return t(n,r({kind:`text`,label:n.label??``,required:o,prim:`text`,column:`text`,hints:{mask:`iban`,maskStore:`unmasked`},zod:i(s,o)},n.multiple??!1))}var m=/^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/;function h(n){let o=n.required??!1,s=a().regex(m,{message:e(`pattern`,{messageKey:`finance.presets.bic`})});return t(n,r({kind:`text`,label:n.label??``,required:o,prim:`text`,column:`text`,hints:{},zod:i(s,o)},n.multiple??!1))}var g=o({shelf:`account`,library:`finance`,label:`finance.account.label`,icon:`lucide:landmark`,claude:`Firefly III account (read-only mirror). kind — account type.
2
- current_balance — current balance. firefly_id — external key (do not edit).`,views:{list:[`kind`,`currency`,`current_balance`]},fields:[n.title({key:`name`,label:`core.fields.name`}),n.text({key:`description`,label:`finance.account.fields.description`,rules:{max:1e3}}),n.sheet({fields:[[n.select({key:`kind`,label:`finance.account.fields.kind`,options:[{value:`asset`,title:`finance.account.options.asset`},{value:`expense`,title:`finance.account.options.expense`},{value:`revenue`,title:`finance.account.options.revenue`},{value:`liability`,title:`finance.account.options.liability`},{value:`cash`,title:`finance.account.options.cash`}]}),n.string({key:`currency`,label:`finance.account.fields.currency`,rules:{max:3}})],[n.money({key:`current_balance`,label:`finance.account.fields.current_balance`}),p({key:`iban`,label:`finance.account.fields.iban`})],[n.string({key:`bank`,label:`finance.account.fields.bank`,rules:{max:120}}),h({key:`bic`,label:`finance.account.fields.bic`})]]}),n.string({key:`firefly_id`,label:`finance.account.fields.firefly_id`,rules:{max:32}}),n.text({key:`notes`,label:`finance.account.fields.notes`,rules:{max:2e3}})]}),_=o({shelf:`transaction`,library:`finance`,label:`finance.transaction.label`,icon:`lucide:arrow-left-right`,claude:`Firefly III transaction (read-only). Each split = a separate record.
3
- source/destination — accounts. firefly_id — split journal id (do not edit).`,views:{list:[`date`,`amount`,`kind`]},fields:[n.title({key:`description`,label:`finance.transaction.fields.description`}),n.sheet({fields:[[n.date({key:`date`,label:`finance.transaction.fields.date`}),n.money({key:`amount`,label:`finance.transaction.fields.amount`})],[n.select({key:`kind`,label:`finance.transaction.fields.kind`,options:[{value:`withdrawal`,title:`finance.transaction.options.withdrawal`},{value:`deposit`,title:`finance.transaction.options.deposit`},{value:`transfer`,title:`finance.transaction.options.transfer`}]}),n.string({key:`category`,label:`finance.transaction.fields.category`,rules:{max:100}})],[n.relation({key:`source`,label:`finance.transaction.fields.source`,options:{library:`finance`,shelf:`account`}}),n.relation({key:`destination`,label:`finance.transaction.fields.destination`,options:{library:`finance`,shelf:`account`}})]]}),n.string({key:`firefly_id`,label:`finance.transaction.fields.firefly_id`,rules:{max:32}}),n.text({key:`notes`,label:`finance.transaction.fields.notes`,rules:{max:2e3}})]}),v=o({shelf:`bill`,library:`finance`,label:`finance.bill.label`,icon:`lucide:receipt`,claude:`Recurring Firefly III payment (Bill = subscription, read-only).
4
- repeat — recurrence. next_expected — next expected date. firefly_id — do not edit.`,views:{list:[`amount_min`,`repeat`,`next_expected`,`active`]},fields:[n.title({key:`name`,label:`core.fields.name`}),n.text({key:`description`,label:`finance.bill.fields.description`,rules:{max:1e3}}),n.sheet({fields:[[n.money({key:`amount_min`,label:`finance.bill.fields.amount_min`}),n.money({key:`amount_max`,label:`finance.bill.fields.amount_max`})],[n.select({key:`repeat`,label:`finance.bill.fields.repeat`,options:[{value:`weekly`,title:`finance.bill.options.weekly`},{value:`monthly`,title:`finance.bill.options.monthly`},{value:`quarterly`,title:`finance.bill.options.quarterly`},{value:`yearly`,title:`finance.bill.options.yearly`}]}),n.date({key:`next_expected`,label:`finance.bill.fields.next_expected`})]]}),n.boolean({key:`active`,label:`finance.bill.fields.active`}),n.string({key:`firefly_id`,label:`finance.bill.fields.firefly_id`,rules:{max:32}}),n.text({key:`notes`,label:`finance.bill.fields.notes`,rules:{max:2e3}})]}),y=s({id:`item_financing`,label:`finance.item_financing.label`,icon:`lucide:credit-card`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{paymentStatus:{$in:[`installment`,`credit`]}},claude:`Installment/credit details for an item. creditor — who is owed (bank/store).
5
- holder — which person the debt is registered to (relation people/person).
6
- total — full debt amount. monthly — monthly payment. termMonths/paidMonths — schedule.
7
- remaining — how much is left (manual). nextPayment — payment reminder. paidOff — settled.`,fields:[n.string({key:`creditor`,label:`finance.item_financing.fields.creditor`,rules:{max:120}}),n.relation({key:`holder`,label:`finance.item_financing.fields.holder`,options:{library:`people`,shelf:`person`}}),n.sheet({fields:[[n.money({key:`total`,label:`finance.item_financing.fields.total`,rules:{defaultCurrency:`UAH`}}),n.money({key:`downPayment`,label:`finance.item_financing.fields.downPayment`,rules:{defaultCurrency:`UAH`}})],[n.money({key:`monthly`,label:`finance.item_financing.fields.monthly`,rules:{defaultCurrency:`UAH`}}),n.money({key:`remaining`,label:`finance.item_financing.fields.remaining`,rules:{defaultCurrency:`UAH`}})],[n.int({key:`termMonths`,label:`finance.item_financing.fields.termMonths`,rules:{min:0}}),n.int({key:`paidMonths`,label:`finance.item_financing.fields.paidMonths`,rules:{min:0}}),n.real({key:`rate`,label:`finance.item_financing.fields.rate`,rules:{min:0}})]]}),n.date({key:`startDate`,label:`finance.item_financing.fields.startDate`}),n.reminder({key:`nextPayment`,label:`finance.item_financing.fields.nextPayment`,rules:{lead:3}}),n.boolean({key:`paidOff`,label:`finance.item_financing.fields.paidOff`}),n.text({key:`notes`,label:`finance.item_financing.fields.notes`,rules:{max:2e3}})]}),b={iban:p},x=c({id:`finance`,version:`1.0.0`,dependsOn:[`things`,`people`],libraries:[{meta:l({id:`finance`,label:`finance.library.label`,icon:`lucide:wallet`,agent:`Bank accounts, bills, and transactions — mirrored from Firefly.`}),shelves:[g,_,v]}],extends_:[y],settings:u({label:`finance.settings.label`,fields:[n.string({key:`firefly_url`,label:`finance.settings.firefly_url`,required:!0}),n.password({key:`token`,label:`finance.settings.token`,required:!0}),n.button({label:`finance.settings.test_button`,value:`finance.testConnection`,icon:`lucide:wifi`}),n.button({label:`finance.settings.sync_button`,value:`finance.sync`,icon:`lucide:refresh-cw`}),n.file({key:`wise_csv`,label:`finance.settings.wise_csv`}),n.relation({key:`wise_account`,label:`finance.settings.wise_account`,options:{library:`finance`,shelf:`account`}}),n.button({label:`finance.settings.wise_import_button`,value:`finance.importWise`,icon:`lucide:upload`})]})});export{x as n,p as r,b as t};
@@ -1 +0,0 @@
1
- import{i as e}from"./fields-DA2uwuWg.js";import{a as t}from"./shelf-CdaVoMG2.js";import{n,r}from"./plugin-q1oOYqt7.js";var i=(e,t)=>(e??[]).reduce((e,n)=>e+(Number(n?.[t])||0),0),a=(e,t)=>(e??[]).map(e=>e?.[t]==null?``:String(e[t])).filter(e=>e!==``).sort()[0]??null,o=t({shelf:`food_item`,library:`kitchen`,label:`kitchen.food_item.label`,icon:`lucide:soup`,views:{list:[`subcategory`,`quantity`,`expires`]},fields:[e.title({key:`name`,label:`core.fields.name`}),e.avatar({key:`logo`,label:`kitchen.food_item.fields.logo`,role:`avatar`}),e.image({key:`photos`,label:`kitchen.food_item.fields.photos`,multiple:!0}),e.text({key:`description`,label:`kitchen.food_item.fields.description`,rules:{max:1e3}}),e.string({key:`subcategory`,label:`kitchen.food_item.fields.subcategory`,rules:{max:100}}),e.unit({key:`unit`,label:`kitchen.food_item.fields.unit`,options:`cooking`}),e.amount({key:`quantity`,label:`kitchen.food_item.fields.quantity`,unitFrom:`unit`,rules:{min:0},derive:{deps:[`variants`],fn:({record:e})=>i(e.variants,`quantity`)}}),e.amount({key:`minQuantity`,label:`kitchen.food_item.fields.minQuantity`,unitFrom:`unit`,rules:{min:0}}),e.reminder({key:`expires`,label:`kitchen.food_item.fields.expires`,rules:{lead:14},derive:{deps:[`variants`],fn:({record:e})=>a(e.variants,`expires`)}}),e.table({key:`variants`,label:`kitchen.food_item.fields.variants`,icon:`lucide:package`,fields:[e.string({key:`name`,label:`kitchen.food_item.variant.name`,rules:{max:200}}),e.amount({key:`quantity`,label:`kitchen.food_item.variant.quantity`,unitFrom:`parent:unit`,rules:{min:0}}),e.reminder({key:`expires`,label:`kitchen.food_item.variant.expires`,rules:{lead:14}}),e.relation({key:`location`,label:`kitchen.food_item.variant.location`,options:{library:`things`,shelf:`storage_location`}}),e.link({key:`shops`,label:`kitchen.food_item.variant.shops`,multiple:!0}),e.image({key:`photo`,label:`kitchen.food_item.variant.photo`})]}),e.tags({key:`tags`,label:`kitchen.food_item.fields.tags`}),e.text({key:`notes`,label:`kitchen.food_item.fields.notes`,rules:{max:2e3}})]}),s=t({shelf:`food_recipe`,library:`kitchen`,label:`kitchen.food_recipe.label`,icon:`lucide:clipboard-list`,views:{list:[`category`,`description`,`prep_time`,`cook_time`]},fields:[e.title({key:`name`,label:`core.fields.name`}),e.image({key:`images`,label:`kitchen.food_recipe.fields.images`,multiple:!0}),e.text({key:`description`,label:`kitchen.food_recipe.fields.description`,rules:{max:500}}),e.int({key:`servings`,label:`kitchen.food_recipe.fields.servings`,rules:{min:1,max:100}}),e.select({key:`difficulty`,label:`kitchen.food_recipe.fields.difficulty`,options:[{value:`easy`,title:`kitchen.food_recipe.options.difficulty.easy`},{value:`medium`,title:`kitchen.food_recipe.options.difficulty.medium`},{value:`hard`,title:`kitchen.food_recipe.options.difficulty.hard`}]}),e.select({key:`category`,label:`kitchen.food_recipe.fields.category`,multiple:!0,options:[{value:`first`,title:`kitchen.food_recipe.options.category.first`},{value:`main`,title:`kitchen.food_recipe.options.category.main`},{value:`salad`,title:`kitchen.food_recipe.options.category.salad`},{value:`appetizer`,title:`kitchen.food_recipe.options.category.appetizer`},{value:`side`,title:`kitchen.food_recipe.options.category.side`},{value:`dessert`,title:`kitchen.food_recipe.options.category.dessert`},{value:`drink`,title:`kitchen.food_recipe.options.category.drink`},{value:`sauce`,title:`kitchen.food_recipe.options.category.sauce`}]}),e.tags({key:`tags`,label:`kitchen.food_recipe.fields.tags`}),e.duration({key:`prep_time`,label:`kitchen.food_recipe.fields.prep_time`}),e.duration({key:`cook_time`,label:`kitchen.food_recipe.fields.cook_time`}),e.table({key:`ingredients`,label:`kitchen.food_recipe.fields.ingredients`,icon:`lucide:carrot`,rules:{unique:[`product`]},fields:[e.relation({key:`product`,label:`kitchen.food_recipe.ingredient.product`,options:{library:`kitchen`,shelf:`food_item`}}),e.amount({key:`amount`,label:`kitchen.food_recipe.ingredient.amount`,unitFrom:`relation:product.unit`,rules:{min:0}}),e.boolean({key:`optional`,label:`kitchen.food_recipe.ingredient.optional`}),e.lookup({key:`stock`,label:`kitchen.food_recipe.ingredient.stock`,from:`product`,pick:[`quantity`],view:{compareWith:`amount`}})]}),e.markdown({key:`steps`,label:`kitchen.food_recipe.fields.steps`,rules:{max:5e3}}),e.text({key:`notes`,label:`kitchen.food_recipe.fields.notes`,rules:{max:1e3}})]}),c=t({shelf:`preferences`,library:`kitchen`,label:`kitchen.preferences.label`,icon:`lucide:notebook-pen`,single:!0,claude:`One record. The household food habits, diets and allergies; where groceries are bought, what is bought there and in what volumes; which kitchen appliances exist and which do not. Read it before suggesting recipes, building a shopping list, or planning a menu. An appliance listed as absent is a fact, not a gap — do not propose recipes that need it.`,fields:[e.markdown({key:`preferences`,label:`kitchen.preferences.fields.preferences`,rules:{max:1e4}}),e.markdown({key:`shops`,label:`kitchen.preferences.fields.shops`,rules:{max:1e4}}),e.markdown({key:`equipment`,label:`kitchen.preferences.fields.equipment`,rules:{max:1e4}}),e.text({key:`notes`,label:`kitchen.preferences.fields.notes`,rules:{max:1e4}})]}),l=n({id:`kitchen`,version:`1.0.0`,dependsOn:[`things`],libraries:[{meta:r({id:`kitchen`,label:`kitchen.library.label`,icon:`lucide:cooking-pot`,agent:`Food inventory and recipes — what is in stock, what is expiring, what can be cooked.`}),shelves:[o,s,c]}],fieldContribs:[{library:`things`,shelf:`item`,field:`type`,options:[{value:`kitchenware`,title:`kitchen.contrib.type.kitchenware`}]}]});export{l as default};
@@ -1 +0,0 @@
1
- import{i as e}from"./fields-DA2uwuWg.js";import{t}from"./extend-C60kAlp4.js";import{n,r}from"./plugin-q1oOYqt7.js";import{t as i}from"./showcase-g9KGsIJf.js";var a=t({id:`drone`,label:`drone.drone.label`,icon:`tb:drone`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`,subtype:`aircraft`},claude:`FPV drone technical characteristics. frame_size — frame size (e.g. 3.5"). motors — motors. firmware — firmware (Betaflight/INAV). camera/flight_controller/vtx/gps_module link to things/item[type=drone] records of the matching subtype; the *_legacy fields are hidden pre-migration free text kept only so a human can resolve an unmatched value, never write to them.`,fields:[e.string({key:`frame_size`,label:`drone.drone.fields.frame_size`,rules:{max:40}}),e.string({key:`purpose`,label:`drone.drone.fields.purpose`,rules:{max:200}}),e.string({key:`motors`,label:`drone.drone.fields.motors`,rules:{max:150}}),e.string({key:`props`,label:`drone.drone.fields.props`,rules:{max:80}}),e.relation({key:`camera`,label:`drone.drone.fields.camera`,options:{library:`things`,shelf:`item`,filter:{type:`drone`,subtype:`camera`}}}),e.string({key:`camera_legacy`,label:`drone.drone.fields.camera_legacy`,view:{hidden:!0},rules:{max:100}}),e.relation({key:`flight_controller`,label:`drone.drone.fields.flight_controller`,options:{library:`things`,shelf:`item`,filter:{type:`drone`,subtype:`flight_controller`}}}),e.string({key:`flight_controller_legacy`,label:`drone.drone.fields.flight_controller_legacy`,view:{hidden:!0},rules:{max:100}}),e.relation({key:`vtx`,label:`drone.drone.fields.vtx`,options:{library:`things`,shelf:`item`,filter:{type:`drone`,subtype:`vtx`}}}),e.string({key:`vtx_legacy`,label:`drone.drone.fields.vtx_legacy`,view:{hidden:!0},rules:{max:100}}),e.relation({key:`gps_module`,label:`drone.drone.fields.gps_module`,options:{library:`things`,shelf:`item`,filter:{type:`drone`,subtype:`gps`}}}),e.string({key:`gps_module_legacy`,label:`drone.drone.fields.gps_module_legacy`,view:{hidden:!0},rules:{max:100}}),e.string({key:`radio_link`,label:`drone.drone.fields.radio_link`,rules:{max:80}}),e.string({key:`receiver`,label:`drone.drone.fields.receiver`,rules:{max:80}}),e.string({key:`video_system`,label:`drone.drone.fields.video_system`,rules:{max:80}}),e.string({key:`power_module`,label:`drone.drone.fields.power_module`,rules:{max:60}}),e.string({key:`flight_time`,label:`drone.drone.fields.flight_time`,rules:{max:60}}),e.string({key:`firmware`,label:`drone.drone.fields.firmware`,rules:{max:100}}),e.string({key:`firmware_target`,label:`drone.drone.fields.firmware_target`,rules:{max:80}}),e.group({key:`snippets`,label:`drone.drone.groups.snippets`,icon:`lucide:terminal`,multiple:!0,fields:[e.string({key:`title`,label:`drone.drone.fields.snippet_title`,required:!0,rules:{max:100}}),e.text({key:`summary`,label:`drone.drone.fields.snippet_summary`,rules:{max:500}}),e.source({key:`snippet`,label:`drone.drone.fields.snippet`,rules:{ext:`md`}})]}),e.text({key:`notes`,label:`drone.drone.fields.notes`,rules:{max:2e3}})]}),o=t({id:`drone_battery`,label:`drone.drone_battery.label`,icon:`lucide:battery-full`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`,subtype:`battery`},claude:`FPV drone battery characteristics. cells — number of cells (1S/3S/4S). capacity — capacity in mAh. c_rate — discharge current. auw — all-up weight of the assembly in flight.`,fields:[e.string({key:`charger`,label:`drone.drone_battery.fields.charger`,rules:{max:100}}),e.string({key:`cells`,label:`drone.drone_battery.fields.cells`,rules:{max:10}}),e.measured({key:`capacity`,label:`drone.drone_battery.fields.capacity`,options:`energy`}),e.string({key:`c_rate`,label:`drone.drone_battery.fields.c_rate`,rules:{max:20}}),e.string({key:`auw`,label:`drone.drone_battery.fields.auw`,rules:{max:40}}),e.text({key:`notes`,label:`drone.drone_battery.fields.notes`,rules:{max:2e3}})]}),s=t({id:`drone_vtx`,label:`drone.drone_vtx.label`,icon:`lucide:radio-tower`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`,subtype:`vtx`},claude:`FPV video transmitter characteristics. input_voltage — input voltage. output_power — power levels. protocol — control protocol (IRC Tramp, SmartAudio). channel_count — number of channels.`,fields:[e.string({key:`input_voltage`,label:`drone.drone_vtx.fields.input_voltage`,rules:{max:40}}),e.string({key:`output_power`,label:`drone.drone_vtx.fields.output_power`,rules:{max:100}}),e.string({key:`protocol`,label:`drone.drone_vtx.fields.protocol`,rules:{max:60}}),e.string({key:`antenna_interface`,label:`drone.drone_vtx.fields.antenna_interface`,rules:{max:40}}),e.int({key:`channel_count`,label:`drone.drone_vtx.fields.channel_count`,rules:{min:0}}),e.string({key:`mounting`,label:`drone.drone_vtx.fields.mounting`,rules:{max:80}}),e.boolean({key:`built_in_microphone`,label:`drone.drone_vtx.fields.built_in_microphone`}),e.json({key:`frequency_groups`,label:`drone.drone_vtx.fields.frequency_groups`}),e.json({key:`output_power_levels`,label:`drone.drone_vtx.fields.output_power_levels`}),e.text({key:`notes`,label:`drone.drone_vtx.fields.notes`,rules:{max:2e3}})]}),c=t({id:`drone_gps`,label:`drone.drone_gps.label`,icon:`lucide:satellite`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`,subtype:`gps`},claude:`FPV drone GPS module characteristics. gnss_chip — chipset. compass_chip — magnetometer. satellite_systems — supported satellite systems.`,fields:[e.string({key:`gnss_chip`,label:`drone.drone_gps.fields.gnss_chip`,rules:{max:80}}),e.string({key:`compass_chip`,label:`drone.drone_gps.fields.compass_chip`,rules:{max:60}}),e.boolean({key:`barometer`,label:`drone.drone_gps.fields.barometer`}),e.string({key:`interface`,label:`drone.drone_gps.fields.interface`,rules:{max:40}}),e.string({key:`input_voltage`,label:`drone.drone_gps.fields.input_voltage`,rules:{max:40}}),e.int({key:`update_rate_hz`,label:`drone.drone_gps.fields.update_rate_hz`,rules:{min:0}}),e.int({key:`receiving_channels`,label:`drone.drone_gps.fields.receiving_channels`,rules:{min:0}}),e.json({key:`supported_protocols`,label:`drone.drone_gps.fields.supported_protocols`}),e.json({key:`baud_rates`,label:`drone.drone_gps.fields.baud_rates`}),e.json({key:`satellite_systems`,label:`drone.drone_gps.fields.satellite_systems`}),e.text({key:`notes`,label:`drone.drone_gps.fields.notes`,rules:{max:2e3}})]}),l=t({id:`drone_flight_controller`,label:`drone.drone_flight_controller.label`,icon:`lucide:sliders-horizontal`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`,subtype:`flight_controller`},claude:`FPV drone flight controller characteristics. mcu — processor (STM32F411/F405). gyro — gyroscope. supported_firmware — compatible firmware (Betaflight, INAV).`,fields:[e.string({key:`mcu`,label:`drone.drone_flight_controller.fields.mcu`,rules:{max:60}}),e.string({key:`gyro`,label:`drone.drone_flight_controller.fields.gyro`,rules:{max:60}}),e.boolean({key:`barometer`,label:`drone.drone_flight_controller.fields.barometer`}),e.string({key:`osd_chip`,label:`drone.drone_flight_controller.fields.osd_chip`,rules:{max:40}}),e.string({key:`blackbox`,label:`drone.drone_flight_controller.fields.blackbox`,rules:{max:40}}),e.boolean({key:`bluetooth`,label:`drone.drone_flight_controller.fields.bluetooth`}),e.boolean({key:`wifi`,label:`drone.drone_flight_controller.fields.wifi`}),e.boolean({key:`current_sensor_input`,label:`drone.drone_flight_controller.fields.current_sensor_input`}),e.string({key:`power_input`,label:`drone.drone_flight_controller.fields.power_input`,rules:{max:40}}),e.string({key:`constant_current`,label:`drone.drone_flight_controller.fields.constant_current`,rules:{max:20}}),e.string({key:`peak_current`,label:`drone.drone_flight_controller.fields.peak_current`,rules:{max:20}}),e.string({key:`bec_5v`,label:`drone.drone_flight_controller.fields.bec_5v`,rules:{max:20}}),e.string({key:`bec_9v`,label:`drone.drone_flight_controller.fields.bec_9v`,rules:{max:20}}),e.string({key:`mounting`,label:`drone.drone_flight_controller.fields.mounting`,rules:{max:60}}),e.int({key:`uart_count`,label:`drone.drone_flight_controller.fields.uart_count`,rules:{min:0}}),e.json({key:`supported_firmware`,label:`drone.drone_flight_controller.fields.supported_firmware`}),e.string({key:`firmware_target`,label:`drone.drone_flight_controller.fields.firmware_target`,rules:{max:80}}),e.string({key:`build_role`,label:`drone.drone_flight_controller.fields.build_role`,rules:{max:200}}),e.text({key:`notes`,label:`drone.drone_flight_controller.fields.notes`,rules:{max:2e3}})]}),u=t({id:`drone_goggles`,label:`drone.drone_goggles.label`,icon:`lucide:glasses`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`,subtype:`goggles`},claude:`FPV goggles characteristics. display_size — display diagonal. frequency_bands — supported radio bands. battery_life — runtime on battery.`,fields:[e.string({key:`display_size`,label:`drone.drone_goggles.fields.display_size`,rules:{max:20}}),e.string({key:`display_resolution`,label:`drone.drone_goggles.fields.display_resolution`,rules:{max:40}}),e.string({key:`display_brightness`,label:`drone.drone_goggles.fields.display_brightness`,rules:{max:30}}),e.string({key:`view_angle`,label:`drone.drone_goggles.fields.view_angle`,rules:{max:20}}),e.string({key:`antenna`,label:`drone.drone_goggles.fields.antenna`,rules:{max:80}}),e.json({key:`frequency_bands`,label:`drone.drone_goggles.fields.frequency_bands`}),e.string({key:`battery`,label:`drone.drone_goggles.fields.battery`,rules:{max:60}}),e.string({key:`battery_life`,label:`drone.drone_goggles.fields.battery_life`,rules:{max:40}}),e.string({key:`charging`,label:`drone.drone_goggles.fields.charging`,rules:{max:60}}),e.json({key:`band_channels`,label:`drone.drone_goggles.fields.band_channels`}),e.text({key:`notes`,label:`drone.drone_goggles.fields.notes`,rules:{max:2e3}})]}),d=n({id:`drone`,version:`1.0.0`,dependsOn:[`things`],libraries:[{meta:r({id:`drone`,label:`drone.library.label`,icon:`tb:drone`,agent:`FPV drones and their components. Owns no table — the records are things/item rows with type=drone.`}),shelves:[]}],extends_:[a,o,s,c,l,u],showcases:[i({id:`fleet`,library:`drone`,label:`drone.fleet.label`,icon:`lucide:plane`,source:{library:`things`,shelf:`item`},filter:{type:`drone`},columns:[`subtype`,`brand`,`model`,`location`,`condition`],createDefaults:{type:`drone`}})],fieldContribs:[{library:`things`,shelf:`item`,field:`type`,options:[{value:`drone`,title:`drone.drone.label`}]},{library:`things`,shelf:`item`,field:`subtype`,options:[{value:`aircraft`,title:`drone.contrib.subtype.aircraft`,when:{type:`drone`}},{value:`battery`,title:`drone.drone_battery.label`,when:{type:`drone`}},{value:`vtx`,title:`drone.drone_vtx.label`,when:{type:`drone`}},{value:`gps`,title:`drone.drone_gps.label`,when:{type:`drone`}},{value:`flight_controller`,title:`drone.drone_flight_controller.label`,when:{type:`drone`}},{value:`goggles`,title:`drone.drone_goggles.label`,when:{type:`drone`}},{value:`radio`,title:`drone.contrib.subtype.radio`,when:{type:`drone`}},{value:`camera`,title:`drone.contrib.subtype.camera`,when:{type:`drone`}}]}]});export{d as default};
@@ -1 +0,0 @@
1
- import{i as e,r as t,s as n}from"./data-size-D-gMRpFc.js";import{a as r,i,n as a,o,r as s,s as c,t as l}from"./src-Cns9vFlU.js";export{s as cidr,t as dataSize,a as default,l as dev,e as diskSize,i as hostname,r as imei,o as ip,c as mac,n as ram};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/GeoMap-DOMXVIzU.js","assets/rolldown-runtime-QTnfLwEv.js","assets/i18n-vendor-T6EnJ_TL.js","assets/react-vendor-BskHO5hY.js","assets/GeoMap-vh-t_kPv.css"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{f as r,l as i,r as a,t as o}from"./react-vendor-BskHO5hY.js";import{r as s,t as c}from"./x-CzSVfh-E.js";import{s as l}from"./input-group-Cp9n2MAA.js";import{i as u,l as d}from"./Icon-DyZrCblq.js";import"./shared-CybDb-Q0.js";import{a as f,o as p}from"./chrome-DX8F_v18.js";import{r as m,s as h}from"./shelf-CdaVoMG2.js";import"./src-HtNjG36u.js";import{n as g}from"./plugin-ui-CKd6q8ec.js";import{t as _}from"./button-DaYjtbcx.js";import{t as v}from"./dispatch-Z_UJ7sOs.js";var y=s(`locate-fixed`,[[`line`,{x1:`2`,x2:`5`,y1:`12`,y2:`12`,key:`bvdh0s`}],[`line`,{x1:`19`,x2:`22`,y1:`12`,y2:`12`,key:`1tbv5k`}],[`line`,{x1:`12`,x2:`12`,y1:`2`,y2:`5`,key:`11lu5j`}],[`line`,{x1:`12`,x2:`12`,y1:`19`,y2:`22`,key:`x3vr5v`}],[`circle`,{cx:`12`,cy:`12`,r:`7`,key:`fim9np`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),b=e(t(),1);function x(e,t){return Math.floor((e+180)/360*2**t)}function S(e,t){let n=e*Math.PI/180;return Math.floor((1-Math.log(Math.tan(n)+1/Math.cos(n))/Math.PI)/2*2**t)}function C(e,t,n=13){return`https://tile.openstreetmap.org/${n}/${x(t,n)}/${S(e,n)}.png`}var w=o(),T=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-geo/src/geo-field.tsx`,E=(0,b.lazy)(()=>r(()=>import(`./GeoMap-DOMXVIzU.js`),__vite__mapDeps([0,1,2,3,4])));function D(e){if(e&&typeof e==`object`)return e;try{let t=JSON.parse(String(e??``));return t&&typeof t==`object`?t:{}}catch{return{}}}var O=e=>Number(e.toFixed(6)),k=e=>e.lat==null&&e.lng==null&&!e.label?``:e;function A({g:e,onOpen:t}){let{t:r}=n();return e.lat==null||e.lng==null?(0,w.jsxDEV)(`button`,{type:`button`,onClick:t,className:`flex h-24 w-full items-center justify-center gap-1.5 rounded-lg border border-dashed border-border text-sm text-muted hover:border-accent`,children:[(0,w.jsxDEV)(d,{size:16},void 0,!1,{fileName:T,lineNumber:35,columnNumber:9},this),` `,r(`geo.pick`)]},void 0,!0,{fileName:T,lineNumber:30,columnNumber:7},this):(0,w.jsxDEV)(`button`,{type:`button`,onClick:t,title:e.label??`${e.lat}, ${e.lng}`,className:`relative block h-24 w-full overflow-hidden rounded-lg border border-border hover:border-accent`,children:[(0,w.jsxDEV)(`img`,{src:C(e.lat,e.lng),alt:``,loading:`lazy`,className:`h-full w-full object-cover`},void 0,!1,{fileName:T,lineNumber:46,columnNumber:7},this),(0,w.jsxDEV)(d,{size:22,fill:`currentColor`,className:`pointer-events-none absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-full text-danger drop-shadow`},void 0,!1,{fileName:T,lineNumber:47,columnNumber:7},this)]},void 0,!0,{fileName:T,lineNumber:40,columnNumber:5},this)}function j({value:e,onChange:t,editable:r,onClose:i}){let{t:a}=n(),[o,s]=(0,b.useState)(()=>D(e)),[d,f]=(0,b.useState)(``),[p,m]=(0,b.useState)(!1),h=e=>s(e),g=e=>e===``?void 0:Number(e),v=(0,b.useRef)(o);v.current=o;let x=(0,b.useCallback)(()=>i(),[i]),S=(0,b.useCallback)(()=>{t?.(k(v.current)),i()},[t,i]);(0,b.useEffect)(()=>{let e=e=>{e.key===`Escape`&&x()};return document.addEventListener(`keydown`,e),document.body.style.overflow=`hidden`,()=>{document.removeEventListener(`keydown`,e),document.body.style.overflow=``}},[x]);function C(){navigator.geolocation&&navigator.geolocation.getCurrentPosition(e=>h({...o,lat:O(e.coords.latitude),lng:O(e.coords.longitude)}),()=>{},{enableHighAccuracy:!0})}async function A(){if(d.trim()){m(!0);try{let e=await(await fetch(`https://nominatim.openstreetmap.org/search?format=json&limit=1&q=${encodeURIComponent(d)}`)).json();Array.isArray(e)&&e[0]&&h({lat:O(+e[0].lat),lng:O(+e[0].lon),label:o.label||e[0].display_name})}catch{}m(!1)}}return(0,w.jsxDEV)(`div`,{className:`fixed inset-0 z-[100] flex items-center justify-center bg-black/85 p-4 backdrop-blur-sm`,onClick:x,children:(0,w.jsxDEV)(`div`,{className:`flex max-h-[92dvh] w-full max-w-3xl flex-col gap-2 rounded-xl bg-bg p-3`,onClick:e=>e.stopPropagation(),children:[(0,w.jsxDEV)(`div`,{className:`flex items-center gap-2`,children:[r&&(0,w.jsxDEV)(w.Fragment,{children:[(0,w.jsxDEV)(l,{placeholder:a(`geo.searchPlaceholder`),value:d,onChange:e=>f(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),A())},className:`flex-1`},void 0,!1,{fileName:T,lineNumber:133,columnNumber:15},this),(0,w.jsxDEV)(_,{type:`button`,variant:`secondary`,size:`icon`,disabled:p,onClick:A,title:a(`geo.search`),children:(0,w.jsxDEV)(u,{size:16},void 0,!1,{fileName:T,lineNumber:153,columnNumber:17},this)},void 0,!1,{fileName:T,lineNumber:145,columnNumber:15},this),(0,w.jsxDEV)(_,{type:`button`,variant:`secondary`,size:`icon`,onClick:C,title:a(`geo.myLocation`),children:(0,w.jsxDEV)(y,{size:16},void 0,!1,{fileName:T,lineNumber:156,columnNumber:17},this)},void 0,!1,{fileName:T,lineNumber:155,columnNumber:15},this)]},void 0,!0,{fileName:T,lineNumber:132,columnNumber:13},this),(0,w.jsxDEV)(_,{type:`button`,variant:`ghost`,size:`icon`,onClick:x,className:`ml-auto`,children:(0,w.jsxDEV)(c,{size:18},void 0,!1,{fileName:T,lineNumber:161,columnNumber:13},this)},void 0,!1,{fileName:T,lineNumber:160,columnNumber:11},this)]},void 0,!0,{fileName:T,lineNumber:130,columnNumber:9},this),(0,w.jsxDEV)(b.Suspense,{fallback:(0,w.jsxDEV)(`div`,{className:`h-[60dvh] rounded-lg border border-border bg-surface/40`},void 0,!1,{fileName:T,lineNumber:164,columnNumber:29},this),children:(0,w.jsxDEV)(`div`,{className:`[&>div]:h-[60dvh]`,children:(0,w.jsxDEV)(E,{lat:o.lat,lng:o.lng,interactive:r,onPick:r?(e,t)=>h({...o,lat:e,lng:t}):void 0},void 0,!1,{fileName:T,lineNumber:166,columnNumber:13},this)},void 0,!1,{fileName:T,lineNumber:165,columnNumber:11},this)},void 0,!1,{fileName:T,lineNumber:164,columnNumber:9},this),r?(0,w.jsxDEV)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center`,children:[(0,w.jsxDEV)(`div`,{className:`grid flex-1 grid-cols-1 gap-2 sm:grid-cols-[7rem_7rem_1fr]`,children:[(0,w.jsxDEV)(l,{type:`number`,step:`any`,placeholder:`lat`,value:o.lat??``,onChange:e=>h({...o,lat:g(e.target.value)})},void 0,!1,{fileName:T,lineNumber:178,columnNumber:15},this),(0,w.jsxDEV)(l,{type:`number`,step:`any`,placeholder:`lng`,value:o.lng??``,onChange:e=>h({...o,lng:g(e.target.value)})},void 0,!1,{fileName:T,lineNumber:185,columnNumber:15},this),(0,w.jsxDEV)(l,{placeholder:a(`geo.label`),value:o.label??``,onChange:e=>h({...o,label:e.target.value||void 0})},void 0,!1,{fileName:T,lineNumber:192,columnNumber:15},this)]},void 0,!0,{fileName:T,lineNumber:177,columnNumber:13},this),(0,w.jsxDEV)(_,{type:`button`,onClick:S,className:`sm:self-auto`,children:a(`actions.save`)},void 0,!1,{fileName:T,lineNumber:198,columnNumber:13},this)]},void 0,!0,{fileName:T,lineNumber:175,columnNumber:11},this):o.lat!=null&&o.lng!=null&&(0,w.jsxDEV)(`a`,{className:`text-sm text-accent hover:underline`,target:`_blank`,rel:`noreferrer`,href:`https://www.openstreetmap.org/?mlat=${o.lat}&mlon=${o.lng}#map=15/${o.lat}/${o.lng}`,children:o.label??`${o.lat.toFixed(5)}, ${o.lng?.toFixed(5)}`},void 0,!1,{fileName:T,lineNumber:205,columnNumber:13},this)]},void 0,!0,{fileName:T,lineNumber:126,columnNumber:7},this)},void 0,!1,{fileName:T,lineNumber:122,columnNumber:5},this)}function M({value:e,onChange:t,editable:n}){let r=(0,b.useMemo)(()=>D(e),[e]),[i,a]=(0,b.useState)(!1);return(0,w.jsxDEV)(`div`,{className:`flex flex-col gap-1`,children:[(0,w.jsxDEV)(A,{g:r,onOpen:()=>a(!0)},void 0,!1,{fileName:T,lineNumber:233,columnNumber:7},this),r.label&&(0,w.jsxDEV)(`span`,{className:`truncate text-xs text-muted`,children:r.label},void 0,!1,{fileName:T,lineNumber:234,columnNumber:19},this),i&&(0,w.jsxDEV)(j,{value:e,onChange:t,editable:n,onClose:()=>a(!1)},void 0,!1,{fileName:T,lineNumber:235,columnNumber:16},this)]},void 0,!0,{fileName:T,lineNumber:232,columnNumber:5},this)}function N(e){let t=!!e.onChange&&!(e.field.hints.noEditControl===!0&&e.mode===`view`),n=(0,w.jsxDEV)(M,{value:e.value,onChange:t=>e.onChange?.(t),editable:t},void 0,!1,{fileName:T,lineNumber:242,columnNumber:16},this);return e.bare?n:(0,w.jsxDEV)(`div`,{className:`group/field w-56`,children:[e.label!==void 0&&(0,w.jsxDEV)(p,{label:e.label,required:e.required},void 0,!1,{fileName:T,lineNumber:246,columnNumber:33},this),n,(0,w.jsxDEV)(f,{error:e.error},void 0,!1,{fileName:T,lineNumber:248,columnNumber:7},this)]},void 0,!0,{fileName:T,lineNumber:245,columnNumber:5},this)}function P({value:e}){let t=D(e);return(0,w.jsxDEV)(`span`,{className:`truncate`,children:t.label??(t.lat==null?`—`:`${t.lat.toFixed(3)}, ${t.lng?.toFixed(3)}`)},void 0,!1,{fileName:T,lineNumber:256,columnNumber:5},this)}var F={kinds:[`geo`],Page:N,Inline:P};function I(e,t){let n=h(e.fields);return t.filter(e=>n[e]?.kind===`geo`)}function L(e,t){let n=I(e,t);return n.length===1?n[0]:null}function R(e,t){let n=h(e.fields),r=t[0];if(!r||!n[r])return`views.list: shelf has no text field for its title (titleKey fell back to "id")`;let i=I(e,t);return i.length===0?`views.list does not contain a kind:"geo" field`:i.length>1?`views.list contains multiple geo fields: ${i.join(`, `)}`:null}var z=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-geo/src/map-view.tsx`,B=(0,b.lazy)(()=>r(()=>import(`./GeoMap-DOMXVIzU.js`).then(e=>({default:e.MarkersMap})),__vite__mapDeps([0,1,2,3,4])));function V({rows:e,shelf:t,keys:r,hrefBase:o}){let{t:s}=n(),c=i(),[l,u]=(0,b.useState)(!1),d=h(t.fields),f=L(t,r),p=r[0],{points:g,without:_}=(0,b.useMemo)(()=>{let t=[],n=[];for(let r of e){let e=f?m(d[f],f,r):void 0;e&&typeof e.lat==`number`&&typeof e.lng==`number`?t.push({id:String(r.id),lat:e.lat,lng:e.lng,title:String(m(d[p],p,r)??r.id)}):n.push(r)}return{points:t,without:n}},[e,f,p,d]);return(0,w.jsxDEV)(`div`,{className:`p-4`,children:[(0,w.jsxDEV)(b.Suspense,{fallback:(0,w.jsxDEV)(`div`,{className:`h-64 rounded-lg border border-border`},void 0,!1,{fileName:z,lineNumber:48,columnNumber:27},this),children:(0,w.jsxDEV)(B,{points:g,onPick:e=>c(`${o}/${e}`)},void 0,!1,{fileName:z,lineNumber:49,columnNumber:9},this)},void 0,!1,{fileName:z,lineNumber:48,columnNumber:7},this),_.length>0&&(0,w.jsxDEV)(`div`,{className:`mt-3`,children:[(0,w.jsxDEV)(`button`,{type:`button`,onClick:()=>u(e=>!e),className:`text-sm text-muted hover:text-text transition-colors`,children:s(`geo.withoutCoords`,{count:_.length})},void 0,!1,{fileName:z,lineNumber:53,columnNumber:11},this),l&&(0,w.jsxDEV)(`ul`,{className:`mt-2 flex flex-col gap-1`,children:_.map(e=>(0,w.jsxDEV)(`li`,{children:(0,w.jsxDEV)(a,{to:`${o}/${e.id}`,className:`text-sm text-text hover:text-accent`,children:(0,w.jsxDEV)(v,{field:d[p],value:m(d[p],p,e)},void 0,!1,{fileName:z,lineNumber:65,columnNumber:21},this)},void 0,!1,{fileName:z,lineNumber:64,columnNumber:19},this)},String(e.id),!1,{fileName:z,lineNumber:63,columnNumber:17},this))},void 0,!1,{fileName:z,lineNumber:61,columnNumber:13},this)]},void 0,!0,{fileName:z,lineNumber:52,columnNumber:9},this)]},void 0,!0,{fileName:z,lineNumber:47,columnNumber:5},this)}var H=g({renderers:[F],listViews:[{kind:`map`,View:V,check:R}],translations:{uk:{geo:{searchPlaceholder:`Пошук адреси…`,search:`Знайти`,myLocation:`Моє місцеположення`,label:`Підпис`,pick:`Обрати місце`,withoutCoords:`Без координат: {{count}}`}},ru:{geo:{searchPlaceholder:`Поиск адреса…`,search:`Найти`,myLocation:`Моё местоположение`,label:`Подпись`,pick:`Выбрать место`,withoutCoords:`Без координат: {{count}}`}},en:{geo:{searchPlaceholder:`Search address…`,search:`Search`,myLocation:`My location`,label:`Label`,pick:`Pick location`,withoutCoords:`Without coordinates: {{count}}`}}}});export{H as default};