@coffer-org/web 5.0.0 → 7.0.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.
- package/dist/assets/ChatWidget-YZqj6v6F.js +31 -0
- package/dist/assets/{DiagnosticsPage-D_AO8VVI.js → DiagnosticsPage-C_lLM_Hw.js} +1 -1
- package/dist/assets/{NewRecordView-DUZMiN50.js → NewRecordView-CC_fERty.js} +1 -1
- package/dist/assets/{PluginSettingsPage-OR2USDcf.js → PluginSettingsPage-BkMqmqxo.js} +1 -1
- package/dist/assets/ScanSummary-xKGEaOS0.js +1 -0
- package/dist/assets/{SettingsForm-BZrcG7PG.js → SettingsForm-DW1KCYe4.js} +1 -1
- package/dist/assets/SettingsPage-DuP06DkM.js +3 -0
- package/dist/assets/{ThemeSwitcher-CCakzR9t.js → ThemeSwitcher-CR6oJXQD.js} +1 -1
- package/dist/assets/{data-size-BzMyF1we.js → data-size-oPRYOwnj.js} +1 -1
- package/dist/assets/{extend-u4UeeES5.js → extend-BTkr7oJ8.js} +1 -1
- package/dist/assets/{fields-DMchbbOm.js → fields-BtCN_frr.js} +1 -1
- package/dist/assets/index-i___vlpd.css +2 -0
- package/dist/assets/index-zcINFUZQ.js +28 -0
- package/dist/assets/{list-cache-DpFBka0W.js → list-cache-D-BfHI9X.js} +1 -1
- package/dist/assets/settings-BfEurOH1.js +1 -0
- package/dist/assets/{shelf-DmAuGkTS.js → shelf-CRUDKiTz.js} +1 -1
- package/dist/assets/{showcase-DwzheZMA.js → showcase-Boajqdx8.js} +1 -1
- package/dist/assets/src-6lNAeDcP.js +1 -0
- package/dist/assets/{src-vXu15Im-.js → src-B3nX_MMy.js} +1 -1
- package/dist/assets/{src-Ci3LBUkd.js → src-BDmFR0_v.js} +2 -2
- package/dist/assets/{src-B-LFXYq3.js → src-BJF2nMuG.js} +2 -2
- package/dist/assets/src-BRzAjJX_.js +6 -0
- package/dist/assets/{src-Cmv7hauh.js → src-BiJuengh.js} +1 -1
- package/dist/assets/{src-Celn4l3M2.js → src-BinvE9sd2.js} +1 -1
- package/dist/assets/src-BqhS-0sX.js +1 -0
- package/dist/assets/src-Br4oAdCy.js +1 -0
- package/dist/assets/src-BxLhm2cd.js +4 -0
- package/dist/assets/{src-CLp6CaAC.js → src-C-Xmuyui.js} +1 -1
- package/dist/assets/src-C2zqLDpV.js +1 -0
- package/dist/assets/src-C9WAFG8V.js +4 -0
- package/dist/assets/{src-aKeR5FZD.js → src-CFcpeTQ5.js} +1 -1
- package/dist/assets/src-CYiAjCO3.js +1 -0
- package/dist/assets/src-Cr_oHzOc.js +1 -0
- package/dist/assets/src-CzmJIKcf.js +1 -0
- package/dist/assets/{src-BgUirxhE.js → src-D2hi5jAO.js} +1 -1
- package/dist/assets/{src-Bay9M7eI.js → src-DB2N_cct.js} +5 -5
- package/dist/assets/{src-M--RK4iO.js → src-DWgNUcSX2.js} +1 -1
- package/dist/assets/{src-DSS8nZOn2.js → src-DpPV1q-1.js} +1 -1
- package/dist/assets/{src-CcepgUty.js → src-DwXka-KQ.js} +1 -1
- package/dist/assets/{src-BD5Jx1R6.js → src-Ys25cnOv.js} +1 -1
- package/dist/assets/{ui-hoL_b3fm.js → ui-A-A-cO8j2.js} +2 -2
- package/dist/assets/ui-CAxfAaN9.js +2 -0
- package/dist/assets/{ui-BgMkXxiS.js → ui-D7QZRcxZ.js} +2 -2
- package/dist/index.html +9 -9
- package/dist-vendor/web-ui.js +7635 -7391
- package/package.json +1 -1
- package/dist/assets/ChatWidget-BLbWUv1t.js +0 -31
- package/dist/assets/NoMac-BazkVXEy.js +0 -1
- package/dist/assets/ScanSummary-B8hGwTtd.js +0 -1
- package/dist/assets/SettingsPage-wZH0coJv.js +0 -3
- package/dist/assets/index-B5P0VtoK.css +0 -2
- package/dist/assets/index-DSKrqebU.js +0 -28
- package/dist/assets/settings-mXXsgRiF.js +0 -1
- package/dist/assets/src-B3cKJlPg.js +0 -6
- package/dist/assets/src-B5S006_b.js +0 -1
- package/dist/assets/src-Bal28z0o.js +0 -1
- package/dist/assets/src-Bayfjx1G.js +0 -1
- package/dist/assets/src-BbLDg7Jt.js +0 -1
- package/dist/assets/src-CNJybBpP.js +0 -4
- package/dist/assets/src-Cqe2vlJJ.js +0 -1
- package/dist/assets/src-Dz7A3kLJ.js +0 -4
- package/dist/assets/src-lX-LLjmo.js +0 -1
- package/dist/assets/src-ziyxxA8g.js +0 -1
- package/dist/assets/ui-DtrkuhyS.js +0 -2
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as e}from"./fields-DMchbbOm.js";function t(t){return e(t)}export{t};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./fields-DMchbbOm.js";import{s as n}from"./shelf-DmAuGkTS.js";import{n as r,r as i}from"./plugin-CFEkHH3f.js";var a=n({shelf:`item`,library:`things`,label:`things.item.label`,icon:`lucide:package`,claude:`A physical item. name — the title. type — an optional FAMILY classifier (extends can add types, e.g. device). subtype — an optional LEAF within that family (e.g. type=device, subtype=vtx for a video transmitter); an empty subtype is a valid state. Nothing validates that the pair is coherent, so when you set one, set the other consistently with it. store — a relation to things/store; store_legacy is hidden pre-migration free text kept only as a one-release rollback safety net, never write to it.`,views:{list:[`type`,`subtype`,`brand`,`model`,`location`],groupBy:[`type`,`subtype`,`paymentStatus`,`condition`,`owner`,`location`,`store`,`madeIn`]},fields:{name:e.title({label:`core.fields.name`}),about:e.illustrated({label:`things.item.fields.about`,fields:{image:e.avatar({ui:{role:`avatar`}}),text:e.text({rules:{max:1e3}})}}),properties:e.properties({columns:4,fields:{type:e.string({label:`core.fields.type`,options:[{value:`clothing`,title:`things.item.options.type.clothing`},{value:`bag`,title:`things.item.options.type.bag`},{value:`cable`,title:`things.item.options.type.cable`},{value:`tool`,title:`things.item.options.type.tool`},{value:`furniture`,title:`things.item.options.type.furniture`},{value:`appliance`,title:`things.item.options.type.appliance`},{value:`household`,title:`things.item.options.type.household`},{value:`consumable`,title:`things.item.options.type.consumable`},{value:`personal_care`,title:`things.item.options.type.personal_care`},{value:`sports`,title:`things.item.options.type.sports`},{value:`hobby`,title:`things.item.options.type.hobby`},{value:`hardware`,title:`things.item.options.type.hardware`},{value:`decor`,title:`things.item.options.type.decor`},{value:`stationery`,title:`things.item.options.type.stationery`},{value:`other`,title:`things.item.options.type.other`}],strict:!0,noSearch:!0,ui:{span:3}}),subtype:e.string({label:`core.fields.subtype`,options:[],strict:!0,noSearch:!0,ui:{span:3}}),status:e.status({source:{condition:e.string({label:`things.item.fields.condition`,strict:!0,noSearch:!0,ui:{span:3},options:[{value:`new`,title:`things.item.options.condition.new`},{value:`good`,title:`things.item.options.condition.good`},{value:`fair`,title:`things.item.options.condition.fair`},{value:`poor`,title:`things.item.options.condition.poor`}]})}}),quantity:e.int({label:`things.item.fields.quantity`,rules:{min:0},ui:{span:3}}),owner:e.relation({label:`things.item.fields.owner`,options:t({library:`people`,shelf:`person`}),ui:{span:3}}),location:e.relation({label:`things.item.fields.location`,options:t({library:`things`,shelf:`storage_location`}),ui:{span:3}}),brand:e.string({label:`things.item.fields.brand`,rules:{max:100},ui:{span:3}}),model:e.string({label:`things.item.fields.model`,rules:{max:100},ui:{span:3}})}}),countdown:e.countdown({source:{warrantyExpires:e.reminder({label:`things.item.fields.warrantyExpires`,rules:{lead:30}})}}),group:e.group({label:`things.item.groups.specs`,icon:`lucide:ruler`,scope:`hoist`,fields:{serialNumber:e.string({label:`things.item.fields.serialNumber`,rules:{max:80},ui:{span:4}}),weight:e.weight({label:`things.item.fields.weight`,ui:{span:4}}),dimensions:e.dimensions({label:`things.item.fields.dimensions`,ui:{span:4}}),color:e.string({label:`things.item.fields.color`,rules:{max:120},ui:{span:4}}),material:e.string({label:`things.item.fields.material`,rules:{max:80},ui:{span:4}}),madeIn:e.country({label:`things.item.fields.madeIn`,ui:{span:4}})}}),group2:e.group({label:`things.item.groups.purchase`,icon:`lucide:shopping-cart`,scope:`hoist`,fields:{purchaseDate:e.date({label:`things.item.fields.purchaseDate`,ui:{span:4}}),purchasePrice:e.money({label:`things.item.fields.purchasePrice`,ui:{span:2}}),currency:e.currency({label:`core.fields.currency`,default:`UAH`,ui:{span:2}}),paymentStatus:e.string({label:`things.item.fields.paymentStatus`,strict:!0,noSearch:!0,ui:{span:4},options:[{value:`bought`,title:`things.item.options.paymentStatus.bought`},{value:`installment`,title:`things.item.options.paymentStatus.installment`},{value:`credit`,title:`things.item.options.paymentStatus.credit`}]}),store:e.relation({label:`things.item.fields.store`,options:t({library:`things`,shelf:`store`}),ui:{span:6}}),store_legacy:e.string({label:`things.item.fields.store_legacy`,ui:{hidden:!0},rules:{max:100}}),orderNumber:e.string({label:`things.item.fields.orderNumber`,rules:{max:100},ui:{span:6}}),link:e.link({label:`things.item.fields.link`,ui:{span:12}}),receipt:e.image({label:`things.item.fields.receipt`})}}),group3:e.group({label:`things.item.groups.media`,icon:`lucide:images`,scope:`hoist`,fields:{manual:e.document({label:`things.item.fields.manual`,ui:{span:6}}),photos:e.image({label:`things.item.fields.photos`,multiple:!0})}}),tags:e.tags({label:`things.item.fields.tags`}),notes:e.text({label:`things.item.fields.notes`,rules:{max:2e3}})}}),o=n({shelf:`storage_location`,library:`things`,label:`things.storage_location.label`,icon:`lucide:map-pin`,claude:`A storage location for items. name — what we call the place. path — hierarchy levels in order (room, furniture, shelf, container), free-form.`,views:{list:[`path`]},fields:{name:e.title({label:`core.fields.name`,required:!0}),description:e.text({label:`things.storage_location.fields.description`,rules:{max:1e3}}),path:e.string({label:`things.storage_location.fields.path`,multiple:!0,rules:{max:120}}),notes:e.text({label:`things.storage_location.fields.notes`,rules:{max:2e3}})}}),s=n({shelf:`store`,library:`things`,label:`things.store.label`,icon:`lucide:store`,claude:`A shop, marketplace or seller a thing was bought from; things/item.store points here.
|
|
2
|
-
scripts — a collection of page-extraction scripts for this shop. Each row's script field is
|
|
3
|
-
plain JavaScript text, readable in one record read, and is written by uploading a file or
|
|
4
|
-
through the API — never hand-edited in the web form. urlPattern is a human hint about which
|
|
5
|
-
pages a script applies to; nothing matches against it automatically. account holds a login or
|
|
6
|
-
a loyalty-card number and is stored in the clear — never write a password there.`,views:{list:[`type`,`country`,`status`,`rating`],inline:[`logo`,`name`],groupBy:[`type`,`status`,`country`]},fields:{name:e.title({label:`core.fields.name`}),logo:e.avatar({label:`things.store.fields.logo`,ui:{role:`avatar`}}),description:e.text({label:`things.store.fields.description`,rules:{max:1e3}}),group:e.group({label:`things.store.groups.place`,icon:`lucide:map-pin`,scope:`hoist`,fields:{address:e.string({label:`things.store.fields.address`,rules:{max:200},ui:{span:6}}),geo:e.geo({label:`things.store.fields.geo`,ui:{span:6}}),hours:e.keyed({label:`things.store.fields.hours`,fields:{day:e.string({label:`core.fields.weekday`,options:`weekdays`,strict:!0,noSearch:!0}),open:e.time({label:`things.store.fields.open`}),close:e.time({label:`things.store.fields.close`})},by:`day`,unique:[`day`]})}}),links:e.group({scope:`nest`,label:`things.store.groups.links`,icon:`lucide:link`,multiple:!0,fields:{kind:e.string({label:`things.store.fields.linkKind`,options:[{value:`site`,title:`things.store.options.linkKind.site`},{value:`account`,title:`things.store.options.linkKind.account`},{value:`orders`,title:`things.store.options.linkKind.orders`},{value:`support`,title:`things.store.options.linkKind.support`},{value:`other`,title:`things.store.options.linkKind.other`}],strict:!0,noSearch:!0}),url:e.link({label:`things.store.fields.url`,required:!0})}}),account:e.string({label:`things.store.fields.account`,rules:{max:100}}),scripts:e.group({scope:`nest`,label:`things.store.groups.scripts`,icon:`lucide:code`,multiple:!0,fields:{title:e.string({label:`things.store.fields.scriptTitle`,required:!0,rules:{max:100}}),kind:e.string({label:`things.store.fields.scriptKind`,options:[{value:`product`,title:`things.store.options.scriptKind.product`},{value:`orders`,title:`things.store.options.scriptKind.orders`},{value:`receipt`,title:`things.store.options.scriptKind.receipt`},{value:`search`,title:`things.store.options.scriptKind.search`},{value:`other`,title:`things.store.options.scriptKind.other`}],strict:!0,noSearch:!0}),urlPattern:e.string({label:`things.store.fields.urlPattern`,rules:{max:200}}),script:e.source({label:`things.store.fields.script`,rules:{ext:`js`}}),note:e.text({label:`things.store.fields.scriptNote`,rules:{max:500}})}}),photos:e.image({label:`things.store.fields.photos`,multiple:!0}),properties:e.properties({columns:4,fields:{type:e.string({label:`core.fields.type`,options:[{value:`marketplace`,title:`things.store.options.type.marketplace`},{value:`online_store`,title:`things.store.options.type.online_store`},{value:`retail`,title:`things.store.options.type.retail`},{value:`secondhand`,title:`things.store.options.type.secondhand`},{value:`manufacturer`,title:`things.store.options.type.manufacturer`}],strict:!0,noSearch:!0,ui:{span:3}}),country:e.country({label:`things.store.fields.country`,ui:{span:3}}),rating:e.rating({label:`things.store.fields.rating`,ui:{span:3}}),status:e.string({label:`things.store.fields.status`,options:[{value:`active`,title:`things.store.options.status.active`},{value:`rare`,title:`things.store.options.status.rare`},{value:`abandoned`,title:`things.store.options.status.abandoned`}],strict:!0,noSearch:!0,ui:{span:3}})}}),tags:e.tags({label:`things.store.fields.tags`}),notes:e.text({label:`things.store.fields.notes`,rules:{max:2e3}})}}),c=r({id:`things`,version:`1.0.0`,dependsOn:[`people`],libraries:[{meta:i({id:`things`,label:`things.library.label`,icon:`lucide:package`,agent:`Belongings and where they are stored (item, storage_location, store). Also hosts network hosts (device_info) and drone builds.`,starterHint:`what's about to warranty-expire`}),shelves:[a,o,s]}]});export{c as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./fields-DMchbbOm.js";import{t as n}from"./extend-u4UeeES5.js";import{n as r,r as i}from"./plugin-CFEkHH3f.js";import{t as a}from"./showcase-DwzheZMA.js";var o=n({id:`drone`,label:`drone.drone.label`,icon:`tb:drone`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`,subtype:{$in:[`aircraft`,`rtf`]}},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. A drone whose parts cannot be separate records is subtype='rtf' instead, and carries the component extends directly.`,fields:{bento:e.bento({fields:{group:{span:`2x1`,el:e.group({scope:`hoist`,fields:{motors:e.string({label:`drone.drone.fields.motors`,rules:{max:150}}),props:e.string({label:`drone.drone.fields.props`,rules:{max:80}}),camera:e.relation({label:`drone.drone.fields.camera`,options:t({library:`things`,shelf:`item`,filter:{type:`drone`,subtype:`camera`}})})}})},group2:e.group({scope:`hoist`,fields:{power_module:e.string({label:`drone.drone.fields.power_module`,rules:{max:60}}),vtx:e.relation({label:`drone.drone.fields.vtx`,options:t({library:`things`,shelf:`item`,filter:{type:`drone`,subtype:`vtx`}})})}}),group3:e.group({scope:`hoist`,fields:{flight_time:e.string({label:`drone.drone.fields.flight_time`,rules:{max:60}}),firmware:e.string({label:`drone.drone.fields.firmware`,options:`drone-firmware`,strict:!0,noSearch:!0}),firmware_version:e.string({label:`drone.drone.fields.firmware_version`,rules:{max:40}}),firmware_target:e.string({label:`drone.drone.fields.firmware_target`,rules:{max:80}})}}),group4:e.group({scope:`hoist`,fields:{frame_size:e.string({label:`drone.drone.fields.frame_size`,rules:{max:40}}),purpose:e.string({label:`drone.drone.fields.purpose`,rules:{max:200}})}}),group5:e.group({scope:`hoist`,fields:{flight_controller:e.relation({label:`drone.drone.fields.flight_controller`,options:t({library:`things`,shelf:`item`,filter:{type:`drone`,subtype:`flight_controller`}})}),gps_module:e.relation({label:`drone.drone.fields.gps_module`,options:t({library:`things`,shelf:`item`,filter:{type:`drone`,subtype:`gps`}})})}}),group6:e.group({scope:`hoist`,fields:{radio_link:e.string({label:`drone.drone.fields.radio_link`,options:`drone-radio-links`,multiple:!0,strict:!0,noSearch:!0}),receiver:e.string({label:`drone.drone.fields.receiver`,rules:{max:80}}),video_system:e.string({label:`drone.drone.fields.video_system`,options:`drone-video-systems`,strict:!0,noSearch:!0})}})}}),snippets:e.group({scope:`nest`,label:`drone.drone.groups.snippets`,icon:`lucide:terminal`,multiple:!0,fields:{title:e.string({label:`drone.drone.fields.snippet_title`,required:!0,rules:{max:100}}),summary:e.text({label:`drone.drone.fields.snippet_summary`,rules:{max:500}}),snippet:e.source({label:`drone.drone.fields.snippet`,rules:{ext:`md`}})}}),notes:e.text({label:`drone.drone.fields.notes`,rules:{max:2e3}})}}),s=n({id:`drone_battery`,label:`drone.drone_battery.label`,icon:`lucide:battery-full`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`,subtype:{$in:[`battery`,`rtf`]}},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:{charger:e.string({label:`drone.drone_battery.fields.charger`,rules:{max:100}}),cells:e.string({label:`drone.drone_battery.fields.cells`,options:`drone-cells`,strict:!0,noSearch:!0}),capacity:e.measured({label:`drone.drone_battery.fields.capacity`,units:`energy`}),c_rate:e.string({label:`drone.drone_battery.fields.c_rate`,rules:{max:20}}),auw:e.string({label:`drone.drone_battery.fields.auw`,rules:{max:40}}),notes:e.text({label:`drone.drone_battery.fields.notes`,rules:{max:2e3}})}}),c=n({id:`drone_vtx`,label:`drone.drone_vtx.label`,icon:`lucide:radio-tower`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`,subtype:{$in:[`vtx`,`rtf`]}},claude:`FPV video transmitter characteristics. input_voltage — input voltage. protocol — control protocols, codes from the drone-vtx-protocols list. frequency_groups — Betaflight band letters. channel_count — number of channels.`,fields:{input_voltage:e.string({label:`drone.drone_vtx.fields.input_voltage`,rules:{max:40}}),protocol:e.string({label:`drone.drone_vtx.fields.protocol`,options:`drone-vtx-protocols`,multiple:!0,strict:!0,noSearch:!0}),antenna_interface:e.string({label:`drone.drone_vtx.fields.antenna_interface`,options:`drone-rf-connectors`,strict:!0,noSearch:!0}),channel_count:e.int({label:`drone.drone_vtx.fields.channel_count`,rules:{min:0}}),mounting:e.string({label:`drone.drone_vtx.fields.mounting`,options:`drone-mounting`,multiple:!0,strict:!0,noSearch:!0}),built_in_microphone:e.boolean({label:`drone.drone_vtx.fields.built_in_microphone`}),frequency_groups:e.string({label:`drone.drone_vtx.fields.frequency_groups`,options:`drone-bands`,multiple:!0,strict:!0,noSearch:!0}),power_levels:e.keyed({label:`drone.drone_vtx.groups.power_levels`,icon:`lucide:zap`,container:e.row,fields:{level:e.string({label:`drone.drone_vtx.fields.power_level`,options:`drone-vtx-power`,strict:!0,noSearch:!0}),current_ma:e.int({label:`drone.drone_vtx.fields.current_ma`,rules:{min:0}}),dbm:e.real({label:`drone.drone_vtx.fields.dbm`})},by:`level`}),notes:e.text({label:`drone.drone_vtx.fields.notes`,rules:{max:2e3}})}}),l=n({id:`drone_gps`,label:`drone.drone_gps.label`,icon:`lucide:satellite`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`,subtype:{$in:[`gps`,`rtf`]}},claude:`FPV drone GPS module characteristics. gnss_chip — chipset. compass_chip — magnetometer. satellite_systems — supported satellite systems.`,fields:{gnss_chip:e.string({label:`drone.drone_gps.fields.gnss_chip`,rules:{max:80}}),compass_chip:e.string({label:`drone.drone_gps.fields.compass_chip`,rules:{max:60}}),barometer:e.boolean({label:`drone.drone_gps.fields.barometer`}),interface:e.string({label:`drone.drone_gps.fields.interface`,options:`drone-serial-interfaces`,multiple:!0,strict:!0,noSearch:!0}),input_voltage:e.string({label:`drone.drone_gps.fields.input_voltage`,rules:{max:40}}),update_rate_hz:e.int({label:`drone.drone_gps.fields.update_rate_hz`,rules:{min:0}}),receiving_channels:e.int({label:`drone.drone_gps.fields.receiving_channels`,rules:{min:0}}),supported_protocols:e.string({label:`drone.drone_gps.fields.supported_protocols`,options:`drone-gnss-protocols`,multiple:!0,strict:!0,noSearch:!0}),baud_rates:e.string({label:`drone.drone_gps.fields.baud_rates`,options:`drone-baud-rates`,multiple:!0,strict:!0,noSearch:!0}),satellite_systems:e.string({label:`drone.drone_gps.fields.satellite_systems`,options:`drone-gnss-systems`,multiple:!0,strict:!0,noSearch:!0}),notes:e.text({label:`drone.drone_gps.fields.notes`,rules:{max:2e3}})}}),u=n({id:`drone_flight_controller`,label:`drone.drone_flight_controller.label`,icon:`lucide:sliders-horizontal`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`,subtype:{$in:[`flight_controller`,`rtf`]}},claude:`FPV drone flight controller characteristics. mcu — processor (STM32F411/F405). gyro — gyroscope. supported_firmware — compatible firmware (Betaflight, INAV).`,fields:{mcu:e.string({label:`drone.drone_flight_controller.fields.mcu`,options:`drone-fc-mcu`,strict:!0,noSearch:!0}),gyro:e.string({label:`drone.drone_flight_controller.fields.gyro`,options:`drone-gyro`,multiple:!0,strict:!0,noSearch:!0}),barometer:e.boolean({label:`drone.drone_flight_controller.fields.barometer`}),osd_chip:e.string({label:`drone.drone_flight_controller.fields.osd_chip`,options:`drone-osd-chip`,strict:!0,noSearch:!0}),blackbox:e.string({label:`drone.drone_flight_controller.fields.blackbox`,options:`drone-blackbox`,strict:!0,noSearch:!0}),bluetooth:e.boolean({label:`drone.drone_flight_controller.fields.bluetooth`}),wifi:e.boolean({label:`drone.drone_flight_controller.fields.wifi`}),current_sensor_input:e.boolean({label:`drone.drone_flight_controller.fields.current_sensor_input`}),power_input:e.string({label:`drone.drone_flight_controller.fields.power_input`,rules:{max:40}}),constant_current:e.string({label:`drone.drone_flight_controller.fields.constant_current`,rules:{max:20}}),peak_current:e.string({label:`drone.drone_flight_controller.fields.peak_current`,rules:{max:20}}),bec_5v:e.string({label:`drone.drone_flight_controller.fields.bec_5v`,rules:{max:20}}),bec_9v:e.string({label:`drone.drone_flight_controller.fields.bec_9v`,rules:{max:20}}),mounting:e.string({label:`drone.drone_flight_controller.fields.mounting`,options:`drone-mounting`,multiple:!0,strict:!0,noSearch:!0}),uart_count:e.int({label:`drone.drone_flight_controller.fields.uart_count`,rules:{min:0}}),supported_firmware:e.string({label:`drone.drone_flight_controller.fields.supported_firmware`,options:`drone-firmware`,multiple:!0,strict:!0,noSearch:!0}),firmware_target:e.string({label:`drone.drone_flight_controller.fields.firmware_target`,rules:{max:80}}),build_role:e.string({label:`drone.drone_flight_controller.fields.build_role`,rules:{max:200}}),notes:e.text({label:`drone.drone_flight_controller.fields.notes`,rules:{max:2e3}})}}),d=n({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:{display_size:e.string({label:`drone.drone_goggles.fields.display_size`,rules:{max:20}}),display_resolution:e.string({label:`drone.drone_goggles.fields.display_resolution`,rules:{max:40}}),display_brightness:e.string({label:`drone.drone_goggles.fields.display_brightness`,rules:{max:30}}),view_angle:e.string({label:`drone.drone_goggles.fields.view_angle`,rules:{max:20}}),antenna:e.string({label:`drone.drone_goggles.fields.antenna`,rules:{max:80}}),frequency_bands:e.string({label:`drone.drone_goggles.fields.frequency_bands`,options:`drone-bands`,multiple:!0,strict:!0,noSearch:!0}),battery:e.string({label:`drone.drone_goggles.fields.battery`,rules:{max:60}}),battery_life:e.string({label:`drone.drone_goggles.fields.battery_life`,rules:{max:40}}),charging:e.string({label:`drone.drone_goggles.fields.charging`,rules:{max:60}}),band_channels:e.keyed({label:`drone.drone_goggles.groups.band_channels`,icon:`lucide:radio`,container:e.row,fields:{band:e.string({label:`drone.drone_goggles.fields.band`,options:`drone-bands`,strict:!0,noSearch:!0}),channels:e.int({label:`drone.drone_goggles.fields.channels`,multiple:!0})},by:`band`}),notes:e.text({label:`drone.drone_goggles.fields.notes`,rules:{max:2e3}})}}),f=n({id:`drone_antenna`,label:`drone.drone_antenna.label`,icon:`lucide:radio`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`,subtype:{$in:[`antenna`,`rtf`]}},claude:`FPV antenna characteristics. rf_band — the bands it covers, codes from drone-rf-bands. polarization — RHCP/LHCP/linear; a video link needs the SAME polarization on both ends. antenna_type — the radiating structure. connector — one model often ships in several connector variants.`,fields:{rf_band:e.string({label:`drone.drone_antenna.fields.rf_band`,options:`drone-rf-bands`,multiple:!0,strict:!0,noSearch:!0}),polarization:e.string({label:`drone.drone_antenna.fields.polarization`,options:`drone-polarization`,strict:!0,noSearch:!0}),antenna_type:e.string({label:`drone.drone_antenna.fields.antenna_type`,options:`drone-antenna-types`,strict:!0,noSearch:!0}),connector:e.string({label:`drone.drone_antenna.fields.connector`,options:`drone-rf-connectors`,multiple:!0,strict:!0,noSearch:!0}),gain_dbi:e.real({label:`drone.drone_antenna.fields.gain_dbi`}),cable_length:e.int({label:`drone.drone_antenna.fields.cable_length`,rules:{min:0}}),notes:e.text({label:`drone.drone_antenna.fields.notes`,rules:{max:2e3}})}}),p=n({id:`drone_receiver`,label:`drone.drone_receiver.label`,icon:`lucide:antenna`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`,subtype:{$in:[`receiver`,`rtf`]}},claude:`RC receiver characteristics. radio_link — the protocol it binds with (ExpressLRS, Crossfire…). output_protocol — how it talks to the flight controller (CRSF, SBUS…). diversity — two antennas with active switching.`,fields:{radio_link:e.string({label:`drone.drone_receiver.fields.radio_link`,options:`drone-radio-links`,strict:!0,noSearch:!0}),rf_band:e.string({label:`drone.drone_receiver.fields.rf_band`,options:`drone-rf-bands`,multiple:!0,strict:!0,noSearch:!0}),output_protocol:e.string({label:`drone.drone_receiver.fields.output_protocol`,options:`drone-rx-outputs`,multiple:!0,strict:!0,noSearch:!0}),antenna_connector:e.string({label:`drone.drone_receiver.fields.antenna_connector`,options:`drone-rf-connectors`,strict:!0,noSearch:!0}),antenna_count:e.int({label:`drone.drone_receiver.fields.antenna_count`,rules:{min:0}}),telemetry:e.boolean({label:`drone.drone_receiver.fields.telemetry`}),diversity:e.boolean({label:`drone.drone_receiver.fields.diversity`}),input_voltage:e.string({label:`drone.drone_receiver.fields.input_voltage`,rules:{max:40}}),firmware_version:e.string({label:`drone.drone_receiver.fields.firmware_version`,rules:{max:40}}),notes:e.text({label:`drone.drone_receiver.fields.notes`,rules:{max:2e3}})}}),m=n({id:`drone_camera`,label:`drone.drone_camera.label`,icon:`lucide:camera`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`,subtype:{$in:[`camera`,`rtf`]}},claude:`FPV camera characteristics. sensor — the sensor model (free text, e.g. Sony Super HAD II). resolution_tvl — analog horizontal resolution in TVL. aspect_ratio — 4:3 / 16:9 / switchable. output — the video signal it produces (analog CVBS or a digital HD system).`,fields:{sensor:e.string({label:`drone.drone_camera.fields.sensor`,rules:{max:100}}),resolution_tvl:e.int({label:`drone.drone_camera.fields.resolution_tvl`,rules:{min:0}}),aspect_ratio:e.string({label:`drone.drone_camera.fields.aspect_ratio`,options:`drone-camera-aspect`,strict:!0,noSearch:!0}),lens_mm:e.real({label:`drone.drone_camera.fields.lens_mm`}),fov_deg:e.int({label:`drone.drone_camera.fields.fov_deg`,rules:{min:0}}),output:e.string({label:`drone.drone_camera.fields.output`,options:`drone-camera-output`,strict:!0,noSearch:!0}),camera_size:e.string({label:`drone.drone_camera.fields.camera_size`,options:`drone-camera-sizes`,strict:!0,noSearch:!0}),input_voltage:e.string({label:`drone.drone_camera.fields.input_voltage`,rules:{max:40}}),notes:e.text({label:`drone.drone_camera.fields.notes`,rules:{max:2e3}})}}),h=r({id:`drone`,version:`1.0.0`,dependsOn:[`things`],libraries:[{meta:i({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_:[o,s,c,l,u,d,f,p,m],showcases:[a({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`],defaultGroupBy:`subtype`,createDefaults:{type:`drone`}})],optionLists:[{name:`drone-bands`,options:[{value:`A`,title:`A`},{value:`B`,title:`B`},{value:`E`,title:`E`},{value:`F`,title:`F`},{value:`R`,title:`R`},{value:`L`,title:`L`},{value:`U`,title:`U`},{value:`O`,title:`O`},{value:`H`,title:`H`}]},{name:`drone-vtx-power`,options:[{value:`pit`,title:`PIT`},{value:`25mw`,title:`25 mW`},{value:`100mw`,title:`100 mW`},{value:`200mw`,title:`200 mW`},{value:`350mw`,title:`350 mW`},{value:`400mw`,title:`400 mW`},{value:`600mw`,title:`600 mW`},{value:`800mw`,title:`800 mW`},{value:`1000mw`,title:`1 W`},{value:`1600mw`,title:`1.6 W`},{value:`2500mw`,title:`2.5 W`}]},{name:`drone-vtx-protocols`,options:[{value:`smartaudio_1_0`,title:`SmartAudio 1.0`},{value:`smartaudio_2_0`,title:`SmartAudio 2.0`},{value:`smartaudio_2_1`,title:`SmartAudio 2.1`},{value:`tramp`,title:`IRC Tramp`},{value:`msp_displayport`,title:`MSP DisplayPort`},{value:`none`,title:`drone.options.none`}]},{name:`drone-rf-connectors`,options:[{value:`ipex_mhf1`,title:`IPEX / MHF1 (U.FL)`},{value:`ipex_mhf3`,title:`IPEX MHF3`},{value:`mmcx`,title:`MMCX`},{value:`sma`,title:`SMA`},{value:`rp_sma`,title:`RP-SMA`},{value:`ufl_solder`,title:`U.FL (soldered)`}]},{name:`drone-mounting`,options:[{value:`16x16_m2`,title:`16×16 mm M2`},{value:`20x20_m2`,title:`20×20 mm M2`},{value:`20x20_m3`,title:`20×20 mm M3`},{value:`25.5x25.5_m2`,title:`25.5×25.5 mm M2`},{value:`30.5x30.5_m3`,title:`30.5×30.5 mm M3`},{value:`adhesive`,title:`drone.options.adhesive`}]},{name:`drone-firmware`,options:[{value:`betaflight`,title:`Betaflight`},{value:`inav`,title:`INAV`},{value:`ardupilot`,title:`ArduPilot`},{value:`emuflight`,title:`EmuFlight`},{value:`rotorflight`,title:`Rotorflight`},{value:`kiss`,title:`KISS`},{value:`cleanflight`,title:`Cleanflight`}]},{name:`drone-fc-mcu`,options:[{value:`stm32f411`,title:`STM32F411`},{value:`stm32f405`,title:`STM32F405`},{value:`stm32f722`,title:`STM32F722`},{value:`stm32f745`,title:`STM32F745`},{value:`stm32f765`,title:`STM32F765`},{value:`stm32h743`,title:`STM32H743`},{value:`stm32h750`,title:`STM32H750`},{value:`at32f435`,title:`AT32F435`},{value:`gd32f405`,title:`GD32F405`}]},{name:`drone-gyro`,options:[{value:`mpu6000`,title:`MPU6000`},{value:`mpu6500`,title:`MPU6500`},{value:`icm20602`,title:`ICM20602`},{value:`icm20689`,title:`ICM20689`},{value:`icm42688p`,title:`ICM42688-P`},{value:`icm42605`,title:`ICM42605`},{value:`bmi270`,title:`BMI270`},{value:`bmi160`,title:`BMI160`}]},{name:`drone-osd-chip`,options:[{value:`at7456e`,title:`AT7456E`},{value:`max7456`,title:`MAX7456`},{value:`msp_displayport`,title:`MSP DisplayPort`},{value:`none`,title:`drone.options.none`}]},{name:`drone-blackbox`,options:[{value:`none`,title:`drone.options.none`},{value:`flash_8mb`,title:`Flash 8 MB`},{value:`flash_16mb`,title:`Flash 16 MB`},{value:`flash_32mb`,title:`Flash 32 MB`},{value:`sd_card`,title:`microSD`}]},{name:`drone-gnss-systems`,options:[{value:`gps`,title:`GPS`},{value:`glonass`,title:`GLONASS`},{value:`galileo`,title:`Galileo`},{value:`beidou`,title:`BeiDou`},{value:`qzss`,title:`QZSS`},{value:`sbas`,title:`SBAS`},{value:`navic`,title:`NavIC`}]},{name:`drone-gnss-protocols`,options:[{value:`ubx`,title:`UBX`},{value:`nmea`,title:`NMEA`},{value:`rtcm3`,title:`RTCM3`},{value:`msp`,title:`MSP`}]},{name:`drone-baud-rates`,options:[{value:`4800`,title:`4800`},{value:`9600`,title:`9600`},{value:`19200`,title:`19200`},{value:`38400`,title:`38400`},{value:`57600`,title:`57600`},{value:`115200`,title:`115200`},{value:`230400`,title:`230400`},{value:`460800`,title:`460800`},{value:`921600`,title:`921600`}]},{name:`drone-serial-interfaces`,options:[{value:`uart`,title:`UART`},{value:`i2c`,title:`I2C`},{value:`spi`,title:`SPI`},{value:`can`,title:`CAN`}]},{name:`drone-video-systems`,options:[{value:`analog_5_8`,title:`drone.options.videoSystems.analog_5_8`},{value:`dji_v1_v2`,title:`DJI V1/V2`},{value:`dji_o3`,title:`DJI O3`},{value:`dji_o4`,title:`DJI O4`},{value:`walksnail_avatar`,title:`Walksnail Avatar`},{value:`hdzero`,title:`HDZero`}]},{name:`drone-radio-links`,options:[{value:`elrs_2_4`,title:`ExpressLRS 2.4 GHz`},{value:`elrs_900`,title:`ExpressLRS 868/915 MHz`},{value:`crossfire`,title:`TBS Crossfire`},{value:`tracer`,title:`TBS Tracer`},{value:`ghost`,title:`ImmersionRC Ghost`},{value:`frsky_d16`,title:`FrSky D16`},{value:`frsky_d8`,title:`FrSky D8`},{value:`dsmx`,title:`Spektrum DSMX`},{value:`dji`,title:`DJI`}]},{name:`drone-rf-bands`,options:[{value:`5_8ghz`,title:`5.8 GHz`},{value:`2_4ghz`,title:`2.4 GHz`},{value:`1_2ghz`,title:`1.2 GHz`},{value:`900mhz`,title:`868/915 MHz`},{value:`433mhz`,title:`433 MHz`}]},{name:`drone-polarization`,options:[{value:`rhcp`,title:`drone.options.polarization.rhcp`},{value:`lhcp`,title:`drone.options.polarization.lhcp`},{value:`linear`,title:`drone.options.polarization.linear`}]},{name:`drone-antenna-types`,options:[{value:`omni`,title:`drone.options.antennaTypes.omni`},{value:`patch`,title:`drone.options.antennaTypes.patch`},{value:`helical`,title:`drone.options.antennaTypes.helical`},{value:`pagoda`,title:`drone.options.antennaTypes.pagoda`},{value:`cloverleaf`,title:`drone.options.antennaTypes.cloverleaf`},{value:`monopole`,title:`drone.options.antennaTypes.monopole`},{value:`whip`,title:`drone.options.antennaTypes.whip`}]},{name:`drone-cells`,options:[{value:`1s`,title:`1S`},{value:`2s`,title:`2S`},{value:`3s`,title:`3S`},{value:`4s`,title:`4S`},{value:`5s`,title:`5S`},{value:`6s`,title:`6S`},{value:`7s`,title:`7S`},{value:`8s`,title:`8S`},{value:`12s`,title:`12S`}]},{name:`drone-rx-outputs`,options:[{value:`crsf`,title:`CRSF`},{value:`sbus`,title:`SBUS`},{value:`ibus`,title:`IBUS`},{value:`ppm`,title:`PPM`},{value:`pwm`,title:`PWM`},{value:`spektrum`,title:`Spektrum`},{value:`ghst`,title:`GHST`}]},{name:`drone-camera-aspect`,options:[{value:`4_3`,title:`4:3`},{value:`16_9`,title:`16:9`},{value:`switchable`,title:`drone.options.cameraAspect.switchable`}]},{name:`drone-camera-output`,options:[{value:`analog_cvbs`,title:`drone.options.cameraOutput.analog_cvbs`},{value:`dji`,title:`DJI`},{value:`walksnail`,title:`Walksnail`},{value:`hdzero`,title:`HDZero`}]},{name:`drone-camera-sizes`,options:[{value:`nano`,title:`Nano`},{value:`micro`,title:`Micro`},{value:`mini`,title:`Mini`},{value:`full`,title:`Full-size`},{value:`whoop`,title:`Whoop`}]}],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.drone_camera.label`,when:{type:`drone`}},{value:`antenna`,title:`drone.drone_antenna.label`,when:{type:`drone`}},{value:`receiver`,title:`drone.drone_receiver.label`,when:{type:`drone`}},{value:`frame`,title:`drone.contrib.subtype.frame`,when:{type:`drone`}},{value:`rtf`,title:`drone.contrib.subtype.rtf`,when:{type:`drone`}},{value:`accessory`,title:`drone.contrib.subtype.accessory`,when:{type:`drone`}}]}]});export{h as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"./src-Bay9M7eI.js";export{e as default,n as fin,t as iban};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D as e,E as t,G as n,H as r,I as i,K as a,M as o,P as s,R as c,V as l,W as u,j as d,k as f,n as p,r as m,z as h}from"./fields-DMchbbOm.js";import{s as g}from"./shelf-DmAuGkTS.js";import{t as _}from"./extend-u4UeeES5.js";import{n as v,r as y}from"./plugin-CFEkHH3f.js";import{t as b}from"./settings-mXXsgRiF.js";import{i as x,r as S,s as C}from"./data-size-BzMyF1we.js";import{t as w}from"./showcase-DwzheZMA.js";var T=(e,t)=>a().superRefine((n,r)=>{e.safeParse(d(n)).success||r.addIssue({code:i.custom,message:s(t)})}),E=()=>l().int().min(0).max(255),D=()=>l().int().min(0).max(65535),O=n([E(),E(),E(),E()]),k=n([D(),D(),D(),D(),D(),D(),D(),D()]),A=r({v:h(4),a:O}),j=r({v:h(6),a:k}),M=c(`v`,[A,j]);function N(n){let r=t(n),i=r.required??!1,a=T(M,`ip_structure`);return f(void 0,r,e({kind:`ip`,label:r.label??``,required:i,prim:`ip`,column:`text`,hints:{},zod:o(a,i)},r.multiple??!1))}var P=/^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$/;function F(n){let r=t(n),i=r.required??!1,a=u().regex(P,{message:s(`pattern`,{messageKey:`core.presets.mac`})});return f(void 0,r,e({kind:`text`,label:r.label??``,required:i,prim:`text`,column:`text`,hints:{mask:`macAddress`},zod:o(a,i)},r.multiple??!1))}var I=/^[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 L(n){let r=t(n),i=r.required??!1,a=u().regex(I,{message:s(`pattern`,{messageKey:`core.presets.hostname`})});return f(void 0,r,e({kind:`text`,label:r.label??``,required:i,prim:`text`,column:`text`,hints:{},zod:o(a,i)},r.multiple??!1))}var R=/^\d{15}$/;function z(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 B(n){let r=t(n),i=r.required??!1,a=u().regex(R,{message:s(`pattern`,{messageKey:`core.presets.imei`})}).refine(z,{message:s(`pattern`,{messageKey:`core.presets.imei`})});return f(void 0,r,e({kind:`text`,label:r.label??``,required:i,prim:`text`,column:`text`,hints:{},zod:o(a,i)},r.multiple??!1))}var V=c(`v`,[A.extend({p:l().int().min(0).max(32)}),j.extend({p:l().int().min(0).max(128)})]);function H(n){let r=t(n),i=r.required??!1,a=T(V,`cidr_structure`);return f(void 0,r,e({kind:`cidr`,label:r.label??``,required:i,prim:`cidr`,column:`text`,hints:{},zod:o(a,i)},r.multiple??!1))}var U=g({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:{name:p.title({label:`core.fields.name`}),description:p.text({label:`devices.network.fields.description`,rules:{max:1e3}}),facets:p.facets({fields:{vlan:p.int({label:`devices.network.fields.vlan`,rules:{min:1,max:4094}}),domain:L({label:`devices.network.fields.domain`})}}),ledger:p.ledger({fields:{subnet:H({label:`devices.network.fields.subnet`}),gateway:N({label:`devices.network.fields.gateway`}),dnsPrimary:N({label:`devices.network.fields.dnsPrimary`}),dnsFallback:N({label:`devices.network.fields.dnsFallback`}),poolStart:N({label:`devices.network.fields.poolStart`}),poolEnd:N({label:`devices.network.fields.poolEnd`})}}),notes:p.text({label:`devices.network.fields.notes`,rules:{max:2e3}})}}),W=[`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}`})),G=[{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`}],K={http:`http`,https:`https`,ssh:`ssh`,mysql:`mysql`,mqtt:`mqtt`,ws:`ws`,wss:`ws`,dns:`dns`},q=g({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:{name:p.title({label:`core.fields.name`}),description_mode:p.string({label:`devices.service.description_mode`,options:[{value:`key`,title:`devices.service.description_mode_key`},{value:`own`,title:`devices.service.description_mode_own`}],default:`key`,strict:!0,noSearch:!0}),description:p.i18n({label:`devices.service.description`,rules:{max:1e3},ui:{hidden:{description_mode:{$ne:`key`}}}}),description_text:p.text({label:`devices.service.description`,rules:{max:1e3},ui:{hidden:{description_mode:{$ne:`own`}}}}),code:p.string({label:`devices.service.code`,rules:{max:60}}),category:p.string({label:`devices.service.category`,options:[...W],multiple:!0,strict:!0,noSearch:!0})}}),J=(e,t)=>{let n=e?.[t];return typeof n==`number`&&Number.isFinite(n)&&n>=0?n:null},Y=({parent:e})=>{let t=J(e,`used`),n=J(e,`free`);return t==null||n==null||t+n===0?null:Math.round(t/(t+n)*1e3)/10},X=80,Z=95,Q=_({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:{facets:p.facets({fields:{group:p.string({label:`devices.device_info.fields.group`,options:`device-groups`,strict:!0,noSearch:!0}),arch:p.string({label:`devices.device_info.fields.arch`,rules:{max:30}})}}),ledger:p.ledger({fields:{hostname:p.string({label:`devices.device_info.fields.hostname`,rules:{max:120}}),vendor:p.string({label:`devices.device_info.fields.vendor`,rules:{max:80}}),model:p.string({label:`devices.device_info.fields.model`,rules:{max:120}}),os:p.string({label:`devices.device_info.fields.os`,rules:{max:100}}),kernel:p.string({label:`devices.device_info.fields.kernel`,rules:{max:100}}),cpu:p.string({label:`devices.device_info.fields.cpu`,rules:{max:150}}),gpu:p.string({label:`devices.device_info.fields.gpu`,rules:{max:150}}),ram:C({label:`devices.device_info.fields.ram`})}}),addresses:p.row({scope:`nest`,multiple:!0,label:`devices.device_info.fields.addresses`,icon:`lucide:network`,fields:{ip:N({label:`devices.device_info.fields.ip`}),mac:F({label:`devices.device_info.fields.mac`})}}),disks_usage:p.group({scope:`nest`,label:`devices.device_info.fields.disks_usage`,icon:`lucide:hard-drive`,multiple:!0,fields:{mount:p.string({label:`devices.device_info.disk.mount`,rules:{max:80}}),size:S({label:`devices.device_info.disk.size`,system:`binary`,unit:`GiB`}),used:S({label:`devices.device_info.disk.used`,system:`binary`,unit:`GiB`,mutate:[`.usage`]}),free:S({label:`devices.device_info.disk.free`,system:`binary`,unit:`GiB`,mutate:[`.usage`]}),usage:p.real({label:`devices.device_info.disk.usage`,rules:{min:0,max:100},value:Y,mutate:[`.state`]}),state:p.string({label:`devices.device_info.disk.state`,options:[{value:`ok`,title:`devices.device_info.disk_state.ok`,icon:{kind:`icon`,value:`lucide:check`}},{value:`warn`,title:`devices.device_info.disk_state.warn`,icon:{kind:`icon`,value:`lucide:minus`}},{value:`full`,title:`devices.device_info.disk_state.full`,icon:{kind:`icon`,value:`lucide:x`}}],value:e=>{let t=Y(e);return typeof t==`number`?t>=Z?`full`:t>=X?`warn`:`ok`:null},strict:!0,noSearch:!0})}}),services:p.keyed({label:`devices.device_info.fields.services`,icon:`lucide:server`,fields:{service:p.relation({label:`devices.service.type`,options:m({library:`devices`,shelf:`service`})}),description:p.smallText({label:`devices.service.description`,rules:{max:500}}),hide:p.boolean({label:`devices.service.hide`}),links:p.row({scope:`nest`,multiple:!0,label:`devices.service.links`,icon:`lucide:link`,fields:{url:p.url({label:`devices.service.url`}),access:p.string({label:`devices.service.access`,options:`access-types`,strict:!0,noSearch:!0}),visibility:p.string({label:`devices.service.visibility`,options:`visibility-types`,strict:!0,noSearch:!0})}}),secrets:p.keyValue({label:`devices.service.secrets`,fields:{value:p.password({})},multiple:!0,ui:{keyLabel:`devices.service.secretName`,valueLabel:`devices.service.secretValue`}})},by:`service`})}}),$={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`},ee=`docker compose exec pihole pihole reloaddns`,te={ip:N,cidr:H,mac:F,hostname:L,imei:B,dataSize:S,ram:C,diskSize:x},ne=v({id:`devices`,version:`1.0.0`,dependsOn:[`things`],settings:b({label:`devices.settings.label`,icon:`lucide:radar`,fields:{info:p.info(`devices.settings.scan_info`),button:p.button({label:`devices.settings.scan_button`,value:`devices.runScan`,icon:`lucide:radar`}),info2:p.info(`devices.settings.secrets_help`),info3:p.info(`devices.settings.sync_targets_info`),ssh_config_path:p.localFile({label:`devices.settings.ssh_config_path`,default:$.ssh_config_path}),pihole_conf_path:p.localFile({label:`devices.settings.pihole_conf_path`,default:$.pihole_conf_path}),pihole_reload_cmd:p.string({label:`devices.settings.pihole_reload_cmd`,default:ee}),syncthing_ini_path:p.localFile({label:`devices.settings.syncthing_ini_path`,default:$.syncthing_ini_path}),gtk_bookmarks_path:p.localFile({label:`devices.settings.gtk_bookmarks_path`,default:$.gtk_bookmarks_path}),kodi_sources_path:p.localFile({label:`devices.settings.kodi_sources_path`,default:$.kodi_sources_path}),krdc_bookmarks_path:p.localFile({label:`devices.settings.krdc_bookmarks_path`,default:$.krdc_bookmarks_path}),rclone_config_path:p.localFile({label:`devices.settings.rclone_config_path`,default:$.rclone_config_path}),remmina_dir:p.localDir({label:`devices.settings.remmina_dir`,default:$.remmina_dir}),remoteview_dir:p.localDir({label:`devices.settings.remoteview_dir`,default:$.remoteview_dir}),delfin_config_path:p.localFile({label:`devices.settings.delfin_config_path`,default:$.delfin_config_path})}}),libraries:[{meta:y({id:`devices`,label:`devices.library.label`,icon:`lucide:globe`,agent:`Network subnets and the service catalog (network, service).`}),shelves:[U,q]},{meta:y({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_:[Q],showcases:[w({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`}}),w({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:[...G]},{name:`visibility-types`,options:[{value:`lan`,title:`devices.visibilityTypes.lan`},{value:`public`,title:`devices.visibilityTypes.public`},{value:`other`,title:`devices.visibilityTypes.other`}]},{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{L as a,F as c,H as i,ne as n,B as o,K as r,N as s,te as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,r as t,s as n}from"./data-size-BzMyF1we.js";import{a as r,c as i,i as a,n as o,o as s,r as c,s as l,t as u}from"./src-Bayfjx1G.js";export{c as SCHEME_TO_ACCESS_TYPE,a as cidr,t as dataSize,o as default,u as dev,e as diskSize,r as hostname,s as imei,l as ip,i as mac,n as ram};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./fields-DMchbbOm.js";import{s as n}from"./shelf-DmAuGkTS.js";import{n as r,r as i}from"./plugin-CFEkHH3f.js";var a=n({shelf:`meter_reading`,library:`home`,label:`home.meter_reading.label`,icon:`lucide:gauge`,claude:`Utility meter readings for a date. name — reading period, e.g. "2026-05".
|
|
2
|
-
date — reading date. cold_water/hot_water — water meter readings (m³).
|
|
3
|
-
electricity — electricity meter reading (kWh). gas — gas meter reading (m³).
|
|
4
|
-
Stores RAW cumulative readings, not consumption (the difference is a derived calculation).`,views:{title:`date`,inline:[`date`],list:[`cold_water`,`hot_water`,`electricity`,`gas`]},fields:{date:e.date({label:`home.meter_reading.fields.date`,required:!0,rules:{min:`2000-01-01`,max:`today`},ui:{span:12}}),cold_water:e.real({label:`home.meter_reading.fields.cold_water`,rules:{min:0},ui:{span:3}}),hot_water:e.real({label:`home.meter_reading.fields.hot_water`,rules:{min:0},ui:{span:3}}),electricity:e.real({label:`home.meter_reading.fields.electricity`,rules:{min:0},ui:{span:3}}),gas:e.real({label:`home.meter_reading.fields.gas`,rules:{min:0},ui:{span:3}}),notes:e.text({label:`home.meter_reading.fields.notes`,rules:{max:500}})}}),o=n({shelf:`room`,library:`home`,label:`home.room.label`,icon:`lucide:door-open`,claude:`A room/space in the apartment. name — name (Bedroom, Kitchen). area — area (m²). This is a reference list of places: a target for relations from material (where a material was used). Does not store the materials themselves.`,views:{inline:[`name`],list:[`area`]},fields:{name:e.title({label:`core.fields.name`,required:!0}),description:e.text({label:`home.room.fields.description`,rules:{max:1e3}}),area:e.measured({label:`home.room.fields.area`,units:`area`,rules:{min:0}}),notes:e.text({label:`home.room.fields.notes`,rules:{max:500}})}}),s=n({shelf:`material`,library:`home`,label:`home.material.label`,icon:`lucide:paint-roller`,claude:`A material/paint used in renovation. One record = a specific product (e.g. "Dulux Easycare, RAL 9010"). name — name, type — category, brand — manufacturer, color/color_code — color and tint code. rooms — relation to home/room (where used, can be several). price/quantity/store/bought_date/link — purchase data. photo/rating/notes — photos and impressions. Does NOT store a work log/timeline — only a catalog of "what was bought and where it is used".`,views:{inline:[`name`,`color`],list:[`type`,`color`,`brand`,`rooms`]},fields:{name:e.title({label:`core.fields.name`,required:!0}),description:e.text({label:`home.material.fields.description`,rules:{max:1e3}}),group:e.group({label:`home.material.group.identity`,icon:`lucide:tag`,scope:`hoist`,fields:{type:e.string({label:`core.fields.type`,strict:!0,noSearch:!0,options:[{value:`paint`,title:`home.material.options.type.paint`},{value:`primer`,title:`home.material.options.type.primer`},{value:`lacquer`,title:`home.material.options.type.lacquer`},{value:`enamel`,title:`home.material.options.type.enamel`},{value:`plaster`,title:`home.material.options.type.plaster`},{value:`tile`,title:`home.material.options.type.tile`},{value:`laminate`,title:`home.material.options.type.laminate`},{value:`wallpaper`,title:`home.material.options.type.wallpaper`},{value:`skirting`,title:`home.material.options.type.skirting`},{value:`panel`,title:`home.material.options.type.panel`},{value:`putty`,title:`home.material.options.type.putty`},{value:`glue`,title:`home.material.options.type.glue`},{value:`cement`,title:`home.material.options.type.cement`},{value:`drywall`,title:`home.material.options.type.drywall`},{value:`insulation`,title:`home.material.options.type.insulation`},{value:`fixture`,title:`home.material.options.type.fixture`},{value:`plumbing`,title:`home.material.options.type.plumbing`},{value:`other`,title:`home.material.options.type.other`}]}),brand:e.string({label:`home.material.fields.brand`,rules:{max:120}}),color:e.color({label:`home.material.fields.color`}),color_code:e.string({label:`home.material.fields.color_code`,rules:{max:60}}),rooms:e.relation({label:`home.material.fields.rooms`,options:t({library:`home`,shelf:`room`}),multiple:!0})}}),ledger:e.ledger({label:`home.material.group.purchase`,icon:`lucide:shopping-cart`,fields:{price:e.money({label:`home.material.fields.price`,rules:{min:0}}),currency:e.currency({label:`core.fields.currency`,default:`UAH`}),quantity:e.measured({label:`home.material.fields.quantity`,units:[{value:`l`,label:`core.units.l`},{value:`kg`,label:`core.units.kg`},{value:`m2`,label:`core.units.m2`},{value:`pcs`,label:`core.units.pcs`}],rules:{min:0}}),store:e.string({label:`home.material.fields.store`,rules:{max:120}}),bought_date:e.date({label:`home.material.fields.bought_date`,rules:{max:`today`}}),link:e.link({label:`home.material.fields.link`})}}),group2:e.group({label:`home.material.group.media`,icon:`lucide:image`,scope:`hoist`,fields:{photo:e.image({label:`home.material.fields.photo`,multiple:!0}),rating:e.rating({label:`home.material.fields.rating`,rules:{max:5}})}}),notes:e.text({label:`home.material.fields.notes`,rules:{max:2e3}})}}),c=r({id:`home`,version:`1.0.0`,dependsOn:[],libraries:[{meta:i({id:`home`,label:`home.library.label`,icon:`lucide:house`,agent:`The home itself — renovation materials, utility meter readings, rooms.`}),shelves:[a,o,s]}]});export{c as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./fields-DMchbbOm.js";import{s as t}from"./shelf-DmAuGkTS.js";import{n,r}from"./plugin-CFEkHH3f.js";var i=t({shelf:`person`,library:`people`,label:`people.person.label`,icon:`lucide:user`,claude:`A person card. fullName — the full name (first + last), used as the title.`,views:{inline:[`logo`,`fullName`],list:[`birthDate`],select:{icon:`logo`,title:`fullName`,subtitle:`birthDate`}},fields:{logo:e.avatar({label:`people.person.fields.logo`,ui:{role:`avatar`}}),fullName:e.title({label:`people.person.fields.fullName`,required:!0}),description:e.text({label:`people.person.fields.description`,rules:{max:500}}),properties:e.properties({columns:4,fields:{occupation:e.string({label:`people.person.fields.occupation`,rules:{max:200},ui:{span:3}}),birthDate:e.date({label:`people.person.fields.birthDate`,rules:{min:`1900-01-01`,max:`today`},ui:{span:3}}),sex:e.string({label:`people.person.fields.sex`,strict:!0,noSearch:!0,options:`sex`,ui:{span:3}}),phone:e.tel({label:`people.person.fields.phone`,ui:{span:3}}),email:e.email({label:`people.person.fields.email`,ui:{span:6}}),address:e.text({label:`people.person.fields.address`,rules:{max:300},ui:{span:6}})}}),photos:e.image({label:`people.person.fields.photos`,multiple:!0}),tags:e.tags({label:`people.person.fields.tags`}),notes:e.text({label:`people.person.fields.notes`,rules:{max:1e3}})}}),a=n({id:`people`,version:`1.0.0`,dependsOn:[],libraries:[{meta:r({id:`people`,label:`people.library.label`,icon:`lucide:users`,agent:`People (person) — contacts, birthdays, jobs; referenced by health, travel, and others.`}),shelves:[i]}]});export{a as default};
|