@coffer-org/plugin-drone 1.1.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.
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@coffer-org/sdk/extend").ExtendDef;
2
+ export default _default;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drone/index.ts"],"names":[],"mappings":";AAOA,wBA2BG"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Extend: характеристики FPV-дрона.
3
+ * Прив'язується до things/item[type=drone].
4
+ */
5
+ import { defineExtend } from '@coffer-org/sdk/extend';
6
+ import { field } from '@coffer-org/sdk/fields';
7
+ export default defineExtend({
8
+ id: 'drone',
9
+ label: 'drone.drone.label',
10
+ icon: 'tb:drone',
11
+ attachTo: [{ vault: 'things', module: 'item' }],
12
+ showWhen: { type: 'drone' },
13
+ claude: `Технічні характеристики FPV-дрона. frame_size — розмір рами (напр. 3.5"). motors — мотори. firmware — прошивка (Betaflight/INAV).`,
14
+ fields: [
15
+ field.title({ key: 'name', label: 'core.fields.name' }),
16
+ field.string({ key: 'frame_size', label: 'drone.drone.fields.frame_size', config: { max: 40 } }),
17
+ field.string({ key: 'purpose', label: 'drone.drone.fields.purpose', config: { max: 200 } }),
18
+ field.string({ key: 'motors', label: 'drone.drone.fields.motors', config: { max: 150 } }),
19
+ field.string({ key: 'props', label: 'drone.drone.fields.props', config: { max: 80 } }),
20
+ field.string({ key: 'camera', label: 'drone.drone.fields.camera', config: { max: 100 } }),
21
+ field.string({ key: 'flight_controller', label: 'drone.drone.fields.flight_controller', config: { max: 100 } }),
22
+ field.string({ key: 'vtx', label: 'drone.drone.fields.vtx', config: { max: 100 } }),
23
+ field.string({ key: 'gps_module', label: 'drone.drone.fields.gps_module', config: { max: 100 } }),
24
+ field.string({ key: 'radio_link', label: 'drone.drone.fields.radio_link', config: { max: 80 } }),
25
+ field.string({ key: 'receiver', label: 'drone.drone.fields.receiver', config: { max: 80 } }),
26
+ field.string({ key: 'video_system', label: 'drone.drone.fields.video_system', config: { max: 80 } }),
27
+ field.string({ key: 'power_module', label: 'drone.drone.fields.power_module', config: { max: 60 } }),
28
+ field.string({ key: 'flight_time', label: 'drone.drone.fields.flight_time', config: { max: 60 } }),
29
+ field.string({ key: 'firmware', label: 'drone.drone.fields.firmware', config: { max: 100 } }),
30
+ field.string({ key: 'firmware_target', label: 'drone.drone.fields.firmware_target', config: { max: 80 } }),
31
+ field.text({ key: 'notes', label: 'drone.drone.fields.notes', max: 2000 }),
32
+ field.image({ key: 'photos', label: 'drone.drone.fields.photos', multiple: true }),
33
+ ],
34
+ });
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drone/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@coffer-org/sdk/extend").ExtendDef;
2
+ export default _default;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drone_battery/index.ts"],"names":[],"mappings":";AAOA,wBAgBG"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Extend: характеристики акумулятора дрона.
3
+ * Прив'язується до things/item[type=drone_battery].
4
+ */
5
+ import { defineExtend } from '@coffer-org/sdk/extend';
6
+ import { field } from '@coffer-org/sdk/fields';
7
+ export default defineExtend({
8
+ id: 'drone_battery',
9
+ label: 'drone.drone_battery.label',
10
+ icon: 'lucide:battery-full',
11
+ attachTo: [{ vault: 'things', module: 'item' }],
12
+ showWhen: { type: 'drone_battery' },
13
+ claude: `Характеристики акумулятора FPV-дрона. cells — кількість комірок (1S/3S/4S). capacity — ємність у мАг. c_rate — розрядний струм. auw — загальна вага збірки у польоті.`,
14
+ fields: [
15
+ field.title({ key: 'name', label: 'core.fields.name' }),
16
+ field.string({ key: 'brand', label: 'drone.drone_battery.fields.brand', config: { max: 80 } }),
17
+ field.string({ key: 'charger', label: 'drone.drone_battery.fields.charger', config: { max: 100 } }),
18
+ field.string({ key: 'cells', label: 'drone.drone_battery.fields.cells', config: { max: 10 } }),
19
+ field.measured({ key: 'capacity', label: 'drone.drone_battery.fields.capacity', options: 'energy' }),
20
+ field.string({ key: 'c_rate', label: 'drone.drone_battery.fields.c_rate', config: { max: 20 } }),
21
+ field.string({ key: 'auw', label: 'drone.drone_battery.fields.auw', config: { max: 40 } }),
22
+ ],
23
+ });
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drone_battery/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE/C,eAAe,YAAY,CAAC;IAC1B,EAAE,EAAE,eAAe;IACnB,KAAK,EAAE,2BAA2B;IAClC,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC/C,QAAQ,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;IACnC,MAAM,EAAE,uKAAuK;IAC/K,MAAM,EAAE;QACN,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QACvD,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,kCAAkC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAC9F,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,oCAAoC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;QACnG,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,kCAAkC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAC9F,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,qCAAqC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QACpG,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,mCAAmC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAChG,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,gCAAgC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;KAC3F;CACF,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@coffer-org/sdk/extend").ExtendDef;
2
+ export default _default;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drone_flight_controller/index.ts"],"names":[],"mappings":";AAOA,wBA4CG"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Extend: характеристики польотного контролера (FC) дрона.
3
+ * Прив'язується до things/item[type=drone_flight_controller].
4
+ */
5
+ import { defineExtend } from '@coffer-org/sdk/extend';
6
+ import { field } from '@coffer-org/sdk/fields';
7
+ export default defineExtend({
8
+ id: 'drone_flight_controller',
9
+ label: 'drone.drone_flight_controller.label',
10
+ icon: 'lucide:sliders-horizontal',
11
+ attachTo: [{ vault: 'things', module: 'item' }],
12
+ showWhen: { type: 'drone_flight_controller' },
13
+ claude: `Характеристики польотного контролера FPV-дрона. mcu — процесор (STM32F411/F405). gyro — гіроскоп. supported_firmware — сумісні прошивки (Betaflight, INAV).`,
14
+ fields: [
15
+ field.title({ key: 'name', label: 'core.fields.name' }),
16
+ field.string({ key: 'mcu', label: 'drone.drone_flight_controller.fields.mcu', config: { max: 60 } }),
17
+ field.string({ key: 'gyro', label: 'drone.drone_flight_controller.fields.gyro', config: { max: 60 } }),
18
+ field.boolean({ key: 'barometer', label: 'drone.drone_flight_controller.fields.barometer' }),
19
+ field.string({ key: 'osd_chip', label: 'drone.drone_flight_controller.fields.osd_chip', config: { max: 40 } }),
20
+ field.string({ key: 'blackbox', label: 'drone.drone_flight_controller.fields.blackbox', config: { max: 40 } }),
21
+ field.boolean({ key: 'bluetooth', label: 'drone.drone_flight_controller.fields.bluetooth' }),
22
+ field.boolean({ key: 'wifi', label: 'drone.drone_flight_controller.fields.wifi' }),
23
+ field.boolean({ key: 'current_sensor_input', label: 'drone.drone_flight_controller.fields.current_sensor_input' }),
24
+ field.string({
25
+ key: 'power_input',
26
+ label: 'drone.drone_flight_controller.fields.power_input',
27
+ config: { max: 40 },
28
+ }),
29
+ field.string({
30
+ key: 'constant_current',
31
+ label: 'drone.drone_flight_controller.fields.constant_current',
32
+ config: { max: 20 },
33
+ }),
34
+ field.string({
35
+ key: 'peak_current',
36
+ label: 'drone.drone_flight_controller.fields.peak_current',
37
+ config: { max: 20 },
38
+ }),
39
+ field.string({ key: 'bec_5v', label: 'drone.drone_flight_controller.fields.bec_5v', config: { max: 20 } }),
40
+ field.string({ key: 'bec_9v', label: 'drone.drone_flight_controller.fields.bec_9v', config: { max: 20 } }),
41
+ field.string({ key: 'mounting', label: 'drone.drone_flight_controller.fields.mounting', config: { max: 60 } }),
42
+ field.int({ key: 'uart_count', label: 'drone.drone_flight_controller.fields.uart_count', config: { min: 0 } }),
43
+ field.json({ key: 'supported_firmware', label: 'drone.drone_flight_controller.fields.supported_firmware' }),
44
+ field.string({
45
+ key: 'firmware_target',
46
+ label: 'drone.drone_flight_controller.fields.firmware_target',
47
+ config: { max: 80 },
48
+ }),
49
+ field.string({ key: 'build_role', label: 'drone.drone_flight_controller.fields.build_role', config: { max: 200 } }),
50
+ ],
51
+ });
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drone_flight_controller/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@coffer-org/sdk/extend").ExtendDef;
2
+ export default _default;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drone_goggles/index.ts"],"names":[],"mappings":";AAOA,wBA4BG"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Extend: характеристики FPV-окулярів (goggles) дрона.
3
+ * Прив'язується до things/item[type=drone_goggles].
4
+ */
5
+ import { defineExtend } from '@coffer-org/sdk/extend';
6
+ import { field } from '@coffer-org/sdk/fields';
7
+ export default defineExtend({
8
+ id: 'drone_goggles',
9
+ label: 'drone.drone_goggles.label',
10
+ icon: 'lucide:glasses',
11
+ attachTo: [{ vault: 'things', module: 'item' }],
12
+ showWhen: { type: 'drone_goggles' },
13
+ claude: `Характеристики FPV-окулярів. display_size — діагональ дисплея. frequency_bands — підтримувані радіосмуги. battery_life — час роботи від батареї.`,
14
+ fields: [
15
+ field.title({ key: 'name', label: 'core.fields.name' }),
16
+ field.string({ key: 'display_size', label: 'drone.drone_goggles.fields.display_size', config: { max: 20 } }),
17
+ field.string({
18
+ key: 'display_resolution',
19
+ label: 'drone.drone_goggles.fields.display_resolution',
20
+ config: { max: 40 },
21
+ }),
22
+ field.string({
23
+ key: 'display_brightness',
24
+ label: 'drone.drone_goggles.fields.display_brightness',
25
+ config: { max: 30 },
26
+ }),
27
+ field.string({ key: 'view_angle', label: 'drone.drone_goggles.fields.view_angle', config: { max: 20 } }),
28
+ field.string({ key: 'antenna', label: 'drone.drone_goggles.fields.antenna', config: { max: 80 } }),
29
+ field.json({ key: 'frequency_bands', label: 'drone.drone_goggles.fields.frequency_bands' }),
30
+ field.string({ key: 'battery', label: 'drone.drone_goggles.fields.battery', config: { max: 60 } }),
31
+ field.string({ key: 'battery_life', label: 'drone.drone_goggles.fields.battery_life', config: { max: 40 } }),
32
+ field.string({ key: 'charging', label: 'drone.drone_goggles.fields.charging', config: { max: 60 } }),
33
+ field.json({ key: 'band_channels', label: 'drone.drone_goggles.fields.band_channels' }),
34
+ ],
35
+ });
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drone_goggles/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE/C,eAAe,YAAY,CAAC;IAC1B,EAAE,EAAE,eAAe;IACnB,KAAK,EAAE,2BAA2B;IAClC,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC/C,QAAQ,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;IACnC,MAAM,EAAE,kJAAkJ;IAC1J,MAAM,EAAE;QACN,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QACvD,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,yCAAyC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAC5G,KAAK,CAAC,MAAM,CAAC;YACX,GAAG,EAAE,oBAAoB;YACzB,KAAK,EAAE,+CAA+C;YACtD,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;SACpB,CAAC;QACF,KAAK,CAAC,MAAM,CAAC;YACX,GAAG,EAAE,oBAAoB;YACzB,KAAK,EAAE,+CAA+C;YACtD,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;SACpB,CAAC;QACF,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,uCAAuC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QACxG,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,oCAAoC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAClG,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;QAC3F,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,oCAAoC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAClG,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,yCAAyC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAC5G,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,qCAAqC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QACpG,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;KACxF;CACF,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@coffer-org/sdk/extend").ExtendDef;
2
+ export default _default;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drone_gps/index.ts"],"names":[],"mappings":";AAOA,wBAoBG"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Extend: характеристики GPS-модуля дрона.
3
+ * Прив'язується до things/item[type=drone_gps_module].
4
+ */
5
+ import { defineExtend } from '@coffer-org/sdk/extend';
6
+ import { field } from '@coffer-org/sdk/fields';
7
+ export default defineExtend({
8
+ id: 'drone_gps',
9
+ label: 'drone.drone_gps.label',
10
+ icon: 'lucide:satellite',
11
+ attachTo: [{ vault: 'things', module: 'item' }],
12
+ showWhen: { type: 'drone_gps_module' },
13
+ claude: `Характеристики GPS-модуля FPV-дрона. gnss_chip — чіпсет. compass_chip — магнітометр. satellite_systems — підтримувані супутникові системи.`,
14
+ fields: [
15
+ field.title({ key: 'name', label: 'core.fields.name' }),
16
+ field.string({ key: 'gnss_chip', label: 'drone.drone_gps.fields.gnss_chip', config: { max: 80 } }),
17
+ field.string({ key: 'compass_chip', label: 'drone.drone_gps.fields.compass_chip', config: { max: 60 } }),
18
+ field.boolean({ key: 'barometer', label: 'drone.drone_gps.fields.barometer' }),
19
+ field.string({ key: 'interface', label: 'drone.drone_gps.fields.interface', config: { max: 40 } }),
20
+ field.string({ key: 'input_voltage', label: 'drone.drone_gps.fields.input_voltage', config: { max: 40 } }),
21
+ field.int({ key: 'update_rate_hz', label: 'drone.drone_gps.fields.update_rate_hz', config: { min: 0 } }),
22
+ field.int({ key: 'receiving_channels', label: 'drone.drone_gps.fields.receiving_channels', config: { min: 0 } }),
23
+ field.json({ key: 'supported_protocols', label: 'drone.drone_gps.fields.supported_protocols' }),
24
+ field.json({ key: 'baud_rates', label: 'drone.drone_gps.fields.baud_rates' }),
25
+ field.json({ key: 'satellite_systems', label: 'drone.drone_gps.fields.satellite_systems' }),
26
+ ],
27
+ });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drone_gps/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE/C,eAAe,YAAY,CAAC;IAC1B,EAAE,EAAE,WAAW;IACf,KAAK,EAAE,uBAAuB;IAC9B,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC/C,QAAQ,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;IACtC,MAAM,EAAE,4IAA4I;IACpJ,MAAM,EAAE;QACN,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QACvD,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,kCAAkC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAClG,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,qCAAqC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QACxG,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;QAC9E,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,kCAAkC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAClG,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,sCAAsC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAC1G,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,uCAAuC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACxG,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,2CAA2C,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAChH,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;QAC/F,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;KAC5F;CACF,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@coffer-org/sdk/extend").ExtendDef;
2
+ export default _default;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drone_vtx/index.ts"],"names":[],"mappings":";AAOA,wBAmBG"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Extend: характеристики відеопередавача (VTX) дрона.
3
+ * Прив'язується до things/item[type=drone_vtx].
4
+ */
5
+ import { defineExtend } from '@coffer-org/sdk/extend';
6
+ import { field } from '@coffer-org/sdk/fields';
7
+ export default defineExtend({
8
+ id: 'drone_vtx',
9
+ label: 'drone.drone_vtx.label',
10
+ icon: 'lucide:radio-tower',
11
+ attachTo: [{ vault: 'things', module: 'item' }],
12
+ showWhen: { type: 'drone_vtx' },
13
+ claude: `Характеристики FPV відеопередавача. input_voltage — вхідна напруга. output_power — рівні потужності. protocol — протокол управління (IRC Tramp, SmartAudio). channel_count — кількість каналів.`,
14
+ fields: [
15
+ field.title({ key: 'name', label: 'core.fields.name' }),
16
+ field.string({ key: 'input_voltage', label: 'drone.drone_vtx.fields.input_voltage', config: { max: 40 } }),
17
+ field.string({ key: 'output_power', label: 'drone.drone_vtx.fields.output_power', config: { max: 100 } }),
18
+ field.string({ key: 'protocol', label: 'drone.drone_vtx.fields.protocol', config: { max: 60 } }),
19
+ field.string({ key: 'antenna_interface', label: 'drone.drone_vtx.fields.antenna_interface', config: { max: 40 } }),
20
+ field.int({ key: 'channel_count', label: 'drone.drone_vtx.fields.channel_count', config: { min: 0 } }),
21
+ field.string({ key: 'mounting', label: 'drone.drone_vtx.fields.mounting', config: { max: 80 } }),
22
+ field.boolean({ key: 'built_in_microphone', label: 'drone.drone_vtx.fields.built_in_microphone' }),
23
+ field.json({ key: 'frequency_groups', label: 'drone.drone_vtx.fields.frequency_groups' }),
24
+ field.json({ key: 'output_power_levels', label: 'drone.drone_vtx.fields.output_power_levels' }),
25
+ ],
26
+ });
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drone_vtx/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE/C,eAAe,YAAY,CAAC;IAC1B,EAAE,EAAE,WAAW;IACf,KAAK,EAAE,uBAAuB;IAC9B,IAAI,EAAE,oBAAoB;IAC1B,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC/C,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;IAC/B,MAAM,EAAE,iMAAiM;IACzM,MAAM,EAAE;QACN,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QACvD,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,sCAAsC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAC1G,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,qCAAqC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;QACzG,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,iCAAiC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAChG,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,0CAA0C,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAClH,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,sCAAsC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACtG,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,iCAAiC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QAChG,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;QAClG,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;QACzF,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;KAChG;CACF,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@coffer-org/sdk/plugin").PluginManifest;
2
+ export default _default;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAQA,wBAwBG"}
package/dist/index.js ADDED
@@ -0,0 +1,33 @@
1
+ import { definePlugin } from '@coffer-org/sdk/plugin';
2
+ import drone from './drone/index.js';
3
+ import droneBattery from './drone_battery/index.js';
4
+ import droneVtx from './drone_vtx/index.js';
5
+ import droneGps from './drone_gps/index.js';
6
+ import droneFC from './drone_flight_controller/index.js';
7
+ import droneGoggles from './drone_goggles/index.js';
8
+ export default definePlugin({
9
+ id: 'drone',
10
+ version: '1.0.0',
11
+ dependsOn: ['things'],
12
+ extends_: [drone, droneBattery, droneVtx, droneGps, droneFC, droneGoggles],
13
+ fieldContribs: [
14
+ {
15
+ vault: 'things',
16
+ module: 'item',
17
+ field: 'type',
18
+ options: [
19
+ // Типи з власними extend-полями (showWhen прив'язує секцію до типу).
20
+ { value: 'drone', title: 'drone.drone.label' },
21
+ { value: 'drone_battery', title: 'drone.drone_battery.label' },
22
+ { value: 'drone_vtx', title: 'drone.drone_vtx.label' },
23
+ { value: 'drone_gps_module', title: 'drone.drone_gps.label' },
24
+ { value: 'drone_flight_controller', title: 'drone.drone_flight_controller.label' },
25
+ { value: 'drone_goggles', title: 'drone.drone_goggles.label' },
26
+ // Типи-"батьки" без власних extend-полів (просто класифікатор)
27
+ { value: 'fpv-controller', title: 'drone.contrib.type.fpv_controller' },
28
+ { value: 'fpv-camera', title: 'drone.contrib.type.fpv_camera' },
29
+ ],
30
+ },
31
+ ],
32
+ });
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,MAAM,kBAAkB,CAAC;AACrC,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,OAAO,MAAM,oCAAoC,CAAC;AACzD,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAEpD,eAAe,YAAY,CAAC;IAC1B,EAAE,EAAE,OAAO;IACX,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC;IAC1E,aAAa,EAAE;QACb;YACE,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,MAAM;YACb,OAAO,EAAE;gBACP,qEAAqE;gBACrE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE;gBAC9C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,2BAA2B,EAAE;gBAC9D,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,uBAAuB,EAAE;gBACtD,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,uBAAuB,EAAE;gBAC7D,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,qCAAqC,EAAE;gBAClF,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,2BAA2B,EAAE;gBAC9D,+DAA+D;gBAC/D,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,mCAAmC,EAAE;gBACvE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,+BAA+B,EAAE;aAChE;SACF;KACF;CACF,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@coffer-org/plugin-drone",
3
+ "version": "1.1.0",
4
+ "type": "module",
5
+ "files": [
6
+ "dist"
7
+ ],
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
14
+ "scripts": {
15
+ "build": "tsc -b tsconfig.build.json",
16
+ "prepack": "npm run build && node ../../scripts/swap-exports.mjs dist",
17
+ "postpack": "node ../../scripts/swap-exports.mjs src"
18
+ },
19
+ "dependencies": {
20
+ "@coffer-org/sdk": "^1.1.0"
21
+ }
22
+ }