@pipe0/react 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +119 -0
- package/README.md +172 -0
- package/dist/components/compound/pipe-catalog/active-filters.d.mts +26 -0
- package/dist/components/compound/pipe-catalog/active-filters.d.mts.map +1 -0
- package/dist/components/compound/pipe-catalog/active-filters.mjs +47 -0
- package/dist/components/compound/pipe-catalog/active-filters.mjs.map +1 -0
- package/dist/components/compound/pipe-catalog/card.d.mts +30 -0
- package/dist/components/compound/pipe-catalog/card.d.mts.map +1 -0
- package/dist/components/compound/pipe-catalog/card.mjs +77 -0
- package/dist/components/compound/pipe-catalog/card.mjs.map +1 -0
- package/dist/components/compound/pipe-catalog/category-filter.d.mts +30 -0
- package/dist/components/compound/pipe-catalog/category-filter.d.mts.map +1 -0
- package/dist/components/compound/pipe-catalog/category-filter.mjs +56 -0
- package/dist/components/compound/pipe-catalog/category-filter.mjs.map +1 -0
- package/dist/components/compound/pipe-catalog/column-filter.d.mts +40 -0
- package/dist/components/compound/pipe-catalog/column-filter.d.mts.map +1 -0
- package/dist/components/compound/pipe-catalog/column-filter.mjs +66 -0
- package/dist/components/compound/pipe-catalog/column-filter.mjs.map +1 -0
- package/dist/components/compound/pipe-catalog/column-filters.d.mts +16 -0
- package/dist/components/compound/pipe-catalog/column-filters.d.mts.map +1 -0
- package/dist/components/compound/pipe-catalog/column-filters.mjs +21 -0
- package/dist/components/compound/pipe-catalog/column-filters.mjs.map +1 -0
- package/dist/components/compound/pipe-catalog/empty.d.mts +22 -0
- package/dist/components/compound/pipe-catalog/empty.d.mts.map +1 -0
- package/dist/components/compound/pipe-catalog/empty.mjs +31 -0
- package/dist/components/compound/pipe-catalog/empty.mjs.map +1 -0
- package/dist/components/compound/pipe-catalog/index.d.mts +13 -0
- package/dist/components/compound/pipe-catalog/index.mjs +15 -0
- package/dist/components/compound/pipe-catalog/input-field-filter.d.mts +22 -0
- package/dist/components/compound/pipe-catalog/input-field-filter.d.mts.map +1 -0
- package/dist/components/compound/pipe-catalog/input-field-filter.mjs +22 -0
- package/dist/components/compound/pipe-catalog/input-field-filter.mjs.map +1 -0
- package/dist/components/compound/pipe-catalog/list.d.mts +34 -0
- package/dist/components/compound/pipe-catalog/list.d.mts.map +1 -0
- package/dist/components/compound/pipe-catalog/list.mjs +29 -0
- package/dist/components/compound/pipe-catalog/list.mjs.map +1 -0
- package/dist/components/compound/pipe-catalog/output-field-filter.d.mts +22 -0
- package/dist/components/compound/pipe-catalog/output-field-filter.d.mts.map +1 -0
- package/dist/components/compound/pipe-catalog/output-field-filter.mjs +22 -0
- package/dist/components/compound/pipe-catalog/output-field-filter.mjs.map +1 -0
- package/dist/components/compound/pipe-catalog/provider-filter.d.mts +22 -0
- package/dist/components/compound/pipe-catalog/provider-filter.d.mts.map +1 -0
- package/dist/components/compound/pipe-catalog/provider-filter.mjs +29 -0
- package/dist/components/compound/pipe-catalog/provider-filter.mjs.map +1 -0
- package/dist/components/compound/pipe-catalog/root.d.mts +47 -0
- package/dist/components/compound/pipe-catalog/root.d.mts.map +1 -0
- package/dist/components/compound/pipe-catalog/root.mjs +85 -0
- package/dist/components/compound/pipe-catalog/root.mjs.map +1 -0
- package/dist/components/compound/pipe-catalog/search-filter.d.mts +24 -0
- package/dist/components/compound/pipe-catalog/search-filter.d.mts.map +1 -0
- package/dist/components/compound/pipe-catalog/search-filter.mjs +46 -0
- package/dist/components/compound/pipe-catalog/search-filter.mjs.map +1 -0
- package/dist/components/compound/pipe-catalog/tag-filter.d.mts +22 -0
- package/dist/components/compound/pipe-catalog/tag-filter.d.mts.map +1 -0
- package/dist/components/compound/pipe-catalog/tag-filter.mjs +22 -0
- package/dist/components/compound/pipe-catalog/tag-filter.mjs.map +1 -0
- package/dist/components/compound/pipe-form/content.d.mts +18 -0
- package/dist/components/compound/pipe-form/content.d.mts.map +1 -0
- package/dist/components/compound/pipe-form/content.mjs +45 -0
- package/dist/components/compound/pipe-form/content.mjs.map +1 -0
- package/dist/components/compound/pipe-form/field.d.mts +17 -0
- package/dist/components/compound/pipe-form/field.d.mts.map +1 -0
- package/dist/components/compound/pipe-form/field.mjs +21 -0
- package/dist/components/compound/pipe-form/field.mjs.map +1 -0
- package/dist/components/compound/pipe-form/footer.d.mts +14 -0
- package/dist/components/compound/pipe-form/footer.d.mts.map +1 -0
- package/dist/components/compound/pipe-form/footer.mjs +14 -0
- package/dist/components/compound/pipe-form/footer.mjs.map +1 -0
- package/dist/components/compound/pipe-form/group.d.mts +13 -0
- package/dist/components/compound/pipe-form/group.d.mts.map +1 -0
- package/dist/components/compound/pipe-form/group.mjs +17 -0
- package/dist/components/compound/pipe-form/group.mjs.map +1 -0
- package/dist/components/compound/pipe-form/header.d.mts +14 -0
- package/dist/components/compound/pipe-form/header.d.mts.map +1 -0
- package/dist/components/compound/pipe-form/header.mjs +14 -0
- package/dist/components/compound/pipe-form/header.mjs.map +1 -0
- package/dist/components/compound/pipe-form/index.d.mts +9 -0
- package/dist/components/compound/pipe-form/index.mjs +11 -0
- package/dist/components/compound/pipe-form/root.d.mts +56 -0
- package/dist/components/compound/pipe-form/root.d.mts.map +1 -0
- package/dist/components/compound/pipe-form/root.mjs +98 -0
- package/dist/components/compound/pipe-form/root.mjs.map +1 -0
- package/dist/components/compound/pipe-form/section.d.mts +13 -0
- package/dist/components/compound/pipe-form/section.d.mts.map +1 -0
- package/dist/components/compound/pipe-form/section.mjs +17 -0
- package/dist/components/compound/pipe-form/section.mjs.map +1 -0
- package/dist/components/compound/pipe-form/submit-button.d.mts +9 -0
- package/dist/components/compound/pipe-form/submit-button.d.mts.map +1 -0
- package/dist/components/compound/pipe-form/submit-button.mjs +17 -0
- package/dist/components/compound/pipe-form/submit-button.mjs.map +1 -0
- package/dist/components/compound/pipe-form/title.d.mts +16 -0
- package/dist/components/compound/pipe-form/title.d.mts.map +1 -0
- package/dist/components/compound/pipe-form/title.mjs +14 -0
- package/dist/components/compound/pipe-form/title.mjs.map +1 -0
- package/dist/components/compound/search-catalog/active-filters.d.mts +26 -0
- package/dist/components/compound/search-catalog/active-filters.d.mts.map +1 -0
- package/dist/components/compound/search-catalog/active-filters.mjs +46 -0
- package/dist/components/compound/search-catalog/active-filters.mjs.map +1 -0
- package/dist/components/compound/search-catalog/card.d.mts +30 -0
- package/dist/components/compound/search-catalog/card.d.mts.map +1 -0
- package/dist/components/compound/search-catalog/card.mjs +77 -0
- package/dist/components/compound/search-catalog/card.mjs.map +1 -0
- package/dist/components/compound/search-catalog/category-filter.d.mts +29 -0
- package/dist/components/compound/search-catalog/category-filter.d.mts.map +1 -0
- package/dist/components/compound/search-catalog/category-filter.mjs +51 -0
- package/dist/components/compound/search-catalog/category-filter.mjs.map +1 -0
- package/dist/components/compound/search-catalog/column-filter.d.mts +40 -0
- package/dist/components/compound/search-catalog/column-filter.d.mts.map +1 -0
- package/dist/components/compound/search-catalog/column-filter.mjs +63 -0
- package/dist/components/compound/search-catalog/column-filter.mjs.map +1 -0
- package/dist/components/compound/search-catalog/column-filters.d.mts +15 -0
- package/dist/components/compound/search-catalog/column-filters.d.mts.map +1 -0
- package/dist/components/compound/search-catalog/column-filters.mjs +16 -0
- package/dist/components/compound/search-catalog/column-filters.mjs.map +1 -0
- package/dist/components/compound/search-catalog/empty.d.mts +22 -0
- package/dist/components/compound/search-catalog/empty.d.mts.map +1 -0
- package/dist/components/compound/search-catalog/empty.mjs +31 -0
- package/dist/components/compound/search-catalog/empty.mjs.map +1 -0
- package/dist/components/compound/search-catalog/index.d.mts +12 -0
- package/dist/components/compound/search-catalog/index.mjs +14 -0
- package/dist/components/compound/search-catalog/list.d.mts +19 -0
- package/dist/components/compound/search-catalog/list.d.mts.map +1 -0
- package/dist/components/compound/search-catalog/list.mjs +29 -0
- package/dist/components/compound/search-catalog/list.mjs.map +1 -0
- package/dist/components/compound/search-catalog/output-field-filter.d.mts +22 -0
- package/dist/components/compound/search-catalog/output-field-filter.d.mts.map +1 -0
- package/dist/components/compound/search-catalog/output-field-filter.mjs +22 -0
- package/dist/components/compound/search-catalog/output-field-filter.mjs.map +1 -0
- package/dist/components/compound/search-catalog/provider-filter.d.mts +22 -0
- package/dist/components/compound/search-catalog/provider-filter.d.mts.map +1 -0
- package/dist/components/compound/search-catalog/provider-filter.mjs +29 -0
- package/dist/components/compound/search-catalog/provider-filter.mjs.map +1 -0
- package/dist/components/compound/search-catalog/root.d.mts +33 -0
- package/dist/components/compound/search-catalog/root.d.mts.map +1 -0
- package/dist/components/compound/search-catalog/root.mjs +74 -0
- package/dist/components/compound/search-catalog/root.mjs.map +1 -0
- package/dist/components/compound/search-catalog/search-filter.d.mts +24 -0
- package/dist/components/compound/search-catalog/search-filter.d.mts.map +1 -0
- package/dist/components/compound/search-catalog/search-filter.mjs +46 -0
- package/dist/components/compound/search-catalog/search-filter.mjs.map +1 -0
- package/dist/components/compound/search-catalog/tag-filter.d.mts +22 -0
- package/dist/components/compound/search-catalog/tag-filter.d.mts.map +1 -0
- package/dist/components/compound/search-catalog/tag-filter.mjs +22 -0
- package/dist/components/compound/search-catalog/tag-filter.mjs.map +1 -0
- package/dist/components/compound/search-form/content.d.mts +18 -0
- package/dist/components/compound/search-form/content.d.mts.map +1 -0
- package/dist/components/compound/search-form/content.mjs +45 -0
- package/dist/components/compound/search-form/content.mjs.map +1 -0
- package/dist/components/compound/search-form/field.d.mts +17 -0
- package/dist/components/compound/search-form/field.d.mts.map +1 -0
- package/dist/components/compound/search-form/field.mjs +21 -0
- package/dist/components/compound/search-form/field.mjs.map +1 -0
- package/dist/components/compound/search-form/footer.d.mts +14 -0
- package/dist/components/compound/search-form/footer.d.mts.map +1 -0
- package/dist/components/compound/search-form/footer.mjs +14 -0
- package/dist/components/compound/search-form/footer.mjs.map +1 -0
- package/dist/components/compound/search-form/group.d.mts +13 -0
- package/dist/components/compound/search-form/group.d.mts.map +1 -0
- package/dist/components/compound/search-form/group.mjs +17 -0
- package/dist/components/compound/search-form/group.mjs.map +1 -0
- package/dist/components/compound/search-form/header.d.mts +14 -0
- package/dist/components/compound/search-form/header.d.mts.map +1 -0
- package/dist/components/compound/search-form/header.mjs +14 -0
- package/dist/components/compound/search-form/header.mjs.map +1 -0
- package/dist/components/compound/search-form/index.d.mts +9 -0
- package/dist/components/compound/search-form/index.mjs +11 -0
- package/dist/components/compound/search-form/root.d.mts +45 -0
- package/dist/components/compound/search-form/root.d.mts.map +1 -0
- package/dist/components/compound/search-form/root.mjs +90 -0
- package/dist/components/compound/search-form/root.mjs.map +1 -0
- package/dist/components/compound/search-form/section.d.mts +13 -0
- package/dist/components/compound/search-form/section.d.mts.map +1 -0
- package/dist/components/compound/search-form/section.mjs +17 -0
- package/dist/components/compound/search-form/section.mjs.map +1 -0
- package/dist/components/compound/search-form/submit-button.d.mts +9 -0
- package/dist/components/compound/search-form/submit-button.d.mts.map +1 -0
- package/dist/components/compound/search-form/submit-button.mjs +17 -0
- package/dist/components/compound/search-form/submit-button.mjs.map +1 -0
- package/dist/components/compound/search-form/title.d.mts +16 -0
- package/dist/components/compound/search-form/title.d.mts.map +1 -0
- package/dist/components/compound/search-form/title.mjs +14 -0
- package/dist/components/compound/search-form/title.mjs.map +1 -0
- package/dist/components/compound/searches-catalog/active-filters.d.mts +26 -0
- package/dist/components/compound/searches-catalog/active-filters.d.mts.map +1 -0
- package/dist/components/compound/searches-catalog/active-filters.mjs +46 -0
- package/dist/components/compound/searches-catalog/active-filters.mjs.map +1 -0
- package/dist/components/compound/searches-catalog/card.d.mts +22 -0
- package/dist/components/compound/searches-catalog/card.d.mts.map +1 -0
- package/dist/components/compound/searches-catalog/card.mjs +70 -0
- package/dist/components/compound/searches-catalog/card.mjs.map +1 -0
- package/dist/components/compound/searches-catalog/category-filter.d.mts +29 -0
- package/dist/components/compound/searches-catalog/category-filter.d.mts.map +1 -0
- package/dist/components/compound/searches-catalog/category-filter.mjs +51 -0
- package/dist/components/compound/searches-catalog/category-filter.mjs.map +1 -0
- package/dist/components/compound/searches-catalog/column-filter.d.mts +31 -0
- package/dist/components/compound/searches-catalog/column-filter.d.mts.map +1 -0
- package/dist/components/compound/searches-catalog/column-filter.mjs +58 -0
- package/dist/components/compound/searches-catalog/column-filter.mjs.map +1 -0
- package/dist/components/compound/searches-catalog/column-filters.d.mts +15 -0
- package/dist/components/compound/searches-catalog/column-filters.d.mts.map +1 -0
- package/dist/components/compound/searches-catalog/column-filters.mjs +16 -0
- package/dist/components/compound/searches-catalog/column-filters.mjs.map +1 -0
- package/dist/components/compound/searches-catalog/empty.d.mts +22 -0
- package/dist/components/compound/searches-catalog/empty.d.mts.map +1 -0
- package/dist/components/compound/searches-catalog/empty.mjs +31 -0
- package/dist/components/compound/searches-catalog/empty.mjs.map +1 -0
- package/dist/components/compound/searches-catalog/index.d.mts +12 -0
- package/dist/components/compound/searches-catalog/index.mjs +14 -0
- package/dist/components/compound/searches-catalog/list.d.mts +19 -0
- package/dist/components/compound/searches-catalog/list.d.mts.map +1 -0
- package/dist/components/compound/searches-catalog/list.mjs +29 -0
- package/dist/components/compound/searches-catalog/list.mjs.map +1 -0
- package/dist/components/compound/searches-catalog/output-field-filter.d.mts +22 -0
- package/dist/components/compound/searches-catalog/output-field-filter.d.mts.map +1 -0
- package/dist/components/compound/searches-catalog/output-field-filter.mjs +22 -0
- package/dist/components/compound/searches-catalog/output-field-filter.mjs.map +1 -0
- package/dist/components/compound/searches-catalog/provider-filter.d.mts +22 -0
- package/dist/components/compound/searches-catalog/provider-filter.d.mts.map +1 -0
- package/dist/components/compound/searches-catalog/provider-filter.mjs +29 -0
- package/dist/components/compound/searches-catalog/provider-filter.mjs.map +1 -0
- package/dist/components/compound/searches-catalog/root.d.mts +33 -0
- package/dist/components/compound/searches-catalog/root.d.mts.map +1 -0
- package/dist/components/compound/searches-catalog/root.mjs +74 -0
- package/dist/components/compound/searches-catalog/root.mjs.map +1 -0
- package/dist/components/compound/searches-catalog/search-filter.d.mts +24 -0
- package/dist/components/compound/searches-catalog/search-filter.d.mts.map +1 -0
- package/dist/components/compound/searches-catalog/search-filter.mjs +46 -0
- package/dist/components/compound/searches-catalog/search-filter.mjs.map +1 -0
- package/dist/components/compound/searches-catalog/tag-filter.d.mts +22 -0
- package/dist/components/compound/searches-catalog/tag-filter.d.mts.map +1 -0
- package/dist/components/compound/searches-catalog/tag-filter.mjs +22 -0
- package/dist/components/compound/searches-catalog/tag-filter.mjs.map +1 -0
- package/dist/components/defaults/adapters/async-include-exclude-select-input.mjs +32 -0
- package/dist/components/defaults/adapters/async-include-exclude-select-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/async-multi-select-input.mjs +26 -0
- package/dist/components/defaults/adapters/async-multi-select-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/boolean-input.mjs +82 -0
- package/dist/components/defaults/adapters/boolean-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/connector-input.mjs +94 -0
- package/dist/components/defaults/adapters/connector-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/context-select-input.mjs +74 -0
- package/dist/components/defaults/adapters/context-select-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/cursor-pagination-input.mjs +29 -0
- package/dist/components/defaults/adapters/cursor-pagination-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/date-range-input.mjs +53 -0
- package/dist/components/defaults/adapters/date-range-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/exact-range-input.mjs +75 -0
- package/dist/components/defaults/adapters/exact-range-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/fields-select-input.mjs +25 -0
- package/dist/components/defaults/adapters/fields-select-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/include-exclude-input.mjs +33 -0
- package/dist/components/defaults/adapters/include-exclude-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/include-exclude-select-input.mjs +36 -0
- package/dist/components/defaults/adapters/include-exclude-select-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/index.d.mts +11 -0
- package/dist/components/defaults/adapters/index.d.mts.map +1 -0
- package/dist/components/defaults/adapters/index.mjs +73 -0
- package/dist/components/defaults/adapters/index.mjs.map +1 -0
- package/dist/components/defaults/adapters/int-input.mjs +16 -0
- package/dist/components/defaults/adapters/int-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/json-extraction-input.mjs +333 -0
- package/dist/components/defaults/adapters/json-extraction-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/json-schema-input.mjs +30 -0
- package/dist/components/defaults/adapters/json-schema-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/key-value-list-input.mjs +100 -0
- package/dist/components/defaults/adapters/key-value-list-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/min-max-int-input.mjs +65 -0
- package/dist/components/defaults/adapters/min-max-int-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/multi-create-input.mjs +32 -0
- package/dist/components/defaults/adapters/multi-create-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/multi-select-input.mjs +26 -0
- package/dist/components/defaults/adapters/multi-select-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/number-input.mjs +15 -0
- package/dist/components/defaults/adapters/number-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/ordered-multi-create-input.mjs +43 -0
- package/dist/components/defaults/adapters/ordered-multi-create-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/output-field-input.mjs +37 -0
- package/dist/components/defaults/adapters/output-field-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/pipes-trigger-input.mjs +381 -0
- package/dist/components/defaults/adapters/pipes-trigger-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/prompt-input.mjs +208 -0
- package/dist/components/defaults/adapters/prompt-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/providers-input.mjs +23 -0
- package/dist/components/defaults/adapters/providers-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/range-input.mjs +61 -0
- package/dist/components/defaults/adapters/range-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/select-input.mjs +54 -0
- package/dist/components/defaults/adapters/select-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/tagged-text-input.mjs +154 -0
- package/dist/components/defaults/adapters/tagged-text-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/template-input.mjs +34 -0
- package/dist/components/defaults/adapters/template-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/text-input.mjs +18 -0
- package/dist/components/defaults/adapters/text-input.mjs.map +1 -0
- package/dist/components/defaults/adapters/textarea-input.mjs +17 -0
- package/dist/components/defaults/adapters/textarea-input.mjs.map +1 -0
- package/dist/components/defaults/catalog/active-filter-pill.mjs +30 -0
- package/dist/components/defaults/catalog/active-filter-pill.mjs.map +1 -0
- package/dist/components/defaults/catalog/card-derived.d.mts +98 -0
- package/dist/components/defaults/catalog/card-derived.d.mts.map +1 -0
- package/dist/components/defaults/catalog/card-derived.mjs +172 -0
- package/dist/components/defaults/catalog/card-derived.mjs.map +1 -0
- package/dist/components/defaults/catalog/card-primitives.d.mts +81 -0
- package/dist/components/defaults/catalog/card-primitives.d.mts.map +1 -0
- package/dist/components/defaults/catalog/card-primitives.mjs +108 -0
- package/dist/components/defaults/catalog/card-primitives.mjs.map +1 -0
- package/dist/components/defaults/catalog/category-filter.d.mts +13 -0
- package/dist/components/defaults/catalog/category-filter.d.mts.map +1 -0
- package/dist/components/defaults/catalog/category-filter.mjs +28 -0
- package/dist/components/defaults/catalog/category-filter.mjs.map +1 -0
- package/dist/components/defaults/catalog/category-section.d.mts +39 -0
- package/dist/components/defaults/catalog/category-section.d.mts.map +1 -0
- package/dist/components/defaults/catalog/category-section.mjs +59 -0
- package/dist/components/defaults/catalog/category-section.mjs.map +1 -0
- package/dist/components/defaults/catalog/empty-state.mjs +20 -0
- package/dist/components/defaults/catalog/empty-state.mjs.map +1 -0
- package/dist/components/defaults/catalog/filter-select.d.mts +13 -0
- package/dist/components/defaults/catalog/filter-select.d.mts.map +1 -0
- package/dist/components/defaults/catalog/filter-select.mjs +45 -0
- package/dist/components/defaults/catalog/filter-select.mjs.map +1 -0
- package/dist/components/defaults/catalog/layout.mjs +53 -0
- package/dist/components/defaults/catalog/layout.mjs.map +1 -0
- package/dist/components/defaults/catalog/provider-avatars.d.mts +37 -0
- package/dist/components/defaults/catalog/provider-avatars.d.mts.map +1 -0
- package/dist/components/defaults/catalog/provider-avatars.mjs +98 -0
- package/dist/components/defaults/catalog/provider-avatars.mjs.map +1 -0
- package/dist/components/defaults/field-section-enumeration.mjs +32 -0
- package/dist/components/defaults/field-section-enumeration.mjs.map +1 -0
- package/dist/components/defaults/layout/field-wrapper.d.mts +13 -0
- package/dist/components/defaults/layout/field-wrapper.d.mts.map +1 -0
- package/dist/components/defaults/layout/field-wrapper.mjs +67 -0
- package/dist/components/defaults/layout/field-wrapper.mjs.map +1 -0
- package/dist/components/defaults/layout/form.mjs +21 -0
- package/dist/components/defaults/layout/form.mjs.map +1 -0
- package/dist/components/defaults/layout/group.d.mts +16 -0
- package/dist/components/defaults/layout/group.d.mts.map +1 -0
- package/dist/components/defaults/layout/group.mjs +87 -0
- package/dist/components/defaults/layout/group.mjs.map +1 -0
- package/dist/components/defaults/layout/section.d.mts +14 -0
- package/dist/components/defaults/layout/section.d.mts.map +1 -0
- package/dist/components/defaults/layout/section.mjs +39 -0
- package/dist/components/defaults/layout/section.mjs.map +1 -0
- package/dist/components/defaults/layout/submit-button.d.mts +9 -0
- package/dist/components/defaults/layout/submit-button.d.mts.map +1 -0
- package/dist/components/defaults/layout/submit-button.mjs +23 -0
- package/dist/components/defaults/layout/submit-button.mjs.map +1 -0
- package/dist/components/defaults/toggle-advanced-button.mjs +29 -0
- package/dist/components/defaults/toggle-advanced-button.mjs.map +1 -0
- package/dist/components/field-renderer.d.mts +14 -0
- package/dist/components/field-renderer.d.mts.map +1 -0
- package/dist/components/field-renderer.mjs +21 -0
- package/dist/components/field-renderer.mjs.map +1 -0
- package/dist/components/hover-info.mjs +30 -0
- package/dist/components/hover-info.mjs.map +1 -0
- package/dist/components/internal/LiquidEditor/ChipEditPopover.mjs +319 -0
- package/dist/components/internal/LiquidEditor/ChipEditPopover.mjs.map +1 -0
- package/dist/components/internal/LiquidEditor/LiquidEditor.mjs +208 -0
- package/dist/components/internal/LiquidEditor/LiquidEditor.mjs.map +1 -0
- package/dist/components/internal/LiquidEditor/UnifiedReferencePicker.mjs +240 -0
- package/dist/components/internal/LiquidEditor/UnifiedReferencePicker.mjs.map +1 -0
- package/dist/components/internal/combobox/include-exclude-combobox.mjs +368 -0
- package/dist/components/internal/combobox/include-exclude-combobox.mjs.map +1 -0
- package/dist/components/internal/combobox/suggest-combobox.mjs +294 -0
- package/dist/components/internal/combobox/suggest-combobox.mjs.map +1 -0
- package/dist/components/internal/field-legend.mjs +37 -0
- package/dist/components/internal/field-legend.mjs.map +1 -0
- package/dist/components/internal/form-level-errors.mjs +71 -0
- package/dist/components/internal/form-level-errors.mjs.map +1 -0
- package/dist/components/internal/icons.mjs +131 -0
- package/dist/components/internal/icons.mjs.map +1 -0
- package/dist/components/internal/multi-select-popover-trigger.mjs +26 -0
- package/dist/components/internal/multi-select-popover-trigger.mjs.map +1 -0
- package/dist/components/internal/schema-editor/SchemaEditor.mjs +468 -0
- package/dist/components/internal/schema-editor/SchemaEditor.mjs.map +1 -0
- package/dist/components/internal/schema-editor/generate-schema-rows.mjs +374 -0
- package/dist/components/internal/schema-editor/generate-schema-rows.mjs.map +1 -0
- package/dist/components/internal/schema-editor/schema-editor-context.mjs +32 -0
- package/dist/components/internal/schema-editor/schema-editor-context.mjs.map +1 -0
- package/dist/components/internal/schema-editor/schema-utils.mjs +249 -0
- package/dist/components/internal/schema-editor/schema-utils.mjs.map +1 -0
- package/dist/components/internal/suggestion-menu/suggestion-menu-utils.mjs +12 -0
- package/dist/components/internal/suggestion-menu/suggestion-menu-utils.mjs.map +1 -0
- package/dist/components/internal/suggestion-menu/suggestion-menu.mjs +151 -0
- package/dist/components/internal/suggestion-menu/suggestion-menu.mjs.map +1 -0
- package/dist/components/internal/tag-chip-decoration.mjs +180 -0
- package/dist/components/internal/tag-chip-decoration.mjs.map +1 -0
- package/dist/components/rich-text.mjs +42 -0
- package/dist/components/rich-text.mjs.map +1 -0
- package/dist/components/ui/badge.mjs +32 -0
- package/dist/components/ui/badge.mjs.map +1 -0
- package/dist/components/ui/button.d.mts +19 -0
- package/dist/components/ui/button.d.mts.map +1 -0
- package/dist/components/ui/button.mjs +47 -0
- package/dist/components/ui/button.mjs.map +1 -0
- package/dist/components/ui/combobox.mjs +103 -0
- package/dist/components/ui/combobox.mjs.map +1 -0
- package/dist/components/ui/input-group.mjs +30 -0
- package/dist/components/ui/input-group.mjs.map +1 -0
- package/dist/components/ui/input.mjs +17 -0
- package/dist/components/ui/input.mjs.map +1 -0
- package/dist/components/ui/label.mjs +17 -0
- package/dist/components/ui/label.mjs.map +1 -0
- package/dist/components/ui/popover.mjs +40 -0
- package/dist/components/ui/popover.mjs.map +1 -0
- package/dist/components/ui/select.mjs +92 -0
- package/dist/components/ui/select.mjs.map +1 -0
- package/dist/components/ui/switch.mjs +21 -0
- package/dist/components/ui/switch.mjs.map +1 -0
- package/dist/components/ui/table.mjs +56 -0
- package/dist/components/ui/table.mjs.map +1 -0
- package/dist/components/ui/textarea.mjs +15 -0
- package/dist/components/ui/textarea.mjs.map +1 -0
- package/dist/components/ui/tooltip.mjs +48 -0
- package/dist/components/ui/tooltip.mjs.map +1 -0
- package/dist/context/catalog-card-context.mjs +31 -0
- package/dist/context/catalog-card-context.mjs.map +1 -0
- package/dist/context/catalog-config-context.d.mts +43 -0
- package/dist/context/catalog-config-context.d.mts.map +1 -0
- package/dist/context/catalog-config-context.mjs +48 -0
- package/dist/context/catalog-config-context.mjs.map +1 -0
- package/dist/context/form-context.mjs +11 -0
- package/dist/context/form-context.mjs.map +1 -0
- package/dist/context/form-customization-context.d.mts +71 -0
- package/dist/context/form-customization-context.d.mts.map +1 -0
- package/dist/context/form-customization-context.mjs +114 -0
- package/dist/context/form-customization-context.mjs.map +1 -0
- package/dist/context/form-provider.d.mts +41 -0
- package/dist/context/form-provider.d.mts.map +1 -0
- package/dist/context/form-provider.mjs +53 -0
- package/dist/context/form-provider.mjs.map +1 -0
- package/dist/context/pipe-catalog-card-context.d.mts +17 -0
- package/dist/context/pipe-catalog-card-context.d.mts.map +1 -0
- package/dist/context/pipe-catalog-card-context.mjs +13 -0
- package/dist/context/pipe-catalog-card-context.mjs.map +1 -0
- package/dist/context/pipe-catalog-context.d.mts +26 -0
- package/dist/context/pipe-catalog-context.d.mts.map +1 -0
- package/dist/context/pipe-catalog-context.mjs +13 -0
- package/dist/context/pipe-catalog-context.mjs.map +1 -0
- package/dist/context/pipe-form-context.d.mts +25 -0
- package/dist/context/pipe-form-context.d.mts.map +1 -0
- package/dist/context/pipe-form-context.mjs +13 -0
- package/dist/context/pipe-form-context.mjs.map +1 -0
- package/dist/context/portal-container-context.d.mts +5 -0
- package/dist/context/portal-container-context.d.mts.map +1 -0
- package/dist/context/portal-container-context.mjs +15 -0
- package/dist/context/portal-container-context.mjs.map +1 -0
- package/dist/context/search-catalog-card-context.d.mts +16 -0
- package/dist/context/search-catalog-card-context.d.mts.map +1 -0
- package/dist/context/search-catalog-card-context.mjs +13 -0
- package/dist/context/search-catalog-card-context.mjs.map +1 -0
- package/dist/context/search-catalog-context.d.mts +20 -0
- package/dist/context/search-catalog-context.d.mts.map +1 -0
- package/dist/context/search-catalog-context.mjs +13 -0
- package/dist/context/search-catalog-context.mjs.map +1 -0
- package/dist/context/search-form-context.d.mts +25 -0
- package/dist/context/search-form-context.d.mts.map +1 -0
- package/dist/context/search-form-context.mjs +13 -0
- package/dist/context/search-form-context.mjs.map +1 -0
- package/dist/context/searches-catalog-card-context.d.mts +16 -0
- package/dist/context/searches-catalog-card-context.d.mts.map +1 -0
- package/dist/context/searches-catalog-card-context.mjs +13 -0
- package/dist/context/searches-catalog-card-context.mjs.map +1 -0
- package/dist/context/searches-catalog-context.d.mts +20 -0
- package/dist/context/searches-catalog-context.d.mts.map +1 -0
- package/dist/context/searches-catalog-context.mjs +13 -0
- package/dist/context/searches-catalog-context.mjs.map +1 -0
- package/dist/hooks/use-debounce.mjs +28 -0
- package/dist/hooks/use-debounce.mjs.map +1 -0
- package/dist/hooks/use-debounced-fn.mjs +47 -0
- package/dist/hooks/use-debounced-fn.mjs.map +1 -0
- package/dist/hooks/use-disclosure.mjs +35 -0
- package/dist/hooks/use-disclosure.mjs.map +1 -0
- package/dist/hooks/use-field-error.d.mts +11 -0
- package/dist/hooks/use-field-error.d.mts.map +1 -0
- package/dist/hooks/use-field-error.mjs +23 -0
- package/dist/hooks/use-field-error.mjs.map +1 -0
- package/dist/hooks/use-floating-element.mjs +45 -0
- package/dist/hooks/use-floating-element.mjs.map +1 -0
- package/dist/hooks/use-form-core.d.mts +16 -0
- package/dist/hooks/use-form-core.d.mts.map +1 -0
- package/dist/hooks/use-form-core.mjs +241 -0
- package/dist/hooks/use-form-core.mjs.map +1 -0
- package/dist/hooks/use-jsonata-preview.mjs +38 -0
- package/dist/hooks/use-jsonata-preview.mjs.map +1 -0
- package/dist/hooks/use-menu-navigation.mjs +86 -0
- package/dist/hooks/use-menu-navigation.mjs.map +1 -0
- package/dist/hooks/use-pipe-catalog-table.d.mts +47 -0
- package/dist/hooks/use-pipe-catalog-table.d.mts.map +1 -0
- package/dist/hooks/use-pipe-catalog-table.mjs +170 -0
- package/dist/hooks/use-pipe-catalog-table.mjs.map +1 -0
- package/dist/hooks/use-pipe-form.d.mts +31 -0
- package/dist/hooks/use-pipe-form.d.mts.map +1 -0
- package/dist/hooks/use-pipe-form.mjs +65 -0
- package/dist/hooks/use-pipe-form.mjs.map +1 -0
- package/dist/hooks/use-search-catalog-table.d.mts +40 -0
- package/dist/hooks/use-search-catalog-table.d.mts.map +1 -0
- package/dist/hooks/use-search-catalog-table.mjs +161 -0
- package/dist/hooks/use-search-catalog-table.mjs.map +1 -0
- package/dist/hooks/use-search-form.d.mts +17 -0
- package/dist/hooks/use-search-form.d.mts.map +1 -0
- package/dist/hooks/use-search-form.mjs +58 -0
- package/dist/hooks/use-search-form.mjs.map +1 -0
- package/dist/hooks/use-searches-catalog-table.d.mts +40 -0
- package/dist/hooks/use-searches-catalog-table.d.mts.map +1 -0
- package/dist/hooks/use-searches-catalog-table.mjs +161 -0
- package/dist/hooks/use-searches-catalog-table.mjs.map +1 -0
- package/dist/index.d.mts +96 -0
- package/dist/index.mjs +98 -0
- package/dist/lib/utils.mjs +11 -0
- package/dist/lib/utils.mjs.map +1 -0
- package/dist/styles/pipe0-form.css +3785 -0
- package/dist/types/adapters.d.mts +107 -0
- package/dist/types/adapters.d.mts.map +1 -0
- package/dist/types/catalog-adapters.d.mts +122 -0
- package/dist/types/catalog-adapters.d.mts.map +1 -0
- package/dist/types/field-handle.d.mts +3 -0
- package/dist/types/field-props.d.mts +285 -0
- package/dist/types/field-props.d.mts.map +1 -0
- package/dist/types/form-customization.d.mts +25 -0
- package/dist/types/form-customization.d.mts.map +1 -0
- package/dist/types/form-handle.d.mts +23 -0
- package/dist/types/form-handle.d.mts.map +1 -0
- package/dist/utils/build-section-handlers.mjs +419 -0
- package/dist/utils/build-section-handlers.mjs.map +1 -0
- package/dist/utils/catalog-helpers.d.mts +12 -0
- package/dist/utils/catalog-helpers.d.mts.map +1 -0
- package/dist/utils/catalog-helpers.mjs +35 -0
- package/dist/utils/catalog-helpers.mjs.map +1 -0
- package/dist/utils/generate-random-string.mjs +11 -0
- package/dist/utils/generate-random-string.mjs.map +1 -0
- package/dist/utils/merge-form-stores.mjs +14 -0
- package/dist/utils/merge-form-stores.mjs.map +1 -0
- package/dist/utils/object-path.mjs +72 -0
- package/dist/utils/object-path.mjs.map +1 -0
- package/dist/utils/render-slot.d.mts +44 -0
- package/dist/utils/render-slot.d.mts.map +1 -0
- package/dist/utils/render-slot.mjs +30 -0
- package/dist/utils/render-slot.mjs.map +1 -0
- package/dist/widgets/avatar-group.d.mts +36 -0
- package/dist/widgets/avatar-group.d.mts.map +1 -0
- package/dist/widgets/avatar-group.mjs +114 -0
- package/dist/widgets/avatar-group.mjs.map +1 -0
- package/dist/widgets/emoji-glyph.d.mts +11 -0
- package/dist/widgets/emoji-glyph.d.mts.map +1 -0
- package/dist/widgets/emoji-glyph.mjs +13 -0
- package/dist/widgets/emoji-glyph.mjs.map +1 -0
- package/dist/widgets/field-type-badge.d.mts +13 -0
- package/dist/widgets/field-type-badge.d.mts.map +1 -0
- package/dist/widgets/field-type-badge.mjs +30 -0
- package/dist/widgets/field-type-badge.mjs.map +1 -0
- package/dist/widgets/icon-glyph.d.mts +16 -0
- package/dist/widgets/icon-glyph.d.mts.map +1 -0
- package/dist/widgets/icon-glyph.mjs +59 -0
- package/dist/widgets/icon-glyph.mjs.map +1 -0
- package/dist/widgets/index.d.mts +9 -0
- package/dist/widgets/index.mjs +11 -0
- package/dist/widgets/logo-url.d.mts +17 -0
- package/dist/widgets/logo-url.d.mts.map +1 -0
- package/dist/widgets/logo-url.mjs +17 -0
- package/dist/widgets/logo-url.mjs.map +1 -0
- package/dist/widgets/pricing-badge.d.mts +11 -0
- package/dist/widgets/pricing-badge.d.mts.map +1 -0
- package/dist/widgets/pricing-badge.mjs +13 -0
- package/dist/widgets/pricing-badge.mjs.map +1 -0
- package/dist/widgets/provider-logo.d.mts +16 -0
- package/dist/widgets/provider-logo.d.mts.map +1 -0
- package/dist/widgets/provider-logo.mjs +20 -0
- package/dist/widgets/provider-logo.mjs.map +1 -0
- package/dist/widgets/widget-strip.d.mts +16 -0
- package/dist/widgets/widget-strip.d.mts.map +1 -0
- package/dist/widgets/widget-strip.mjs +42 -0
- package/dist/widgets/widget-strip.mjs.map +1 -0
- package/dist/widgets/widget-view.d.mts +14 -0
- package/dist/widgets/widget-view.d.mts.map +1 -0
- package/dist/widgets/widget-view.mjs +36 -0
- package/dist/widgets/widget-view.mjs.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
import { inputGuards } from "@pipe0/base";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/build-section-handlers.ts
|
|
4
|
+
/**
|
|
5
|
+
* Builds a fully-typed `GeneratedFieldProps` from raw metadata + form state.
|
|
6
|
+
*
|
|
7
|
+
* The returned object includes:
|
|
8
|
+
* - Base props (kind, meta, value, setValue, error, etc.)
|
|
9
|
+
* - Kind-specific extras (inputProps, options, toggle, etc.)
|
|
10
|
+
*/
|
|
11
|
+
function buildFieldProps(meta, form, publicKey, loadingCtx) {
|
|
12
|
+
const path = meta.path;
|
|
13
|
+
const fieldState = form.getFieldState(path);
|
|
14
|
+
const value = form.getValues(path);
|
|
15
|
+
const id = `p0-field-${path.replace(/\./g, "-")}`;
|
|
16
|
+
const setValue = (v) => form.setValue(path, v, {
|
|
17
|
+
shouldDirty: true,
|
|
18
|
+
shouldTouch: true,
|
|
19
|
+
shouldValidate: true
|
|
20
|
+
});
|
|
21
|
+
const hasSubmitted = form.formState.isSubmitted;
|
|
22
|
+
const loadState = loadingCtx?.fieldLoadStates?.[path];
|
|
23
|
+
const base = {
|
|
24
|
+
kind: meta.type,
|
|
25
|
+
meta,
|
|
26
|
+
form,
|
|
27
|
+
path,
|
|
28
|
+
label: meta.label ?? "",
|
|
29
|
+
description: meta.description,
|
|
30
|
+
info: meta.info,
|
|
31
|
+
error: hasSubmitted ? fieldState.error?.message : void 0,
|
|
32
|
+
touched: fieldState.isTouched,
|
|
33
|
+
dirty: fieldState.isDirty,
|
|
34
|
+
id,
|
|
35
|
+
value,
|
|
36
|
+
setValue,
|
|
37
|
+
reset: () => form.resetField(path),
|
|
38
|
+
disabled: loadState?.disabled ?? false,
|
|
39
|
+
disabledReason: loadState?.disabledReason
|
|
40
|
+
};
|
|
41
|
+
const extras = buildExtras(meta, {
|
|
42
|
+
path,
|
|
43
|
+
id,
|
|
44
|
+
value,
|
|
45
|
+
setValue
|
|
46
|
+
}, publicKey, loadingCtx);
|
|
47
|
+
return {
|
|
48
|
+
...base,
|
|
49
|
+
...extras
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function withMergedWidgets(options, staticWidgets) {
|
|
53
|
+
if (!staticWidgets) return options;
|
|
54
|
+
return options.map((o) => ({
|
|
55
|
+
...o,
|
|
56
|
+
widgets: {
|
|
57
|
+
...staticWidgets,
|
|
58
|
+
...o.widgets ?? {}
|
|
59
|
+
}
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
function buildExtras(meta, base, publicKey, loadingCtx) {
|
|
63
|
+
if (inputGuards.text_input(meta) || inputGuards.int_input(meta) || inputGuards.number_input(meta)) {
|
|
64
|
+
const isNumber = inputGuards.int_input(meta) || inputGuards.number_input(meta);
|
|
65
|
+
return { inputProps: {
|
|
66
|
+
type: isNumber ? "number" : meta.inputType || "text",
|
|
67
|
+
name: base.path,
|
|
68
|
+
id: base.id,
|
|
69
|
+
value: base.value != null ? String(base.value) : "",
|
|
70
|
+
onChange: (e) => {
|
|
71
|
+
const v = e.target.value;
|
|
72
|
+
base.setValue(isNumber ? v === "" ? null : Number(v) : v);
|
|
73
|
+
},
|
|
74
|
+
placeholder: meta.placeholder,
|
|
75
|
+
step: inputGuards.number_input(meta) ? "0.001" : void 0
|
|
76
|
+
} };
|
|
77
|
+
}
|
|
78
|
+
if (inputGuards.textarea_input(meta)) return { textareaProps: {
|
|
79
|
+
name: base.path,
|
|
80
|
+
id: base.id,
|
|
81
|
+
value: base.value ?? "",
|
|
82
|
+
onChange: (e) => base.setValue(e.target.value),
|
|
83
|
+
placeholder: meta.placeholder,
|
|
84
|
+
rows: meta.rows
|
|
85
|
+
} };
|
|
86
|
+
if (inputGuards.select_input(meta)) return {
|
|
87
|
+
options: meta.options ?? [],
|
|
88
|
+
selectedValue: base.value ?? "",
|
|
89
|
+
onSelect: (v) => base.setValue(v)
|
|
90
|
+
};
|
|
91
|
+
if (inputGuards.context_select_input(meta)) {
|
|
92
|
+
const loadState = loadingCtx?.fieldLoadStates?.[meta.path];
|
|
93
|
+
return {
|
|
94
|
+
options: meta.options ?? [],
|
|
95
|
+
selectedValue: base.value ?? "",
|
|
96
|
+
onSelect: (v) => base.setValue(v),
|
|
97
|
+
pending: loadState?.status === "loading",
|
|
98
|
+
suggestionsDisabled: loadState?.suggestionsDisabled ?? false,
|
|
99
|
+
suggestionsDisabledReason: loadState?.suggestionsDisabledReason
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
if (inputGuards.tagged_text_input(meta)) {
|
|
103
|
+
const loadState = loadingCtx?.fieldLoadStates?.[meta.path];
|
|
104
|
+
return {
|
|
105
|
+
options: meta.options ?? [],
|
|
106
|
+
pending: loadState?.status === "loading",
|
|
107
|
+
suggestionsDisabled: loadState?.suggestionsDisabled ?? false,
|
|
108
|
+
suggestionsDisabledReason: loadState?.suggestionsDisabledReason,
|
|
109
|
+
searchSecrets: loadingCtx?.searchSecrets
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
if (inputGuards.providers_input(meta)) return { options: meta.options ?? [] };
|
|
113
|
+
if (inputGuards.multi_select_input(meta)) {
|
|
114
|
+
const selected = base.value ?? [];
|
|
115
|
+
return {
|
|
116
|
+
options: meta.options ?? [],
|
|
117
|
+
selected,
|
|
118
|
+
onToggle: (v) => base.setValue(selected.includes(v) ? selected.filter((s) => s !== v) : [...selected, v]),
|
|
119
|
+
onClear: () => base.setValue([])
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
if (inputGuards.async_multi_select_input(meta)) {
|
|
123
|
+
const selected = base.value ?? [];
|
|
124
|
+
return {
|
|
125
|
+
loadOptions: async (query) => withMergedWidgets(await meta.optionsDef.options({
|
|
126
|
+
query,
|
|
127
|
+
token: publicKey
|
|
128
|
+
}), meta.optionsDef.widgets),
|
|
129
|
+
selected,
|
|
130
|
+
onToggle: (v) => base.setValue(selected.includes(v) ? selected.filter((s) => s !== v) : [...selected, v]),
|
|
131
|
+
onClear: () => base.setValue([])
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
if (inputGuards.boolean_input(meta) || inputGuards.nullable_boolean_input(meta)) return {
|
|
135
|
+
checked: base.value === true,
|
|
136
|
+
isNull: base.value === null || base.value === void 0,
|
|
137
|
+
toggle: () => base.setValue(base.value === true ? false : true),
|
|
138
|
+
clear: () => base.setValue(null)
|
|
139
|
+
};
|
|
140
|
+
if (inputGuards.include_exclude_input(meta) || inputGuards.include_exclude_select_input(meta) || inputGuards.async_include_exclude_select_input(meta)) {
|
|
141
|
+
const current = base.value ?? {
|
|
142
|
+
include: [],
|
|
143
|
+
exclude: []
|
|
144
|
+
};
|
|
145
|
+
const result = {
|
|
146
|
+
include: {
|
|
147
|
+
value: current.include,
|
|
148
|
+
add: (v) => base.setValue({
|
|
149
|
+
...current,
|
|
150
|
+
include: [...current.include, v]
|
|
151
|
+
}),
|
|
152
|
+
remove: (v) => base.setValue({
|
|
153
|
+
...current,
|
|
154
|
+
include: current.include.filter((i) => i !== v)
|
|
155
|
+
})
|
|
156
|
+
},
|
|
157
|
+
exclude: {
|
|
158
|
+
value: current.exclude,
|
|
159
|
+
add: (v) => base.setValue({
|
|
160
|
+
...current,
|
|
161
|
+
exclude: [...current.exclude, v]
|
|
162
|
+
}),
|
|
163
|
+
remove: (v) => base.setValue({
|
|
164
|
+
...current,
|
|
165
|
+
exclude: current.exclude.filter((i) => i !== v)
|
|
166
|
+
})
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
const m = meta;
|
|
170
|
+
if (m.optionsDef?.options && typeof m.optionsDef.options === "function") result.loadOptions = async (query) => withMergedWidgets(await m.optionsDef.options({
|
|
171
|
+
query,
|
|
172
|
+
token: publicKey
|
|
173
|
+
}), m.optionsDef.widgets);
|
|
174
|
+
else if (m.optionsDef?.options) result.options = withMergedWidgets(m.optionsDef.options, m.optionsDef.widgets);
|
|
175
|
+
if (m.suggestionsDef?.options) if (typeof m.suggestionsDef.options === "function") result.loadOptions = async (query) => withMergedWidgets(await m.suggestionsDef.options({
|
|
176
|
+
query,
|
|
177
|
+
token: publicKey
|
|
178
|
+
}), m.suggestionsDef.widgets);
|
|
179
|
+
else result.options = withMergedWidgets(m.suggestionsDef.options, m.suggestionsDef.widgets);
|
|
180
|
+
return result;
|
|
181
|
+
}
|
|
182
|
+
if (inputGuards.range_input(meta)) {
|
|
183
|
+
const current = base.value ?? {
|
|
184
|
+
from: null,
|
|
185
|
+
to: null
|
|
186
|
+
};
|
|
187
|
+
return {
|
|
188
|
+
from: {
|
|
189
|
+
value: current.from,
|
|
190
|
+
set: (v) => base.setValue({
|
|
191
|
+
...current,
|
|
192
|
+
from: v
|
|
193
|
+
})
|
|
194
|
+
},
|
|
195
|
+
to: {
|
|
196
|
+
value: current.to,
|
|
197
|
+
set: (v) => base.setValue({
|
|
198
|
+
...current,
|
|
199
|
+
to: v
|
|
200
|
+
})
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
if (inputGuards.date_range_input(meta)) {
|
|
205
|
+
const current = base.value ?? {};
|
|
206
|
+
return {
|
|
207
|
+
from: {
|
|
208
|
+
value: current.gte ?? current.gt ?? "",
|
|
209
|
+
set: (v) => base.setValue({
|
|
210
|
+
...current,
|
|
211
|
+
gte: v
|
|
212
|
+
})
|
|
213
|
+
},
|
|
214
|
+
to: {
|
|
215
|
+
value: current.lte ?? current.lt ?? "",
|
|
216
|
+
set: (v) => base.setValue({
|
|
217
|
+
...current,
|
|
218
|
+
lte: v
|
|
219
|
+
})
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
if (inputGuards.exact_range_input(meta)) {
|
|
224
|
+
const current = base.value ?? {};
|
|
225
|
+
return {
|
|
226
|
+
greaterThan: {
|
|
227
|
+
operator: current.gt != null ? "gt" : "gte",
|
|
228
|
+
value: current.gt ?? current.gte ?? null,
|
|
229
|
+
setOperator: (op) => {
|
|
230
|
+
const otherOp = op === "gt" ? "gte" : "gt";
|
|
231
|
+
const val = current[otherOp] ?? current[op];
|
|
232
|
+
const updated = { ...current };
|
|
233
|
+
delete updated[otherOp];
|
|
234
|
+
if (val != null) updated[op] = val;
|
|
235
|
+
base.setValue(updated);
|
|
236
|
+
},
|
|
237
|
+
setValue: (v) => {
|
|
238
|
+
const op = current.gt != null ? "gt" : "gte";
|
|
239
|
+
const updated = { ...current };
|
|
240
|
+
if (v != null) updated[op] = v;
|
|
241
|
+
else delete updated[op];
|
|
242
|
+
base.setValue(updated);
|
|
243
|
+
}
|
|
244
|
+
},
|
|
245
|
+
lessThan: {
|
|
246
|
+
operator: current.lt != null ? "lt" : "lte",
|
|
247
|
+
value: current.lt ?? current.lte ?? null,
|
|
248
|
+
setOperator: (op) => {
|
|
249
|
+
const otherOp = op === "lt" ? "lte" : "lt";
|
|
250
|
+
const val = current[otherOp] ?? current[op];
|
|
251
|
+
const updated = { ...current };
|
|
252
|
+
delete updated[otherOp];
|
|
253
|
+
if (val != null) updated[op] = val;
|
|
254
|
+
base.setValue(updated);
|
|
255
|
+
},
|
|
256
|
+
setValue: (v) => {
|
|
257
|
+
const op = current.lt != null ? "lt" : "lte";
|
|
258
|
+
const updated = { ...current };
|
|
259
|
+
if (v != null) updated[op] = v;
|
|
260
|
+
else delete updated[op];
|
|
261
|
+
base.setValue(updated);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
if (inputGuards.min_max_int_input(meta)) {
|
|
267
|
+
const current = base.value ?? {
|
|
268
|
+
min: null,
|
|
269
|
+
max: null
|
|
270
|
+
};
|
|
271
|
+
return {
|
|
272
|
+
from: {
|
|
273
|
+
value: current.min,
|
|
274
|
+
set: (v) => base.setValue({
|
|
275
|
+
...current,
|
|
276
|
+
min: v
|
|
277
|
+
})
|
|
278
|
+
},
|
|
279
|
+
to: {
|
|
280
|
+
value: current.max,
|
|
281
|
+
set: (v) => base.setValue({
|
|
282
|
+
...current,
|
|
283
|
+
max: v
|
|
284
|
+
})
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
if (inputGuards.multi_create_input(meta) || inputGuards.ordered_multi_create_input(meta)) {
|
|
289
|
+
const items = base.value ?? [];
|
|
290
|
+
const result = {
|
|
291
|
+
items,
|
|
292
|
+
add: (v) => base.setValue([...items, v]),
|
|
293
|
+
remove: (v) => base.setValue(items.filter((i) => i !== v))
|
|
294
|
+
};
|
|
295
|
+
if (inputGuards.ordered_multi_create_input(meta)) result.reorder = (from, to) => {
|
|
296
|
+
const next = [...items];
|
|
297
|
+
const [moved] = next.splice(from, 1);
|
|
298
|
+
next.splice(to, 0, moved);
|
|
299
|
+
base.setValue(next);
|
|
300
|
+
};
|
|
301
|
+
const m = meta;
|
|
302
|
+
if (m.suggestionsDef?.options) if (typeof m.suggestionsDef.options === "function") result.loadOptions = async (query) => withMergedWidgets(await m.suggestionsDef.options({
|
|
303
|
+
query,
|
|
304
|
+
token: publicKey
|
|
305
|
+
}), m.suggestionsDef.widgets);
|
|
306
|
+
else result.options = withMergedWidgets(m.suggestionsDef.options, m.suggestionsDef.widgets);
|
|
307
|
+
return result;
|
|
308
|
+
}
|
|
309
|
+
if (inputGuards.key_value_list_input(meta)) {
|
|
310
|
+
const rows = base.value ?? [];
|
|
311
|
+
return {
|
|
312
|
+
rows,
|
|
313
|
+
addRow: () => base.setValue([...rows, {
|
|
314
|
+
key: "",
|
|
315
|
+
value: ""
|
|
316
|
+
}]),
|
|
317
|
+
removeRow: (index) => base.setValue(rows.filter((_, i) => i !== index)),
|
|
318
|
+
setKey: (index, key) => base.setValue(rows.map((row, i) => i === index ? {
|
|
319
|
+
...row,
|
|
320
|
+
key
|
|
321
|
+
} : row)),
|
|
322
|
+
setValue: (index, value) => base.setValue(rows.map((row, i) => i === index ? {
|
|
323
|
+
...row,
|
|
324
|
+
value
|
|
325
|
+
} : row)),
|
|
326
|
+
searchSecrets: loadingCtx?.searchSecrets
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
if (inputGuards.prompt_input(meta) || inputGuards.template_input(meta)) return { searchSecrets: loadingCtx?.searchSecrets };
|
|
330
|
+
return {};
|
|
331
|
+
}
|
|
332
|
+
function isEmptyValue(value) {
|
|
333
|
+
if (value === null || typeof value === "undefined") return true;
|
|
334
|
+
if (typeof value === "string") return value === "";
|
|
335
|
+
if (Array.isArray(value)) return value.length === 0;
|
|
336
|
+
if (typeof value === "object") {
|
|
337
|
+
const keys = Object.keys(value);
|
|
338
|
+
if (keys.length === 0) return true;
|
|
339
|
+
return keys.every((k) => isEmptyValue(value[k]));
|
|
340
|
+
}
|
|
341
|
+
return false;
|
|
342
|
+
}
|
|
343
|
+
function buildSectionHandles(formConfig, form, publicKey, loadingCtx) {
|
|
344
|
+
const hasSubmitted = form.formState.isSubmitted;
|
|
345
|
+
return formConfig.map((section) => {
|
|
346
|
+
const groups = section.groups.map((group) => {
|
|
347
|
+
const fields = group.fields.map((meta) => buildFieldProps(meta, form, publicKey, loadingCtx));
|
|
348
|
+
const groupPathError = form.getFieldState(group.groupPath).error;
|
|
349
|
+
const errorCount = hasSubmitted ? fields.filter((f) => f.error != null).length + (groupPathError ? 1 : 0) : 0;
|
|
350
|
+
const setCount = fields.filter((f) => !isEmptyValue(f.value)).length;
|
|
351
|
+
return {
|
|
352
|
+
key: group.groupPath,
|
|
353
|
+
label: group.label,
|
|
354
|
+
description: group.description,
|
|
355
|
+
iconKey: group.iconKey,
|
|
356
|
+
defaultExpand: group.defaultExpand ?? false,
|
|
357
|
+
fields,
|
|
358
|
+
errorCount,
|
|
359
|
+
setCount
|
|
360
|
+
};
|
|
361
|
+
});
|
|
362
|
+
return {
|
|
363
|
+
key: section.metadata.path,
|
|
364
|
+
label: section.metadata.label,
|
|
365
|
+
description: section.metadata.description,
|
|
366
|
+
groups
|
|
367
|
+
};
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
function applyFormCustomization(sections, customization) {
|
|
371
|
+
const { sectionMap, groupMap, pathMap } = customization;
|
|
372
|
+
const hasSectionOverrides = Object.keys(sectionMap).length > 0;
|
|
373
|
+
const hasGroupOverrides = Object.keys(groupMap).length > 0;
|
|
374
|
+
const hasPathOverrides = Object.keys(pathMap).length > 0;
|
|
375
|
+
if (!hasSectionOverrides && !hasGroupOverrides && !hasPathOverrides) return sections;
|
|
376
|
+
return sections.filter((section) => sectionMap[section.key] !== null).map((section) => {
|
|
377
|
+
const sectionOverride = sectionMap[section.key];
|
|
378
|
+
const mergedSection = sectionOverride ? {
|
|
379
|
+
...section,
|
|
380
|
+
label: sectionOverride.label ?? section.label,
|
|
381
|
+
description: sectionOverride.description ?? section.description
|
|
382
|
+
} : section;
|
|
383
|
+
const groups = mergedSection.groups.filter((group) => groupMap[group.key] !== null).map((group) => {
|
|
384
|
+
const groupOverride = groupMap[group.key];
|
|
385
|
+
const mergedGroup = groupOverride ? {
|
|
386
|
+
...group,
|
|
387
|
+
label: groupOverride.label ?? group.label,
|
|
388
|
+
description: groupOverride.description ?? group.description,
|
|
389
|
+
iconKey: groupOverride.iconKey ?? group.iconKey,
|
|
390
|
+
defaultExpand: groupOverride.defaultExpand ?? group.defaultExpand
|
|
391
|
+
} : group;
|
|
392
|
+
const fields = mergedGroup.fields.filter((field) => pathMap[field.path] !== null).map((field) => {
|
|
393
|
+
const fieldOverride = pathMap[field.path];
|
|
394
|
+
if (!fieldOverride) return field;
|
|
395
|
+
return {
|
|
396
|
+
...field,
|
|
397
|
+
label: fieldOverride.label ?? field.label,
|
|
398
|
+
description: fieldOverride.description ?? field.description
|
|
399
|
+
};
|
|
400
|
+
});
|
|
401
|
+
const errorCount = group.errorCount > 0 ? fields.filter((f) => f.error != null).length : 0;
|
|
402
|
+
const setCount = fields.filter((f) => !isEmptyValue(f.value)).length;
|
|
403
|
+
return {
|
|
404
|
+
...mergedGroup,
|
|
405
|
+
fields,
|
|
406
|
+
errorCount,
|
|
407
|
+
setCount
|
|
408
|
+
};
|
|
409
|
+
}).filter((group) => group.fields.length > 0);
|
|
410
|
+
return {
|
|
411
|
+
...mergedSection,
|
|
412
|
+
groups
|
|
413
|
+
};
|
|
414
|
+
}).filter((section) => section.groups.length > 0);
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
//#endregion
|
|
418
|
+
export { applyFormCustomization, buildSectionHandles };
|
|
419
|
+
//# sourceMappingURL=build-section-handlers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-section-handlers.mjs","names":[],"sources":["../../src/utils/build-section-handlers.ts"],"sourcesContent":["import type { FormSection, GeneratedInputMeta, SecretSuggestion, SectionKeys } from \"@pipe0/base\";\nimport { inputGuards } from \"@pipe0/base\";\nimport type { UseFormReturn } from \"react-hook-form\";\nimport type { FormCustomizationState } from \"../context/form-customization-context.js\";\nimport type { FieldLoadState } from \"../hooks/use-form-core.js\";\nimport type { AnyFieldProps, GeneratedFieldProps } from \"../types/field-props.js\";\nimport type { FormGroupHandle, FormSectionHandle } from \"../types/form-handle.js\";\n\nexport interface FieldLoadingContext {\n /** Per-field load states for dynamic context_select_input fields, keyed by path. */\n fieldLoadStates: Record<string, FieldLoadState>;\n /**\n * Curried per-keystroke secrets searcher. Bundles the form-level\n * `environment` / `scopes` / `teamId` so adapters only need to pass the\n * user's typed query. Returns `[]` when no `getSecrets` resolver is wired.\n */\n searchSecrets?: (query: string) => Promise<SecretSuggestion[]>;\n}\n\n/**\n * Builds a fully-typed `GeneratedFieldProps` from raw metadata + form state.\n *\n * The returned object includes:\n * - Base props (kind, meta, value, setValue, error, etc.)\n * - Kind-specific extras (inputProps, options, toggle, etc.)\n */\nexport function buildFieldProps<Meta extends GeneratedInputMeta>(\n meta: Meta,\n form: UseFormReturn<Record<string, unknown>>,\n publicKey: string,\n loadingCtx?: FieldLoadingContext,\n): GeneratedFieldProps<Meta[\"type\"]> {\n const path = meta.path;\n const fieldState = form.getFieldState(path as any);\n const value = form.getValues(path as any);\n const id = `p0-field-${path.replace(/\\./g, \"-\")}`;\n\n const setValue = (v: unknown) =>\n form.setValue(path as any, v, {\n shouldDirty: true,\n shouldTouch: true,\n shouldValidate: true,\n });\n\n // Match the submit-gated behavior used everywhere else (group errorCount,\n // `useFieldError`): don't surface the field's error until the user has\n // attempted a submit. Otherwise `setValue`-triggered validation would\n // flash errors the moment the form is interacted with.\n const hasSubmitted = form.formState.isSubmitted;\n\n const loadState = loadingCtx?.fieldLoadStates?.[path];\n\n const base = {\n kind: meta.type,\n meta,\n form,\n path,\n label: meta.label ?? \"\",\n description: meta.description,\n info: meta.info,\n error: hasSubmitted ? fieldState.error?.message : undefined,\n touched: fieldState.isTouched,\n dirty: fieldState.isDirty,\n id,\n value,\n setValue,\n reset: () => form.resetField(path as any),\n disabled: loadState?.disabled ?? false,\n disabledReason: loadState?.disabledReason,\n };\n\n const extras = buildExtras(meta, { path, id, value, setValue }, publicKey, loadingCtx);\n\n return { ...base, ...extras } as unknown as GeneratedFieldProps<Meta[\"type\"]>;\n}\n\n// Re-export under old name for backward compat\nexport { buildFieldProps as buildFieldHandle };\n\ntype OptionLike = {\n value: string;\n label: string;\n widgets?: Record<string, Record<string, unknown>>;\n};\n\nfunction withMergedWidgets<T extends OptionLike>(\n options: T[],\n staticWidgets: Record<string, Record<string, unknown>> | undefined,\n): T[] {\n if (!staticWidgets) return options;\n return options.map((o) => ({\n ...o,\n widgets: { ...staticWidgets, ...(o.widgets ?? {}) },\n }));\n}\n\nfunction buildExtras(\n meta: GeneratedInputMeta,\n base: {\n path: string;\n id: string;\n value: unknown;\n setValue: (v: unknown) => void;\n },\n publicKey: string,\n loadingCtx?: FieldLoadingContext,\n): Record<string, unknown> {\n if (\n inputGuards.text_input(meta) ||\n inputGuards.int_input(meta) ||\n inputGuards.number_input(meta)\n ) {\n const isNumber = inputGuards.int_input(meta) || inputGuards.number_input(meta);\n return {\n inputProps: {\n type: isNumber ? \"number\" : (meta as any).inputType || \"text\",\n name: base.path,\n id: base.id,\n value: base.value != null ? String(base.value) : \"\",\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const v = e.target.value;\n base.setValue(isNumber ? (v === \"\" ? null : Number(v)) : v);\n },\n placeholder: meta.placeholder,\n step: inputGuards.number_input(meta) ? \"0.001\" : undefined,\n },\n };\n }\n\n if (inputGuards.textarea_input(meta)) {\n return {\n textareaProps: {\n name: base.path,\n id: base.id,\n value: (base.value as string) ?? \"\",\n onChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => base.setValue(e.target.value),\n placeholder: meta.placeholder,\n rows: meta.rows,\n },\n };\n }\n\n if (inputGuards.select_input(meta)) {\n return {\n options: meta.options ?? [],\n selectedValue: (base.value as string) ?? \"\",\n onSelect: (v: string) => base.setValue(v),\n };\n }\n\n if (inputGuards.context_select_input(meta)) {\n const loadState = loadingCtx?.fieldLoadStates?.[meta.path];\n return {\n options: meta.options ?? [],\n selectedValue: (base.value as string) ?? \"\",\n onSelect: (v: string) => base.setValue(v),\n pending: loadState?.status === \"loading\",\n suggestionsDisabled: loadState?.suggestionsDisabled ?? false,\n suggestionsDisabledReason: loadState?.suggestionsDisabledReason,\n };\n }\n\n if (inputGuards.tagged_text_input(meta)) {\n const loadState = loadingCtx?.fieldLoadStates?.[meta.path];\n return {\n options: meta.options ?? [],\n pending: loadState?.status === \"loading\",\n suggestionsDisabled: loadState?.suggestionsDisabled ?? false,\n suggestionsDisabledReason: loadState?.suggestionsDisabledReason,\n searchSecrets: loadingCtx?.searchSecrets,\n };\n }\n\n if (inputGuards.providers_input(meta)) {\n return {\n options: meta.options ?? [],\n };\n }\n\n if (inputGuards.multi_select_input(meta)) {\n const selected = (base.value as string[]) ?? [];\n return {\n options: meta.options ?? [],\n selected,\n onToggle: (v: string) =>\n base.setValue(selected.includes(v) ? selected.filter((s) => s !== v) : [...selected, v]),\n onClear: () => base.setValue([]),\n };\n }\n\n if (inputGuards.async_multi_select_input(meta)) {\n const selected = (base.value as string[]) ?? [];\n return {\n loadOptions: async (query: string) =>\n withMergedWidgets(\n await meta.optionsDef.options({ query, token: publicKey }),\n meta.optionsDef.widgets,\n ),\n selected,\n onToggle: (v: string) =>\n base.setValue(selected.includes(v) ? selected.filter((s) => s !== v) : [...selected, v]),\n onClear: () => base.setValue([]),\n };\n }\n\n if (inputGuards.boolean_input(meta) || inputGuards.nullable_boolean_input(meta)) {\n return {\n checked: base.value === true,\n isNull: base.value === null || base.value === undefined,\n toggle: () => base.setValue(base.value === true ? false : true),\n clear: () => base.setValue(null),\n };\n }\n\n if (\n inputGuards.include_exclude_input(meta) ||\n inputGuards.include_exclude_select_input(meta) ||\n inputGuards.async_include_exclude_select_input(meta)\n ) {\n const current = (base.value as {\n include: string[];\n exclude: string[];\n }) ?? { include: [], exclude: [] };\n const result: Record<string, unknown> = {\n include: {\n value: current.include,\n add: (v: string) => base.setValue({ ...current, include: [...current.include, v] }),\n remove: (v: string) =>\n base.setValue({\n ...current,\n include: current.include.filter((i) => i !== v),\n }),\n },\n exclude: {\n value: current.exclude,\n add: (v: string) => base.setValue({ ...current, exclude: [...current.exclude, v] }),\n remove: (v: string) =>\n base.setValue({\n ...current,\n exclude: current.exclude.filter((i) => i !== v),\n }),\n },\n };\n const m = meta as any;\n if (m.optionsDef?.options && typeof m.optionsDef.options === \"function\") {\n result.loadOptions = async (query: string) =>\n withMergedWidgets(\n await m.optionsDef.options({ query, token: publicKey }),\n m.optionsDef.widgets,\n );\n } else if (m.optionsDef?.options) {\n result.options = withMergedWidgets(m.optionsDef.options, m.optionsDef.widgets);\n }\n if (m.suggestionsDef?.options) {\n if (typeof m.suggestionsDef.options === \"function\") {\n result.loadOptions = async (query: string) =>\n withMergedWidgets(\n await m.suggestionsDef.options({ query, token: publicKey }),\n m.suggestionsDef.widgets,\n );\n } else {\n result.options = withMergedWidgets(m.suggestionsDef.options, m.suggestionsDef.widgets);\n }\n }\n return result;\n }\n\n if (inputGuards.range_input(meta)) {\n const current = (base.value as {\n from: number | null;\n to: number | null;\n }) ?? { from: null, to: null };\n return {\n from: {\n value: current.from,\n set: (v: number | null) => base.setValue({ ...current, from: v }),\n },\n to: {\n value: current.to,\n set: (v: number | null) => base.setValue({ ...current, to: v }),\n },\n };\n }\n\n if (inputGuards.date_range_input(meta)) {\n const current = (base.value as Record<string, string>) ?? {};\n return {\n from: {\n value: current.gte ?? current.gt ?? \"\",\n set: (v: string) => base.setValue({ ...current, gte: v }),\n },\n to: {\n value: current.lte ?? current.lt ?? \"\",\n set: (v: string) => base.setValue({ ...current, lte: v }),\n },\n };\n }\n\n if (inputGuards.exact_range_input(meta)) {\n const current = (base.value as Record<string, number | null>) ?? {};\n return {\n greaterThan: {\n operator: current.gt != null ? \"gt\" : \"gte\",\n value: current.gt ?? current.gte ?? null,\n setOperator: (op: string) => {\n const otherOp = op === \"gt\" ? \"gte\" : \"gt\";\n const val = current[otherOp] ?? current[op];\n const updated = { ...current };\n delete updated[otherOp];\n if (val != null) updated[op] = val;\n base.setValue(updated);\n },\n setValue: (v: number | null) => {\n const op = current.gt != null ? \"gt\" : \"gte\";\n const updated = { ...current };\n if (v != null) updated[op] = v;\n else delete updated[op];\n base.setValue(updated);\n },\n },\n lessThan: {\n operator: current.lt != null ? \"lt\" : \"lte\",\n value: current.lt ?? current.lte ?? null,\n setOperator: (op: string) => {\n const otherOp = op === \"lt\" ? \"lte\" : \"lt\";\n const val = current[otherOp] ?? current[op];\n const updated = { ...current };\n delete updated[otherOp];\n if (val != null) updated[op] = val;\n base.setValue(updated);\n },\n setValue: (v: number | null) => {\n const op = current.lt != null ? \"lt\" : \"lte\";\n const updated = { ...current };\n if (v != null) updated[op] = v;\n else delete updated[op];\n base.setValue(updated);\n },\n },\n };\n }\n\n if (inputGuards.min_max_int_input(meta)) {\n const current = (base.value as {\n min: number | null;\n max: number | null;\n }) ?? { min: null, max: null };\n return {\n from: {\n value: current.min,\n set: (v: number | null) => base.setValue({ ...current, min: v }),\n },\n to: {\n value: current.max,\n set: (v: number | null) => base.setValue({ ...current, max: v }),\n },\n };\n }\n\n if (inputGuards.multi_create_input(meta) || inputGuards.ordered_multi_create_input(meta)) {\n const items = (base.value as string[]) ?? [];\n const result: Record<string, unknown> = {\n items,\n add: (v: string) => base.setValue([...items, v]),\n remove: (v: string) => base.setValue(items.filter((i) => i !== v)),\n };\n if (inputGuards.ordered_multi_create_input(meta)) {\n result.reorder = (from: number, to: number) => {\n const next = [...items];\n const [moved] = next.splice(from, 1);\n next.splice(to, 0, moved);\n base.setValue(next);\n };\n }\n const m = meta as any;\n if (m.suggestionsDef?.options) {\n if (typeof m.suggestionsDef.options === \"function\") {\n result.loadOptions = async (query: string) =>\n withMergedWidgets(\n await m.suggestionsDef.options({ query, token: publicKey }),\n m.suggestionsDef.widgets,\n );\n } else {\n result.options = withMergedWidgets(m.suggestionsDef.options, m.suggestionsDef.widgets);\n }\n }\n return result;\n }\n\n if (inputGuards.key_value_list_input(meta)) {\n const rows = (base.value as Array<{ key: string; value: string }>) ?? [];\n return {\n rows,\n addRow: () => base.setValue([...rows, { key: \"\", value: \"\" }]),\n removeRow: (index: number) => base.setValue(rows.filter((_, i) => i !== index)),\n setKey: (index: number, key: string) =>\n base.setValue(rows.map((row, i) => (i === index ? { ...row, key } : row))),\n setValue: (index: number, value: string) =>\n base.setValue(rows.map((row, i) => (i === index ? { ...row, value } : row))),\n searchSecrets: loadingCtx?.searchSecrets,\n };\n }\n\n if (inputGuards.prompt_input(meta) || inputGuards.template_input(meta)) {\n return {\n searchSecrets: loadingCtx?.searchSecrets,\n };\n }\n\n // Remaining types need no extras beyond base\n return {};\n}\n\nfunction isEmptyValue(value: unknown): boolean {\n if (value === null || typeof value === \"undefined\") return true;\n if (typeof value === \"string\") return value === \"\";\n if (Array.isArray(value)) return value.length === 0;\n if (typeof value === \"object\") {\n const keys = Object.keys(value);\n if (keys.length === 0) return true;\n return keys.every((k) => isEmptyValue((value as Record<string, unknown>)[k]));\n }\n return false;\n}\n\nexport function buildSectionHandles(\n formConfig: FormSection[],\n form: UseFormReturn<Record<string, unknown>>,\n publicKey: string,\n loadingCtx?: FieldLoadingContext,\n): FormSectionHandle[] {\n // In onSubmit validation mode, don't flag groups as invalid until the\n // user has actually attempted a submit. This matches RHF's own field-level\n // behavior where `formState.errors` is only populated after the first\n // submit (and updated reactively thereafter per `reValidateMode`).\n const hasSubmitted = form.formState.isSubmitted;\n\n return formConfig.map((section) => {\n const groups: FormGroupHandle[] = section.groups.map((group) => {\n const fields = group.fields.map((meta) =>\n buildFieldProps(meta, form, publicKey, loadingCtx),\n ) as AnyFieldProps[];\n\n const groupPathError = form.getFieldState(group.groupPath as any).error;\n const errorCount = hasSubmitted\n ? fields.filter((f) => f.error != null).length + (groupPathError ? 1 : 0)\n : 0;\n const setCount = fields.filter((f) => !isEmptyValue(f.value)).length;\n\n return {\n key: group.groupPath,\n label: group.label,\n description: group.description,\n iconKey: group.iconKey,\n defaultExpand: group.defaultExpand ?? false,\n fields,\n errorCount,\n setCount,\n };\n });\n\n return {\n key: section.metadata.path,\n label: section.metadata.label,\n description: section.metadata.description,\n groups,\n };\n });\n}\n\nexport function applyFormCustomization(\n sections: FormSectionHandle[],\n customization: FormCustomizationState,\n): FormSectionHandle[] {\n const { sectionMap, groupMap, pathMap } = customization;\n\n const hasSectionOverrides = Object.keys(sectionMap).length > 0;\n const hasGroupOverrides = Object.keys(groupMap).length > 0;\n const hasPathOverrides = Object.keys(pathMap).length > 0;\n\n if (!hasSectionOverrides && !hasGroupOverrides && !hasPathOverrides) {\n return sections;\n }\n\n return sections\n .filter((section) => sectionMap[section.key as SectionKeys] !== null)\n .map((section) => {\n const sectionOverride = sectionMap[section.key as SectionKeys];\n const mergedSection = sectionOverride\n ? {\n ...section,\n label: sectionOverride.label ?? section.label,\n description: sectionOverride.description ?? section.description,\n }\n : section;\n\n const groups = mergedSection.groups\n .filter((group) => groupMap[group.key] !== null)\n .map((group) => {\n const groupOverride = groupMap[group.key];\n const mergedGroup = groupOverride\n ? {\n ...group,\n label: groupOverride.label ?? group.label,\n description: groupOverride.description ?? group.description,\n iconKey: groupOverride.iconKey ?? group.iconKey,\n defaultExpand: groupOverride.defaultExpand ?? group.defaultExpand,\n }\n : group;\n\n const fields = mergedGroup.fields\n .filter((field) => pathMap[field.path] !== null)\n .map((field) => {\n const fieldOverride = pathMap[field.path];\n if (!fieldOverride) return field;\n return {\n ...field,\n label: fieldOverride.label ?? field.label,\n description: fieldOverride.description ?? field.description,\n };\n });\n\n // Preserve the submit-gated error count from buildSectionHandles:\n // if the original group was not flagged, don't resurrect errors\n // here just because we recount post-filter.\n const errorCount =\n group.errorCount > 0 ? fields.filter((f) => f.error != null).length : 0;\n const setCount = fields.filter((f) => !isEmptyValue(f.value)).length;\n\n return { ...mergedGroup, fields, errorCount, setCount };\n })\n .filter((group) => group.fields.length > 0);\n\n return { ...mergedSection, groups };\n })\n .filter((section) => section.groups.length > 0);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as _$react from "react";
|
|
2
|
+
import * as _$lucide_react0 from "lucide-react";
|
|
3
|
+
import { RecordFieldStatus, RecordFieldType } from "@pipe0/base";
|
|
4
|
+
import { FilterFn } from "@tanstack/react-table";
|
|
5
|
+
|
|
6
|
+
//#region src/utils/catalog-helpers.d.ts
|
|
7
|
+
declare function getFieldTypeIcon(fieldType: RecordFieldType): _$react.ForwardRefExoticComponent<Omit<_$lucide_react0.LucideProps, "ref"> & _$react.RefAttributes<SVGSVGElement>>;
|
|
8
|
+
declare function getFieldStatusIcon(fieldStatus: RecordFieldStatus): _$react.ForwardRefExoticComponent<Omit<_$lucide_react0.LucideProps, "ref"> & _$react.RefAttributes<SVGSVGElement>>;
|
|
9
|
+
declare const fuzzyFilter: FilterFn<any>;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { fuzzyFilter, getFieldStatusIcon, getFieldTypeIcon };
|
|
12
|
+
//# sourceMappingURL=catalog-helpers.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-helpers.d.mts","names":[],"sources":["../../src/utils/catalog-helpers.tsx"],"mappings":";;;;;;iBAqCgB,gBAAA,CAAiB,SAAA,EAAW,eAAA,GAAe,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,eAAA,CAAA,WAAA,WAAA,OAAA,CAAA,aAAA,CAAA,aAAA;AAAA,iBAI3C,kBAAA,CAAmB,WAAA,EAAa,iBAAA,GAAiB,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,eAAA,CAAA,WAAA,WAAA,OAAA,CAAA,aAAA,CAAA,aAAA;AAAA,cAIpD,WAAA,EAAa,QAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { BookDashed, Bookmark, Braces, CheckCheck, Hash, HelpCircle, Loader, Pause, ToggleRight, TriangleDashed, Type, X } from "lucide-react";
|
|
2
|
+
import { rankItem } from "@tanstack/match-sorter-utils";
|
|
3
|
+
|
|
4
|
+
//#region src/utils/catalog-helpers.tsx
|
|
5
|
+
const fieldStatusIconMap = {
|
|
6
|
+
completed: CheckCheck,
|
|
7
|
+
failed: X,
|
|
8
|
+
no_result: BookDashed,
|
|
9
|
+
pending: Bookmark,
|
|
10
|
+
processing: Loader,
|
|
11
|
+
queued: Pause,
|
|
12
|
+
skipped: TriangleDashed
|
|
13
|
+
};
|
|
14
|
+
const FieldTypeIconMap = {
|
|
15
|
+
boolean: ToggleRight,
|
|
16
|
+
json: Braces,
|
|
17
|
+
number: Hash,
|
|
18
|
+
string: Type,
|
|
19
|
+
unknown: HelpCircle
|
|
20
|
+
};
|
|
21
|
+
function getFieldTypeIcon(fieldType) {
|
|
22
|
+
return FieldTypeIconMap[fieldType];
|
|
23
|
+
}
|
|
24
|
+
function getFieldStatusIcon(fieldStatus) {
|
|
25
|
+
return fieldStatusIconMap[fieldStatus];
|
|
26
|
+
}
|
|
27
|
+
const fuzzyFilter = (row, columnId, value, addMeta) => {
|
|
28
|
+
const itemRank = rankItem(row.getValue(columnId), value);
|
|
29
|
+
addMeta({ itemRank });
|
|
30
|
+
return itemRank.passed;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
//#endregion
|
|
34
|
+
export { fuzzyFilter, getFieldStatusIcon, getFieldTypeIcon };
|
|
35
|
+
//# sourceMappingURL=catalog-helpers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-helpers.mjs","names":[],"sources":["../../src/utils/catalog-helpers.tsx"],"sourcesContent":["import type { RecordFieldStatus, RecordFieldType } from \"@pipe0/base\";\nimport { rankItem } from \"@tanstack/match-sorter-utils\";\nimport type { FilterFn } from \"@tanstack/react-table\";\nimport {\n BookDashed,\n Bookmark,\n Braces,\n CheckCheck,\n Hash,\n HelpCircle,\n Loader,\n Pause,\n ToggleRight,\n TriangleDashed,\n Type,\n X,\n} from \"lucide-react\";\nimport type { ComponentType } from \"react\";\n\nconst fieldStatusIconMap = {\n completed: CheckCheck,\n failed: X,\n no_result: BookDashed,\n pending: Bookmark,\n processing: Loader,\n queued: Pause,\n skipped: TriangleDashed,\n} satisfies Record<RecordFieldStatus, ComponentType>;\n\nconst FieldTypeIconMap = {\n boolean: ToggleRight,\n json: Braces,\n number: Hash,\n string: Type,\n unknown: HelpCircle,\n} satisfies Record<RecordFieldType, ComponentType>;\n\nexport function getFieldTypeIcon(fieldType: RecordFieldType) {\n return FieldTypeIconMap[fieldType];\n}\n\nexport function getFieldStatusIcon(fieldStatus: RecordFieldStatus) {\n return fieldStatusIconMap[fieldStatus];\n}\n\nexport const fuzzyFilter: FilterFn<any> = (row, columnId, value, addMeta) => {\n const itemRank = rankItem(row.getValue(columnId), value);\n addMeta({ itemRank });\n return itemRank.passed;\n};\n"],"mappings":";;;;AAmBA,MAAM,qBAAqB;CACzB,WAAW;CACX,QAAQ;CACR,WAAW;CACX,SAAS;CACT,YAAY;CACZ,QAAQ;CACR,SAAS;CACV;AAED,MAAM,mBAAmB;CACvB,SAAS;CACT,MAAM;CACN,QAAQ;CACR,QAAQ;CACR,SAAS;CACV;AAED,SAAgB,iBAAiB,WAA4B;AAC3D,QAAO,iBAAiB;;AAG1B,SAAgB,mBAAmB,aAAgC;AACjE,QAAO,mBAAmB;;AAG5B,MAAa,eAA8B,KAAK,UAAU,OAAO,YAAY;CAC3E,MAAM,WAAW,SAAS,IAAI,SAAS,SAAS,EAAE,MAAM;AACxD,SAAQ,EAAE,UAAU,CAAC;AACrB,QAAO,SAAS"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/utils/generate-random-string.ts
|
|
2
|
+
const CHARSET = "abcdefghijklmnopqrstuvwxyz0123456789";
|
|
3
|
+
function generateRandomString(length) {
|
|
4
|
+
let result = "";
|
|
5
|
+
for (let i = 0; i < length; i++) result += CHARSET[Math.floor(Math.random() * 36)];
|
|
6
|
+
return result;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
//#endregion
|
|
10
|
+
export { generateRandomString };
|
|
11
|
+
//# sourceMappingURL=generate-random-string.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-random-string.mjs","names":[],"sources":["../../src/utils/generate-random-string.ts"],"sourcesContent":["const CHARSET = \"abcdefghijklmnopqrstuvwxyz0123456789\";\n\nexport function generateRandomString(length: number): string {\n let result = \"\";\n for (let i = 0; i < length; i++) {\n result += CHARSET[Math.floor(Math.random() * CHARSET.length)];\n }\n return result;\n}\n"],"mappings":";AAAA,MAAM,UAAU;AAEhB,SAAgB,qBAAqB,QAAwB;CAC3D,IAAI,SAAS;AACb,MAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,IAC1B,WAAU,QAAQ,KAAK,MAAM,KAAK,QAAQ,GAAG,GAAe;AAE9D,QAAO"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/utils/merge-form-stores.ts
|
|
2
|
+
function mergeFormStores(destination, source) {
|
|
3
|
+
return {
|
|
4
|
+
...destination,
|
|
5
|
+
field_options: {
|
|
6
|
+
...destination.field_options,
|
|
7
|
+
...source.field_options
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
export { mergeFormStores };
|
|
14
|
+
//# sourceMappingURL=merge-form-stores.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-form-stores.mjs","names":[],"sources":["../../src/utils/merge-form-stores.ts"],"sourcesContent":["import type { FormStore } from \"@pipe0/base\";\n\nexport function mergeFormStores(destination: FormStore, source: FormStore): FormStore {\n return {\n ...destination,\n field_options: {\n ...destination.field_options,\n ...source.field_options,\n },\n };\n}\n"],"mappings":";AAEA,SAAgB,gBAAgB,aAAwB,QAA8B;AACpF,QAAO;EACL,GAAG;EACH,eAAe;GACb,GAAG,YAAY;GACf,GAAG,OAAO;GACX;EACF"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
//#region src/utils/object-path.ts
|
|
2
|
+
/**
|
|
3
|
+
* Lightweight replacements for lodash get/set/unset that work with
|
|
4
|
+
* dot-notation string paths (e.g. "properties.name.type", "oneOf[0]").
|
|
5
|
+
*
|
|
6
|
+
* Uses structuredClone for deep copies instead of lodash cloneDeep.
|
|
7
|
+
*/
|
|
8
|
+
/** Parse a dot-notation path that may contain bracket indices. */
|
|
9
|
+
function parsePath(path) {
|
|
10
|
+
return path.replace(/\[(\d+)\]/g, ".$1").split(".").filter(Boolean);
|
|
11
|
+
}
|
|
12
|
+
/** Get a deeply-nested value by string path. */
|
|
13
|
+
function getByPath(obj, path) {
|
|
14
|
+
const keys = parsePath(path);
|
|
15
|
+
let current = obj;
|
|
16
|
+
for (const key of keys) {
|
|
17
|
+
if (current == null) return void 0;
|
|
18
|
+
current = current[key];
|
|
19
|
+
}
|
|
20
|
+
return current;
|
|
21
|
+
}
|
|
22
|
+
/** Set a deeply-nested value by string path, creating intermediate objects. */
|
|
23
|
+
function setByPath(obj, path, value) {
|
|
24
|
+
const keys = parsePath(path);
|
|
25
|
+
const result = obj;
|
|
26
|
+
let current = result;
|
|
27
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
28
|
+
const key = keys[i];
|
|
29
|
+
if (current[key] == null || typeof current[key] !== "object") {
|
|
30
|
+
const nextKey = keys[i + 1];
|
|
31
|
+
current[key] = /^\d+$/.test(nextKey) ? [] : {};
|
|
32
|
+
}
|
|
33
|
+
current = current[key];
|
|
34
|
+
}
|
|
35
|
+
current[keys[keys.length - 1]] = value;
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Like setByPath but ensures intermediate containers are always plain objects,
|
|
40
|
+
* matching lodash setWith(obj, path, value, Object).
|
|
41
|
+
*/
|
|
42
|
+
function setWithObjects(obj, path, value) {
|
|
43
|
+
const keys = parsePath(path);
|
|
44
|
+
const result = obj;
|
|
45
|
+
let current = result;
|
|
46
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
47
|
+
const key = keys[i];
|
|
48
|
+
if (current[key] == null || typeof current[key] !== "object") current[key] = {};
|
|
49
|
+
current = current[key];
|
|
50
|
+
}
|
|
51
|
+
current[keys[keys.length - 1]] = value;
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
/** Remove a deeply-nested key by string path. */
|
|
55
|
+
function unsetByPath(obj, path) {
|
|
56
|
+
const keys = parsePath(path);
|
|
57
|
+
const result = obj;
|
|
58
|
+
let current = result;
|
|
59
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
60
|
+
const key = keys[i];
|
|
61
|
+
if (current[key] == null) return result;
|
|
62
|
+
current = current[key];
|
|
63
|
+
}
|
|
64
|
+
const lastKey = keys[keys.length - 1];
|
|
65
|
+
if (Array.isArray(current)) current.splice(Number(lastKey), 1);
|
|
66
|
+
else delete current[lastKey];
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
//#endregion
|
|
71
|
+
export { getByPath, setByPath, setWithObjects, unsetByPath };
|
|
72
|
+
//# sourceMappingURL=object-path.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-path.mjs","names":[],"sources":["../../src/utils/object-path.ts"],"sourcesContent":["/**\n * Lightweight replacements for lodash get/set/unset that work with\n * dot-notation string paths (e.g. \"properties.name.type\", \"oneOf[0]\").\n *\n * Uses structuredClone for deep copies instead of lodash cloneDeep.\n */\n\n/** Parse a dot-notation path that may contain bracket indices. */\nfunction parsePath(path: string): string[] {\n return path\n .replace(/\\[(\\d+)\\]/g, \".$1\")\n .split(\".\")\n .filter(Boolean);\n}\n\n/** Get a deeply-nested value by string path. */\nexport function getByPath(obj: unknown, path: string): unknown {\n const keys = parsePath(path);\n let current: any = obj;\n for (const key of keys) {\n if (current == null) return undefined;\n current = current[key];\n }\n return current;\n}\n\n/** Set a deeply-nested value by string path, creating intermediate objects. */\nexport function setByPath<T>(obj: T, path: string, value: unknown): T {\n const keys = parsePath(path);\n const result: any = obj;\n let current: any = result;\n\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n if (current[key] == null || typeof current[key] !== \"object\") {\n // Create intermediate object (or array if next key is numeric)\n const nextKey = keys[i + 1];\n current[key] = /^\\d+$/.test(nextKey) ? [] : {};\n }\n current = current[key];\n }\n\n current[keys[keys.length - 1]] = value;\n return result;\n}\n\n/**\n * Like setByPath but ensures intermediate containers are always plain objects,\n * matching lodash setWith(obj, path, value, Object).\n */\nexport function setWithObjects<T>(obj: T, path: string, value: unknown): T {\n const keys = parsePath(path);\n const result: any = obj;\n let current: any = result;\n\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n if (current[key] == null || typeof current[key] !== \"object\") {\n current[key] = {};\n }\n current = current[key];\n }\n\n current[keys[keys.length - 1]] = value;\n return result;\n}\n\n/** Remove a deeply-nested key by string path. */\nexport function unsetByPath<T>(obj: T, path: string): T {\n const keys = parsePath(path);\n const result: any = obj;\n let current: any = result;\n\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n if (current[key] == null) return result;\n current = current[key];\n }\n\n const lastKey = keys[keys.length - 1];\n if (Array.isArray(current)) {\n current.splice(Number(lastKey), 1);\n } else {\n delete current[lastKey];\n }\n\n return result;\n}\n"],"mappings":";;;;;;;;AAQA,SAAS,UAAU,MAAwB;AACzC,QAAO,KACJ,QAAQ,cAAc,MAAM,CAC5B,MAAM,IAAI,CACV,OAAO,QAAQ;;;AAIpB,SAAgB,UAAU,KAAc,MAAuB;CAC7D,MAAM,OAAO,UAAU,KAAK;CAC5B,IAAI,UAAe;AACnB,MAAK,MAAM,OAAO,MAAM;AACtB,MAAI,WAAW,KAAM,QAAO;AAC5B,YAAU,QAAQ;;AAEpB,QAAO;;;AAIT,SAAgB,UAAa,KAAQ,MAAc,OAAmB;CACpE,MAAM,OAAO,UAAU,KAAK;CAC5B,MAAM,SAAc;CACpB,IAAI,UAAe;AAEnB,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,KAAK;EACxC,MAAM,MAAM,KAAK;AACjB,MAAI,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,SAAS,UAAU;GAE5D,MAAM,UAAU,KAAK,IAAI;AACzB,WAAQ,OAAO,QAAQ,KAAK,QAAQ,GAAG,EAAE,GAAG,EAAE;;AAEhD,YAAU,QAAQ;;AAGpB,SAAQ,KAAK,KAAK,SAAS,MAAM;AACjC,QAAO;;;;;;AAOT,SAAgB,eAAkB,KAAQ,MAAc,OAAmB;CACzE,MAAM,OAAO,UAAU,KAAK;CAC5B,MAAM,SAAc;CACpB,IAAI,UAAe;AAEnB,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,KAAK;EACxC,MAAM,MAAM,KAAK;AACjB,MAAI,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,SAAS,SAClD,SAAQ,OAAO,EAAE;AAEnB,YAAU,QAAQ;;AAGpB,SAAQ,KAAK,KAAK,SAAS,MAAM;AACjC,QAAO;;;AAIT,SAAgB,YAAe,KAAQ,MAAiB;CACtD,MAAM,OAAO,UAAU,KAAK;CAC5B,MAAM,SAAc;CACpB,IAAI,UAAe;AAEnB,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,KAAK;EACxC,MAAM,MAAM,KAAK;AACjB,MAAI,QAAQ,QAAQ,KAAM,QAAO;AACjC,YAAU,QAAQ;;CAGpB,MAAM,UAAU,KAAK,KAAK,SAAS;AACnC,KAAI,MAAM,QAAQ,QAAQ,CACxB,SAAQ,OAAO,OAAO,QAAQ,EAAE,EAAE;KAElC,QAAO,QAAQ;AAGjB,QAAO"}
|