@coffer-org/web 2.6.1 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/assets/{ChatWidget-BxY9kQxi.js → ChatWidget-CnETJEZj.js} +1 -1
  2. package/dist/assets/{ExtendReasonInfo-iAIjJ48b.js → ExtendReasonInfo-DZyJKRHy.js} +1 -1
  3. package/dist/assets/{NewRecordView-uOQOfkOx.js → NewRecordView-BAe2dw2Y.js} +1 -1
  4. package/dist/assets/{PluginSettingsPage-IaFxvJdf.js → PluginSettingsPage-BQm11aEY.js} +1 -1
  5. package/dist/assets/{SettingsForm-BC0viqzW.js → SettingsForm-xXNSptFG.js} +1 -1
  6. package/dist/assets/{Toolbar-Ce0rNkTo.js → Toolbar-_Bg6b3gy.js} +2 -2
  7. package/dist/assets/{chrome-Dxg72x2y.js → chrome-BfURuVBW.js} +1 -1
  8. package/dist/assets/{data-size-FYe9GB-w.js → data-size-B44emc58.js} +1 -1
  9. package/dist/assets/{dispatch-CBwxUhZb.js → dispatch-B7QFSWwA.js} +1 -1
  10. package/dist/assets/{extend-BEeQnsjj.js → extend-CbEbk8Xz.js} +1 -1
  11. package/dist/assets/{field-frame-B0aT2ksn.js → field-frame-lE36ax7A.js} +1 -1
  12. package/dist/assets/fields-BvFhu2Zp.js +64 -0
  13. package/dist/assets/index-Bg8TebNq.js +36 -0
  14. package/dist/assets/index-uwd-zQkM.css +2 -0
  15. package/dist/assets/shelf-D-ifpKTJ.js +1 -0
  16. package/dist/assets/src-BbGADHi4.js +1 -0
  17. package/dist/assets/{src-DSF8bpP1.js → src-BbXav__j.js} +1 -1
  18. package/dist/assets/src-Bfag40nz.js +1 -0
  19. package/dist/assets/src-Biw45VnV.js +1 -0
  20. package/dist/assets/src-BwAqtVgz.js +1 -0
  21. package/dist/assets/src-CAxtnBfy.js +1 -0
  22. package/dist/assets/{src-DHkUSKtU.js → src-CK5LF8mh.js} +1 -1
  23. package/dist/assets/src-CNthPAwF.js +4 -0
  24. package/dist/assets/src-Cc76BNli.js +1 -0
  25. package/dist/assets/src-CqhDb-U4.js +1 -0
  26. package/dist/assets/src-CxxVpC_U.js +1 -0
  27. package/dist/assets/{src-DkXs3X9I.js → src-D1jciqQr.js} +1 -1
  28. package/dist/assets/{src-B1LkgGT0.js → src-D20-HqBF.js} +1 -1
  29. package/dist/assets/{src-CyicyuOu.js → src-DLuKxde5.js} +1 -1
  30. package/dist/assets/src-DOQoaYNp.js +1 -0
  31. package/dist/assets/{src-CQfRvkxA.js → src-DQEWf3tk.js} +1 -1
  32. package/dist/assets/src-DdRHCjFX.js +1 -0
  33. package/dist/assets/{src-ctux6MQD.js → src-DkjooOXs.js} +1 -1
  34. package/dist/assets/src-DuedPjXO.js +2 -0
  35. package/dist/assets/{src-CUVSyD4r.js → src-P-7khzwl.js} +1 -1
  36. package/dist/assets/src-PtjKU-Bz.js +4 -0
  37. package/dist/assets/{src-oZtYFN79.js → src-R3C69mft.js} +1 -1
  38. package/dist/assets/src-X1dNXdZc.js +1 -0
  39. package/dist/assets/src-wGc7N6NH.js +1 -0
  40. package/dist/assets/src-xhgZhvPx.js +7 -0
  41. package/dist/assets/{ui-BF1Zz_Rh.js → ui-DoEY93ZQ.js} +2 -2
  42. package/dist/assets/{ui-DbAPxl8P.js → ui-QxKP_mxS.js} +1 -1
  43. package/dist/assets/{ui-CVX34OBw.js → ui-Vp773Nr2.js} +1 -1
  44. package/dist/index.html +12 -12
  45. package/dist-vendor/web-sdk.js +464 -420
  46. package/package.json +2 -2
  47. package/dist/assets/fields-C2JBwQro.js +0 -64
  48. package/dist/assets/index-BsQAt1OP.js +0 -36
  49. package/dist/assets/index-DFq4B5gv.css +0 -2
  50. package/dist/assets/shelf-ZF6KVxZd.js +0 -1
  51. package/dist/assets/src-6mlUyIfG.js +0 -1
  52. package/dist/assets/src-B5Wv5ASz.js +0 -2
  53. package/dist/assets/src-BBWK9u-H.js +0 -1
  54. package/dist/assets/src-BFOIP3DL.js +0 -1
  55. package/dist/assets/src-BcIpCv23.js +0 -1
  56. package/dist/assets/src-Bq0RDmeB.js +0 -1
  57. package/dist/assets/src-CFMj5Och.js +0 -1
  58. package/dist/assets/src-CS4PO4i_.js +0 -4
  59. package/dist/assets/src-CmB0Aw5B.js +0 -1
  60. package/dist/assets/src-D30TPrc-.js +0 -4
  61. package/dist/assets/src-D7-BUu3l.js +0 -1
  62. package/dist/assets/src-DN5_wKHc.js +0 -7
  63. package/dist/assets/src-DYJtabTg.js +0 -1
  64. package/dist/assets/src-Dnc57MD8.js +0 -1
  65. package/dist/assets/src-Wi0SYiAd.js +0 -1
  66. package/dist/assets/src-na7K2wUl.js +0 -1
@@ -0,0 +1 @@
1
+ import{i as e}from"./fields-BvFhu2Zp.js";import{a as t}from"./shelf-D-ifpKTJ.js";import{n,r}from"./plugin-q1oOYqt7.js";var i=t({shelf:`item`,library:`things`,label:`things.item.label`,icon:`lucide:package`,claude:`A physical item. name — the title. type — an optional classifier (extends can add types, e.g. device).`,views:{list:[`type`,`brand`,`model`,`location`],groupBy:[`type`,`paymentStatus`,`condition`,`owner`,`location`,`store`,`madeIn`]},fields:[e.title({key:`name`,label:`core.fields.name`}),e.image({key:`logo`,label:`things.item.fields.logo`}),e.text({key:`description`,label:`things.item.fields.description`,rules:{max:1e3}}),e.string({key:`brand`,label:`things.item.fields.brand`,rules:{max:100}}),e.string({key:`model`,label:`things.item.fields.model`,rules:{max:100}}),e.int({key:`quantity`,label:`things.item.fields.quantity`,rules:{min:0}}),e.relation({key:`owner`,label:`things.item.fields.owner`,options:{library:`people`,shelf:`person`}}),e.relation({key:`location`,label:`things.item.fields.location`,options:{library:`things`,shelf:`storage_location`}}),e.string({key:`color`,label:`things.item.fields.color`,rules:{max:120}}),e.string({key:`material`,label:`things.item.fields.material`,rules:{max:80}}),e.country({key:`madeIn`,label:`things.item.fields.madeIn`}),e.weight({key:`weight`,label:`things.item.fields.weight`}),e.dimensions({key:`dimensions`,label:`things.item.fields.dimensions`}),e.string({key:`serialNumber`,label:`things.item.fields.serialNumber`,rules:{max:80}}),e.group({label:`things.item.groups.purchase`,icon:`lucide:shopping-cart`,fields:[e.date({key:`purchaseDate`,label:`things.item.fields.purchaseDate`}),e.money({key:`purchasePrice`,label:`things.item.fields.purchasePrice`,rules:{defaultCurrency:`UAH`}}),e.select({key:`paymentStatus`,label:`things.item.fields.paymentStatus`,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`}]}),e.string({key:`store`,label:`things.item.fields.store`,rules:{max:100}}),e.link({key:`link`,label:`things.item.fields.link`}),e.string({key:`orderNumber`,label:`things.item.fields.orderNumber`,rules:{max:100}}),e.image({key:`receipt`,label:`things.item.fields.receipt`})]}),e.select({key:`condition`,label:`things.item.fields.condition`,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`}]}),e.reminder({key:`warrantyExpires`,label:`things.item.fields.warrantyExpires`,rules:{lead:30}}),e.document({key:`manual`,label:`things.item.fields.manual`}),e.image({key:`photos`,label:`things.item.fields.photos`,multiple:!0}),e.select({key:`type`,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:`document`,title:`things.item.options.type.document`},{value:`other`,title:`things.item.options.type.other`}]}),e.tags({key:`tags`,label:`things.item.fields.tags`}),e.text({key:`notes`,label:`things.item.fields.notes`,rules:{max:2e3}})]}),a=t({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:[e.title({key:`name`,label:`core.fields.name`,required:!0}),e.text({key:`description`,label:`things.storage_location.fields.description`,rules:{max:1e3}}),e.string({key:`path`,label:`things.storage_location.fields.path`,multiple:!0,rules:{max:120}}),e.text({key:`notes`,label:`things.storage_location.fields.notes`,rules:{max:2e3}})]}),o=n({id:`things`,version:`1.0.0`,dependsOn:[`people`],libraries:[{meta:r({id:`things`,label:`things.library.label`,icon:`lucide:package`,agent:`Belongings and where they are stored (item, storage_location). Also hosts network hosts (device_info) and drone builds.`}),shelves:[i,a]}]});export{o as default};
@@ -0,0 +1 @@
1
+ import{i as e}from"./fields-BvFhu2Zp.js";import{t}from"./extend-CbEbk8Xz.js";import{n}from"./plugin-q1oOYqt7.js";var r=n({id:`drone`,version:`1.0.0`,dependsOn:[`things`],extends_:[t({id:`drone`,label:`drone.drone.label`,icon:`tb:drone`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone`},claude:`FPV drone technical characteristics. frame_size — frame size (e.g. 3.5"). motors — motors. firmware — firmware (Betaflight/INAV).`,fields:[e.title({key:`name`,label:`core.fields.name`}),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.string({key:`camera`,label:`drone.drone.fields.camera`,rules:{max:100}}),e.string({key:`flight_controller`,label:`drone.drone.fields.flight_controller`,rules:{max:100}}),e.string({key:`vtx`,label:`drone.drone.fields.vtx`,rules:{max:100}}),e.string({key:`gps_module`,label:`drone.drone.fields.gps_module`,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.image({key:`photos`,label:`drone.drone.fields.photos`,multiple:!0}),e.text({key:`notes`,label:`drone.drone.fields.notes`,rules:{max:2e3}})]}),t({id:`drone_battery`,label:`drone.drone_battery.label`,icon:`lucide:battery-full`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone_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.title({key:`name`,label:`core.fields.name`}),e.string({key:`brand`,label:`drone.drone_battery.fields.brand`,rules:{max:80}}),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}})]}),t({id:`drone_vtx`,label:`drone.drone_vtx.label`,icon:`lucide:radio-tower`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone_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.title({key:`name`,label:`core.fields.name`}),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}})]}),t({id:`drone_gps`,label:`drone.drone_gps.label`,icon:`lucide:satellite`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone_gps_module`},claude:`FPV drone GPS module characteristics. gnss_chip — chipset. compass_chip — magnetometer. satellite_systems — supported satellite systems.`,fields:[e.title({key:`name`,label:`core.fields.name`}),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}})]}),t({id:`drone_flight_controller`,label:`drone.drone_flight_controller.label`,icon:`lucide:sliders-horizontal`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone_flight_controller`},claude:`FPV drone flight controller characteristics. mcu — processor (STM32F411/F405). gyro — gyroscope. supported_firmware — compatible firmware (Betaflight, INAV).`,fields:[e.title({key:`name`,label:`core.fields.name`}),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}})]}),t({id:`drone_goggles`,label:`drone.drone_goggles.label`,icon:`lucide:glasses`,attachTo:[{library:`things`,shelf:`item`}],showWhen:{type:`drone_goggles`},claude:`FPV goggles characteristics. display_size — display diagonal. frequency_bands — supported radio bands. battery_life — runtime on battery.`,fields:[e.title({key:`name`,label:`core.fields.name`}),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}})]})],fieldContribs:[{library:`things`,shelf:`item`,field:`type`,options:[{value:`drone`,title:`drone.drone.label`},{value:`drone_battery`,title:`drone.drone_battery.label`},{value:`drone_vtx`,title:`drone.drone_vtx.label`},{value:`drone_gps_module`,title:`drone.drone_gps.label`},{value:`drone_flight_controller`,title:`drone.drone_flight_controller.label`},{value:`drone_goggles`,title:`drone.drone_goggles.label`},{value:`fpv-controller`,title:`drone.contrib.type.fpv_controller`},{value:`fpv-camera`,title:`drone.contrib.type.fpv_camera`}]}]});export{r as default};
@@ -0,0 +1,7 @@
1
+ import{E as e,_ as t,i as n,t as r,w as i,z as a}from"./fields-BvFhu2Zp.js";import{a as o}from"./shelf-D-ifpKTJ.js";import{t as s}from"./extend-CbEbk8Xz.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,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatWidget-BxY9kQxi.js","assets/rolldown-runtime-QTnfLwEv.js","assets/i18n-vendor-T6EnJ_TL.js","assets/react-vendor-BskHO5hY.js","assets/x-CzSVfh-E.js","assets/clsx-CjueKrWZ.js","assets/icons-DBHj1PyA.js","assets/chevron-down-DgMjlPLK.js","assets/use-media-query-D1fYNz6w.js","assets/upload-C8XxQG6m.js","assets/square-DuQOQJGU.js","assets/src-oZtYFN79.js","assets/fields-C2JBwQro.js","assets/plugin-ui-CKd6q8ec.js","assets/api-DsJ6cAbe.js","assets/dialog-BKC2UrX0.js","assets/ui-vendor-EU9CHLyR.js","assets/development-olQNibq5.js","assets/micromark-extension-gfm-BUw6_ZLT.js","assets/space-separated-tokens-IJiqTQpk.js","assets/lib-Du7RHLba.js","assets/lib-sYoE14fC.js","assets/lib-B13BbhLB.js"])))=>i.map(i=>d[i]);
2
- import{f as e}from"./react-vendor-BskHO5hY.js";import"./src-oZtYFN79.js";import{n as t}from"./plugin-ui-CKd6q8ec.js";var n=t({slots:[{slot:`overlay`,id:`webchat`,load:()=>e(()=>import(`./ChatWidget-BxY9kQxi.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]))}]});export{n as default};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatWidget-CnETJEZj.js","assets/rolldown-runtime-QTnfLwEv.js","assets/i18n-vendor-T6EnJ_TL.js","assets/react-vendor-BskHO5hY.js","assets/x-CzSVfh-E.js","assets/clsx-CjueKrWZ.js","assets/icons-DBHj1PyA.js","assets/chevron-down-DgMjlPLK.js","assets/use-media-query-D1fYNz6w.js","assets/upload-C8XxQG6m.js","assets/square-DuQOQJGU.js","assets/src-R3C69mft.js","assets/fields-BvFhu2Zp.js","assets/plugin-ui-CKd6q8ec.js","assets/api-DsJ6cAbe.js","assets/dialog-BKC2UrX0.js","assets/ui-vendor-EU9CHLyR.js","assets/development-olQNibq5.js","assets/micromark-extension-gfm-BUw6_ZLT.js","assets/space-separated-tokens-IJiqTQpk.js","assets/lib-Du7RHLba.js","assets/lib-sYoE14fC.js","assets/lib-B13BbhLB.js"])))=>i.map(i=>d[i]);
2
+ import{f as e}from"./react-vendor-BskHO5hY.js";import"./src-R3C69mft.js";import{n as t}from"./plugin-ui-CKd6q8ec.js";var n=t({slots:[{slot:`overlay`,id:`webchat`,load:()=>e(()=>import(`./ChatWidget-CnETJEZj.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]))}]});export{n as default};
@@ -1,2 +1,2 @@
1
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{a as u,u as d}from"./Icon-Dydn049Z.js";import"./shared-vjdjsgQc.js";import{a as f,o as p}from"./chrome-Dxg72x2y.js";import{r as m,s as h}from"./shelf-ZF6KVxZd.js";import"./src-oZtYFN79.js";import{n as g}from"./plugin-ui-CKd6q8ec.js";import{t as _}from"./button-DaYjtbcx.js";import{t as v}from"./dispatch-CBwxUhZb.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.fields: shelf has no text field for its title (titleKey fell back to "id")`;let i=I(e,t);return i.length===0?`views.list.fields does not contain a kind:"geo" field`:i.length>1?`views.list.fields 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};
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{a as u,u as d}from"./Icon-Dydn049Z.js";import"./shared-vjdjsgQc.js";import{a as f,o as p}from"./chrome-BfURuVBW.js";import{r as m,s as h}from"./shelf-D-ifpKTJ.js";import"./src-R3C69mft.js";import{n as g}from"./plugin-ui-CKd6q8ec.js";import{t as _}from"./button-DaYjtbcx.js";import{t as v}from"./dispatch-B7QFSWwA.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};
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NoMac-DLu311Th.js","assets/react-vendor-BskHO5hY.js","assets/rolldown-runtime-QTnfLwEv.js","assets/i18n-vendor-T6EnJ_TL.js","assets/ScanSummary-CtIkC51I.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t}from"./i18n-vendor-T6EnJ_TL.js";import{f as n,t as r}from"./react-vendor-BskHO5hY.js";import{s as i}from"./input-group-Cp9n2MAA.js";import{C as a,D as o,E as s,T as c,b as l,r as u,w as d,x as f}from"./shared-vjdjsgQc.js";import"./src-oZtYFN79.js";import{n as p}from"./plugin-ui-CKd6q8ec.js";import{t as m}from"./json-CkyL3W27.js";import{t as h}from"./field-frame-B0aT2ksn.js";import{a as g,c as _,n as v,o as y,t as b}from"./data-size-FYe9GB-w.js";var x=e(t(),1);function S(e){let t=e.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);if(t){let e=t.slice(1).map(Number);return e.every(e=>e>=0&&e<=255)?{v:4,a:e}:null}try{let t=e;if(e.includes(`::`)){let[n,r]=e.split(`::`),i=n?n.split(`:`):[],a=r?r.split(`:`):[],o=8-i.length-a.length;t=[...i,...Array(o).fill(`0`),...a].join(`:`)}let n=t.split(`:`);if(n.length!==8)return null;let r=n.map(e=>parseInt(e,16));return r.some(e=>isNaN(e)||e<0||e>65535)?null:{v:6,a:r}}catch{return null}}function C(e){return e.v===4?e.a.join(`.`):e.a.map(e=>e.toString(16)).join(`:`)}function w(e){let t=e.lastIndexOf(`/`);if(t===-1)return null;let n=e.slice(0,t),r=e.slice(t+1),i=parseInt(r,10),a=S(n);if(!a||isNaN(i))return null;let o=a.v===4?32:128;return i<0||i>o?null:{...a,p:i}}function T(e){return`${C(e)}/${e.p}`}var E=r(),D=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-devices/src/fields/ui.tsx`;function O({value:e,onChange:t,parse:n,format:r,placeholder:a}){let o=(0,x.useMemo)(()=>{try{return JSON.parse(e)}catch{return null}},[e]),[s,c]=(0,x.useState)(o?r(o):e??``);(0,x.useEffect)(()=>{c(o?r(o):e||``)},[e,o]);let l=e=>{let r=e.trim(),i=n(r);t(i?JSON.stringify(i):r)};return(0,E.jsxDEV)(i,{value:s,placeholder:a,onChange:e=>c(e.target.value),onBlur:()=>l(s),onKeyDown:e=>{e.key===`Enter`&&l(s)}},void 0,!1,{fileName:D,lineNumber:51,columnNumber:5},this)}function k(e,t){return(0,E.jsxDEV)(f,{items:m(e,[]),content:e=>{let n=typeof e==`string`?m(e,null):e;return n&&typeof n==`object`?t(n):String(e)},reserveEditor:!0},void 0,!1,{fileName:D,lineNumber:68,columnNumber:5},this)}function A(e){return(0,E.jsxDEV)(h,{field:e.field,value:e.value,onChange:e.onChange,label:e.label,required:e.required,error:e.error,mode:e.mode,geom:`inline`,bare:e.bare,view:t=>e.field.hints.multiple===!0?k(t,e=>C(e)):(()=>{let e=m(t,null);if(e)return(0,E.jsxDEV)(`code`,{className:`font-mono text-sm`,children:C(e)},void 0,!1,{fileName:D,lineNumber:96,columnNumber:34},this);let n=String(t??``);return n?(0,E.jsxDEV)(`span`,{className:`text-muted`,children:n},void 0,!1,{fileName:D,lineNumber:98,columnNumber:28},this):(0,E.jsxDEV)(l,{},void 0,!1,{fileName:D,lineNumber:98,columnNumber:72},this)})(),edit:(t,n)=>e.field.hints.multiple===!0?(0,E.jsxDEV)(u,{value:String(t),onChange:n,validate:e=>S(e.trim())!==null,serialize:e=>{let t=S(e.trim());return t?JSON.stringify(t):null},display:e=>{try{return C(JSON.parse(e))}catch{return e}},renderInput:(e,t,n)=>(0,E.jsxDEV)(i,{value:e,placeholder:`192.168.1.1`,onChange:e=>t(e.target.value),className:`flex-1`,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),n())}},void 0,!1,{fileName:D,lineNumber:119,columnNumber:15},this)},void 0,!1,{fileName:D,lineNumber:103,columnNumber:11},this):(0,E.jsxDEV)(O,{value:String(t),onChange:n,parse:S,format:C,placeholder:`192.168.1.1`},void 0,!1,{fileName:D,lineNumber:134,columnNumber:11},this)},void 0,!1,{fileName:D,lineNumber:81,columnNumber:5},this)}function j({value:e}){try{return(0,E.jsxDEV)(`span`,{className:`truncate font-mono`,children:C(JSON.parse(String(e)))},void 0,!1,{fileName:D,lineNumber:149,columnNumber:12},this)}catch{return(0,E.jsxDEV)(`span`,{className:`truncate`,children:`—`},void 0,!1,{fileName:D,lineNumber:151,columnNumber:12},this)}}var M={kinds:[`ip`],Page:A,Inline:j};function N(e){return(0,E.jsxDEV)(h,{field:e.field,value:e.value,onChange:e.onChange,label:e.label,required:e.required,error:e.error,mode:e.mode,geom:`inline`,bare:e.bare,view:t=>e.field.hints.multiple===!0?k(t,e=>T(e)):(()=>{let e=m(t,null);if(e)return(0,E.jsxDEV)(`code`,{className:`font-mono text-sm`,children:T(e)},void 0,!1,{fileName:D,lineNumber:178,columnNumber:34},this);let n=String(t??``);return n?(0,E.jsxDEV)(`span`,{className:`text-muted`,children:n},void 0,!1,{fileName:D,lineNumber:180,columnNumber:28},this):(0,E.jsxDEV)(l,{},void 0,!1,{fileName:D,lineNumber:180,columnNumber:72},this)})(),edit:(t,n)=>e.field.hints.multiple===!0?(0,E.jsxDEV)(u,{value:String(t),onChange:n,validate:e=>w(e.trim())!==null,serialize:e=>{let t=w(e.trim());return t?JSON.stringify(t):null},display:e=>{try{return T(JSON.parse(e))}catch{return e}},renderInput:(e,t,n)=>(0,E.jsxDEV)(i,{value:e,placeholder:`192.168.1.0/24`,onChange:e=>t(e.target.value),className:`flex-1`,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),n())}},void 0,!1,{fileName:D,lineNumber:201,columnNumber:15},this)},void 0,!1,{fileName:D,lineNumber:185,columnNumber:11},this):(0,E.jsxDEV)(O,{value:String(t),onChange:n,parse:w,format:T,placeholder:`192.168.1.0/24`},void 0,!1,{fileName:D,lineNumber:216,columnNumber:11},this)},void 0,!1,{fileName:D,lineNumber:163,columnNumber:5},this)}function P({value:e}){try{return(0,E.jsxDEV)(`span`,{className:`truncate font-mono`,children:T(JSON.parse(String(e)))},void 0,!1,{fileName:D,lineNumber:231,columnNumber:12},this)}catch{return(0,E.jsxDEV)(`span`,{className:`truncate`,children:`—`},void 0,!1,{fileName:D,lineNumber:233,columnNumber:12},this)}}var F={kinds:[`cidr`],Page:N,Inline:P};function I({field:e,value:t,onChange:n}){let r=_(e),l=t===``?``:Number(t),[u,f]=(0,x.useState)(()=>l!==``&&Number(l)>0?v(Number(l),r)[0]:e.hints.unit??`GB`),p=g(r,u),m=l===``?``:Number((Number(l)/p).toFixed(4)),h=e=>Math.round(e*p);return(0,E.jsxDEV)(`div`,{className:`flex gap-2 min-w-0`,children:[(0,E.jsxDEV)(i,{type:`number`,className:`flex-1 min-w-0`,min:0,value:m,onChange:e=>n(e.target.value===``?``:String(h(Number(e.target.value))))},void 0,!1,{fileName:D,lineNumber:256,columnNumber:7},this),(0,E.jsxDEV)(a,{value:u,onValueChange:f,children:[(0,E.jsxDEV)(s,{className:`w-24`,children:(0,E.jsxDEV)(o,{},void 0,!1,{fileName:D,lineNumber:265,columnNumber:11},this)},void 0,!1,{fileName:D,lineNumber:264,columnNumber:9},this),(0,E.jsxDEV)(d,{children:b[r].map(([e])=>(0,E.jsxDEV)(c,{value:e,children:e},e,!1,{fileName:D,lineNumber:269,columnNumber:13},this))},void 0,!1,{fileName:D,lineNumber:267,columnNumber:9},this)]},void 0,!0,{fileName:D,lineNumber:263,columnNumber:7},this)]},void 0,!0,{fileName:D,lineNumber:255,columnNumber:5},this)}function L({value:e,system:t}){let n=y(e,t);return n?(0,E.jsxDEV)(`span`,{className:`tabular-nums`,children:n},void 0,!1,{fileName:D,lineNumber:281,columnNumber:14},this):(0,E.jsxDEV)(l,{},void 0,!1,{fileName:D,lineNumber:281,columnNumber:58},this)}function R(e){let t=_(e.field);return(0,E.jsxDEV)(h,{field:e.field,value:e.value,onChange:e.onChange,label:e.label,required:e.required,error:e.error,mode:e.mode,geom:`inline`,width:`w-48`,bare:e.bare,view:e=>(0,E.jsxDEV)(L,{value:e,system:t},void 0,!1,{fileName:D,lineNumber:298,columnNumber:20},this),edit:(t,n)=>(0,E.jsxDEV)(I,{field:e.field,value:String(t??``),onChange:n},void 0,!1,{fileName:D,lineNumber:300,columnNumber:9},this)},void 0,!1,{fileName:D,lineNumber:287,columnNumber:5},this)}function z({field:e,value:t}){return(0,E.jsxDEV)(L,{value:t,system:_(e)},void 0,!1,{fileName:D,lineNumber:307,columnNumber:10},this)}var B=p({shelf:{library:`devices`,shelf:`network`},renderers:[M,F,{kinds:[`dataSize`],Page:R,Inline:z}],templates:{"devices.scan.noMac":()=>n(()=>import(`./NoMac-DLu311Th.js`),__vite__mapDeps([0,1,2,3])),"devices.scan.summary":()=>n(()=>import(`./ScanSummary-CtIkC51I.js`),__vite__mapDeps([4,1,2,3]))}});export{B as default};
2
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t}from"./i18n-vendor-T6EnJ_TL.js";import{f as n,t as r}from"./react-vendor-BskHO5hY.js";import{s as i}from"./input-group-Cp9n2MAA.js";import{C as a,D as o,E as s,T as c,b as l,r as u,w as d,x as f}from"./shared-vjdjsgQc.js";import"./src-R3C69mft.js";import{n as p}from"./plugin-ui-CKd6q8ec.js";import{t as m}from"./json-CkyL3W27.js";import{t as h}from"./field-frame-lE36ax7A.js";import{a as g,c as _,n as v,o as y,t as b}from"./data-size-B44emc58.js";var x=e(t(),1);function S(e){let t=e.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);if(t){let e=t.slice(1).map(Number);return e.every(e=>e>=0&&e<=255)?{v:4,a:e}:null}try{let t=e;if(e.includes(`::`)){let[n,r]=e.split(`::`),i=n?n.split(`:`):[],a=r?r.split(`:`):[],o=8-i.length-a.length;t=[...i,...Array(o).fill(`0`),...a].join(`:`)}let n=t.split(`:`);if(n.length!==8)return null;let r=n.map(e=>parseInt(e,16));return r.some(e=>isNaN(e)||e<0||e>65535)?null:{v:6,a:r}}catch{return null}}function C(e){return e.v===4?e.a.join(`.`):e.a.map(e=>e.toString(16)).join(`:`)}function w(e){let t=e.lastIndexOf(`/`);if(t===-1)return null;let n=e.slice(0,t),r=e.slice(t+1),i=parseInt(r,10),a=S(n);if(!a||isNaN(i))return null;let o=a.v===4?32:128;return i<0||i>o?null:{...a,p:i}}function T(e){return`${C(e)}/${e.p}`}var E=r(),D=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-devices/src/fields/ui.tsx`;function O({value:e,onChange:t,parse:n,format:r,placeholder:a}){let o=(0,x.useMemo)(()=>{try{return JSON.parse(e)}catch{return null}},[e]),[s,c]=(0,x.useState)(o?r(o):e??``);(0,x.useEffect)(()=>{c(o?r(o):e||``)},[e,o]);let l=e=>{let r=e.trim(),i=n(r);t(i?JSON.stringify(i):r)};return(0,E.jsxDEV)(i,{value:s,placeholder:a,onChange:e=>c(e.target.value),onBlur:()=>l(s),onKeyDown:e=>{e.key===`Enter`&&l(s)}},void 0,!1,{fileName:D,lineNumber:51,columnNumber:5},this)}function k(e,t){return(0,E.jsxDEV)(f,{items:m(e,[]),content:e=>{let n=typeof e==`string`?m(e,null):e;return n&&typeof n==`object`?t(n):String(e)},reserveEditor:!0},void 0,!1,{fileName:D,lineNumber:68,columnNumber:5},this)}function A(e){return(0,E.jsxDEV)(h,{field:e.field,value:e.value,onChange:e.onChange,label:e.label,required:e.required,error:e.error,mode:e.mode,geom:`inline`,bare:e.bare,view:t=>e.field.hints.multiple===!0?k(t,e=>C(e)):(()=>{let e=m(t,null);if(e)return(0,E.jsxDEV)(`code`,{className:`font-mono text-sm`,children:C(e)},void 0,!1,{fileName:D,lineNumber:96,columnNumber:34},this);let n=String(t??``);return n?(0,E.jsxDEV)(`span`,{className:`text-muted`,children:n},void 0,!1,{fileName:D,lineNumber:98,columnNumber:28},this):(0,E.jsxDEV)(l,{},void 0,!1,{fileName:D,lineNumber:98,columnNumber:72},this)})(),edit:(t,n)=>e.field.hints.multiple===!0?(0,E.jsxDEV)(u,{value:String(t),onChange:n,validate:e=>S(e.trim())!==null,serialize:e=>{let t=S(e.trim());return t?JSON.stringify(t):null},display:e=>{try{return C(JSON.parse(e))}catch{return e}},renderInput:(e,t,n)=>(0,E.jsxDEV)(i,{value:e,placeholder:`192.168.1.1`,onChange:e=>t(e.target.value),className:`flex-1`,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),n())}},void 0,!1,{fileName:D,lineNumber:119,columnNumber:15},this)},void 0,!1,{fileName:D,lineNumber:103,columnNumber:11},this):(0,E.jsxDEV)(O,{value:String(t),onChange:n,parse:S,format:C,placeholder:`192.168.1.1`},void 0,!1,{fileName:D,lineNumber:134,columnNumber:11},this)},void 0,!1,{fileName:D,lineNumber:81,columnNumber:5},this)}function j({value:e}){try{return(0,E.jsxDEV)(`span`,{className:`truncate font-mono`,children:C(JSON.parse(String(e)))},void 0,!1,{fileName:D,lineNumber:149,columnNumber:12},this)}catch{return(0,E.jsxDEV)(`span`,{className:`truncate`,children:`—`},void 0,!1,{fileName:D,lineNumber:151,columnNumber:12},this)}}var M={kinds:[`ip`],Page:A,Inline:j};function N(e){return(0,E.jsxDEV)(h,{field:e.field,value:e.value,onChange:e.onChange,label:e.label,required:e.required,error:e.error,mode:e.mode,geom:`inline`,bare:e.bare,view:t=>e.field.hints.multiple===!0?k(t,e=>T(e)):(()=>{let e=m(t,null);if(e)return(0,E.jsxDEV)(`code`,{className:`font-mono text-sm`,children:T(e)},void 0,!1,{fileName:D,lineNumber:178,columnNumber:34},this);let n=String(t??``);return n?(0,E.jsxDEV)(`span`,{className:`text-muted`,children:n},void 0,!1,{fileName:D,lineNumber:180,columnNumber:28},this):(0,E.jsxDEV)(l,{},void 0,!1,{fileName:D,lineNumber:180,columnNumber:72},this)})(),edit:(t,n)=>e.field.hints.multiple===!0?(0,E.jsxDEV)(u,{value:String(t),onChange:n,validate:e=>w(e.trim())!==null,serialize:e=>{let t=w(e.trim());return t?JSON.stringify(t):null},display:e=>{try{return T(JSON.parse(e))}catch{return e}},renderInput:(e,t,n)=>(0,E.jsxDEV)(i,{value:e,placeholder:`192.168.1.0/24`,onChange:e=>t(e.target.value),className:`flex-1`,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),n())}},void 0,!1,{fileName:D,lineNumber:201,columnNumber:15},this)},void 0,!1,{fileName:D,lineNumber:185,columnNumber:11},this):(0,E.jsxDEV)(O,{value:String(t),onChange:n,parse:w,format:T,placeholder:`192.168.1.0/24`},void 0,!1,{fileName:D,lineNumber:216,columnNumber:11},this)},void 0,!1,{fileName:D,lineNumber:163,columnNumber:5},this)}function P({value:e}){try{return(0,E.jsxDEV)(`span`,{className:`truncate font-mono`,children:T(JSON.parse(String(e)))},void 0,!1,{fileName:D,lineNumber:231,columnNumber:12},this)}catch{return(0,E.jsxDEV)(`span`,{className:`truncate`,children:`—`},void 0,!1,{fileName:D,lineNumber:233,columnNumber:12},this)}}var F={kinds:[`cidr`],Page:N,Inline:P};function I({field:e,value:t,onChange:n}){let r=_(e),l=t===``?``:Number(t),[u,f]=(0,x.useState)(()=>l!==``&&Number(l)>0?v(Number(l),r)[0]:e.hints.unit??`GB`),p=g(r,u),m=l===``?``:Number((Number(l)/p).toFixed(4)),h=e=>Math.round(e*p);return(0,E.jsxDEV)(`div`,{className:`flex gap-2 min-w-0`,children:[(0,E.jsxDEV)(i,{type:`number`,className:`flex-1 min-w-0`,min:0,value:m,onChange:e=>n(e.target.value===``?``:String(h(Number(e.target.value))))},void 0,!1,{fileName:D,lineNumber:256,columnNumber:7},this),(0,E.jsxDEV)(a,{value:u,onValueChange:f,children:[(0,E.jsxDEV)(s,{className:`w-24`,children:(0,E.jsxDEV)(o,{},void 0,!1,{fileName:D,lineNumber:265,columnNumber:11},this)},void 0,!1,{fileName:D,lineNumber:264,columnNumber:9},this),(0,E.jsxDEV)(d,{children:b[r].map(([e])=>(0,E.jsxDEV)(c,{value:e,children:e},e,!1,{fileName:D,lineNumber:269,columnNumber:13},this))},void 0,!1,{fileName:D,lineNumber:267,columnNumber:9},this)]},void 0,!0,{fileName:D,lineNumber:263,columnNumber:7},this)]},void 0,!0,{fileName:D,lineNumber:255,columnNumber:5},this)}function L({value:e,system:t}){let n=y(e,t);return n?(0,E.jsxDEV)(`span`,{className:`tabular-nums`,children:n},void 0,!1,{fileName:D,lineNumber:281,columnNumber:14},this):(0,E.jsxDEV)(l,{},void 0,!1,{fileName:D,lineNumber:281,columnNumber:58},this)}function R(e){let t=_(e.field);return(0,E.jsxDEV)(h,{field:e.field,value:e.value,onChange:e.onChange,label:e.label,required:e.required,error:e.error,mode:e.mode,geom:`inline`,width:`w-48`,bare:e.bare,view:e=>(0,E.jsxDEV)(L,{value:e,system:t},void 0,!1,{fileName:D,lineNumber:298,columnNumber:20},this),edit:(t,n)=>(0,E.jsxDEV)(I,{field:e.field,value:String(t??``),onChange:n},void 0,!1,{fileName:D,lineNumber:300,columnNumber:9},this)},void 0,!1,{fileName:D,lineNumber:287,columnNumber:5},this)}function z({field:e,value:t}){return(0,E.jsxDEV)(L,{value:t,system:_(e)},void 0,!1,{fileName:D,lineNumber:307,columnNumber:10},this)}var B=p({shelf:{library:`devices`,shelf:`network`},renderers:[M,F,{kinds:[`dataSize`],Page:R,Inline:z}],templates:{"devices.scan.noMac":()=>n(()=>import(`./NoMac-DLu311Th.js`),__vite__mapDeps([0,1,2,3])),"devices.scan.summary":()=>n(()=>import(`./ScanSummary-CtIkC51I.js`),__vite__mapDeps([4,1,2,3]))}});export{B as default};
package/dist/index.html CHANGED
@@ -38,7 +38,7 @@
38
38
  }
39
39
  }
40
40
  </script>
41
- <script type="module" crossorigin src="/assets/index-BsQAt1OP.js"></script>
41
+ <script type="module" crossorigin src="/assets/index-Bg8TebNq.js"></script>
42
42
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-QTnfLwEv.js">
43
43
  <link rel="modulepreload" crossorigin href="/assets/i18n-vendor-T6EnJ_TL.js">
44
44
  <link rel="modulepreload" crossorigin href="/assets/react-vendor-BskHO5hY.js">
@@ -48,23 +48,23 @@
48
48
  <link rel="modulepreload" crossorigin href="/assets/icons-DBHj1PyA.js">
49
49
  <link rel="modulepreload" crossorigin href="/assets/square-DuQOQJGU.js">
50
50
  <link rel="modulepreload" crossorigin href="/assets/Icon-Dydn049Z.js">
51
- <link rel="modulepreload" crossorigin href="/assets/fields-C2JBwQro.js">
52
- <link rel="modulepreload" crossorigin href="/assets/src-oZtYFN79.js">
51
+ <link rel="modulepreload" crossorigin href="/assets/fields-BvFhu2Zp.js">
52
+ <link rel="modulepreload" crossorigin href="/assets/src-R3C69mft.js">
53
53
  <link rel="modulepreload" crossorigin href="/assets/ui-vendor-EU9CHLyR.js">
54
54
  <link rel="modulepreload" crossorigin href="/assets/button-DaYjtbcx.js">
55
- <link rel="modulepreload" crossorigin href="/assets/chrome-Dxg72x2y.js">
56
- <link rel="modulepreload" crossorigin href="/assets/shelf-ZF6KVxZd.js">
57
- <link rel="modulepreload" crossorigin href="/assets/field-frame-B0aT2ksn.js">
58
- <link rel="modulepreload" crossorigin href="/assets/extend-BEeQnsjj.js">
55
+ <link rel="modulepreload" crossorigin href="/assets/chrome-BfURuVBW.js">
56
+ <link rel="modulepreload" crossorigin href="/assets/shelf-D-ifpKTJ.js">
57
+ <link rel="modulepreload" crossorigin href="/assets/field-frame-lE36ax7A.js">
58
+ <link rel="modulepreload" crossorigin href="/assets/extend-CbEbk8Xz.js">
59
59
  <link rel="modulepreload" crossorigin href="/assets/plugin-q1oOYqt7.js">
60
60
  <link rel="modulepreload" crossorigin href="/assets/api-DsJ6cAbe.js">
61
61
  <link rel="modulepreload" crossorigin href="/assets/development-olQNibq5.js">
62
62
  <link rel="modulepreload" crossorigin href="/assets/micromark-extension-gfm-BUw6_ZLT.js">
63
- <link rel="modulepreload" crossorigin href="/assets/Toolbar-Ce0rNkTo.js">
63
+ <link rel="modulepreload" crossorigin href="/assets/Toolbar-_Bg6b3gy.js">
64
64
  <link rel="modulepreload" crossorigin href="/assets/PageBody-Y-cpiRMh.js">
65
- <link rel="modulepreload" crossorigin href="/assets/SettingsForm-BC0viqzW.js">
65
+ <link rel="modulepreload" crossorigin href="/assets/SettingsForm-xXNSptFG.js">
66
66
  <link rel="modulepreload" crossorigin href="/assets/input-group-Cp9n2MAA.js">
67
- <link rel="modulepreload" crossorigin href="/assets/ExtendReasonInfo-iAIjJ48b.js">
67
+ <link rel="modulepreload" crossorigin href="/assets/ExtendReasonInfo-DZyJKRHy.js">
68
68
  <link rel="modulepreload" crossorigin href="/assets/dialog-BKC2UrX0.js">
69
69
  <link rel="modulepreload" crossorigin href="/assets/ThemeSwitcher-D-6Vlu3T.js">
70
70
  <link rel="modulepreload" crossorigin href="/assets/chevron-down-DgMjlPLK.js">
@@ -77,11 +77,11 @@
77
77
  <link rel="modulepreload" crossorigin href="/assets/purify.es-sLXpNpJ5.js">
78
78
  <link rel="modulepreload" crossorigin href="/assets/combobox-Cqg-VPvV.js">
79
79
  <link rel="modulepreload" crossorigin href="/assets/countries-BlKrWFMP.js">
80
- <link rel="modulepreload" crossorigin href="/assets/dispatch-CBwxUhZb.js">
80
+ <link rel="modulepreload" crossorigin href="/assets/dispatch-B7QFSWwA.js">
81
81
  <link rel="modulepreload" crossorigin href="/assets/space-separated-tokens-IJiqTQpk.js">
82
82
  <link rel="modulepreload" crossorigin href="/assets/lib-BJGpevNH.js">
83
83
  <link rel="modulepreload" crossorigin href="/assets/auth-context-C1voH8bU.js">
84
- <link rel="stylesheet" crossorigin href="/assets/index-DFq4B5gv.css">
84
+ <link rel="stylesheet" crossorigin href="/assets/index-uwd-zQkM.css">
85
85
  </head>
86
86
  <body>
87
87
  <div id="root"></div>