terrier-engine 4.13.1 → 4.13.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/.editorconfig +727 -0
- package/.env +1 -0
- package/.git/config +34 -0
- package/.gitignore +18 -0
- package/.ruby-version +2 -0
- package/Gemfile +14 -0
- package/Gemfile.lock +371 -0
- package/MIT-LICENSE +20 -0
- package/README.md +233 -0
- package/Rakefile +38 -0
- package/after_pull +1 -0
- package/app/assets/config/terrier_engine_manifest.js +0 -0
- package/app/assets/fonts/glyps.ttf +0 -0
- package/app/assets/fonts/glyps.woff +0 -0
- package/app/assets/glyps/.fontcustom-manifest.json +306 -0
- package/app/assets/glyps/abacus.svg +7 -0
- package/app/assets/glyps/account.svg +9 -0
- package/app/assets/glyps/accounts_payable.svg +8 -0
- package/app/assets/glyps/accounts_receivable.svg +8 -0
- package/app/assets/glyps/action_log.svg +12 -0
- package/app/assets/glyps/activate.svg +8 -0
- package/app/assets/glyps/active.svg +8 -0
- package/app/assets/glyps/activity_high.svg +7 -0
- package/app/assets/glyps/activity_low.svg +7 -0
- package/app/assets/glyps/activity_medium.svg +7 -0
- package/app/assets/glyps/activity_none.svg +7 -0
- package/app/assets/glyps/address1.svg +10 -0
- package/app/assets/glyps/adjustment.svg +7 -0
- package/app/assets/glyps/admin.svg +8 -0
- package/app/assets/glyps/administration.svg +7 -0
- package/app/assets/glyps/air_freshener.svg +7 -0
- package/app/assets/glyps/alert.svg +9 -0
- package/app/assets/glyps/align_horizontal.svg +10 -0
- package/app/assets/glyps/align_vertical.svg +10 -0
- package/app/assets/glyps/anchor.svg +7 -0
- package/app/assets/glyps/announcement.svg +12 -0
- package/app/assets/glyps/app_update.svg +11 -0
- package/app/assets/glyps/append_selection.svg +21 -0
- package/app/assets/glyps/appointment.svg +8 -0
- package/app/assets/glyps/appointment_setup.svg +9 -0
- package/app/assets/glyps/archive.svg +8 -0
- package/app/assets/glyps/arrow_down.svg +7 -0
- package/app/assets/glyps/arrow_left.svg +7 -0
- package/app/assets/glyps/arrow_right.svg +7 -0
- package/app/assets/glyps/arrow_transfer.svg +10 -0
- package/app/assets/glyps/arrow_up.svg +7 -0
- package/app/assets/glyps/ascending.svg +10 -0
- package/app/assets/glyps/attachment.svg +7 -0
- package/app/assets/glyps/audit_analyzer.svg +8 -0
- package/app/assets/glyps/autopay.svg +9 -0
- package/app/assets/glyps/availability.svg +13 -0
- package/app/assets/glyps/background_batch.svg +8 -0
- package/app/assets/glyps/background_job.svg +8 -0
- package/app/assets/glyps/bait_for_demolition.svg +15 -0
- package/app/assets/glyps/bar_chart.svg +11 -0
- package/app/assets/glyps/barcode.svg +15 -0
- package/app/assets/glyps/bat_exclusion.svg +9 -0
- package/app/assets/glyps/bed_bug_fumigation.svg +8 -0
- package/app/assets/glyps/begin_service.svg +8 -0
- package/app/assets/glyps/belongs_to.svg +7 -0
- package/app/assets/glyps/billing.svg +11 -0
- package/app/assets/glyps/billing_office.svg +11 -0
- package/app/assets/glyps/billing_terms.svg +12 -0
- package/app/assets/glyps/billto.svg +13 -0
- package/app/assets/glyps/bioremediation.svg +15 -0
- package/app/assets/glyps/bird_exclusion.svg +9 -0
- package/app/assets/glyps/black_light.svg +15 -0
- package/app/assets/glyps/branch.svg +7 -0
- package/app/assets/glyps/branch_bats.svg +7 -0
- package/app/assets/glyps/branch_birds.svg +7 -0
- package/app/assets/glyps/branch_general.svg +7 -0
- package/app/assets/glyps/branch_irrigation.svg +15 -0
- package/app/assets/glyps/branch_landscape.svg +7 -0
- package/app/assets/glyps/branch_multi_housing.svg +7 -0
- package/app/assets/glyps/branch_office.svg +7 -0
- package/app/assets/glyps/branch_orders.svg +8 -0
- package/app/assets/glyps/branch_residential.svg +7 -0
- package/app/assets/glyps/branch_sales.svg +10 -0
- package/app/assets/glyps/branch_termites.svg +7 -0
- package/app/assets/glyps/branch_weeds.svg +7 -0
- package/app/assets/glyps/branch_wildlife.svg +13 -0
- package/app/assets/glyps/build.svg +8 -0
- package/app/assets/glyps/calculate.svg +16 -0
- package/app/assets/glyps/calendar.svg +7 -0
- package/app/assets/glyps/calendar_branch.svg +8 -0
- package/app/assets/glyps/calendar_map.svg +8 -0
- package/app/assets/glyps/calendar_rolling.svg +8 -0
- package/app/assets/glyps/calendar_share.svg +13 -0
- package/app/assets/glyps/calendar_snap.svg +11 -0
- package/app/assets/glyps/california.svg +7 -0
- package/app/assets/glyps/call.svg +7 -0
- package/app/assets/glyps/callback.svg +7 -0
- package/app/assets/glyps/camera.svg +12 -0
- package/app/assets/glyps/cancellation.svg +11 -0
- package/app/assets/glyps/cancelled.svg +8 -0
- package/app/assets/glyps/card_american_express.svg +7 -0
- package/app/assets/glyps/card_discover.svg +14 -0
- package/app/assets/glyps/card_mastercard.svg +21 -0
- package/app/assets/glyps/card_visa.svg +12 -0
- package/app/assets/glyps/catalog.svg +12 -0
- package/app/assets/glyps/caught.svg +8 -0
- package/app/assets/glyps/cert.svg +10 -0
- package/app/assets/glyps/check_all.svg +8 -0
- package/app/assets/glyps/check_in.svg +9 -0
- package/app/assets/glyps/check_in_service.svg +9 -0
- package/app/assets/glyps/checked.svg +8 -0
- package/app/assets/glyps/checked_empty.svg +7 -0
- package/app/assets/glyps/checkmark.svg +7 -0
- package/app/assets/glyps/checkmark_filled.svg +7 -0
- package/app/assets/glyps/checkout.svg +8 -0
- package/app/assets/glyps/chemical.svg +15 -0
- package/app/assets/glyps/chemical_authorization.svg +9 -0
- package/app/assets/glyps/chemical_backpack_sprayer.svg +7 -0
- package/app/assets/glyps/chemical_biological_controls.svg +15 -0
- package/app/assets/glyps/chemical_disinfectant.svg +10 -0
- package/app/assets/glyps/chemical_fertilizer.svg +9 -0
- package/app/assets/glyps/chemical_flying_insect_bait.svg +12 -0
- package/app/assets/glyps/chemical_fumigants.svg +9 -0
- package/app/assets/glyps/chemical_insect_aerosol.svg +10 -0
- package/app/assets/glyps/chemical_insect_bait.svg +28 -0
- package/app/assets/glyps/chemical_insect_dust.svg +9 -0
- package/app/assets/glyps/chemical_insect_granules.svg +23 -0
- package/app/assets/glyps/chemical_insect_spray.svg +9 -0
- package/app/assets/glyps/chemical_label.svg +11 -0
- package/app/assets/glyps/chemical_mole_bait.svg +14 -0
- package/app/assets/glyps/chemical_pest_bird_control.svg +14 -0
- package/app/assets/glyps/chemical_pheromone_products.svg +9 -0
- package/app/assets/glyps/chemical_power_sprayer.svg +7 -0
- package/app/assets/glyps/chemical_rodenticide_block.svg +13 -0
- package/app/assets/glyps/chemical_rodenticide_non_block.svg +23 -0
- package/app/assets/glyps/chemical_sds.svg +7 -0
- package/app/assets/glyps/chemical_tree_products.svg +7 -0
- package/app/assets/glyps/chemical_weed_control.svg +8 -0
- package/app/assets/glyps/chemical_wildlife_repellents.svg +21 -0
- package/app/assets/glyps/chemical_wildlife_toxicants.svg +14 -0
- package/app/assets/glyps/chevron_down.svg +7 -0
- package/app/assets/glyps/chevron_left.svg +7 -0
- package/app/assets/glyps/chevron_right.svg +7 -0
- package/app/assets/glyps/chevron_up.svg +7 -0
- package/app/assets/glyps/city.svg +26 -0
- package/app/assets/glyps/click.svg +8 -0
- package/app/assets/glyps/client_actions.svg +8 -0
- package/app/assets/glyps/client_pest_sightings.svg +11 -0
- package/app/assets/glyps/client_required.svg +8 -0
- package/app/assets/glyps/close.svg +7 -0
- package/app/assets/glyps/cloud.svg +7 -0
- package/app/assets/glyps/clypboard.svg +7 -0
- package/app/assets/glyps/clypedia.svg +6 -0
- package/app/assets/glyps/clypmart.svg +7 -0
- package/app/assets/glyps/code.svg +9 -0
- package/app/assets/glyps/code_details.svg +11 -0
- package/app/assets/glyps/collections.svg +13 -0
- package/app/assets/glyps/columns.svg +10 -0
- package/app/assets/glyps/comment.svg +11 -0
- package/app/assets/glyps/comment_filled.svg +7 -0
- package/app/assets/glyps/commission_origin.svg +8 -0
- package/app/assets/glyps/commissions.svg +11 -0
- package/app/assets/glyps/company_setup.svg +8 -0
- package/app/assets/glyps/compass.svg +8 -0
- package/app/assets/glyps/complete.svg +8 -0
- package/app/assets/glyps/complete_certificate.svg +12 -0
- package/app/assets/glyps/complete_enrollment.svg +16 -0
- package/app/assets/glyps/condition_appliance_machinery.svg +17 -0
- package/app/assets/glyps/condition_customer.svg +8 -0
- package/app/assets/glyps/condition_device.svg +7 -0
- package/app/assets/glyps/condition_door_window.svg +11 -0
- package/app/assets/glyps/condition_dumpster.svg +16 -0
- package/app/assets/glyps/condition_entry_point.svg +8 -0
- package/app/assets/glyps/condition_evidence.svg +10 -0
- package/app/assets/glyps/condition_exclusion.svg +8 -0
- package/app/assets/glyps/condition_exterior.svg +22 -0
- package/app/assets/glyps/condition_interior.svg +11 -0
- package/app/assets/glyps/condition_plumbing.svg +10 -0
- package/app/assets/glyps/condition_prep_storage.svg +14 -0
- package/app/assets/glyps/condition_rodent_evidence.svg +8 -0
- package/app/assets/glyps/condition_rodent_exclusion.svg +20 -0
- package/app/assets/glyps/condition_roof_ceiling.svg +8 -0
- package/app/assets/glyps/condition_structure.svg +12 -0
- package/app/assets/glyps/condition_supplies.svg +10 -0
- package/app/assets/glyps/condition_termites.svg +7 -0
- package/app/assets/glyps/condition_ventilation.svg +9 -0
- package/app/assets/glyps/condition_wall_floor.svg +17 -0
- package/app/assets/glyps/condition_wildlife.svg +9 -0
- package/app/assets/glyps/conditions.svg +11 -0
- package/app/assets/glyps/consolidate.svg +7 -0
- package/app/assets/glyps/construction.svg +11 -0
- package/app/assets/glyps/contract.svg +8 -0
- package/app/assets/glyps/contract_cancellation.svg +9 -0
- package/app/assets/glyps/contract_overview.svg +8 -0
- package/app/assets/glyps/conversation.svg +18 -0
- package/app/assets/glyps/copesan.svg +10 -0
- package/app/assets/glyps/copy.svg +8 -0
- package/app/assets/glyps/credit_memo.svg +8 -0
- package/app/assets/glyps/credit_non_revenue.svg +8 -0
- package/app/assets/glyps/credit_production.svg +13 -0
- package/app/assets/glyps/credit_prospect.svg +11 -0
- package/app/assets/glyps/credit_sales_bonus.svg +7 -0
- package/app/assets/glyps/crew.svg +8 -0
- package/app/assets/glyps/cumulative.svg +7 -0
- package/app/assets/glyps/cursor.svg +7 -0
- package/app/assets/glyps/custom_form.svg +14 -0
- package/app/assets/glyps/customer.svg +8 -0
- package/app/assets/glyps/customer_service.svg +8 -0
- package/app/assets/glyps/dashboard.svg +10 -0
- package/app/assets/glyps/data_dive.svg +7 -0
- package/app/assets/glyps/data_dive_query.svg +8 -0
- package/app/assets/glyps/data_dives.svg +9 -0
- package/app/assets/glyps/database.svg +7 -0
- package/app/assets/glyps/dead_animal_removal.svg +10 -0
- package/app/assets/glyps/default.svg +10 -0
- package/app/assets/glyps/delete.svg +12 -0
- package/app/assets/glyps/demo_mode.svg +8 -0
- package/app/assets/glyps/descending.svg +12 -0
- package/app/assets/glyps/design.svg +13 -0
- package/app/assets/glyps/desktop.svg +7 -0
- package/app/assets/glyps/detail_report.svg +8 -0
- package/app/assets/glyps/developer.svg +9 -0
- package/app/assets/glyps/device.svg +7 -0
- package/app/assets/glyps/device_sync.svg +8 -0
- package/app/assets/glyps/differential.svg +7 -0
- package/app/assets/glyps/disable.svg +7 -0
- package/app/assets/glyps/disabled_filled.svg +7 -0
- package/app/assets/glyps/distribute_horizontal.svg +14 -0
- package/app/assets/glyps/distribute_vertical.svg +12 -0
- package/app/assets/glyps/division.svg +10 -0
- package/app/assets/glyps/document.svg +9 -0
- package/app/assets/glyps/documentation.svg +7 -0
- package/app/assets/glyps/documents.svg +10 -0
- package/app/assets/glyps/download.svg +8 -0
- package/app/assets/glyps/driving.svg +11 -0
- package/app/assets/glyps/duplicate.svg +10 -0
- package/app/assets/glyps/duplicate_location.svg +8 -0
- package/app/assets/glyps/duration.svg +7 -0
- package/app/assets/glyps/edit.svg +10 -0
- package/app/assets/glyps/email.svg +7 -0
- package/app/assets/glyps/employment.svg +7 -0
- package/app/assets/glyps/entertainment_public_venues.svg +10 -0
- package/app/assets/glyps/equipment_bear_trap.svg +11 -0
- package/app/assets/glyps/equipment_flying_insect_bait_station.svg +7 -0
- package/app/assets/glyps/equipment_flying_insect_light_trap.svg +8 -0
- package/app/assets/glyps/equipment_insect_monitor.svg +7 -0
- package/app/assets/glyps/equipment_lethal_animal_trap.svg +9 -0
- package/app/assets/glyps/equipment_live_animal_trap.svg +8 -0
- package/app/assets/glyps/equipment_live_rodent_trap.svg +7 -0
- package/app/assets/glyps/equipment_maintenance.svg +7 -0
- package/app/assets/glyps/equipment_map_viewer.svg +8 -0
- package/app/assets/glyps/equipment_maps.svg +7 -0
- package/app/assets/glyps/equipment_mosquito_trap.svg +7 -0
- package/app/assets/glyps/equipment_other.svg +9 -0
- package/app/assets/glyps/equipment_pheromone_trap.svg +8 -0
- package/app/assets/glyps/equipment_pick_up.svg +14 -0
- package/app/assets/glyps/equipment_rodent_bait.svg +7 -0
- package/app/assets/glyps/equipment_rodent_trap.svg +10 -0
- package/app/assets/glyps/equipment_termite_bait_station.svg +13 -0
- package/app/assets/glyps/equipment_termite_monitor.svg +7 -0
- package/app/assets/glyps/exclusion.svg +8 -0
- package/app/assets/glyps/expand.svg +7 -0
- package/app/assets/glyps/expired.svg +11 -0
- package/app/assets/glyps/expiring.svg +8 -0
- package/app/assets/glyps/exterior.svg +22 -0
- package/app/assets/glyps/extras.svg +11 -0
- package/app/assets/glyps/facebook.svg +7 -0
- package/app/assets/glyps/farm.svg +13 -0
- package/app/assets/glyps/farm_grain_seed.svg +13 -0
- package/app/assets/glyps/fast_and_frequent.svg +10 -0
- package/app/assets/glyps/favorite.svg +7 -0
- package/app/assets/glyps/feedback.svg +9 -0
- package/app/assets/glyps/field_guide.svg +13 -0
- package/app/assets/glyps/field_training.svg +8 -0
- package/app/assets/glyps/file_blank.svg +11 -0
- package/app/assets/glyps/file_html.svg +10 -0
- package/app/assets/glyps/file_image.svg +10 -0
- package/app/assets/glyps/file_pdf.svg +8 -0
- package/app/assets/glyps/file_printable.svg +15 -0
- package/app/assets/glyps/file_spreadsheet.svg +7 -0
- package/app/assets/glyps/file_text.svg +16 -0
- package/app/assets/glyps/filter.svg +7 -0
- package/app/assets/glyps/finance.svg +11 -0
- package/app/assets/glyps/finding.svg +7 -0
- package/app/assets/glyps/fogging.svg +10 -0
- package/app/assets/glyps/folder.svg +8 -0
- package/app/assets/glyps/followup.svg +7 -0
- package/app/assets/glyps/food_bev_pharma.svg +12 -0
- package/app/assets/glyps/formula.svg +12 -0
- package/app/assets/glyps/fuel.svg +7 -0
- package/app/assets/glyps/fumigation.svg +9 -0
- package/app/assets/glyps/function.svg +7 -0
- package/app/assets/glyps/function_aggregate.svg +8 -0
- package/app/assets/glyps/function_time.svg +8 -0
- package/app/assets/glyps/gain_loss.svg +15 -0
- package/app/assets/glyps/generate_invoices.svg +8 -0
- package/app/assets/glyps/generate_orders.svg +8 -0
- package/app/assets/glyps/geo.svg +7 -0
- package/app/assets/glyps/geo_heat_map.svg +7 -0
- package/app/assets/glyps/glyp-preview.html +3143 -0
- package/app/assets/glyps/glyp-svgo-config.cjs +12 -0
- package/app/assets/glyps/glyp_static_whitelist.txt +5 -0
- package/app/assets/glyps/google.svg +7 -0
- package/app/assets/glyps/google_calendar.svg +11 -0
- package/app/assets/glyps/government.svg +12 -0
- package/app/assets/glyps/grain_seed.svg +20 -0
- package/app/assets/glyps/grid.svg +7 -0
- package/app/assets/glyps/grouped.svg +16 -0
- package/app/assets/glyps/grouping_combine.svg +7 -0
- package/app/assets/glyps/grouping_separate.svg +8 -0
- package/app/assets/glyps/has_many.svg +7 -0
- package/app/assets/glyps/health_care.svg +26 -0
- package/app/assets/glyps/heat_map.svg +11 -0
- package/app/assets/glyps/heat_treatment.svg +9 -0
- package/app/assets/glyps/help.svg +8 -0
- package/app/assets/glyps/hidden.svg +8 -0
- package/app/assets/glyps/hint.svg +17 -0
- package/app/assets/glyps/honeybee_removal.svg +10 -0
- package/app/assets/glyps/housing.svg +13 -0
- package/app/assets/glyps/icon.svg +9 -0
- package/app/assets/glyps/identifier.svg +11 -0
- package/app/assets/glyps/import.svg +8 -0
- package/app/assets/glyps/import_data.svg +8 -0
- package/app/assets/glyps/in_progress.svg +11 -0
- package/app/assets/glyps/inbox.svg +8 -0
- package/app/assets/glyps/incomplete_certificate.svg +9 -0
- package/app/assets/glyps/industrial.svg +8 -0
- package/app/assets/glyps/info.svg +8 -0
- package/app/assets/glyps/information_technology.svg +8 -0
- package/app/assets/glyps/inspect_map.svg +7 -0
- package/app/assets/glyps/inspections.svg +8 -0
- package/app/assets/glyps/insulation.svg +7 -0
- package/app/assets/glyps/interior.svg +11 -0
- package/app/assets/glyps/invoice.svg +8 -0
- package/app/assets/glyps/invoice_review.svg +8 -0
- package/app/assets/glyps/irrigation_install.svg +14 -0
- package/app/assets/glyps/irrigation_maintenance.svg +14 -0
- package/app/assets/glyps/items.svg +12 -0
- package/app/assets/glyps/job.svg +7 -0
- package/app/assets/glyps/join.svg +7 -0
- package/app/assets/glyps/join_inner.svg +7 -0
- package/app/assets/glyps/join_left.svg +7 -0
- package/app/assets/glyps/justice.svg +7 -0
- package/app/assets/glyps/k9_inspection.svg +7 -0
- package/app/assets/glyps/key.svg +7 -0
- package/app/assets/glyps/label_bottom.svg +8 -0
- package/app/assets/glyps/label_left.svg +8 -0
- package/app/assets/glyps/label_right.svg +8 -0
- package/app/assets/glyps/label_top.svg +8 -0
- package/app/assets/glyps/labor.svg +7 -0
- package/app/assets/glyps/landscape.svg +14 -0
- package/app/assets/glyps/landscape_maintenance.svg +13 -0
- package/app/assets/glyps/laptop.svg +8 -0
- package/app/assets/glyps/lead.svg +8 -0
- package/app/assets/glyps/lead_listing.svg +9 -0
- package/app/assets/glyps/lead_source.svg +13 -0
- package/app/assets/glyps/leads_report.svg +8 -0
- package/app/assets/glyps/learning_hub.svg +13 -0
- package/app/assets/glyps/ledger.svg +12 -0
- package/app/assets/glyps/legal.svg +8 -0
- package/app/assets/glyps/license.svg +11 -0
- package/app/assets/glyps/lifetime.svg +9 -0
- package/app/assets/glyps/line_cap_arrow.svg +7 -0
- package/app/assets/glyps/line_cap_bar.svg +7 -0
- package/app/assets/glyps/line_cap_circle.svg +7 -0
- package/app/assets/glyps/line_cap_none.svg +7 -0
- package/app/assets/glyps/line_caps.svg +7 -0
- package/app/assets/glyps/line_style.svg +19 -0
- package/app/assets/glyps/link.svg +10 -0
- package/app/assets/glyps/location.svg +10 -0
- package/app/assets/glyps/location_charge.svg +8 -0
- package/app/assets/glyps/location_credit.svg +8 -0
- package/app/assets/glyps/location_import.svg +8 -0
- package/app/assets/glyps/location_kind.svg +7 -0
- package/app/assets/glyps/location_message.svg +11 -0
- package/app/assets/glyps/location_origin.svg +8 -0
- package/app/assets/glyps/location_seed.svg +8 -0
- package/app/assets/glyps/location_tags.svg +11 -0
- package/app/assets/glyps/locations.svg +13 -0
- package/app/assets/glyps/locked.svg +8 -0
- package/app/assets/glyps/lodging.svg +30 -0
- package/app/assets/glyps/log_in.svg +8 -0
- package/app/assets/glyps/log_out.svg +8 -0
- package/app/assets/glyps/log_report.svg +17 -0
- package/app/assets/glyps/logbook.svg +9 -0
- package/app/assets/glyps/logbook_documents.svg +14 -0
- package/app/assets/glyps/lot_number.svg +10 -0
- package/app/assets/glyps/manager.svg +7 -0
- package/app/assets/glyps/map.svg +7 -0
- package/app/assets/glyps/markdown.svg +9 -0
- package/app/assets/glyps/market.svg +7 -0
- package/app/assets/glyps/materials.svg +7 -0
- package/app/assets/glyps/mattress_encasement.svg +7 -0
- package/app/assets/glyps/merge.svg +7 -0
- package/app/assets/glyps/message_billing.svg +13 -0
- package/app/assets/glyps/message_collections.svg +13 -0
- package/app/assets/glyps/message_complaint.svg +7 -0
- package/app/assets/glyps/message_misc.svg +10 -0
- package/app/assets/glyps/message_technician.svg +7 -0
- package/app/assets/glyps/messages.svg +8 -0
- package/app/assets/glyps/misc.svg +14 -0
- package/app/assets/glyps/miscellaneous.svg +14 -0
- package/app/assets/glyps/move_order.svg +8 -0
- package/app/assets/glyps/mowing.svg +13 -0
- package/app/assets/glyps/multi_housing.svg +20 -0
- package/app/assets/glyps/multi_tech_order.svg +9 -0
- package/app/assets/glyps/mute.svg +8 -0
- package/app/assets/glyps/navicon.svg +9 -0
- package/app/assets/glyps/new_location.svg +11 -0
- package/app/assets/glyps/new_ticket.svg +8 -0
- package/app/assets/glyps/no_charge.svg +8 -0
- package/app/assets/glyps/no_service.svg +10 -0
- package/app/assets/glyps/note.svg +12 -0
- package/app/assets/glyps/note_access.svg +23 -0
- package/app/assets/glyps/note_billing.svg +13 -0
- package/app/assets/glyps/note_collection.svg +13 -0
- package/app/assets/glyps/note_complaint.svg +7 -0
- package/app/assets/glyps/note_directions.svg +8 -0
- package/app/assets/glyps/note_focused.svg +8 -0
- package/app/assets/glyps/note_office.svg +7 -0
- package/app/assets/glyps/note_preservice.svg +7 -0
- package/app/assets/glyps/note_sales.svg +12 -0
- package/app/assets/glyps/note_service.svg +14 -0
- package/app/assets/glyps/notification.svg +7 -0
- package/app/assets/glyps/number.svg +7 -0
- package/app/assets/glyps/office.svg +19 -0
- package/app/assets/glyps/office_government.svg +8 -0
- package/app/assets/glyps/office_training.svg +8 -0
- package/app/assets/glyps/on_demand.svg +8 -0
- package/app/assets/glyps/on_demand_order.svg +8 -0
- package/app/assets/glyps/open.svg +10 -0
- package/app/assets/glyps/open_invoice.svg +8 -0
- package/app/assets/glyps/operations.svg +8 -0
- package/app/assets/glyps/options.svg +9 -0
- package/app/assets/glyps/order_actions.svg +8 -0
- package/app/assets/glyps/order_approved.svg +9 -0
- package/app/assets/glyps/order_batch.svg +9 -0
- package/app/assets/glyps/order_editor.svg +12 -0
- package/app/assets/glyps/order_pending.svg +11 -0
- package/app/assets/glyps/order_series.svg +11 -0
- package/app/assets/glyps/order_unapproved.svg +9 -0
- package/app/assets/glyps/org_structure.svg +7 -0
- package/app/assets/glyps/org_unit.svg +7 -0
- package/app/assets/glyps/org_unit_settings.svg +8 -0
- package/app/assets/glyps/origin.svg +7 -0
- package/app/assets/glyps/origin_client.svg +7 -0
- package/app/assets/glyps/origin_tech.svg +7 -0
- package/app/assets/glyps/outbox.svg +8 -0
- package/app/assets/glyps/outlook.svg +9 -0
- package/app/assets/glyps/overlap.svg +8 -0
- package/app/assets/glyps/password.svg +10 -0
- package/app/assets/glyps/past_due.svg +9 -0
- package/app/assets/glyps/paused.svg +9 -0
- package/app/assets/glyps/pay_brackets.svg +9 -0
- package/app/assets/glyps/payment.svg +11 -0
- package/app/assets/glyps/payment_ach.svg +12 -0
- package/app/assets/glyps/payment_application_apply.svg +10 -0
- package/app/assets/glyps/payment_application_correction.svg +8 -0
- package/app/assets/glyps/payment_application_initial.svg +7 -0
- package/app/assets/glyps/payment_application_refund.svg +7 -0
- package/app/assets/glyps/payment_application_transfer.svg +7 -0
- package/app/assets/glyps/payment_application_unapply.svg +10 -0
- package/app/assets/glyps/payment_application_unapply_all.svg +13 -0
- package/app/assets/glyps/payment_applications.svg +7 -0
- package/app/assets/glyps/payment_batch.svg +9 -0
- package/app/assets/glyps/payment_cash.svg +12 -0
- package/app/assets/glyps/payment_check.svg +13 -0
- package/app/assets/glyps/payment_coupon.svg +25 -0
- package/app/assets/glyps/payment_credit.svg +9 -0
- package/app/assets/glyps/payment_discount.svg +25 -0
- package/app/assets/glyps/payment_eft.svg +12 -0
- package/app/assets/glyps/payment_finance_charge.svg +8 -0
- package/app/assets/glyps/payments.svg +11 -0
- package/app/assets/glyps/payroll.svg +9 -0
- package/app/assets/glyps/pdf.svg +8 -0
- package/app/assets/glyps/pending.svg +12 -0
- package/app/assets/glyps/periodic.svg +10 -0
- package/app/assets/glyps/periodic_assessment.svg +15 -0
- package/app/assets/glyps/permission.svg +9 -0
- package/app/assets/glyps/pest.svg +7 -0
- package/app/assets/glyps/pest_ants.svg +7 -0
- package/app/assets/glyps/pest_bats.svg +7 -0
- package/app/assets/glyps/pest_bed_bugs.svg +7 -0
- package/app/assets/glyps/pest_birds.svg +7 -0
- package/app/assets/glyps/pest_crawling_insects.svg +7 -0
- package/app/assets/glyps/pest_dermestids.svg +7 -0
- package/app/assets/glyps/pest_fall_invaders.svg +7 -0
- package/app/assets/glyps/pest_flying_insects.svg +7 -0
- package/app/assets/glyps/pest_moles.svg +9 -0
- package/app/assets/glyps/pest_mosquitoes.svg +7 -0
- package/app/assets/glyps/pest_nuisance_animals.svg +9 -0
- package/app/assets/glyps/pest_ornamental.svg +7 -0
- package/app/assets/glyps/pest_ornamental_diseases.svg +7 -0
- package/app/assets/glyps/pest_roaches.svg +7 -0
- package/app/assets/glyps/pest_rodents.svg +16 -0
- package/app/assets/glyps/pest_scorpions.svg +8 -0
- package/app/assets/glyps/pest_snakes.svg +7 -0
- package/app/assets/glyps/pest_spiders.svg +7 -0
- package/app/assets/glyps/pest_stinging_insects.svg +7 -0
- package/app/assets/glyps/pest_stored_product_pests.svg +7 -0
- package/app/assets/glyps/pest_ticks_and_fleas.svg +11 -0
- package/app/assets/glyps/pest_viruses_and_bacteria.svg +7 -0
- package/app/assets/glyps/pest_weeds.svg +7 -0
- package/app/assets/glyps/pest_wood_destroyers.svg +7 -0
- package/app/assets/glyps/phone.svg +7 -0
- package/app/assets/glyps/pick_date.svg +8 -0
- package/app/assets/glyps/pick_list.svg +8 -0
- package/app/assets/glyps/platform_android.svg +12 -0
- package/app/assets/glyps/platform_ios.svg +8 -0
- package/app/assets/glyps/platform_macos.svg +7 -0
- package/app/assets/glyps/platform_windows.svg +10 -0
- package/app/assets/glyps/play.svg +10 -0
- package/app/assets/glyps/plus.svg +7 -0
- package/app/assets/glyps/plus_filled.svg +7 -0
- package/app/assets/glyps/plus_outline.svg +8 -0
- package/app/assets/glyps/portal.svg +8 -0
- package/app/assets/glyps/price_increase.svg +9 -0
- package/app/assets/glyps/price_increase_alt.svg +9 -0
- package/app/assets/glyps/pricing_table.svg +8 -0
- package/app/assets/glyps/print.svg +11 -0
- package/app/assets/glyps/privacy.svg +7 -0
- package/app/assets/glyps/product_sale.svg +10 -0
- package/app/assets/glyps/production.svg +8 -0
- package/app/assets/glyps/professional_consultation.svg +7 -0
- package/app/assets/glyps/program.svg +7 -0
- package/app/assets/glyps/program_elements.svg +8 -0
- package/app/assets/glyps/program_initiation.svg +8 -0
- package/app/assets/glyps/program_order.svg +8 -0
- package/app/assets/glyps/program_review.svg +8 -0
- package/app/assets/glyps/promo.svg +11 -0
- package/app/assets/glyps/proposal.svg +11 -0
- package/app/assets/glyps/protection.svg +8 -0
- package/app/assets/glyps/purchase_order.svg +8 -0
- package/app/assets/glyps/quality.svg +8 -0
- package/app/assets/glyps/query.svg +8 -0
- package/app/assets/glyps/radio_checked.svg +8 -0
- package/app/assets/glyps/radio_empty.svg +7 -0
- package/app/assets/glyps/reassign.svg +8 -0
- package/app/assets/glyps/receipt.svg +10 -0
- package/app/assets/glyps/recent.svg +10 -0
- package/app/assets/glyps/recommendation.svg +9 -0
- package/app/assets/glyps/record_details.svg +9 -0
- package/app/assets/glyps/recurring_revenue.svg +13 -0
- package/app/assets/glyps/redo.svg +7 -0
- package/app/assets/glyps/refresh.svg +9 -0
- package/app/assets/glyps/refund.svg +10 -0
- package/app/assets/glyps/region.svg +11 -0
- package/app/assets/glyps/released.svg +8 -0
- package/app/assets/glyps/remove.svg +8 -0
- package/app/assets/glyps/renewal.svg +8 -0
- package/app/assets/glyps/report.svg +8 -0
- package/app/assets/glyps/required_input.svg +7 -0
- package/app/assets/glyps/reschedule.svg +8 -0
- package/app/assets/glyps/restaurant_bar.svg +18 -0
- package/app/assets/glyps/revenue.svg +14 -0
- package/app/assets/glyps/review.svg +10 -0
- package/app/assets/glyps/rfid.svg +8 -0
- package/app/assets/glyps/ride_along.svg +9 -0
- package/app/assets/glyps/rodent_exclusion.svg +20 -0
- package/app/assets/glyps/route_change.svg +11 -0
- package/app/assets/glyps/route_optimization.svg +7 -0
- package/app/assets/glyps/rows.svg +12 -0
- package/app/assets/glyps/ruler.svg +7 -0
- package/app/assets/glyps/sales.svg +16 -0
- package/app/assets/glyps/sales_contest.svg +8 -0
- package/app/assets/glyps/sales_pipeline.svg +8 -0
- package/app/assets/glyps/sales_tax.svg +10 -0
- package/app/assets/glyps/sales_tax_exemption.svg +11 -0
- package/app/assets/glyps/schedule_lock.svg +11 -0
- package/app/assets/glyps/schedule_lock_afternoon.svg +7 -0
- package/app/assets/glyps/schedule_lock_day.svg +10 -0
- package/app/assets/glyps/schedule_lock_exact.svg +8 -0
- package/app/assets/glyps/schedule_lock_four_hour.svg +7 -0
- package/app/assets/glyps/schedule_lock_morning.svg +7 -0
- package/app/assets/glyps/schedule_lock_none.svg +7 -0
- package/app/assets/glyps/schedule_lock_two_day.svg +11 -0
- package/app/assets/glyps/schedule_lock_two_hour.svg +8 -0
- package/app/assets/glyps/schedule_lock_week.svg +8 -0
- package/app/assets/glyps/schedule_tyoe_every.svg +8 -0
- package/app/assets/glyps/schedule_type_every.svg +8 -0
- package/app/assets/glyps/schedule_type_none.svg +11 -0
- package/app/assets/glyps/schedule_type_on_demand.svg +8 -0
- package/app/assets/glyps/schedule_type_schedule.svg +8 -0
- package/app/assets/glyps/scheduled.svg +8 -0
- package/app/assets/glyps/scheduling.svg +9 -0
- package/app/assets/glyps/school_church.svg +21 -0
- package/app/assets/glyps/script.svg +7 -0
- package/app/assets/glyps/search.svg +7 -0
- package/app/assets/glyps/seeding.svg +10 -0
- package/app/assets/glyps/segment.svg +8 -0
- package/app/assets/glyps/sent.svg +7 -0
- package/app/assets/glyps/sentricon.svg +9 -0
- package/app/assets/glyps/service_agreement.svg +10 -0
- package/app/assets/glyps/service_form.svg +26 -0
- package/app/assets/glyps/service_miscellaneous.svg +7 -0
- package/app/assets/glyps/service_reminder.svg +11 -0
- package/app/assets/glyps/service_report.svg +13 -0
- package/app/assets/glyps/service_request.svg +6 -0
- package/app/assets/glyps/services.svg +8 -0
- package/app/assets/glyps/settings.svg +7 -0
- package/app/assets/glyps/setup.svg +8 -0
- package/app/assets/glyps/signature.svg +7 -0
- package/app/assets/glyps/simulator.svg +8 -0
- package/app/assets/glyps/site_map.svg +10 -0
- package/app/assets/glyps/site_map_annotation.svg +8 -0
- package/app/assets/glyps/site_map_chemical.svg +8 -0
- package/app/assets/glyps/site_map_edit_details.svg +11 -0
- package/app/assets/glyps/site_map_edit_geo.svg +10 -0
- package/app/assets/glyps/site_map_equipment.svg +8 -0
- package/app/assets/glyps/site_map_exterior.svg +7 -0
- package/app/assets/glyps/site_map_foundation.svg +8 -0
- package/app/assets/glyps/site_map_icon.svg +8 -0
- package/app/assets/glyps/site_map_interior.svg +7 -0
- package/app/assets/glyps/site_map_label.svg +7 -0
- package/app/assets/glyps/site_map_perimeter.svg +7 -0
- package/app/assets/glyps/site_map_settings_left.svg +8 -0
- package/app/assets/glyps/site_map_settings_right.svg +8 -0
- package/app/assets/glyps/site_map_template.svg +8 -0
- package/app/assets/glyps/skip.svg +9 -0
- package/app/assets/glyps/smart_traps.svg +11 -0
- package/app/assets/glyps/sms.svg +8 -0
- package/app/assets/glyps/snow_removal.svg +8 -0
- package/app/assets/glyps/sort.svg +7 -0
- package/app/assets/glyps/special.svg +8 -0
- package/app/assets/glyps/split.svg +7 -0
- package/app/assets/glyps/spp_scorecard.svg +22 -0
- package/app/assets/glyps/square_edge.svg +8 -0
- package/app/assets/glyps/start_sheet.svg +8 -0
- package/app/assets/glyps/start_time.svg +7 -0
- package/app/assets/glyps/statement.svg +9 -0
- package/app/assets/glyps/states.svg +7 -0
- package/app/assets/glyps/sticky.svg +7 -0
- package/app/assets/glyps/stop_time.svg +7 -0
- package/app/assets/glyps/store_material.svg +22 -0
- package/app/assets/glyps/store_order.svg +10 -0
- package/app/assets/glyps/store_order_back_order.svg +17 -0
- package/app/assets/glyps/store_order_cancelled.svg +14 -0
- package/app/assets/glyps/store_order_complete.svg +14 -0
- package/app/assets/glyps/store_order_pending.svg +16 -0
- package/app/assets/glyps/store_order_pending_return.svg +19 -0
- package/app/assets/glyps/store_order_pre_order.svg +15 -0
- package/app/assets/glyps/store_order_returned.svg +17 -0
- package/app/assets/glyps/stores.svg +19 -0
- package/app/assets/glyps/styling.svg +11 -0
- package/app/assets/glyps/subscribe.svg +10 -0
- package/app/assets/glyps/supplemental.svg +7 -0
- package/app/assets/glyps/support.svg +7 -0
- package/app/assets/glyps/sync.svg +9 -0
- package/app/assets/glyps/table.svg +7 -0
- package/app/assets/glyps/tablet.svg +7 -0
- package/app/assets/glyps/tablets.svg +8 -0
- package/app/assets/glyps/tag_manager.svg +11 -0
- package/app/assets/glyps/tags.svg +9 -0
- package/app/assets/glyps/task_runs.svg +11 -0
- package/app/assets/glyps/tech_pest_sightings.svg +11 -0
- package/app/assets/glyps/technician.svg +7 -0
- package/app/assets/glyps/technician_approach.svg +9 -0
- package/app/assets/glyps/template.svg +10 -0
- package/app/assets/glyps/termite_fumigation.svg +8 -0
- package/app/assets/glyps/terrier.svg +7 -0
- package/app/assets/glyps/territory.svg +11 -0
- package/app/assets/glyps/text.svg +10 -0
- package/app/assets/glyps/thermometer.svg +12 -0
- package/app/assets/glyps/third_party_billing.svg +10 -0
- package/app/assets/glyps/threshold.svg +8 -0
- package/app/assets/glyps/ticket.svg +10 -0
- package/app/assets/glyps/ticket_type.svg +9 -0
- package/app/assets/glyps/tickets.svg +9 -0
- package/app/assets/glyps/tidy.svg +9 -0
- package/app/assets/glyps/time.svg +8 -0
- package/app/assets/glyps/time_entry.svg +9 -0
- package/app/assets/glyps/timeline.svg +7 -0
- package/app/assets/glyps/toolbox.svg +9 -0
- package/app/assets/glyps/tqi.svg +8 -0
- package/app/assets/glyps/tracker.svg +7 -0
- package/app/assets/glyps/tracking.svg +9 -0
- package/app/assets/glyps/training_course.svg +28 -0
- package/app/assets/glyps/treatment_split.svg +11 -0
- package/app/assets/glyps/trends.svg +7 -0
- package/app/assets/glyps/trip_charge.svg +9 -0
- package/app/assets/glyps/ui_type.svg +8 -0
- package/app/assets/glyps/unarchive.svg +8 -0
- package/app/assets/glyps/unchecked.svg +7 -0
- package/app/assets/glyps/undo.svg +7 -0
- package/app/assets/glyps/unfavorite.svg +8 -0
- package/app/assets/glyps/unit_sweep.svg +17 -0
- package/app/assets/glyps/unit_tag.svg +11 -0
- package/app/assets/glyps/university.svg +14 -0
- package/app/assets/glyps/unlocked.svg +8 -0
- package/app/assets/glyps/unmute.svg +7 -0
- package/app/assets/glyps/unscheduled.svg +8 -0
- package/app/assets/glyps/update_check_positions.svg +10 -0
- package/app/assets/glyps/upload.svg +8 -0
- package/app/assets/glyps/user.svg +7 -0
- package/app/assets/glyps/user_credit.svg +8 -0
- package/app/assets/glyps/user_tags.svg +11 -0
- package/app/assets/glyps/users.svg +8 -0
- package/app/assets/glyps/utility.svg +8 -0
- package/app/assets/glyps/vacation.svg +9 -0
- package/app/assets/glyps/vacuum.svg +9 -0
- package/app/assets/glyps/variant.svg +11 -0
- package/app/assets/glyps/vendor.svg +8 -0
- package/app/assets/glyps/versions.svg +9 -0
- package/app/assets/glyps/video.svg +8 -0
- package/app/assets/glyps/visible.svg +8 -0
- package/app/assets/glyps/warehouse.svg +15 -0
- package/app/assets/glyps/wdo.svg +22 -0
- package/app/assets/glyps/web_dusting.svg +7 -0
- package/app/assets/glyps/website.svg +11 -0
- package/app/assets/glyps/wildlife.svg +9 -0
- package/app/assets/glyps/wildlife_exclusion.svg +13 -0
- package/app/assets/glyps/winter_check.svg +7 -0
- package/app/assets/glyps/wizard.svg +10 -0
- package/app/assets/glyps/work.svg +7 -0
- package/app/assets/glyps/work_class.svg +8 -0
- package/app/assets/glyps/work_code.svg +9 -0
- package/app/assets/glyps/work_order.svg +12 -0
- package/app/assets/glyps/work_production.svg +8 -0
- package/app/assets/glyps/work_progress.svg +12 -0
- package/app/assets/glyps/work_yield.svg +11 -0
- package/app/assets/glyps/year.svg +7 -0
- package/app/assets/glyps/yield.svg +8 -0
- package/app/assets/glyps/zip_code.svg +12 -0
- package/app/assets/glyps/zone_adjacent.svg +7 -0
- package/app/assets/glyps/zone_check.svg +8 -0
- package/app/assets/glyps/zone_production.svg +7 -0
- package/app/assets/glyps/zone_remote.svg +7 -0
- package/app/assets/glyps/zoom_fit.svg +7 -0
- package/app/assets/images/terrier/engine/.keep +0 -0
- package/app/assets/javascripts/terrier/.keep +0 -0
- package/app/assets/javascripts/terrier/_glyps.coffee +5 -0
- package/app/assets/javascripts/terrier/forms.coffee +91 -0
- package/app/assets/javascripts/terrier/glyp-svg.js +108 -0
- package/app/assets/javascripts/terrier/polyfills.coffee +60 -0
- package/app/assets/javascripts/terrier/scripts.coffee +1620 -0
- package/app/assets/javascripts/terrier/strings.coffee +370 -0
- package/app/assets/javascripts/terrier/tables.coffee +98 -0
- package/app/assets/javascripts/terrier/tiny-logger.coffee +37 -0
- package/app/assets/javascripts/terrier/tiny-modal.coffee +510 -0
- package/app/assets/javascripts/terrier/tiny-render.coffee +39 -0
- package/app/assets/javascripts/terrier/tiny-sql.coffee +91 -0
- package/app/assets/javascripts/terrier/tiny-template.coffee +114 -0
- package/app/assets/javascripts/terrier/urls.coffee +51 -0
- package/app/assets/javascripts/terrier/versions.coffee +43 -0
- package/app/assets/stylesheets/data-dive/dd-app.scss +14 -0
- package/app/assets/stylesheets/data-dive/dd-hints.scss +91 -0
- package/app/assets/stylesheets/data-dive/dd-table.scss +35 -0
- package/app/assets/stylesheets/data-dive/dive-editor.scss +55 -0
- package/app/assets/stylesheets/data-dive/dive-list.scss +8 -0
- package/app/assets/stylesheets/data-dive/dive-runs.scss +78 -0
- package/app/assets/stylesheets/data-dive/query-editor.scss +528 -0
- package/app/assets/stylesheets/data-dive.css +3 -0
- package/app/assets/stylesheets/terrier/glyp-picker.scss +28 -0
- package/app/assets/stylesheets/terrier/glyps-meta.scss +721 -0
- package/app/assets/stylesheets/terrier/glyps.scss +2150 -0
- package/app/assets/stylesheets/terrier/grid.scss +99 -0
- package/app/assets/stylesheets/terrier/logging.scss +39 -0
- package/app/assets/stylesheets/terrier/scripts.scss +775 -0
- package/app/assets/stylesheets/terrier/tiny-modal.scss +210 -0
- package/app/assets/stylesheets/terrier/tt-card.scss +9 -0
- package/app/assets/stylesheets/terrier/tt-dropdowns.scss +116 -0
- package/app/assets/stylesheets/terrier/tt-flex.scss +101 -0
- package/app/assets/stylesheets/terrier/tt-forms.scss +166 -0
- package/app/assets/stylesheets/terrier/tt-grid.scss +26 -0
- package/app/assets/stylesheets/terrier/tt-lightbox.scss +33 -0
- package/app/assets/stylesheets/terrier/tt-list-viewer.scss +123 -0
- package/app/assets/stylesheets/terrier/tt-list.scss +28 -0
- package/app/assets/stylesheets/terrier/tt-mixins.scss +461 -0
- package/app/assets/stylesheets/terrier/tt-modal.scss +146 -0
- package/app/assets/stylesheets/terrier/tt-overlays.scss +39 -0
- package/app/assets/stylesheets/terrier/tt-page.scss +84 -0
- package/app/assets/stylesheets/terrier/tt-panel.scss +162 -0
- package/app/assets/stylesheets/terrier/tt-pickers.scss +28 -0
- package/app/assets/stylesheets/terrier/tt-progress.scss +18 -0
- package/app/assets/stylesheets/terrier/tt-root.scss +66 -0
- package/app/assets/stylesheets/terrier/tt-sheets.scss +27 -0
- package/app/assets/stylesheets/terrier/tt-tabs.scss +113 -0
- package/app/assets/stylesheets/terrier/tt-toasts.scss +40 -0
- package/app/assets/stylesheets/terrier/tt-toolstrip.scss +19 -0
- package/app/assets/stylesheets/terrier/tt-tooltips.scss +34 -0
- package/app/assets/stylesheets/terrier/tt-typography.scss +85 -0
- package/app/assets/stylesheets/terrier.css +3 -0
- package/app/controllers/.keep +0 -0
- package/app/controllers/concerns/data_dive/endpoints.rb +74 -0
- package/app/controllers/concerns/terrier/rendering_base.rb +168 -0
- package/app/controllers/concerns/terrier/script_crud.rb +216 -0
- package/app/controllers/concerns/terrier/scripts_streaming.rb +107 -0
- package/app/controllers/concerns/terrier/sql_base.rb +20 -0
- package/app/controllers/concerns/terrier/system_actions.rb +23 -0
- package/app/controllers/concerns/terrier/terrier_auth.rb +36 -0
- package/app/controllers/data_dive_controller.rb +10 -0
- package/app/controllers/db_controller.rb +147 -0
- package/app/controllers/system_controller.rb +5 -0
- package/app/controllers/top_controller.rb +14 -0
- package/app/frontend/terrier/images/icons/active.svg +1 -0
- package/app/frontend/terrier/images/icons/admin.svg +1 -0
- package/app/frontend/terrier/images/icons/archive.svg +1 -0
- package/app/frontend/terrier/images/icons/arrow_down.svg +1 -0
- package/app/frontend/terrier/images/icons/arrow_left.svg +1 -0
- package/app/frontend/terrier/images/icons/arrow_right.svg +1 -0
- package/app/frontend/terrier/images/icons/arrow_up.svg +1 -0
- package/app/frontend/terrier/images/icons/assign.svg +1 -0
- package/app/frontend/terrier/images/icons/attachment.svg +1 -0
- package/app/frontend/terrier/images/icons/back.svg +1 -0
- package/app/frontend/terrier/images/icons/badge.svg +1 -0
- package/app/frontend/terrier/images/icons/board.svg +1 -0
- package/app/frontend/terrier/images/icons/branch.svg +1 -0
- package/app/frontend/terrier/images/icons/bug.svg +1 -0
- package/app/frontend/terrier/images/icons/calculator.svg +1 -0
- package/app/frontend/terrier/images/icons/checkmark.svg +1 -0
- package/app/frontend/terrier/images/icons/close.svg +1 -0
- package/app/frontend/terrier/images/icons/clypboard.svg +1 -0
- package/app/frontend/terrier/images/icons/comment.svg +1 -0
- package/app/frontend/terrier/images/icons/complete.svg +1 -0
- package/app/frontend/terrier/images/icons/dashboard.svg +1 -0
- package/app/frontend/terrier/images/icons/data_pull.svg +1 -0
- package/app/frontend/terrier/images/icons/data_update.svg +1 -0
- package/app/frontend/terrier/images/icons/database.svg +1 -0
- package/app/frontend/terrier/images/icons/day.svg +1 -0
- package/app/frontend/terrier/images/icons/delete.svg +1 -0
- package/app/frontend/terrier/images/icons/documentation.svg +1 -0
- package/app/frontend/terrier/images/icons/edit.svg +1 -0
- package/app/frontend/terrier/images/icons/existing_child.svg +1 -0
- package/app/frontend/terrier/images/icons/existing_parent.svg +1 -0
- package/app/frontend/terrier/images/icons/feature.svg +1 -0
- package/app/frontend/terrier/images/icons/flex.svg +1 -0
- package/app/frontend/terrier/images/icons/forward.svg +1 -0
- package/app/frontend/terrier/images/icons/github.svg +1 -0
- package/app/frontend/terrier/images/icons/history.svg +1 -0
- package/app/frontend/terrier/images/icons/home.svg +1 -0
- package/app/frontend/terrier/images/icons/image.svg +1 -0
- package/app/frontend/terrier/images/icons/inbox.svg +1 -0
- package/app/frontend/terrier/images/icons/info.svg +1 -0
- package/app/frontend/terrier/images/icons/internal.svg +1 -0
- package/app/frontend/terrier/images/icons/issue.svg +1 -0
- package/app/frontend/terrier/images/icons/lane.svg +1 -0
- package/app/frontend/terrier/images/icons/lane_asap.svg +1 -0
- package/app/frontend/terrier/images/icons/lane_days.svg +1 -0
- package/app/frontend/terrier/images/icons/lane_hours.svg +1 -0
- package/app/frontend/terrier/images/icons/lane_weeks.svg +1 -0
- package/app/frontend/terrier/images/icons/lanes_board.svg +1 -0
- package/app/frontend/terrier/images/icons/level_complete.svg +1 -0
- package/app/frontend/terrier/images/icons/level_highway.svg +1 -0
- package/app/frontend/terrier/images/icons/level_on_ramp.svg +1 -0
- package/app/frontend/terrier/images/icons/level_parking.svg +1 -0
- package/app/frontend/terrier/images/icons/list_view.svg +1 -0
- package/app/frontend/terrier/images/icons/metrics.svg +1 -0
- package/app/frontend/terrier/images/icons/minus.svg +1 -0
- package/app/frontend/terrier/images/icons/new_child.svg +1 -0
- package/app/frontend/terrier/images/icons/new_parent.svg +1 -0
- package/app/frontend/terrier/images/icons/night.svg +1 -0
- package/app/frontend/terrier/images/icons/origin.svg +1 -0
- package/app/frontend/terrier/images/icons/pending.svg +1 -0
- package/app/frontend/terrier/images/icons/plus.svg +1 -0
- package/app/frontend/terrier/images/icons/post.svg +1 -0
- package/app/frontend/terrier/images/icons/posts.svg +1 -0
- package/app/frontend/terrier/images/icons/pr_closed.svg +1 -0
- package/app/frontend/terrier/images/icons/pr_merged.svg +1 -0
- package/app/frontend/terrier/images/icons/pr_open.svg +1 -0
- package/app/frontend/terrier/images/icons/prioritized.svg +1 -0
- package/app/frontend/terrier/images/icons/project.svg +1 -0
- package/app/frontend/terrier/images/icons/question.svg +1 -0
- package/app/frontend/terrier/images/icons/reaction.svg +1 -0
- package/app/frontend/terrier/images/icons/recent.svg +1 -0
- package/app/frontend/terrier/images/icons/refresh.svg +1 -0
- package/app/frontend/terrier/images/icons/related_posts.svg +1 -0
- package/app/frontend/terrier/images/icons/request.svg +1 -0
- package/app/frontend/terrier/images/icons/settings.svg +1 -0
- package/app/frontend/terrier/images/icons/split_view.svg +1 -0
- package/app/frontend/terrier/images/icons/status.svg +1 -0
- package/app/frontend/terrier/images/icons/step_deploy.svg +1 -0
- package/app/frontend/terrier/images/icons/step_develop.svg +1 -0
- package/app/frontend/terrier/images/icons/step_investigate.svg +1 -0
- package/app/frontend/terrier/images/icons/step_review.svg +1 -0
- package/app/frontend/terrier/images/icons/step_test.svg +1 -0
- package/app/frontend/terrier/images/icons/steps.svg +1 -0
- package/app/frontend/terrier/images/icons/steps_board.svg +1 -0
- package/app/frontend/terrier/images/icons/subscribe.svg +1 -0
- package/app/frontend/terrier/images/icons/support.svg +1 -0
- package/app/frontend/terrier/images/icons/terrier.svg +1 -0
- package/app/frontend/terrier/images/icons/thumbs_up.svg +1 -0
- package/app/frontend/terrier/images/icons/type.svg +1 -0
- package/app/frontend/terrier/images/icons/unprioritized.svg +1 -0
- package/app/frontend/terrier/images/icons/upload.svg +1 -0
- package/app/frontend/terrier/images/icons/user.svg +1 -0
- package/app/frontend/terrier/images/icons/users.svg +1 -0
- package/app/frontend/terrier/images/icons/week.svg +1 -0
- package/app/frontend/terrier/images/optimized/icon-read_mail.svg +1 -0
- package/app/frontend/terrier/images/optimized/terrier-hub-logo-dark.svg +1 -0
- package/app/frontend/terrier/images/optimized/terrier-hub-logo-light.svg +1 -0
- package/app/frontend/terrier/images/raw/terrier-hub-favicon-alert.png +0 -0
- package/app/frontend/terrier/images/raw/terrier-hub-favicon-dark.png +0 -0
- package/app/frontend/terrier/images/raw/terrier-hub-favicon.png +0 -0
- package/app/frontend/terrier/vitest-types.ts +1945 -0
- package/app/helpers/.keep +0 -0
- package/app/helpers/spreadsheet_uploader.rb +8 -0
- package/app/mailers/.keep +0 -0
- package/app/models/.keep +0 -0
- package/app/models/concerns/terrier/embedded.rb +253 -0
- package/app/models/concerns/terrier/embedder.rb +115 -0
- package/app/models/concerns/terrier/full_text_search.rb +30 -0
- package/app/models/concerns/terrier/model.rb +441 -0
- package/app/models/concerns/terrier/schedulable.rb +112 -0
- package/app/models/concerns/terrier/script_base.rb +102 -0
- package/app/models/concerns/terrier/script_run_base.rb +15 -0
- package/app/models/dd_dive.rb +55 -0
- package/app/models/dd_dive_group.rb +38 -0
- package/app/models/dd_dive_run.rb +43 -0
- package/app/models/schedule_rule.rb +169 -0
- package/app/views/.keep +0 -0
- package/app/views/data_dive/entrypoint.html.slim +1 -0
- package/bin/bundle +109 -0
- package/bin/rails +14 -0
- package/config/initializers/badges.rb +33 -0
- package/config/initializers/hub_icons.rb +28 -0
- package/config/initializers/inflections.rb +5 -0
- package/config/initializers/shrine.rb +16 -0
- package/config/routes.rb +36 -0
- package/db/migrate/20230619124820_data_dives.rb +35 -0
- package/glyps.yaml +2130 -0
- package/lib/sketch-glyps/README.md +41 -0
- package/lib/sketch-glyps/assets/icon.png +0 -0
- package/lib/sketch-glyps/package.json +31 -0
- package/lib/sketch-glyps/sketch-glyps.sketchplugin/Contents/Resources/icon.png +0 -0
- package/lib/sketch-glyps/sketch-glyps.sketchplugin/Contents/Sketch/__arrange.js +257 -0
- package/lib/sketch-glyps/sketch-glyps.sketchplugin/Contents/Sketch/__arrange.js.map +1 -0
- package/lib/sketch-glyps/sketch-glyps.sketchplugin/Contents/Sketch/__import.js +1793 -0
- package/lib/sketch-glyps/sketch-glyps.sketchplugin/Contents/Sketch/__import.js.map +1 -0
- package/lib/sketch-glyps/sketch-glyps.sketchplugin/Contents/Sketch/manifest.json +31 -0
- package/lib/sketch-glyps/src/arrange.js +61 -0
- package/lib/sketch-glyps/src/import.js +99 -0
- package/lib/sketch-glyps/src/manifest.json +23 -0
- package/lib/tasks/glyps.rake +158 -0
- package/lib/tasks/npm.rake +42 -0
- package/lib/tasks/terrier/db.rake +93 -0
- package/lib/tasks/terrier/engine_tasks.rake +4 -0
- package/lib/tasks/terrier/frontend.rake +52 -0
- package/lib/tasks/terrier/scripts.rake +43 -0
- package/lib/tasks/terrier/ssh.rake +11 -0
- package/lib/templates/_glyps.coffee.erb +5 -0
- package/lib/templates/badges.rb.erb +33 -0
- package/lib/templates/badges.ts.erb +52 -0
- package/lib/templates/glyps-meta.scss.erb +19 -0
- package/lib/templates/glyps.rb.erb +11 -0
- package/lib/templates/glyps.ts.erb +22 -0
- package/lib/templates/hub-icons.ts.erb +53 -0
- package/lib/templates/hub_icons.rb.erb +30 -0
- package/lib/terrier/api/clypboard_connect_api.rb +81 -0
- package/lib/terrier/api/extern_api_base.rb +68 -0
- package/lib/terrier/api/response_streamer.rb +104 -0
- package/lib/terrier/data_dive/dive_engine.rb +120 -0
- package/lib/terrier/data_dive/query_engine.rb +430 -0
- package/lib/terrier/data_dive.rb +7 -0
- package/lib/terrier/engine.rb +29 -0
- package/lib/terrier/frontend/badge_generator.rb +151 -0
- package/lib/terrier/frontend/base_generator.rb +132 -0
- package/lib/terrier/frontend/model_generator.rb +239 -0
- package/lib/terrier/frontend/models.ts.erb +95 -0
- package/lib/terrier/icons/glyps.rb +713 -0
- package/lib/terrier/icons/hub_icon_generator.rb +63 -0
- package/lib/terrier/icons/svgo-config.cjs +12 -0
- package/lib/terrier/io/public_temp_file.rb +38 -0
- package/lib/terrier/io/tabular_io.rb +646 -0
- package/lib/terrier/logging/loggable.rb +61 -0
- package/lib/terrier/logging/multi_logger.rb +137 -0
- package/lib/terrier/logging/progress_logger.rb +34 -0
- package/lib/terrier/migrations.rb +83 -0
- package/lib/terrier/puma/config.rb +87 -0
- package/lib/terrier/puma.rb +12 -0
- package/lib/terrier/scripts/script_config.rb +30 -0
- package/lib/terrier/scripts/script_executor.rb +259 -0
- package/lib/terrier/scripts/script_field.rb +60 -0
- package/lib/terrier/scripts/script_searcher.rb +23 -0
- package/lib/terrier/strings.rb +284 -0
- package/lib/terrier/system/ssh_key_manager.rb +71 -0
- package/lib/terrier/system/top.rb +75 -0
- package/lib/terrier/time/date_period.rb +186 -0
- package/lib/terrier/time/time_overrides.rb +29 -0
- package/lib/terrier/version.rb +3 -0
- package/package.json +1 -1
- package/restart_tail +1 -0
- package/terrier-engine.gemspec +55 -0
- package/test/data/test_dive.rb +207 -0
- package/test/dummy/.powenv +2 -0
- package/test/dummy/.powrc +4 -0
- package/test/dummy/.ruby-version +1 -0
- package/test/dummy/Procfile.dev +3 -0
- package/test/dummy/README.md +7 -0
- package/test/dummy/Rakefile +6 -0
- package/test/dummy/app/assets/config/manifest.js +3 -0
- package/test/dummy/app/assets/images/.keep +0 -0
- package/test/dummy/app/assets/javascripts/Sortable.js +1249 -0
- package/test/dummy/app/assets/javascripts/application.coffee +41 -0
- package/test/dummy/app/assets/javascripts/cable.js +13 -0
- package/test/dummy/app/assets/javascripts/channels/.keep +0 -0
- package/test/dummy/app/assets/javascripts/goldenlayout.js +5234 -0
- package/test/dummy/app/assets/javascripts/highlight.pack.js +740 -0
- package/test/dummy/app/assets/javascripts/logging-test.coffee +20 -0
- package/test/dummy/app/assets/javascripts/modals.coffee +277 -0
- package/test/dummy/app/assets/javascripts/oboe-browser.js +2711 -0
- package/test/dummy/app/assets/javascripts/sql.coffee +136 -0
- package/test/dummy/app/assets/javascripts/tinytemplate-demo.coffee +31 -0
- package/test/dummy/app/assets/stylesheets/application.scss +294 -0
- package/test/dummy/app/assets/stylesheets/goldenlayout-base.css +1 -0
- package/test/dummy/app/assets/stylesheets/hljs.css +98 -0
- package/test/dummy/app/assets/stylesheets/icons.scss +33 -0
- package/test/dummy/app/assets/stylesheets/modals.scss +70 -0
- package/test/dummy/app/assets/stylesheets/tables.scss +43 -0
- package/test/dummy/app/assets/stylesheets/tt-demo.scss +44 -0
- package/test/dummy/app/channels/application_cable/channel.rb +4 -0
- package/test/dummy/app/channels/application_cable/connection.rb +4 -0
- package/test/dummy/app/controllers/application_controller.rb +43 -0
- package/test/dummy/app/controllers/client_side_controller.rb +45 -0
- package/test/dummy/app/controllers/concerns/.keep +0 -0
- package/test/dummy/app/controllers/errors_controller.rb +90 -0
- package/test/dummy/app/controllers/frontend_controller.rb +24 -0
- package/test/dummy/app/controllers/icons_controller.rb +15 -0
- package/test/dummy/app/controllers/rendering_controller.rb +12 -0
- package/test/dummy/app/controllers/scripts_controller.rb +38 -0
- package/test/dummy/app/controllers/scripts_streaming_controller.rb +21 -0
- package/test/dummy/app/controllers/sql_controller.rb +9 -0
- package/test/dummy/app/controllers/tinytemplate_controller.rb +7 -0
- package/test/dummy/app/frontend/demo/db.ts +9 -0
- package/test/dummy/app/frontend/demo/demo-app.ts +58 -0
- package/test/dummy/app/frontend/demo/demo-parts.ts +235 -0
- package/test/dummy/app/frontend/demo/list-viewer-demo-page.ts +114 -0
- package/test/dummy/app/frontend/demo/platform-demo-page.ts +53 -0
- package/test/dummy/app/frontend/entrypoints/application.js +28 -0
- package/test/dummy/app/frontend/entrypoints/data-dive.ts +6 -0
- package/test/dummy/app/frontend/entrypoints/list-viewer-demo.ts +4 -0
- package/test/dummy/app/frontend/entrypoints/platform-demo.ts +4 -0
- package/test/dummy/app/frontend/gen/models.ts +488 -0
- package/test/dummy/app/helpers/application_helper.rb +10 -0
- package/test/dummy/app/helpers/dummy_service.rb +15 -0
- package/test/dummy/app/jobs/application_job.rb +2 -0
- package/test/dummy/app/mailers/application_mailer.rb +4 -0
- package/test/dummy/app/models/application_record.rb +30 -0
- package/test/dummy/app/models/concerns/.keep +0 -0
- package/test/dummy/app/models/contact.rb +28 -0
- package/test/dummy/app/models/invoice.rb +61 -0
- package/test/dummy/app/models/location.rb +59 -0
- package/test/dummy/app/models/script.rb +49 -0
- package/test/dummy/app/models/script_run.rb +58 -0
- package/test/dummy/app/models/target.rb +30 -0
- package/test/dummy/app/models/user.rb +56 -0
- package/test/dummy/app/models/work_order.rb +64 -0
- package/test/dummy/app/views/application/error.html.slim +3 -0
- package/test/dummy/app/views/application/home.html.slim +15 -0
- package/test/dummy/app/views/client_side/index.html.slim +6 -0
- package/test/dummy/app/views/client_side/logging.html.slim +5 -0
- package/test/dummy/app/views/client_side/modals.html.slim +15 -0
- package/test/dummy/app/views/client_side/slow_page.html.slim +1 -0
- package/test/dummy/app/views/client_side/tables.html.slim +28 -0
- package/test/dummy/app/views/client_side/tt_styles.html.slim +43 -0
- package/test/dummy/app/views/client_side/urls.html.slim +14 -0
- package/test/dummy/app/views/client_side/versions.html.slim +39 -0
- package/test/dummy/app/views/errors/_backtrace.html.slim +4 -0
- package/test/dummy/app/views/errors/_details.html.slim +6 -0
- package/test/dummy/app/views/errors/file_not_found.html.slim +11 -0
- package/test/dummy/app/views/errors/internal_server_error.html.slim +17 -0
- package/test/dummy/app/views/frontend/list_viewer_demo.html.slim +1 -0
- package/test/dummy/app/views/frontend/platform_demo.html.slim +1 -0
- package/test/dummy/app/views/icons/badges.html.slim +5 -0
- package/test/dummy/app/views/icons/glyps.html +2117 -0
- package/test/dummy/app/views/icons/hub.html.slim +5 -0
- package/test/dummy/app/views/layouts/application.html.slim +26 -0
- package/test/dummy/app/views/layouts/mailer.html.erb +13 -0
- package/test/dummy/app/views/layouts/mailer.text.erb +1 -0
- package/test/dummy/app/views/layouts/modal.html.slim +7 -0
- package/test/dummy/app/views/scripts/index.html.slim +18 -0
- package/test/dummy/app/views/scripts/reports.html.slim +87 -0
- package/test/dummy/app/views/sql/index.html.slim +1 -0
- package/test/dummy/app/views/tinytemplate/index.html.slim +4 -0
- package/test/dummy/bin/bundle +3 -0
- package/test/dummy/bin/rails +4 -0
- package/test/dummy/bin/rake +4 -0
- package/test/dummy/bin/setup +36 -0
- package/test/dummy/bin/update +31 -0
- package/test/dummy/bin/vite +27 -0
- package/test/dummy/bin/yarn +11 -0
- package/test/dummy/config/application.rb +28 -0
- package/test/dummy/config/boot.rb +5 -0
- package/test/dummy/config/cable.yml +10 -0
- package/test/dummy/config/database.yml +86 -0
- package/test/dummy/config/environment.rb +5 -0
- package/test/dummy/config/environments/development.rb +65 -0
- package/test/dummy/config/environments/production.rb +94 -0
- package/test/dummy/config/environments/test.rb +46 -0
- package/test/dummy/config/initializers/application_controller_renderer.rb +8 -0
- package/test/dummy/config/initializers/assets.rb +14 -0
- package/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- package/test/dummy/config/initializers/content_security_policy.rb +34 -0
- package/test/dummy/config/initializers/cookies_serializer.rb +5 -0
- package/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- package/test/dummy/config/initializers/inflections.rb +16 -0
- package/test/dummy/config/initializers/mime_types.rb +5 -0
- package/test/dummy/config/initializers/terrier.rb +13 -0
- package/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- package/test/dummy/config/locales/en.yml +33 -0
- package/test/dummy/config/puma.rb +3 -0
- package/test/dummy/config/routes.rb +36 -0
- package/test/dummy/config/spring.rb +6 -0
- package/test/dummy/config/storage.yml +34 -0
- package/test/dummy/config/vite.json +20 -0
- package/test/dummy/config.ru +5 -0
- package/test/dummy/db/migrate/20181225172428_scripts.rb +63 -0
- package/test/dummy/db/migrate/20210428171102_add_org_id_to_scripts.rb +7 -0
- package/test/dummy/db/migrate/20230413185004_add_script_state_to_script_runs.rb +5 -0
- package/test/dummy/db/migrate/20230429154726_work_orders.rb +43 -0
- package/test/dummy/db/schema.rb +327 -0
- package/test/dummy/db/seeds.rb +204 -0
- package/test/dummy/dummy_development +0 -0
- package/test/dummy/lib/assets/.keep +0 -0
- package/test/dummy/lib/tasks/logging.rake +20 -0
- package/test/dummy/lib/tasks/tabular.rake +82 -0
- package/test/dummy/log/.keep +0 -0
- package/test/dummy/package.json +13 -0
- package/test/dummy/public/404.html +67 -0
- package/test/dummy/public/422.html +67 -0
- package/test/dummy/public/500.html +66 -0
- package/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
- package/test/dummy/public/apple-touch-icon.png +0 -0
- package/test/dummy/public/assets/.sprockets-manifest-6bc32e615bb00e190f75ce1fb8c45a93.json +1 -0
- package/test/dummy/public/assets/Sortable-31946bcb1bfb7cb2a69dfc90ae8b030b85cd3388f3f93a76d95e267697beba18.js +1249 -0
- package/test/dummy/public/assets/Sortable-31946bcb1bfb7cb2a69dfc90ae8b030b85cd3388f3f93a76d95e267697beba18.js.gz +0 -0
- package/test/dummy/public/assets/actioncable-5433453f9b6619a9de91aaab2d7fc7ff183e5260c0107cbc9a1aa0c838d9a74e.js +489 -0
- package/test/dummy/public/assets/actioncable-5433453f9b6619a9de91aaab2d7fc7ff183e5260c0107cbc9a1aa0c838d9a74e.js.gz +0 -0
- package/test/dummy/public/assets/actioncable.esm-e01089c3ec4fe7817fa9abcad06cab6bdc387f95f0ca6aab4bf7ba7537f70690.js +491 -0
- package/test/dummy/public/assets/actioncable.esm-e01089c3ec4fe7817fa9abcad06cab6bdc387f95f0ca6aab4bf7ba7537f70690.js.gz +0 -0
- package/test/dummy/public/assets/actiontext-28c61f5197c204db043317a8f8826a87ab31495b741f854d307ca36122deefce.js +880 -0
- package/test/dummy/public/assets/actiontext-28c61f5197c204db043317a8f8826a87ab31495b741f854d307ca36122deefce.js.gz +0 -0
- package/test/dummy/public/assets/activestorage-3ab61e47dd4ee2d79db525ade1dca2ede0ea2b7371fe587e408ee37b7ade265d.js +823 -0
- package/test/dummy/public/assets/activestorage-3ab61e47dd4ee2d79db525ade1dca2ede0ea2b7371fe587e408ee37b7ade265d.js.gz +0 -0
- package/test/dummy/public/assets/activestorage.esm-01f58a45d77495cdfbdfcc872902a430426c4391634ec9c3da5f69fbf8418492.js +844 -0
- package/test/dummy/public/assets/activestorage.esm-01f58a45d77495cdfbdfcc872902a430426c4391634ec9c3da5f69fbf8418492.js.gz +0 -0
- package/test/dummy/public/assets/application-2dcb839b3d90796378e84d1f3987e713e12904c7bab8762cd54922120179c188.js +43560 -0
- package/test/dummy/public/assets/application-2dcb839b3d90796378e84d1f3987e713e12904c7bab8762cd54922120179c188.js.gz +0 -0
- package/test/dummy/public/assets/application-4d0bfe32d196a67918da7da30192ca8d2842d3c22cf34bc38e1f0149bb211d38.css +1643 -0
- package/test/dummy/public/assets/application-4d0bfe32d196a67918da7da30192ca8d2842d3c22cf34bc38e1f0149bb211d38.css.gz +0 -0
- package/test/dummy/public/assets/application-a2ce6d1d4ea3984dff01775e1ef0cf44398ae5b4247abbf9306add614c5efc17.css +7860 -0
- package/test/dummy/public/assets/application-a2ce6d1d4ea3984dff01775e1ef0cf44398ae5b4247abbf9306add614c5efc17.css.gz +0 -0
- package/test/dummy/public/assets/application-fa4f517eecba6a574371e4762c8edfb628f1e9f116ec3b73e26fcf3bbf16122f.js +44946 -0
- package/test/dummy/public/assets/application-fa4f517eecba6a574371e4762c8edfb628f1e9f116ec3b73e26fcf3bbf16122f.js.gz +0 -0
- package/test/dummy/public/assets/cable-3547f2f4b6c0ed714ae2da0d6ecd5ad6ae28ba968c75abbb9dc9485ce33c0f18.js +502 -0
- package/test/dummy/public/assets/cable-3547f2f4b6c0ed714ae2da0d6ecd5ad6ae28ba968c75abbb9dc9485ce33c0f18.js.gz +0 -0
- package/test/dummy/public/assets/data-dive-dd98ed7d4665e90ec32a7bfa4c0846fd7537be6b18fcba9c898da92960f4deda.css +951 -0
- package/test/dummy/public/assets/data-dive-dd98ed7d4665e90ec32a7bfa4c0846fd7537be6b18fcba9c898da92960f4deda.css.gz +0 -0
- package/test/dummy/public/assets/glyps-2647bf2cf9a2d7d55ef6c88e4f436f463abe1a265ba9f829e1cd69df314667c4.ttf +0 -0
- package/test/dummy/public/assets/glyps-2647bf2cf9a2d7d55ef6c88e4f436f463abe1a265ba9f829e1cd69df314667c4.ttf.gz +0 -0
- package/test/dummy/public/assets/glyps-cf3637a2d1423fd3e5a4bd5189b3b9e64296e543bb09b3f1598206ffe2a1aec8.woff +0 -0
- package/test/dummy/public/assets/goldenlayout-2822baa9bd31027e9d9ed1d547c369cd7c1a72448db519aa8f6e39df9d870be2.js +5234 -0
- package/test/dummy/public/assets/goldenlayout-2822baa9bd31027e9d9ed1d547c369cd7c1a72448db519aa8f6e39df9d870be2.js.gz +0 -0
- package/test/dummy/public/assets/goldenlayout-base-eb0a1ac452b6b0b3b973ddc83427b7309e4e3156aae4f65e5c8f2ed0bf1f2f5e.css +1 -0
- package/test/dummy/public/assets/goldenlayout-base-eb0a1ac452b6b0b3b973ddc83427b7309e4e3156aae4f65e5c8f2ed0bf1f2f5e.css.gz +0 -0
- package/test/dummy/public/assets/highlight.pack-8fbccb3586d15665923c879240781ff7de4e083c11f15d7dd1e1015675521ce0.js +740 -0
- package/test/dummy/public/assets/highlight.pack-8fbccb3586d15665923c879240781ff7de4e083c11f15d7dd1e1015675521ce0.js.gz +0 -0
- package/test/dummy/public/assets/hljs-f0a4af7ecf3968fcaa5e701368558656acccfcb1d9cfbec711f808ad5131a7f6.css +98 -0
- package/test/dummy/public/assets/hljs-f0a4af7ecf3968fcaa5e701368558656acccfcb1d9cfbec711f808ad5131a7f6.css.gz +0 -0
- package/test/dummy/public/assets/icons-d63d9be606ff39f5831b84408c1e3693da3022cd4204069fb9daf20c3572b141.css +29 -0
- package/test/dummy/public/assets/icons-d63d9be606ff39f5831b84408c1e3693da3022cd4204069fb9daf20c3572b141.css.gz +0 -0
- package/test/dummy/public/assets/logging-test-17c63cf68d3c037b8d29246012bd3c6c64441587ee7a94102bead45b0bfcac9d.js +36 -0
- package/test/dummy/public/assets/logging-test-17c63cf68d3c037b8d29246012bd3c6c64441587ee7a94102bead45b0bfcac9d.js.gz +0 -0
- package/test/dummy/public/assets/manifest-dad05bf766af0fe3d79dd746db3c1361c0583026cdf35d6a2921bccaea835331.js +3 -0
- package/test/dummy/public/assets/manifest-dad05bf766af0fe3d79dd746db3c1361c0583026cdf35d6a2921bccaea835331.js.gz +0 -0
- package/test/dummy/public/assets/modals-16e4a5e3f03328ea6db9d8534d03be7a5b9f355a68ddba01b1f8f52126103010.css +88 -0
- package/test/dummy/public/assets/modals-16e4a5e3f03328ea6db9d8534d03be7a5b9f355a68ddba01b1f8f52126103010.css.gz +0 -0
- package/test/dummy/public/assets/modals-cbf7accae917db3e3fc45379d866a7af7e7a9953e078c8bcf3aa143ad957b2c4.js +310 -0
- package/test/dummy/public/assets/modals-cbf7accae917db3e3fc45379d866a7af7e7a9953e078c8bcf3aa143ad957b2c4.js.gz +0 -0
- package/test/dummy/public/assets/oboe-browser-79456546b19ce2ff54d87f3022d46261046138ce96bbc774c61e3a13b76414d4.js +2711 -0
- package/test/dummy/public/assets/oboe-browser-79456546b19ce2ff54d87f3022d46261046138ce96bbc774c61e3a13b76414d4.js.gz +0 -0
- package/test/dummy/public/assets/sql-064c6d090c830c9155c5fad6cee55c3256ff43d335ae0a9828e728b8aca219db.js +224 -0
- package/test/dummy/public/assets/sql-064c6d090c830c9155c5fad6cee55c3256ff43d335ae0a9828e728b8aca219db.js.gz +0 -0
- package/test/dummy/public/assets/terrier/glyps-cab0b7348f56e21dbc8a7ff768c798e767d8c0fbb3c32e81538b0cc22005b805.css +3472 -0
- package/test/dummy/public/assets/terrier/glyps-cab0b7348f56e21dbc8a7ff768c798e767d8c0fbb3c32e81538b0cc22005b805.css.gz +0 -0
- package/test/dummy/public/assets/tinytemplate-demo-2587a9f6a476085ee7a07e63784b8b10f4022caeec74cb9843aca41f581497f4.js +50 -0
- package/test/dummy/public/assets/tinytemplate-demo-2587a9f6a476085ee7a07e63784b8b10f4022caeec74cb9843aca41f581497f4.js.gz +0 -0
- package/test/dummy/public/assets/trix-1563ff9c10f74e143b3ded40a8458497eaf2f87a648a5cbbfebdb7dec3447a5e.js +5278 -0
- package/test/dummy/public/assets/trix-1563ff9c10f74e143b3ded40a8458497eaf2f87a648a5cbbfebdb7dec3447a5e.js.gz +0 -0
- package/test/dummy/public/assets/trix-ac629f94e04ee467ab73298a3496a4dfa33ca26a132f624dd5475381bc27bdc8.css +375 -0
- package/test/dummy/public/assets/trix-ac629f94e04ee467ab73298a3496a4dfa33ca26a132f624dd5475381bc27bdc8.css.gz +0 -0
- package/test/dummy/public/assets/tt-demo-1d6c5eea61bd7637d45bffdc26a5e1bfd4ee85721f3a02934f3cf033f86a719f.css +53 -0
- package/test/dummy/public/assets/tt-demo-1d6c5eea61bd7637d45bffdc26a5e1bfd4ee85721f3a02934f3cf033f86a719f.css.gz +0 -0
- package/test/dummy/public/favicon.ico +0 -0
- package/test/dummy/public/terrier-engine.png +0 -0
- package/test/dummy/public/vite-dev/.vite/manifest-assets.json +1 -0
- package/test/dummy/public/vite-dev/.vite/manifest.json +55 -0
- package/test/dummy/public/vite-dev/assets/application-3Unt5qkU.js +1 -0
- package/test/dummy/public/vite-dev/assets/data-dive-gOeOYS5T.js +4 -0
- package/test/dummy/public/vite-dev/assets/dayjs.min-bbBKidfw.js +1 -0
- package/test/dummy/public/vite-dev/assets/demo-app-oXSW09jF.js +1 -0
- package/test/dummy/public/vite-dev/assets/list-viewer-demo-LnSEWjBx.js +1 -0
- package/test/dummy/public/vite-dev/assets/page-part-rvqu1H5N.js +10 -0
- package/test/dummy/public/vite-dev/assets/platform-demo-F9ZHvNqg.js +3 -0
- package/test/dummy/public/vite-dev/assets/tabs-XJC-5Ip1.js +1 -0
- package/test/dummy/restart_tail +1 -0
- package/test/dummy/test/input/blank_rows_csv.csv +2 -0
- package/test/dummy/test/input/blank_rows_xls.xls +0 -0
- package/test/dummy/test/input/blank_rows_xlsx.xlsx +0 -0
- package/test/dummy/test/input/correct_csv.csv +3 -0
- package/test/dummy/test/input/correct_xls.xls +0 -0
- package/test/dummy/test/input/correct_xlsx.xlsx +0 -0
- package/test/dummy/test/input/duplicatecolumnerror.csv +7 -0
- package/test/dummy/test/input/duplicatecolumnerror.xls +0 -0
- package/test/dummy/test/input/duplicatecolumnerror.xlsx +0 -0
- package/test/dummy/test/input/empty_csv.csv +1 -0
- package/test/dummy/test/input/empty_xls.xls +0 -0
- package/test/dummy/test/input/empty_xlsx.xlsx +0 -0
- package/test/dummy/test/input/incorrect_format_csv_as_xls.xls +3 -0
- package/test/dummy/test/input/incorrect_format_csv_as_xlsx.xlsx +3 -0
- package/test/dummy/test/input/incorrect_format_xls_as_csv.csv +0 -0
- package/test/dummy/test/input/incorrect_format_xls_as_xlsx.xlsx +0 -0
- package/test/dummy/test/input/incorrect_format_xlsx_as_csv.csv +0 -0
- package/test/dummy/test/input/incorrect_format_xlsx_as_xls.xls +0 -0
- package/test/dummy/test/input/missing_header_csv.csv +2 -0
- package/test/dummy/test/input/missing_header_xls.xls +0 -0
- package/test/dummy/test/input/missing_header_xlsx.xlsx +0 -0
- package/test/dummy/test/input/missing_row_csv.csv +4 -0
- package/test/dummy/test/input/missing_row_xls.xls +0 -0
- package/test/dummy/test/input/missing_row_xlsx.xlsx +0 -0
- package/test/dummy/test/input/test.xlsx +0 -0
- package/test/dummy/tsconfig.json +31 -0
- package/test/dummy/vite.config.ts +25 -0
- package/test/fixtures/users.yml +21 -0
- package/test/integration/clypboard_connect_test.rb +14 -0
- package/test/integration/db_controller_test.rb +60 -0
- package/test/integration/navigation_test.rb +7 -0
- package/test/terrier/engine_test.rb +7 -0
- package/test/test_helper.rb +19 -0
- package/test/unit/date_period_test.rb +111 -0
- package/test/unit/input/test.xlsx +0 -0
- package/test/unit/loggable_test.rb +51 -0
- package/test/unit/query_engine_test.rb +66 -0
- package/test/unit/query_result_test.rb +37 -0
- package/test/unit/schedule_rule_test.rb +31 -0
- package/test/unit/string_test.rb +26 -0
- package/test/unit/tabular_test.rb +168 -0
- package/vendor/assets/javascripts/difflib-browser.js +5 -0
- package/vendor/assets/javascripts/highlight.pack.js +740 -0
- package/vendor/assets/javascripts/morphdom.js +759 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/active.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/admin.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/archive.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/arrow_down.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/arrow_left.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/arrow_right.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/arrow_up.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/assign.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/attachment.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/back.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/badge.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/board.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/branch.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/bug.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/calculator.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/checkmark.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/close.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/clypboard.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/comment.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/complete.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/dashboard.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/data_pull.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/data_update.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/database.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/day.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/delete.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/documentation.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/edit.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/existing_child.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/existing_parent.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/feature.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/flex.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/forward.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/github.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/history.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/home.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/image.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/inbox.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/info.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/internal.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/issue.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/lane.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/lane_asap.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/lane_days.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/lane_hours.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/lane_weeks.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/lanes_board.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/level_complete.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/level_highway.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/level_on_ramp.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/level_parking.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/list_view.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/metrics.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/minus.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/new_child.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/new_parent.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/night.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/origin.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/pending.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/plus.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/post.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/posts.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/pr_closed.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/pr_merged.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/pr_open.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/prioritized.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/project.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/question.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/reaction.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/read_mail.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/recent.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/refresh.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/related_posts.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/request.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/settings.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/split_view.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/status.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/step_deploy.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/step_develop.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/step_investigate.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/step_review.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/step_test.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/steps.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/steps_board.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/subscribe.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/support.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/terrier.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/thumbs_up.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/type.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/unprioritized.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/upload.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/user.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/users.svg +0 -0
- /package/{terrier/images/icons → app/assets/hub_icons}/week.svg +0 -0
- /package/{terrier/images/raw → app/assets/images/terrier/engine}/terrier-hub-favicon-alert.png +0 -0
- /package/{terrier/images/raw → app/assets/images/terrier/engine}/terrier-hub-favicon-dark.png +0 -0
- /package/{terrier/images/raw → app/assets/images/terrier/engine}/terrier-hub-favicon.png +0 -0
- /package/{terrier/images/optimized → app/assets/images/terrier/engine}/terrier-hub-logo-dark.svg +0 -0
- /package/{terrier/images/optimized → app/assets/images/terrier/engine}/terrier-hub-logo-light.svg +0 -0
- /package/{data-dive → app/frontend/data-dive}/dd-app.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/dd-db.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/dd-routes.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/dd-session.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/dd-user.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/dives/dive-editor.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/dives/dive-list.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/dives/dive-runs.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/dives/dive-settings.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/dives/dives.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/dives/group-editor.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/gen/models.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/queries/column-order-modal.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/queries/columns.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/queries/dates.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/queries/filters.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/queries/queries.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/queries/query-editor.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/queries/query-form.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/queries/row-order-modal.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/queries/tables.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/queries/test/dates.test.ts +0 -0
- /package/{data-dive → app/frontend/data-dive}/queries/validation.ts +0 -0
- /package/{terrier → app/frontend/terrier}/README.md +0 -0
- /package/{terrier → app/frontend/terrier}/api.ts +0 -0
- /package/{terrier → app/frontend/terrier}/app.ts +0 -0
- /package/{terrier → app/frontend/terrier}/attachments.ts +0 -0
- /package/{terrier → app/frontend/terrier}/db-client.ts +0 -0
- /package/{terrier → app/frontend/terrier}/dropdowns.ts +0 -0
- /package/{terrier → app/frontend/terrier}/format.ts +0 -0
- /package/{terrier → app/frontend/terrier}/forms.ts +0 -0
- /package/{terrier → app/frontend/terrier}/fragments.ts +0 -0
- /package/{terrier → app/frontend/terrier}/gen/badges.ts +0 -0
- /package/{terrier → app/frontend/terrier}/gen/hub-icons.ts +0 -0
- /package/{terrier → app/frontend/terrier}/glyps.ts +0 -0
- /package/{terrier → app/frontend/terrier}/ids.ts +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-accounts_payable-handling.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-accounts_receivable-handling.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-applicator_license-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-autopay-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-autopay-handling.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-bats-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-bats-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-bats-ops.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-bats-sales.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-clypboard_hardware-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-clypboard_project-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-clypmart-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-commercial-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-commercial-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-commercial-ops.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-commercial-sales.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-compliance-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-contracts-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-contracts-reporting.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-copesan-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-credit_card-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-customer_call-handling.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-customer_text-handling.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-employee_data-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-employee_data-handling.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-employee_data-reporting.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-finance-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-finance-reporting.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-fleet-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-fumigation-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-fumigation-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-fumigation-ops.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-information_technology-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-information_technology-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-irrigation-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-irrigation-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-irrigation-ops.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-irrigation-sales.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-landscape-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-landscape-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-landscape-ops.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-landscape-sales.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-marketing-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-mergers_and_acquisitions-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-mergers_and_acquisitions-reporting.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-multi_housing-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-multi_housing-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-multi_housing-ops.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-multi_housing-sales.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-payroll-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-payroll-reporting.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-pest-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-pest-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-pest-ops.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-pest-sales.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-pro-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-pro-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-pro-ops.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-pro-sales.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-program-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-proposals-handling.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-residential-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-residential-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-residential-ops.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-residential-sales.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-sales-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-sales-reporting.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-scripts-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-scripts-reporting.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-termite-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-termite-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-termite-ops.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-termite-sales.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-wildlife-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-wildlife-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-wildlife-ops.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/badges/badge-wildlife-sales.svg +0 -0
- /package/{terrier/images/optimized/icon-read_mail.svg → app/frontend/terrier/images/icons/read_mail.svg} +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-accounts_payable.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-accounts_receivable.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-applicator_license.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-autopay.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-bats.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-clypboard_hardware.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-clypboard_project.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-clypmart.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-commercial.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-compliance.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-contracts.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-copesan.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-credit_card.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-customer_call.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-customer_text.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-employee_data.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-finance.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-fleet.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-fumigation.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-information_technology.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-irrigation.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-landscape.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-marketing.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-mergers_and_acquisitions.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-multi_housing.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-payroll.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-pest.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-pro.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-program.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-proposals.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-residential.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-sales.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-scripts.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-termite.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge-wildlife.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge_role-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge_role-handling.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge_role-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge_role-ops.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge_role-reporting.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/badge_role-sales.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-active.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-archive.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-arrow_down.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-arrow_left.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-arrow_right.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-arrow_up.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-assign.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-attachment.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-back.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-badge.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-board.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-branch.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-bug.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-calculator.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-checkmark.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-close.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-clypboard.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-comment.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-complete.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-dashboard.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-data_pull.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-data_update.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-database.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-day.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-delete.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-documentation.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-edit.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-existing_child.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-existing_parent.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-feature.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-flex.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-forward.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-github.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-history.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-home.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-image.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-inbox.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-info.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-internal.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-issue.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-lane.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-lane_asap.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-lane_days.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-lane_hours.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-lane_weeks.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-lanes_board.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-level_complete.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-level_highway.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-level_on_ramp.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-level_parking.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-list_view.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-metrics.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-minus.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-new_child.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-new_parent.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-night.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-origin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-pending.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-plus.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-post.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-posts.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-pr_closed.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-pr_merged.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-pr_open.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-prioritized.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-project.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-question.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-reaction.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-recent.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-refresh.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-related_posts.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-request.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-settings.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-split_view.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-status.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-step_deploy.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-step_develop.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-step_investigate.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-step_review.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-step_test.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-steps.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-steps_board.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-subscribe.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-support.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-terrier.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-thumbs_up.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-type.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-unprioritized.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-upload.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-user.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-users.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/icon-week.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/terrier-hub-favicon.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/terrier-hub-icon-dark.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/terrier-hub-icon-light.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/optimized/terrier-hub-loader.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-accounts_payable.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-accounts_receivable.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-applicator_license.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-autopay.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-bats.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-clypboard_hardware.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-clypboard_project.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-clypmart.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-commercial.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-compliance.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-contracts.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-copesan.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-credit_card.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-customer_call.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-customer_text.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-employee_data.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-finance.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-fleet.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-fumigation.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-information_technology.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-irrigation.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-landscape.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-marketing.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-mergers_and_acquisitions.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-multi_housing.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-payroll.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-pest.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-pro.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-program.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-proposals.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-residential.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-sales.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-scripts.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-termite.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge-wildlife.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge_role-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge_role-handling.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge_role-management.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge_role-ops.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge_role-reporting.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/badge_role-sales.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-active.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-admin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-archive.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-arrow_down.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-arrow_left.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-arrow_right.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-arrow_up.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-assign.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-attachment.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-back.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-badge.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-board.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-branch.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-bug.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-calculator.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-checkmark.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-close.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-clypboard.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-comment.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-complete.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-dashboard.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-data_pull.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-data_update.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-database.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-day.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-delete.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-documentation.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-edit.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-existing_child.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-existing_parent.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-feature.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-flex.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-forward.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-github.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-history.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-home.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-image.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-inbox.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-info.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-internal.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-issue.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-lane.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-lane_asap.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-lane_days.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-lane_hours.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-lane_weeks.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-lanes_board.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-level_complete.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-level_highway.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-level_on_ramp.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-level_parking.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-list_view.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-metrics.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-minus.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-new_child.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-new_parent.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-night.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-origin.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-pending.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-plus.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-post.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-posts.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-pr_closed.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-pr_merged.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-pr_open.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-prioritized.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-project.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-question.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-reaction.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-read_mail.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-recent.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-refresh.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-related_posts.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-request.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-settings.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-split_view.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-status.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-step_deploy.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-step_develop.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-step_investigate.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-step_review.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-step_test.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-steps.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-steps_board.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-subscribe.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-support.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-terrier.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-thumbs_up.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-type.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-unprioritized.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-upload.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-user.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-users.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/icon-week.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/terrier-hub-favicon.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/terrier-hub-icon-dark.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/terrier-hub-icon-light.png +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/terrier-hub-icon-light.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/terrier-hub-loader.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/terrier-hub-logo-dark.svg +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/terrier-hub-logo-light.png +0 -0
- /package/{terrier → app/frontend/terrier}/images/raw/terrier-hub-logo-light.svg +0 -0
- /package/{terrier → app/frontend/terrier}/lightbox.ts +0 -0
- /package/{terrier → app/frontend/terrier}/list-viewer.ts +0 -0
- /package/{terrier → app/frontend/terrier}/loading.ts +0 -0
- /package/{terrier → app/frontend/terrier}/logging.ts +0 -0
- /package/{terrier → app/frontend/terrier}/modals.ts +0 -0
- /package/{terrier → app/frontend/terrier}/overlays.ts +0 -0
- /package/{terrier → app/frontend/terrier}/parts/content-part.ts +0 -0
- /package/{terrier → app/frontend/terrier}/parts/glyp-picker.ts +0 -0
- /package/{terrier → app/frontend/terrier}/parts/not-found-page.ts +0 -0
- /package/{terrier → app/frontend/terrier}/parts/page-part.ts +0 -0
- /package/{terrier → app/frontend/terrier}/parts/panel-part.ts +0 -0
- /package/{terrier → app/frontend/terrier}/parts/terrier-form-part.ts +0 -0
- /package/{terrier → app/frontend/terrier}/parts/terrier-part.ts +0 -0
- /package/{terrier → app/frontend/terrier}/progress.ts +0 -0
- /package/{terrier → app/frontend/terrier}/schema.ts +0 -0
- /package/{terrier → app/frontend/terrier}/sheets.ts +0 -0
- /package/{terrier → app/frontend/terrier}/tabs.ts +0 -0
- /package/{terrier → app/frontend/terrier}/theme.ts +0 -0
- /package/{terrier → app/frontend/terrier}/toasts.ts +0 -0
- /package/{terrier → app/frontend/terrier}/tooltips.ts +0 -0
- /package/{tsconfig.json → app/frontend/tsconfig.json} +0 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var _r=Object.defineProperty;var En=(r,t,e)=>t in r?_r(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e;var o=(r,t)=>_r(r,"name",{value:t,configurable:!0});var p=(r,t,e)=>(En(r,typeof t!="symbol"?t+"":t,e),e);import{P as fi,L as K,i as T,M as v,F as Fn,C as ce,a as mi,S as vi,b as X,A as I,O as et,H as Dn,T as Ce,c as Zr,N as Ee,d as In,e as Tn,f as qn}from"./page-part-rvqu1H5N.js";import{g as Nn,c as ge,d as q}from"./dayjs.min-bbBKidfw.js";import{A as R,D as _i,T as Xr,a as Rn}from"./tabs-XJC-5Ip1.js";var bi={},en={},Mn=o(function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var t={},e=Symbol("test"),i=Object(e);if(typeof e=="string"||Object.prototype.toString.call(e)!=="[object Symbol]"||Object.prototype.toString.call(i)!=="[object Symbol]")return!1;var n=42;t[e]=n;for(e in t)return!1;if(typeof Object.keys=="function"&&Object.keys(t).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(t).length!==0)return!1;var a=Object.getOwnPropertySymbols(t);if(a.length!==1||a[0]!==e||!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var s=Object.getOwnPropertyDescriptor(t,e);if(s.value!==n||s.enumerable!==!0)return!1}return!0},"hasSymbols"),br=typeof Symbol<"u"&&Symbol,jn=Mn,zn=o(function(){return typeof br!="function"||typeof Symbol!="function"||typeof br("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:jn()},"hasNativeSymbols"),Bn="Function.prototype.bind called on incompatible ",vt=Array.prototype.slice,Un=Object.prototype.toString,Ln="[object Function]",Gn=o(function(t){var e=this;if(typeof e!="function"||Un.call(e)!==Ln)throw new TypeError(Bn+e);for(var i=vt.call(arguments,1),n,a=o(function(){if(this instanceof n){var y=e.apply(this,i.concat(vt.call(arguments)));return Object(y)===y?y:this}else return e.apply(t,i.concat(vt.call(arguments)))},"binder"),s=Math.max(0,e.length-i.length),l=[],c=0;c<s;c++)l.push("$"+c);if(n=Function("binder","return function ("+l.join(",")+"){ return binder.apply(this,arguments); }")(a),e.prototype){var d=o(function(){},"Empty");d.prototype=e.prototype,n.prototype=new d,d.prototype=null}return n},"bind"),Hn=Gn,wi=Function.prototype.bind||Hn,Wn=wi,Vn=Wn.call(Function.call,Object.prototype.hasOwnProperty),x,be=SyntaxError,tn=Function,me=TypeError,_t=o(function(r){try{return tn('"use strict"; return ('+r+").constructor;")()}catch{}},"getEvalledConstructor"),ne=Object.getOwnPropertyDescriptor;if(ne)try{ne({},"")}catch{ne=null}var bt=o(function(){throw new me},"throwTypeError"),Qn=ne?function(){try{return arguments.callee,bt}catch{try{return ne(arguments,"callee").get}catch{return bt}}}():bt,ue=zn(),B=Object.getPrototypeOf||function(r){return r.__proto__},ye={},Jn=typeof Uint8Array>"u"?x:B(Uint8Array),ae={"%AggregateError%":typeof AggregateError>"u"?x:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?x:ArrayBuffer,"%ArrayIteratorPrototype%":ue?B([][Symbol.iterator]()):x,"%AsyncFromSyncIteratorPrototype%":x,"%AsyncFunction%":ye,"%AsyncGenerator%":ye,"%AsyncGeneratorFunction%":ye,"%AsyncIteratorPrototype%":ye,"%Atomics%":typeof Atomics>"u"?x:Atomics,"%BigInt%":typeof BigInt>"u"?x:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?x:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?x:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?x:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":typeof Float32Array>"u"?x:Float32Array,"%Float64Array%":typeof Float64Array>"u"?x:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?x:FinalizationRegistry,"%Function%":tn,"%GeneratorFunction%":ye,"%Int8Array%":typeof Int8Array>"u"?x:Int8Array,"%Int16Array%":typeof Int16Array>"u"?x:Int16Array,"%Int32Array%":typeof Int32Array>"u"?x:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":ue?B(B([][Symbol.iterator]())):x,"%JSON%":typeof JSON=="object"?JSON:x,"%Map%":typeof Map>"u"?x:Map,"%MapIteratorPrototype%":typeof Map>"u"||!ue?x:B(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?x:Promise,"%Proxy%":typeof Proxy>"u"?x:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":typeof Reflect>"u"?x:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?x:Set,"%SetIteratorPrototype%":typeof Set>"u"||!ue?x:B(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?x:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":ue?B(""[Symbol.iterator]()):x,"%Symbol%":ue?Symbol:x,"%SyntaxError%":be,"%ThrowTypeError%":Qn,"%TypedArray%":Jn,"%TypeError%":me,"%Uint8Array%":typeof Uint8Array>"u"?x:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?x:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?x:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?x:Uint32Array,"%URIError%":URIError,"%WeakMap%":typeof WeakMap>"u"?x:WeakMap,"%WeakRef%":typeof WeakRef>"u"?x:WeakRef,"%WeakSet%":typeof WeakSet>"u"?x:WeakSet};try{null.error}catch(r){var Yn=B(B(r));ae["%Error.prototype%"]=Yn}var Zn=o(function r(t){var e;if(t==="%AsyncFunction%")e=_t("async function () {}");else if(t==="%GeneratorFunction%")e=_t("function* () {}");else if(t==="%AsyncGeneratorFunction%")e=_t("async function* () {}");else if(t==="%AsyncGenerator%"){var i=r("%AsyncGeneratorFunction%");i&&(e=i.prototype)}else if(t==="%AsyncIteratorPrototype%"){var n=r("%AsyncGenerator%");n&&(e=B(n.prototype))}return ae[t]=e,e},"doEval"),wr={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Le=wi,tt=Vn,Xn=Le.call(Function.call,Array.prototype.concat),ea=Le.call(Function.apply,Array.prototype.splice),xr=Le.call(Function.call,String.prototype.replace),it=Le.call(Function.call,String.prototype.slice),ta=Le.call(Function.call,RegExp.prototype.exec),ia=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,ra=/\\(\\)?/g,na=o(function(t){var e=it(t,0,1),i=it(t,-1);if(e==="%"&&i!=="%")throw new be("invalid intrinsic syntax, expected closing `%`");if(i==="%"&&e!=="%")throw new be("invalid intrinsic syntax, expected opening `%`");var n=[];return xr(t,ia,function(a,s,l,c){n[n.length]=l?xr(c,ra,"$1"):s||a}),n},"stringToPath"),aa=o(function(t,e){var i=t,n;if(tt(wr,i)&&(n=wr[i],i="%"+n[0]+"%"),tt(ae,i)){var a=ae[i];if(a===ye&&(a=Zn(i)),typeof a>"u"&&!e)throw new me("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:n,name:i,value:a}}throw new be("intrinsic "+t+" does not exist!")},"getBaseIntrinsic"),xi=o(function(t,e){if(typeof t!="string"||t.length===0)throw new me("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof e!="boolean")throw new me('"allowMissing" argument must be a boolean');if(ta(/^%?[^%]*%?$/,t)===null)throw new be("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var i=na(t),n=i.length>0?i[0]:"",a=aa("%"+n+"%",e),s=a.name,l=a.value,c=!1,d=a.alias;d&&(n=d[0],ea(i,Xn([0,1],d)));for(var y=1,h=!0;y<i.length;y+=1){var u=i[y],g=it(u,0,1),f=it(u,-1);if((g==='"'||g==="'"||g==="`"||f==='"'||f==="'"||f==="`")&&g!==f)throw new be("property names with quotes must have matching quotes");if((u==="constructor"||!h)&&(c=!0),n+="."+u,s="%"+n+"%",tt(ae,s))l=ae[s];else if(l!=null){if(!(u in l)){if(!e)throw new me("base intrinsic for "+t+" exists, but the property is not available.");return}if(ne&&y+1>=i.length){var _=ne(l,u);h=!!_,h&&"get"in _&&!("originalValue"in _.get)?l=_.get:l=l[u]}else h=tt(l,u),l=l[u];h&&!c&&(ae[s]=l)}}return l},"GetIntrinsic"),rn={exports:{}};(function(r){var t=wi,e=xi,i=e("%Function.prototype.apply%"),n=e("%Function.prototype.call%"),a=e("%Reflect.apply%",!0)||t.call(n,i),s=e("%Object.getOwnPropertyDescriptor%",!0),l=e("%Object.defineProperty%",!0),c=e("%Math.max%");if(l)try{l({},"a",{value:1})}catch{l=null}r.exports=o(function(h){var u=a(t,n,arguments);if(s&&l){var g=s(u,"length");g.configurable&&l(u,"length",{value:1+c(0,h.length-(arguments.length-1))})}return u},"callBind");var d=o(function(){return a(t,i,arguments)},"applyBind");l?l(r.exports,"apply",{value:d}):r.exports.apply=d})(rn);var sa=rn.exports,nn=xi,an=sa,oa=an(nn("String.prototype.indexOf")),la=o(function(t,e){var i=nn(t,!!e);return typeof i=="function"&&oa(t,".prototype.")>-1?an(i):i},"callBoundIntrinsic");const ca={},pa=Object.freeze(Object.defineProperty({__proto__:null,default:ca},Symbol.toStringTag,{value:"Module"})),da=Nn(pa);var ki=typeof Map=="function"&&Map.prototype,wt=Object.getOwnPropertyDescriptor&&ki?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,rt=ki&&wt&&typeof wt.get=="function"?wt.get:null,kr=ki&&Map.prototype.forEach,Si=typeof Set=="function"&&Set.prototype,xt=Object.getOwnPropertyDescriptor&&Si?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,nt=Si&&xt&&typeof xt.get=="function"?xt.get:null,Sr=Si&&Set.prototype.forEach,ua=typeof WeakMap=="function"&&WeakMap.prototype,Fe=ua?WeakMap.prototype.has:null,ya=typeof WeakSet=="function"&&WeakSet.prototype,De=ya?WeakSet.prototype.has:null,ha=typeof WeakRef=="function"&&WeakRef.prototype,$r=ha?WeakRef.prototype.deref:null,ga=Boolean.prototype.valueOf,fa=Object.prototype.toString,ma=Function.prototype.toString,va=String.prototype.match,$i=String.prototype.slice,J=String.prototype.replace,_a=String.prototype.toUpperCase,Cr=String.prototype.toLowerCase,sn=RegExp.prototype.test,Pr=Array.prototype.concat,U=Array.prototype.join,ba=Array.prototype.slice,Ar=Math.floor,Kt=typeof BigInt=="function"?BigInt.prototype.valueOf:null,kt=Object.getOwnPropertySymbols,Et=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,we=typeof Symbol=="function"&&typeof Symbol.iterator=="object",F=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===we||!0)?Symbol.toStringTag:null,on=Object.prototype.propertyIsEnumerable,Or=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(r){return r.__proto__}:null);function Kr(r,t){if(r===1/0||r===-1/0||r!==r||r&&r>-1e3&&r<1e3||sn.call(/e/,t))return t;var e=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof r=="number"){var i=r<0?-Ar(-r):Ar(r);if(i!==r){var n=String(i),a=$i.call(t,n.length+1);return J.call(n,e,"$&_")+"."+J.call(J.call(a,/([0-9]{3})/g,"$&_"),/_$/,"")}}return J.call(t,e,"$&_")}o(Kr,"addNumericSeparator");var Ft=da,Er=Ft.custom,Fr=cn(Er)?Er:null,wa=o(function r(t,e,i,n){var a=e||{};if(Q(a,"quoteStyle")&&a.quoteStyle!=="single"&&a.quoteStyle!=="double")throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Q(a,"maxStringLength")&&(typeof a.maxStringLength=="number"?a.maxStringLength<0&&a.maxStringLength!==1/0:a.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var s=Q(a,"customInspect")?a.customInspect:!0;if(typeof s!="boolean"&&s!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Q(a,"indent")&&a.indent!==null&&a.indent!==" "&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(Q(a,"numericSeparator")&&typeof a.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var l=a.numericSeparator;if(typeof t>"u")return"undefined";if(t===null)return"null";if(typeof t=="boolean")return t?"true":"false";if(typeof t=="string")return dn(t,a);if(typeof t=="number"){if(t===0)return 1/0/t>0?"0":"-0";var c=String(t);return l?Kr(t,c):c}if(typeof t=="bigint"){var d=String(t)+"n";return l?Kr(t,d):d}var y=typeof a.depth>"u"?5:a.depth;if(typeof i>"u"&&(i=0),i>=y&&y>0&&typeof t=="object")return Dt(t)?"[Array]":"[Object]";var h=Ma(a,i);if(typeof n>"u")n=[];else if(pn(n,t)>=0)return"[Circular]";function u(G,pe,Ge){if(pe&&(n=ba.call(n),n.push(pe)),Ge){var de={depth:a.depth};return Q(a,"quoteStyle")&&(de.quoteStyle=a.quoteStyle),r(G,de,i+1,n)}return r(G,a,i+1,n)}if(o(u,"inspect"),typeof t=="function"&&!Dr(t)){var g=Ka(t),f=He(t,u);return"[Function"+(g?": "+g:" (anonymous)")+"]"+(f.length>0?" { "+U.call(f,", ")+" }":"")}if(cn(t)){var _=we?J.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):Et.call(t);return typeof t=="object"&&!we?Oe(_):_}if(qa(t)){for(var b="<"+Cr.call(String(t.nodeName)),m=t.attributes||[],S=0;S<m.length;S++)b+=" "+m[S].name+"="+ln(xa(m[S].value),"double",a);return b+=">",t.childNodes&&t.childNodes.length&&(b+="..."),b+="</"+Cr.call(String(t.nodeName))+">",b}if(Dt(t)){if(t.length===0)return"[]";var k=He(t,u);return h&&!Ra(k)?"["+It(k,h)+"]":"[ "+U.call(k,", ")+" ]"}if(Sa(t)){var w=He(t,u);return!("cause"in Error.prototype)&&"cause"in t&&!on.call(t,"cause")?"{ ["+String(t)+"] "+U.call(Pr.call("[cause]: "+u(t.cause),w),", ")+" }":w.length===0?"["+String(t)+"]":"{ ["+String(t)+"] "+U.call(w,", ")+" }"}if(typeof t=="object"&&s){if(Fr&&typeof t[Fr]=="function"&&Ft)return Ft(t,{depth:y-i});if(s!=="symbol"&&typeof t.inspect=="function")return t.inspect()}if(Ea(t)){var $=[];return kr&&kr.call(t,function(G,pe){$.push(u(pe,t,!0)+" => "+u(G,t))}),Ir("Map",rt.call(t),$,h)}if(Ia(t)){var C=[];return Sr&&Sr.call(t,function(G){C.push(u(G,t))}),Ir("Set",nt.call(t),C,h)}if(Fa(t))return St("WeakMap");if(Ta(t))return St("WeakSet");if(Da(t))return St("WeakRef");if(Ca(t))return Oe(u(Number(t)));if(Aa(t))return Oe(u(Kt.call(t)));if(Pa(t))return Oe(ga.call(t));if($a(t))return Oe(u(String(t)));if(!ka(t)&&!Dr(t)){var P=He(t,u),A=Or?Or(t)===Object.prototype:t instanceof Object||t.constructor===Object,D=t instanceof Object?"":"null prototype",j=!A&&F&&Object(t)===t&&F in t?$i.call(ee(t),8,-1):D?"Object":"",Ae=A||typeof t.constructor!="function"?"":t.constructor.name?t.constructor.name+" ":"",M=Ae+(j||D?"["+U.call(Pr.call([],j||[],D||[]),": ")+"] ":"");return P.length===0?M+"{}":h?M+"{"+It(P,h)+"}":M+"{ "+U.call(P,", ")+" }"}return String(t)},"inspect_");function ln(r,t,e){var i=(e.quoteStyle||t)==="double"?'"':"'";return i+r+i}o(ln,"wrapQuotes");function xa(r){return J.call(String(r),/"/g,""")}o(xa,"quote");function Dt(r){return ee(r)==="[object Array]"&&(!F||!(typeof r=="object"&&F in r))}o(Dt,"isArray$3");function ka(r){return ee(r)==="[object Date]"&&(!F||!(typeof r=="object"&&F in r))}o(ka,"isDate");function Dr(r){return ee(r)==="[object RegExp]"&&(!F||!(typeof r=="object"&&F in r))}o(Dr,"isRegExp$1");function Sa(r){return ee(r)==="[object Error]"&&(!F||!(typeof r=="object"&&F in r))}o(Sa,"isError");function $a(r){return ee(r)==="[object String]"&&(!F||!(typeof r=="object"&&F in r))}o($a,"isString");function Ca(r){return ee(r)==="[object Number]"&&(!F||!(typeof r=="object"&&F in r))}o(Ca,"isNumber");function Pa(r){return ee(r)==="[object Boolean]"&&(!F||!(typeof r=="object"&&F in r))}o(Pa,"isBoolean");function cn(r){if(we)return r&&typeof r=="object"&&r instanceof Symbol;if(typeof r=="symbol")return!0;if(!r||typeof r!="object"||!Et)return!1;try{return Et.call(r),!0}catch{}return!1}o(cn,"isSymbol");function Aa(r){if(!r||typeof r!="object"||!Kt)return!1;try{return Kt.call(r),!0}catch{}return!1}o(Aa,"isBigInt");var Oa=Object.prototype.hasOwnProperty||function(r){return r in this};function Q(r,t){return Oa.call(r,t)}o(Q,"has$3");function ee(r){return fa.call(r)}o(ee,"toStr");function Ka(r){if(r.name)return r.name;var t=va.call(ma.call(r),/^function\s*([\w$]+)/);return t?t[1]:null}o(Ka,"nameOf");function pn(r,t){if(r.indexOf)return r.indexOf(t);for(var e=0,i=r.length;e<i;e++)if(r[e]===t)return e;return-1}o(pn,"indexOf");function Ea(r){if(!rt||!r||typeof r!="object")return!1;try{rt.call(r);try{nt.call(r)}catch{return!0}return r instanceof Map}catch{}return!1}o(Ea,"isMap");function Fa(r){if(!Fe||!r||typeof r!="object")return!1;try{Fe.call(r,Fe);try{De.call(r,De)}catch{return!0}return r instanceof WeakMap}catch{}return!1}o(Fa,"isWeakMap");function Da(r){if(!$r||!r||typeof r!="object")return!1;try{return $r.call(r),!0}catch{}return!1}o(Da,"isWeakRef");function Ia(r){if(!nt||!r||typeof r!="object")return!1;try{nt.call(r);try{rt.call(r)}catch{return!0}return r instanceof Set}catch{}return!1}o(Ia,"isSet");function Ta(r){if(!De||!r||typeof r!="object")return!1;try{De.call(r,De);try{Fe.call(r,Fe)}catch{return!0}return r instanceof WeakSet}catch{}return!1}o(Ta,"isWeakSet");function qa(r){return!r||typeof r!="object"?!1:typeof HTMLElement<"u"&&r instanceof HTMLElement?!0:typeof r.nodeName=="string"&&typeof r.getAttribute=="function"}o(qa,"isElement");function dn(r,t){if(r.length>t.maxStringLength){var e=r.length-t.maxStringLength,i="... "+e+" more character"+(e>1?"s":"");return dn($i.call(r,0,t.maxStringLength),t)+i}var n=J.call(J.call(r,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,Na);return ln(n,"single",t)}o(dn,"inspectString");function Na(r){var t=r.charCodeAt(0),e={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return e?"\\"+e:"\\x"+(t<16?"0":"")+_a.call(t.toString(16))}o(Na,"lowbyte");function Oe(r){return"Object("+r+")"}o(Oe,"markBoxed");function St(r){return r+" { ? }"}o(St,"weakCollectionOf");function Ir(r,t,e,i){var n=i?It(e,i):U.call(e,", ");return r+" ("+t+") {"+n+"}"}o(Ir,"collectionOf");function Ra(r){for(var t=0;t<r.length;t++)if(pn(r[t],`
|
|
2
|
+
`)>=0)return!1;return!0}o(Ra,"singleLineValues");function Ma(r,t){var e;if(r.indent===" ")e=" ";else if(typeof r.indent=="number"&&r.indent>0)e=U.call(Array(r.indent+1)," ");else return null;return{base:e,prev:U.call(Array(t+1),e)}}o(Ma,"getIndent");function It(r,t){if(r.length===0)return"";var e=`
|
|
3
|
+
`+t.prev+t.base;return e+U.call(r,","+e)+`
|
|
4
|
+
`+t.prev}o(It,"indentedJoin");function He(r,t){var e=Dt(r),i=[];if(e){i.length=r.length;for(var n=0;n<r.length;n++)i[n]=Q(r,n)?t(r[n],r):""}var a=typeof kt=="function"?kt(r):[],s;if(we){s={};for(var l=0;l<a.length;l++)s["$"+a[l]]=a[l]}for(var c in r)Q(r,c)&&(e&&String(Number(c))===c&&c<r.length||we&&s["$"+c]instanceof Symbol||(sn.call(/[^\w$]/,c)?i.push(t(c,r)+": "+t(r[c],r)):i.push(c+": "+t(r[c],r))));if(typeof kt=="function")for(var d=0;d<a.length;d++)on.call(r,a[d])&&i.push("["+t(a[d])+"]: "+t(r[a[d]],r));return i}o(He,"arrObjKeys");var Ci=xi,Pe=la,ja=wa,za=Ci("%TypeError%"),We=Ci("%WeakMap%",!0),Ve=Ci("%Map%",!0),Ba=Pe("WeakMap.prototype.get",!0),Ua=Pe("WeakMap.prototype.set",!0),La=Pe("WeakMap.prototype.has",!0),Ga=Pe("Map.prototype.get",!0),Ha=Pe("Map.prototype.set",!0),Wa=Pe("Map.prototype.has",!0),Pi=o(function(r,t){for(var e=r,i;(i=e.next)!==null;e=i)if(i.key===t)return e.next=i.next,i.next=r.next,r.next=i,i},"listGetNode"),Va=o(function(r,t){var e=Pi(r,t);return e&&e.value},"listGet"),Qa=o(function(r,t,e){var i=Pi(r,t);i?i.value=e:r.next={key:t,next:r.next,value:e}},"listSet"),Ja=o(function(r,t){return!!Pi(r,t)},"listHas"),Ya=o(function(){var t,e,i,n={assert:function(a){if(!n.has(a))throw new za("Side channel does not contain "+ja(a))},get:function(a){if(We&&a&&(typeof a=="object"||typeof a=="function")){if(t)return Ba(t,a)}else if(Ve){if(e)return Ga(e,a)}else if(i)return Va(i,a)},has:function(a){if(We&&a&&(typeof a=="object"||typeof a=="function")){if(t)return La(t,a)}else if(Ve){if(e)return Wa(e,a)}else if(i)return Ja(i,a);return!1},set:function(a,s){We&&a&&(typeof a=="object"||typeof a=="function")?(t||(t=new We),Ua(t,a,s)):Ve?(e||(e=new Ve),Ha(e,a,s)):(i||(i={key:{},next:null}),Qa(i,a,s))}};return n},"getSideChannel"),Za=String.prototype.replace,Xa=/%20/g,$t={RFC1738:"RFC1738",RFC3986:"RFC3986"},Ai={default:$t.RFC3986,formatters:{RFC1738:function(r){return Za.call(r,Xa,"+")},RFC3986:function(r){return String(r)}},RFC1738:$t.RFC1738,RFC3986:$t.RFC3986},es=Ai,Ct=Object.prototype.hasOwnProperty,ie=Array.isArray,z=function(){for(var r=[],t=0;t<256;++t)r.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return r}(),ts=o(function(t){for(;t.length>1;){var e=t.pop(),i=e.obj[e.prop];if(ie(i)){for(var n=[],a=0;a<i.length;++a)typeof i[a]<"u"&&n.push(i[a]);e.obj[e.prop]=n}}},"compactQueue"),un=o(function(t,e){for(var i=e&&e.plainObjects?Object.create(null):{},n=0;n<t.length;++n)typeof t[n]<"u"&&(i[n]=t[n]);return i},"arrayToObject"),is=o(function r(t,e,i){if(!e)return t;if(typeof e!="object"){if(ie(t))t.push(e);else if(t&&typeof t=="object")(i&&(i.plainObjects||i.allowPrototypes)||!Ct.call(Object.prototype,e))&&(t[e]=!0);else return[t,e];return t}if(!t||typeof t!="object")return[t].concat(e);var n=t;return ie(t)&&!ie(e)&&(n=un(t,i)),ie(t)&&ie(e)?(e.forEach(function(a,s){if(Ct.call(t,s)){var l=t[s];l&&typeof l=="object"&&a&&typeof a=="object"?t[s]=r(l,a,i):t.push(a)}else t[s]=a}),t):Object.keys(e).reduce(function(a,s){var l=e[s];return Ct.call(a,s)?a[s]=r(a[s],l,i):a[s]=l,a},n)},"merge"),rs=o(function(t,e){return Object.keys(e).reduce(function(i,n){return i[n]=e[n],i},t)},"assignSingleSource"),ns=o(function(r,t,e){var i=r.replace(/\+/g," ");if(e==="iso-8859-1")return i.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(i)}catch{return i}},"decode"),as=o(function(t,e,i,n,a){if(t.length===0)return t;var s=t;if(typeof t=="symbol"?s=Symbol.prototype.toString.call(t):typeof t!="string"&&(s=String(t)),i==="iso-8859-1")return escape(s).replace(/%u[0-9a-f]{4}/gi,function(y){return"%26%23"+parseInt(y.slice(2),16)+"%3B"});for(var l="",c=0;c<s.length;++c){var d=s.charCodeAt(c);if(d===45||d===46||d===95||d===126||d>=48&&d<=57||d>=65&&d<=90||d>=97&&d<=122||a===es.RFC1738&&(d===40||d===41)){l+=s.charAt(c);continue}if(d<128){l=l+z[d];continue}if(d<2048){l=l+(z[192|d>>6]+z[128|d&63]);continue}if(d<55296||d>=57344){l=l+(z[224|d>>12]+z[128|d>>6&63]+z[128|d&63]);continue}c+=1,d=65536+((d&1023)<<10|s.charCodeAt(c)&1023),l+=z[240|d>>18]+z[128|d>>12&63]+z[128|d>>6&63]+z[128|d&63]}return l},"encode"),ss=o(function(t){for(var e=[{obj:{o:t},prop:"o"}],i=[],n=0;n<e.length;++n)for(var a=e[n],s=a.obj[a.prop],l=Object.keys(s),c=0;c<l.length;++c){var d=l[c],y=s[d];typeof y=="object"&&y!==null&&i.indexOf(y)===-1&&(e.push({obj:s,prop:d}),i.push(y))}return ts(e),t},"compact"),os=o(function(t){return Object.prototype.toString.call(t)==="[object RegExp]"},"isRegExp"),ls=o(function(t){return!t||typeof t!="object"?!1:!!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t))},"isBuffer"),cs=o(function(t,e){return[].concat(t,e)},"combine"),ps=o(function(t,e){if(ie(t)){for(var i=[],n=0;n<t.length;n+=1)i.push(e(t[n]));return i}return e(t)},"maybeMap"),yn={arrayToObject:un,assign:rs,combine:cs,compact:ss,decode:ns,encode:as,isBuffer:ls,isRegExp:os,maybeMap:ps,merge:is},hn=Ya,Qe=yn,Ie=Ai,ds=Object.prototype.hasOwnProperty,Tr={brackets:o(function(t){return t+"[]"},"brackets"),comma:"comma",indices:o(function(t,e){return t+"["+e+"]"},"indices"),repeat:o(function(t){return t},"repeat")},H=Array.isArray,us=Array.prototype.push,gn=o(function(r,t){us.apply(r,H(t)?t:[t])},"pushToArray"),ys=Date.prototype.toISOString,qr=Ie.default,E={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:Qe.encode,encodeValuesOnly:!1,format:qr,formatter:Ie.formatters[qr],indices:!1,serializeDate:o(function(t){return ys.call(t)},"serializeDate"),skipNulls:!1,strictNullHandling:!1},hs=o(function(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"||typeof t=="symbol"||typeof t=="bigint"},"isNonNullishPrimitive"),Pt={},gs=o(function r(t,e,i,n,a,s,l,c,d,y,h,u,g,f,_,b){for(var m=t,S=b,k=0,w=!1;(S=S.get(Pt))!==void 0&&!w;){var $=S.get(t);if(k+=1,typeof $<"u"){if($===k)throw new RangeError("Cyclic object value");w=!0}typeof S.get(Pt)>"u"&&(k=0)}if(typeof c=="function"?m=c(e,m):m instanceof Date?m=h(m):i==="comma"&&H(m)&&(m=Qe.maybeMap(m,function(de){return de instanceof Date?h(de):de})),m===null){if(a)return l&&!f?l(e,E.encoder,_,"key",u):e;m=""}if(hs(m)||Qe.isBuffer(m)){if(l){var C=f?e:l(e,E.encoder,_,"key",u);return[g(C)+"="+g(l(m,E.encoder,_,"value",u))]}return[g(e)+"="+g(String(m))]}var P=[];if(typeof m>"u")return P;var A;if(i==="comma"&&H(m))f&&l&&(m=Qe.maybeMap(m,l)),A=[{value:m.length>0?m.join(",")||null:void 0}];else if(H(c))A=c;else{var D=Object.keys(m);A=d?D.sort(d):D}for(var j=n&&H(m)&&m.length===1?e+"[]":e,Ae=0;Ae<A.length;++Ae){var M=A[Ae],G=typeof M=="object"&&typeof M.value<"u"?M.value:m[M];if(!(s&&G===null)){var pe=H(m)?typeof i=="function"?i(j,M):j:j+(y?"."+M:"["+M+"]");b.set(t,k);var Ge=hn();Ge.set(Pt,b),gn(P,r(G,pe,i,n,a,s,i==="comma"&&f&&H(m)?null:l,c,d,y,h,u,g,f,_,Ge))}}return P},"stringify"),fs=o(function(t){if(!t)return E;if(t.encoder!==null&&typeof t.encoder<"u"&&typeof t.encoder!="function")throw new TypeError("Encoder has to be a function.");var e=t.charset||E.charset;if(typeof t.charset<"u"&&t.charset!=="utf-8"&&t.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var i=Ie.default;if(typeof t.format<"u"){if(!ds.call(Ie.formatters,t.format))throw new TypeError("Unknown format option provided.");i=t.format}var n=Ie.formatters[i],a=E.filter;return(typeof t.filter=="function"||H(t.filter))&&(a=t.filter),{addQueryPrefix:typeof t.addQueryPrefix=="boolean"?t.addQueryPrefix:E.addQueryPrefix,allowDots:typeof t.allowDots>"u"?E.allowDots:!!t.allowDots,charset:e,charsetSentinel:typeof t.charsetSentinel=="boolean"?t.charsetSentinel:E.charsetSentinel,delimiter:typeof t.delimiter>"u"?E.delimiter:t.delimiter,encode:typeof t.encode=="boolean"?t.encode:E.encode,encoder:typeof t.encoder=="function"?t.encoder:E.encoder,encodeValuesOnly:typeof t.encodeValuesOnly=="boolean"?t.encodeValuesOnly:E.encodeValuesOnly,filter:a,format:i,formatter:n,serializeDate:typeof t.serializeDate=="function"?t.serializeDate:E.serializeDate,skipNulls:typeof t.skipNulls=="boolean"?t.skipNulls:E.skipNulls,sort:typeof t.sort=="function"?t.sort:null,strictNullHandling:typeof t.strictNullHandling=="boolean"?t.strictNullHandling:E.strictNullHandling}},"normalizeStringifyOptions"),ms=o(function(r,t){var e=r,i=fs(t),n,a;typeof i.filter=="function"?(a=i.filter,e=a("",e)):H(i.filter)&&(a=i.filter,n=a);var s=[];if(typeof e!="object"||e===null)return"";var l;t&&t.arrayFormat in Tr?l=t.arrayFormat:t&&"indices"in t?l=t.indices?"indices":"repeat":l="indices";var c=Tr[l];if(t&&"commaRoundTrip"in t&&typeof t.commaRoundTrip!="boolean")throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var d=c==="comma"&&t&&t.commaRoundTrip;n||(n=Object.keys(e)),i.sort&&n.sort(i.sort);for(var y=hn(),h=0;h<n.length;++h){var u=n[h];i.skipNulls&&e[u]===null||gn(s,gs(e[u],u,c,d,i.strictNullHandling,i.skipNulls,i.encode?i.encoder:null,i.filter,i.sort,i.allowDots,i.serializeDate,i.format,i.formatter,i.encodeValuesOnly,i.charset,y))}var g=s.join(i.delimiter),f=i.addQueryPrefix===!0?"?":"";return i.charsetSentinel&&(i.charset==="iso-8859-1"?f+="utf8=%26%2310003%3B&":f+="utf8=%E2%9C%93&"),g.length>0?f+g:""},"stringify_1"),xe=yn,Tt=Object.prototype.hasOwnProperty,vs=Array.isArray,O={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:xe.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},_s=o(function(r){return r.replace(/&#(\d+);/g,function(t,e){return String.fromCharCode(parseInt(e,10))})},"interpretNumericEntities"),fn=o(function(r,t){return r&&typeof r=="string"&&t.comma&&r.indexOf(",")>-1?r.split(","):r},"parseArrayValue"),bs="utf8=%26%2310003%3B",ws="utf8=%E2%9C%93",xs=o(function(t,e){var i={},n=e.ignoreQueryPrefix?t.replace(/^\?/,""):t,a=e.parameterLimit===1/0?void 0:e.parameterLimit,s=n.split(e.delimiter,a),l=-1,c,d=e.charset;if(e.charsetSentinel)for(c=0;c<s.length;++c)s[c].indexOf("utf8=")===0&&(s[c]===ws?d="utf-8":s[c]===bs&&(d="iso-8859-1"),l=c,c=s.length);for(c=0;c<s.length;++c)if(c!==l){var y=s[c],h=y.indexOf("]="),u=h===-1?y.indexOf("="):h+1,g,f;u===-1?(g=e.decoder(y,O.decoder,d,"key"),f=e.strictNullHandling?null:""):(g=e.decoder(y.slice(0,u),O.decoder,d,"key"),f=xe.maybeMap(fn(y.slice(u+1),e),function(_){return e.decoder(_,O.decoder,d,"value")})),f&&e.interpretNumericEntities&&d==="iso-8859-1"&&(f=_s(f)),y.indexOf("[]=")>-1&&(f=vs(f)?[f]:f),Tt.call(i,g)?i[g]=xe.combine(i[g],f):i[g]=f}return i},"parseQueryStringValues"),ks=o(function(r,t,e,i){for(var n=i?t:fn(t,e),a=r.length-1;a>=0;--a){var s,l=r[a];if(l==="[]"&&e.parseArrays)s=[].concat(n);else{s=e.plainObjects?Object.create(null):{};var c=l.charAt(0)==="["&&l.charAt(l.length-1)==="]"?l.slice(1,-1):l,d=parseInt(c,10);!e.parseArrays&&c===""?s={0:n}:!isNaN(d)&&l!==c&&String(d)===c&&d>=0&&e.parseArrays&&d<=e.arrayLimit?(s=[],s[d]=n):c!=="__proto__"&&(s[c]=n)}n=s}return n},"parseObject"),Ss=o(function(t,e,i,n){if(t){var a=i.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t,s=/(\[[^[\]]*])/,l=/(\[[^[\]]*])/g,c=i.depth>0&&s.exec(a),d=c?a.slice(0,c.index):a,y=[];if(d){if(!i.plainObjects&&Tt.call(Object.prototype,d)&&!i.allowPrototypes)return;y.push(d)}for(var h=0;i.depth>0&&(c=l.exec(a))!==null&&h<i.depth;){if(h+=1,!i.plainObjects&&Tt.call(Object.prototype,c[1].slice(1,-1))&&!i.allowPrototypes)return;y.push(c[1])}return c&&y.push("["+a.slice(c.index)+"]"),ks(y,e,i,n)}},"parseQueryStringKeys"),$s=o(function(t){if(!t)return O;if(t.decoder!==null&&t.decoder!==void 0&&typeof t.decoder!="function")throw new TypeError("Decoder has to be a function.");if(typeof t.charset<"u"&&t.charset!=="utf-8"&&t.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var e=typeof t.charset>"u"?O.charset:t.charset;return{allowDots:typeof t.allowDots>"u"?O.allowDots:!!t.allowDots,allowPrototypes:typeof t.allowPrototypes=="boolean"?t.allowPrototypes:O.allowPrototypes,allowSparse:typeof t.allowSparse=="boolean"?t.allowSparse:O.allowSparse,arrayLimit:typeof t.arrayLimit=="number"?t.arrayLimit:O.arrayLimit,charset:e,charsetSentinel:typeof t.charsetSentinel=="boolean"?t.charsetSentinel:O.charsetSentinel,comma:typeof t.comma=="boolean"?t.comma:O.comma,decoder:typeof t.decoder=="function"?t.decoder:O.decoder,delimiter:typeof t.delimiter=="string"||xe.isRegExp(t.delimiter)?t.delimiter:O.delimiter,depth:typeof t.depth=="number"||t.depth===!1?+t.depth:O.depth,ignoreQueryPrefix:t.ignoreQueryPrefix===!0,interpretNumericEntities:typeof t.interpretNumericEntities=="boolean"?t.interpretNumericEntities:O.interpretNumericEntities,parameterLimit:typeof t.parameterLimit=="number"?t.parameterLimit:O.parameterLimit,parseArrays:t.parseArrays!==!1,plainObjects:typeof t.plainObjects=="boolean"?t.plainObjects:O.plainObjects,strictNullHandling:typeof t.strictNullHandling=="boolean"?t.strictNullHandling:O.strictNullHandling}},"normalizeParseOptions"),Cs=o(function(r,t){var e=$s(t);if(r===""||r===null||typeof r>"u")return e.plainObjects?Object.create(null):{};for(var i=typeof r=="string"?xs(r,e):r,n=e.plainObjects?Object.create(null):{},a=Object.keys(i),s=0;s<a.length;++s){var l=a[s],c=Ss(l,i[l],e,typeof r=="string");n=xe.merge(n,c,e)}return e.allowSparse===!0?n:xe.compact(n)},"parse$2"),Ps=ms,As=Cs,Os=Ai,Ks={formats:Os,parse:As,stringify:Ps};(function(r){var t=ge&&ge.__assign||function(){return t=Object.assign||function(h){for(var u,g=1,f=arguments.length;g<f;g++){u=arguments[g];for(var _ in u)Object.prototype.hasOwnProperty.call(u,_)&&(h[_]=u[_])}return h},t.apply(this,arguments)};r.__esModule=!0,r.recursiveRoute=r.route=r.routeFn=void 0;var e=Ks,i=o(function(h){return typeof h!="string"},"isPathParam"),n=o(function(h,u){return u.reduce(function(g,f){var _;return i(f)?t(t({},g),(_={},_[f.name]=h[f.name],_)):g},{})},"filterParserMap"),a=o(function(h,u){var g=h.split("&"),f=g[0],_=g.slice(1),b=s(f.split("/")),m=s(_),S=n(u,b),k=n(u,m);return{pathTemplate:f,pathTokens:b,queryTokens:m,pathParamParsers:S,queryParamParsers:k,parserMap:u}},"parseRoute"),s=o(function(h){return h.reduce(function(u,g){if(g){if(g.startsWith(":")){var f=g[g.length-1],_=f==="+"||f==="*"||f==="?"?f:"";return u.concat({modifier:_,name:g.slice(1,_?g.length-1:void 0)})}}else return u;return u.concat(g)},[])},"parseTokens"),l=o(function(h,u){return Object.keys(h).reduce(function(g,f){var _;return t(t({},g),u[f]?(_={},_[f]=h[f].serialize(u[f]),_):{})},{})},"stringifyParams");function c(h,u,g){var f=this,_=a(h,u),b=o(function(m){return new Proxy({},{get:function(S,k,w){var $=f??void 0,C=l(_.pathParamParsers,m),P=t(t({},$==null?void 0:$.previousQueryParams),l(_.queryParamParsers,m)),A=h[0]==="/"&&!($!=null&&$.previousPath),D=d(A,_.pathTokens,C,$==null?void 0:$.previousPath);return k==="$"?D+(0,e.stringify)(P,{addQueryPrefix:!0}):k==="$self"?r.route.call({previousPath:D,previousQueryParams:P},h,u,g):k===Symbol.toPrimitive?function(){return D+(0,e.stringify)(P,{addQueryPrefix:!0})}:typeof k=="string"&&g[k]?r.route.call({previousPath:D,previousQueryParams:P},g[k].templateWithQuery,g[k].parserMap,g[k].children):Reflect.get(S,k,w)}})},"fn");return b.parseParams=y(_),b.templateWithQuery=h,b.children=g,b.parserMap=u,b.template=_.pathTemplate,b}o(c,"routeFn"),r.routeFn=c,r.route=c,r.recursiveRoute=c;var d=o(function(h,u,g,f){return f===void 0&&(f=""),(h?"/":"")+(f?f==="/"?[""]:[f]:[]).concat(u.reduce(function(_,b){return i(b)?g[b.name]?_.concat(encodeURIComponent(g[b.name])):_:_.concat(b)},[])).join("/")},"stringifyRoute"),y=o(function(h){var u=h.pathTokens,g=h.queryTokens,f=h.parserMap;return function(_,b){b===void 0&&(b=!1);var m=Object.keys(_).reduce(function(S,k){var w;return t(t({},S),f[k]?(w={},w[k]=f[k].parse(_[k]),w):{})},{});return b&&u.concat(g).forEach(function(S){if(i(S)&&["","+"].includes(S.modifier)&&!m[S.name])throw Error('[parseParams]: parameter "'.concat(S.name,'" is required but is not defined'))}),m}},"paramsParser")})(en);var N={};N.__esModule=!0;N.booleanParser=N.dateParser=N.intParser=N.floatParser=N.stringParser=void 0;N.stringParser={parse:function(r){return r},serialize:function(r){return r}};N.floatParser={parse:function(r){return parseFloat(r)},serialize:function(r){return r.toString()}};N.intParser={parse:function(r){return parseInt(r)},serialize:function(r){return r.toString()}};N.dateParser={parse:function(r){return new Date(r)},serialize:function(r){return r.toISOString()}};N.booleanParser={parse:function(r){return r==="true"},serialize:function(r){return r.toString()}};(function(r){var t=ge&&ge.__createBinding||(Object.create?function(i,n,a,s){s===void 0&&(s=a),Object.defineProperty(i,s,{enumerable:!0,get:function(){return n[a]}})}:function(i,n,a,s){s===void 0&&(s=a),i[s]=n[a]}),e=ge&&ge.__exportStar||function(i,n){for(var a in i)a!=="default"&&!Object.prototype.hasOwnProperty.call(n,a)&&t(n,i,a)};r.__esModule=!0,e(en,r),e(N,r)})(bi);function Es(r){for(var t=[],e=0;e<r.length;){var i=r[e];if(i==="*"||i==="+"||i==="?"){t.push({type:"MODIFIER",index:e,value:r[e++]});continue}if(i==="\\"){t.push({type:"ESCAPED_CHAR",index:e++,value:r[e++]});continue}if(i==="{"){t.push({type:"OPEN",index:e,value:r[e++]});continue}if(i==="}"){t.push({type:"CLOSE",index:e,value:r[e++]});continue}if(i===":"){for(var n="",a=e+1;a<r.length;){var s=r.charCodeAt(a);if(s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122||s===95){n+=r[a++];continue}break}if(!n)throw new TypeError("Missing parameter name at ".concat(e));t.push({type:"NAME",index:e,value:n}),e=a;continue}if(i==="("){var l=1,c="",a=e+1;if(r[a]==="?")throw new TypeError('Pattern cannot start with "?" at '.concat(a));for(;a<r.length;){if(r[a]==="\\"){c+=r[a++]+r[a++];continue}if(r[a]===")"){if(l--,l===0){a++;break}}else if(r[a]==="("&&(l++,r[a+1]!=="?"))throw new TypeError("Capturing groups are not allowed at ".concat(a));c+=r[a++]}if(l)throw new TypeError("Unbalanced pattern at ".concat(e));if(!c)throw new TypeError("Missing pattern at ".concat(e));t.push({type:"PATTERN",index:e,value:c}),e=a;continue}t.push({type:"CHAR",index:e,value:r[e++]})}return t.push({type:"END",index:e,value:""}),t}o(Es,"lexer");function Fs(r,t){t===void 0&&(t={});for(var e=Es(r),i=t.prefixes,n=i===void 0?"./":i,a="[^".concat(he(t.delimiter||"/#?"),"]+?"),s=[],l=0,c=0,d="",y=o(function(C){if(c<e.length&&e[c].type===C)return e[c++].value},"tryConsume"),h=o(function(C){var P=y(C);if(P!==void 0)return P;var A=e[c],D=A.type,j=A.index;throw new TypeError("Unexpected ".concat(D," at ").concat(j,", expected ").concat(C))},"mustConsume"),u=o(function(){for(var C="",P;P=y("CHAR")||y("ESCAPED_CHAR");)C+=P;return C},"consumeText");c<e.length;){var g=y("CHAR"),f=y("NAME"),_=y("PATTERN");if(f||_){var b=g||"";n.indexOf(b)===-1&&(d+=b,b=""),d&&(s.push(d),d=""),s.push({name:f||l++,prefix:b,suffix:"",pattern:_||a,modifier:y("MODIFIER")||""});continue}var m=g||y("ESCAPED_CHAR");if(m){d+=m;continue}d&&(s.push(d),d="");var S=y("OPEN");if(S){var b=u(),k=y("NAME")||"",w=y("PATTERN")||"",$=u();h("CLOSE"),s.push({name:k||(w?l++:""),pattern:k&&!w?a:w,prefix:b,suffix:$,modifier:y("MODIFIER")||""});continue}h("END")}return s}o(Fs,"parse");function he(r){return r.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}o(he,"escapeString");function mn(r){return r&&r.sensitive?"":"i"}o(mn,"flags");function Ds(r,t){if(!t)return r;for(var e=/\((?:\?<(.*?)>)?(?!\?)/g,i=0,n=e.exec(r.source);n;)t.push({name:n[1]||i++,prefix:"",suffix:"",modifier:"",pattern:""}),n=e.exec(r.source);return r}o(Ds,"regexpToRegexp");function Is(r,t,e){var i=r.map(function(n){return vn(n,t,e).source});return new RegExp("(?:".concat(i.join("|"),")"),mn(e))}o(Is,"arrayToRegexp");function Ts(r,t,e){return qs(Fs(r,e),t,e)}o(Ts,"stringToRegexp");function qs(r,t,e){e===void 0&&(e={});for(var i=e.strict,n=i===void 0?!1:i,a=e.start,s=a===void 0?!0:a,l=e.end,c=l===void 0?!0:l,d=e.encode,y=d===void 0?function(j){return j}:d,h=e.delimiter,u=h===void 0?"/#?":h,g=e.endsWith,f=g===void 0?"":g,_="[".concat(he(f),"]|$"),b="[".concat(he(u),"]"),m=s?"^":"",S=0,k=r;S<k.length;S++){var w=k[S];if(typeof w=="string")m+=he(y(w));else{var $=he(y(w.prefix)),C=he(y(w.suffix));if(w.pattern)if(t&&t.push(w),$||C)if(w.modifier==="+"||w.modifier==="*"){var P=w.modifier==="*"?"?":"";m+="(?:".concat($,"((?:").concat(w.pattern,")(?:").concat(C).concat($,"(?:").concat(w.pattern,"))*)").concat(C,")").concat(P)}else m+="(?:".concat($,"(").concat(w.pattern,")").concat(C,")").concat(w.modifier);else w.modifier==="+"||w.modifier==="*"?m+="((?:".concat(w.pattern,")").concat(w.modifier,")"):m+="(".concat(w.pattern,")").concat(w.modifier);else m+="(?:".concat($).concat(C,")").concat(w.modifier)}}if(c)n||(m+="".concat(b,"?")),m+=e.endsWith?"(?=".concat(_,")"):"$";else{var A=r[r.length-1],D=typeof A=="string"?b.indexOf(A[A.length-1])>-1:A===void 0;n||(m+="(?:".concat(b,"(?=").concat(_,"))?")),D||(m+="(?=".concat(b,"|").concat(_,")"))}return new RegExp(m,mn(e))}o(qs,"tokensToRegexp");function vn(r,t,e){return r instanceof RegExp?Ds(r,t):Array.isArray(r)?Is(r,t,e):Ts(r,t,e)}o(vn,"pathToRegexp");const At=new K("Routing"),Ki=class Ki{constructor(t,e,i){var a,s;if(this.destination=t,this.routeNode=bi.route(e,i,{}),this.regExp=vn(e.replace(/&.*/,"")),!e.matchAll(/\/\:([A-Za-z0-9_]+)/g))throw`No parameters found in "${e}"`;this.paramNames=((a=e.match(/:([a-zA-Z0-9_]+)/g))==null?void 0:a.map(l=>l.slice(1)))??[],this.requiredParamNames=((s=e.match(/:([a-zA-Z0-9_]+)(?![a-zA-Z0-9_?])/g))==null?void 0:s.map(l=>l.slice(1)))??[]}get template(){return this.routeNode.template}match(t){return!!this.regExp.exec(t)}parse(t,e){const i=this.regExp.exec(t);if(!i)return null;const n={...e==null?void 0:e.raw};for(let s=1;s<i.length;s++)i[s]&&(n[this.paramNames[s-1]]=i[s]);const a=[];for(const s of this.requiredParamNames)s in n||a.push(s);if(a.length)throw`Missing ${a.length} params in path '${window.location.href}': ${a.map(s=>`"${s}"`)}`;return this.routeNode.parseParams(n)}path(t){const e=this.routeNode(t).$;return e.length?e:"/"}};o(Ki,"Route");let qt=Ki;function Nr(r,t,e){return new qt(r,t,e)}o(Nr,"partRoute");const Ei=class Ei extends fi{load(){const t=this.context.path;this.loadPath(t)}loadPath(t){this.currentPart&&(this.removeChild(this.currentPart),this.currentPart=void 0);for(let e of Object.values(this.routes))if(e.match(t)){if(typeof e.destination=="string")return At.debug(`Redirected ${t} to ${e.destination}`),history.pushState(null,"",e.destination),this._context=this.root._computeContext(this.context.frame+1),this.loadPath(e.destination);{const i=e.parse(t,this.context.queryParams);this.currentPart=this.makePart(e.destination,i),At.debug(`Routed ${t} to part: ${this.currentPart.name}`,this.currentPart),this.dirty();return}}At.warn(`No matching route for ${t}, making a default part`,this.defaultPart),this.currentPart=this.makePart(this.defaultPart,{}),this.dirty()}render(t){this.currentPart&&t.part(this.currentPart)}};o(Ei,"RouterPart");let Nt=Ei;async function Ns(){return(await R.safeGet("/db/schema.json",{})).schema}o(Ns,"get$1");function Rs(r){const t=T.titleize(r.name);return r.name!=T.singularize(T.tableize(r.model))?`${t} (${r.model})`:t}o(Rs,"belongsToDisplay");function Ms(r){return Object.values(r.models).filter(t=>{var e;return((e=t.metadata)==null?void 0:e.visibility)=="common"})}o(Ms,"commonModels");function js(r){return Object.values(r.models).filter(t=>{var e,i;return!((e=t.metadata)!=null&&e.visibility)||((i=t.metadata)==null?void 0:i.visibility)=="uncommon"})}o(js,"uncommonModels");const se={get:Ns,belongsToDisplay:Rs,commonModels:Ms,uncommonModels:js},ve=new K("Db");ve.level="debug";const Fi=class Fi{constructor(t){p(this,"whereMaps",Array());p(this,"whereClauses",Array());p(this,"_includes",{});p(this,"_joins",Array());p(this,"order","");p(this,"_limit",0);this.modelType=t}where(t,...e){return typeof t=="object"?this.whereMaps.push(t):this.whereClauses.push({clause:t,args:e}),this}includes(t){return this._includes={...t,...this._includes},this}joins(t){return this._joins.push(t),this}orderBy(t){return this.order=t,this}limit(t){return this._limit=t,this}async exec(){const t=`/db/model/${this.modelType}.json`,e={where_maps:this.whereMaps,where_clauses:this.whereClauses,includes:this._includes,joins:this._joins,limit:this._limit,order:this.order};return ve.debug(`Getting ${this.modelType} query at ${t} with body`,e),(await R.safePost(t,e)).records}async first(){return(await this.limit(1).exec())[0]}async count(){const t=`/db/model/${this.modelType}/count.json`,e={where_maps:this.whereMaps,where_clauses:this.whereClauses,joins:this._joins};return ve.debug(`Counting ${this.modelType} query at ${t} with body`,e),(await R.safePost(t,e)).count}};o(Fi,"ModelQuery");let Te=Fi;const Di=class Di{query(t){return new Te(t)}async find(t,e,i){const n=new Te(t).where("id = ?",e);i&&n.includes(i);const a=await n.first();if(a)return a;throw new at(`No ${t} with id=${e}`)}async findByIdOrSlug(t,e,i){const n=Us(e)?"id":"slug",a=new Te(t).where(`${n} = ?`,e);i&&a.includes(i);const s=await a.first();if(s)return s;throw new at(`No ${t} with id or slug ${e}`)}async update(t,e,i={}){const n=`/db/model/${t}/upsert.json`,a={record:e,includes:i};return ve.debug(`Updating ${t} at ${n} with body`,a),await R.post(n,a)}async safeUpdate(t,e,i={}){const n=await this.update(t,e,i);if(n.status=="success")return n.record;throw n.record?new st(n.message,n.record,n.errors):`Error updating ${t}: ${n.message}`}async insert(t,e,i={}){const n=`/db/model/${t}/upsert.json`,a={record:e,includes:i};return ve.debug(`Inserting ${t} at ${n} with body`,a),await R.post(n,a)}async upsert(t,e,i={}){const n=`/db/model/${t}/upsert.json`,a={record:e,includes:i};return ve.debug(`Upserting ${t} at ${n} with body`,a),await R.post(n,a)}async safeUpsert(t,e,i={}){const n=await this.upsert(t,e,i);if(n.status=="success")return n.record;throw n.record?new st(n.message,n.record,n.errors):`Error upserting ${t}: ${n.message}`}};o(Di,"DbClient");let Rt=Di;const Ii=class Ii extends Error{constructor(t){super(t)}};o(Ii,"DbFindException");let at=Ii;const zs=/[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}/gi,Bs=new RegExp(`^${zs.source}$`);function Us(r){return!!r.match(Bs)}o(Us,"isUuid");const Ti=class Ti extends Error{constructor(e,i,n){super(e);p(this,"record");p(this,"errors");this.record=i,this.errors=n}log(e,i=window.console){i.error(e,"| message:",`"${this.message}"`,"| errors:",this.errors,"| record:",this.record)}};o(Ti,"DbSaveException");let st=Ti;const qi=class qi extends Rt{};o(qi,"DdDb");let Mt=qi;function oe(){return new Mt}o(oe,"Db");const Rr=new K("Dates"),Ls=["day","week","month","year"],ot="MM/DD/YY",Y="YYYY-MM-DD";function _n(r){return q(r).format(ot)}o(_n,"display");function Gs(r){if("min"in r){const t=q(r.min);if(r.max==t.add(1,"day").format(Y))return t.format(ot);const e=q(r.max).subtract(1,"day").format(ot);return`${_n(r.min)} - ${e}`}else if("period"in r){if(r.period=="day")switch(r.relative){case 0:return"Today";case-1:return"Yesterday";case 1:return"Tomorrow"}if(r.relative==0)return`This ${r.period}`;if(r.relative==-1)return`Last ${r.period}`;if(r.relative==1)return`Next ${r.period}`;const t=T.pluralize(r.period);return r.relative<0?`${r.relative*-1} ${t} ago`:`${r.relative} ${t} from now`}else return"Unknown Date Range"}o(Gs,"rangeDisplay");function Hs(r,t){const i=q(t).add(r.relative,r.period).startOf(r.period),n=i.add(1,r.period);return{min:i.format(Y),max:n.format(Y)}}o(Hs,"materializeVirtualRange");function Je(r){const t=r.split(":");if(t.length==1){if(r.match(/^\d{4}$/)){const e=parseInt(r);return{min:`${e}-01-01`,max:`${e+1}-01-01`}}if(r.match(/^\d{4}-\d{2}$/)){const e=q(`${r}-01`);return{min:e.format(Y),max:e.add(1,"month").format(Y)}}if(r.match(/^\d{4}-\d{2}-\d{2}$/)){const e=q(r);return{min:e.format(Y),max:e.add(1,"day").format(Y)}}}else if(t.length==2)return{min:t[0],max:t[1]};throw`Invalid period format ${r}`}o(Je,"parsePeriod");function Ye(r){return`${r.min}:${r.max}`}o(Ye,"serializePeriod");const Ni=class Ni extends _i{constructor(){super(...arguments);p(this,"periodKey",v.typedKey())}async init(){await super.init(),this.onClick(this.periodKey,e=>{const i=Je(e.data.period);Rr.info(`Picked period ${e.data.period}`,i),this.state.callback(i),this.clear()})}get parentClasses(){return["tt-date-period-picker"]}get autoClose(){return!0}renderContent(e){const i=q(),n=this.state.initial?Ye(this.state.initial):"";Rr.info(`Initial period is ${n}`),e.div(".year-grid",a=>{for(let s=i.year()-2;s<i.year()+1;s++)a.div(".year-column",l=>{const c=Ye(Je(s.toString())),d=["year"];c==n&&d.push("current"),l.a({text:s.toString()}).class(...d).emitClick(this.periodKey,{period:c});for(let y=0;y<12;y++){const h=i.set("month",y),u=Ye(Je(`${s}-${h.format("MM")}`)),g=["month"];u==n&&g.push("current"),l.a({text:h.format("MMMM")}).class(...g).emitClick(this.periodKey,{period:u})}})})}};o(Ni,"DatePeriodPickerPart");let jt=Ni;const L={displayFormat:ot,literalFormat:Y,display:_n,rangeDisplay:Gs,materializeVirtualRange:Hs,virtualPeriods:Ls,parsePeriod:Je,serializePeriod:Ye},Ri=class Ri extends Fn{get app(){return this.root}get theme(){return this.app.theme}get parentClasses(){return["tt-form"]}};o(Ri,"TerrierFormPart");let ze=Ri;function Ws(r){return"$"+((typeof r=="number"?r:parseInt(r))/100).toFixed(2)}o(Ws,"cents");const Vs={cents:Ws},Qs=new K("QueryForm"),Js=["id","name","notes"],Re=class Re extends ce{constructor(){super(...arguments);p(this,"fields")}async init(){this.fields=new mi(this,this.state.query),this.listen("datachanged",this.fields.dataChangedKey,e=>{Qs.info("Query fields changed",e.data),Object.assign(this.state.query,e.data),this.emitMessage(Re.settingsChangedKey,e.data)},{attach:"passive"})}get parentClasses(){return["tt-form","tt-flex","column","gap"]}renderContent(e){e.div(".tt-flex.gap",i=>{i.div(".stretch",n=>{n.label().text("Name");const a=this.fields.textInput(n,"name");this.state.query.name.length||a.class("error")}),i.div(".stretch",n=>{n.label().text("Notes"),this.fields.textArea(n,"notes")})})}};o(Re,"QueryForm"),p(Re,"settingsChangedKey",v.typedKey());let ke=Re;const Ys=["glyp-abacus","glyp-account","glyp-accounts_payable","glyp-accounts_receivable","glyp-action_log","glyp-activate","glyp-active","glyp-activity_high","glyp-activity_low","glyp-activity_medium","glyp-activity_none","glyp-address1","glyp-adjustment","glyp-admin","glyp-administration","glyp-air_freshener","glyp-alert","glyp-align_horizontal","glyp-align_vertical","glyp-anchor","glyp-announcement","glyp-app_update","glyp-append_selection","glyp-appointment","glyp-appointment_setup","glyp-archive","glyp-arrow_down","glyp-arrow_left","glyp-arrow_right","glyp-arrow_transfer","glyp-arrow_up","glyp-ascending","glyp-attachment","glyp-audit_analyzer","glyp-autopay","glyp-availability","glyp-background_batch","glyp-background_job","glyp-bait_for_demolition","glyp-bar_chart","glyp-barcode","glyp-bat_exclusion","glyp-bed_bug_fumigation","glyp-begin_service","glyp-belongs_to","glyp-billing","glyp-billing_office","glyp-billing_terms","glyp-billto","glyp-bioremediation","glyp-bird_exclusion","glyp-black_light","glyp-branch","glyp-branch_bats","glyp-branch_birds","glyp-branch_general","glyp-branch_irrigation","glyp-branch_landscape","glyp-branch_multi_housing","glyp-branch_office","glyp-branch_orders","glyp-branch_residential","glyp-branch_sales","glyp-branch_termites","glyp-branch_weeds","glyp-branch_wildlife","glyp-build","glyp-calculate","glyp-calendar","glyp-calendar_branch","glyp-calendar_map","glyp-calendar_rolling","glyp-calendar_share","glyp-calendar_snap","glyp-california","glyp-call","glyp-callback","glyp-camera","glyp-cancellation","glyp-cancelled","glyp-card_american_express","glyp-card_discover","glyp-card_mastercard","glyp-card_visa","glyp-catalog","glyp-caught","glyp-cert","glyp-check_all","glyp-check_in","glyp-check_in_service","glyp-checked","glyp-checked_empty","glyp-checkmark","glyp-checkmark_filled","glyp-checkout","glyp-chemical","glyp-chemical_authorization","glyp-chemical_backpack_sprayer","glyp-chemical_biological_controls","glyp-chemical_disinfectant","glyp-chemical_fertilizer","glyp-chemical_flying_insect_bait","glyp-chemical_fumigants","glyp-chemical_insect_aerosol","glyp-chemical_insect_bait","glyp-chemical_insect_dust","glyp-chemical_insect_granules","glyp-chemical_insect_spray","glyp-chemical_label","glyp-chemical_mole_bait","glyp-chemical_pest_bird_control","glyp-chemical_pheromone_products","glyp-chemical_power_sprayer","glyp-chemical_rodenticide_block","glyp-chemical_rodenticide_non_block","glyp-chemical_sds","glyp-chemical_tree_products","glyp-chemical_weed_control","glyp-chemical_wildlife_repellents","glyp-chemical_wildlife_toxicants","glyp-chevron_down","glyp-chevron_left","glyp-chevron_right","glyp-chevron_up","glyp-city","glyp-click","glyp-client_actions","glyp-client_pest_sightings","glyp-client_required","glyp-close","glyp-cloud","glyp-clypboard","glyp-clypedia","glyp-clypmart","glyp-code","glyp-code_details","glyp-collections","glyp-columns","glyp-comment","glyp-comment_filled","glyp-commission_origin","glyp-commissions","glyp-company_setup","glyp-compass","glyp-complete","glyp-complete_certificate","glyp-complete_enrollment","glyp-condition_appliance_machinery","glyp-condition_customer","glyp-condition_device","glyp-condition_door_window","glyp-condition_dumpster","glyp-condition_entry_point","glyp-condition_evidence","glyp-condition_exclusion","glyp-condition_exterior","glyp-condition_interior","glyp-condition_plumbing","glyp-condition_prep_storage","glyp-condition_rodent_evidence","glyp-condition_rodent_exclusion","glyp-condition_roof_ceiling","glyp-condition_structure","glyp-condition_supplies","glyp-condition_termites","glyp-condition_ventilation","glyp-condition_wall_floor","glyp-condition_wildlife","glyp-conditions","glyp-consolidate","glyp-construction","glyp-contract","glyp-contract_cancellation","glyp-contract_overview","glyp-conversation","glyp-copesan","glyp-copy","glyp-credit_memo","glyp-credit_non_revenue","glyp-credit_production","glyp-credit_prospect","glyp-credit_sales_bonus","glyp-crew","glyp-cumulative","glyp-cursor","glyp-custom_form","glyp-customer","glyp-customer_service","glyp-dashboard","glyp-data_dive","glyp-data_dive_query","glyp-data_dives","glyp-database","glyp-dead_animal_removal","glyp-default","glyp-delete","glyp-demo_mode","glyp-descending","glyp-design","glyp-desktop","glyp-detail_report","glyp-developer","glyp-device","glyp-device_sync","glyp-differential","glyp-disable","glyp-disabled_filled","glyp-distribute_horizontal","glyp-distribute_vertical","glyp-division","glyp-document","glyp-documentation","glyp-documents","glyp-download","glyp-driving","glyp-duplicate","glyp-duplicate_location","glyp-duration","glyp-edit","glyp-email","glyp-employment","glyp-entertainment_public_venues","glyp-equipment_bear_trap","glyp-equipment_flying_insect_bait_station","glyp-equipment_flying_insect_light_trap","glyp-equipment_insect_monitor","glyp-equipment_lethal_animal_trap","glyp-equipment_live_animal_trap","glyp-equipment_live_rodent_trap","glyp-equipment_maintenance","glyp-equipment_map_viewer","glyp-equipment_maps","glyp-equipment_mosquito_trap","glyp-equipment_other","glyp-equipment_pheromone_trap","glyp-equipment_pick_up","glyp-equipment_rodent_bait","glyp-equipment_rodent_trap","glyp-equipment_termite_bait_station","glyp-equipment_termite_monitor","glyp-exclusion","glyp-expand","glyp-expired","glyp-expiring","glyp-exterior","glyp-extras","glyp-facebook","glyp-farm","glyp-farm_grain_seed","glyp-fast_and_frequent","glyp-favorite","glyp-feedback","glyp-field_guide","glyp-field_training","glyp-file_blank","glyp-file_html","glyp-file_image","glyp-file_pdf","glyp-file_printable","glyp-file_spreadsheet","glyp-file_text","glyp-filter","glyp-finance","glyp-finding","glyp-folder","glyp-followup","glyp-food_bev_pharma","glyp-formula","glyp-fuel","glyp-fumigation","glyp-function","glyp-function_aggregate","glyp-function_time","glyp-gain_loss","glyp-generate_invoices","glyp-generate_orders","glyp-geo","glyp-geo_heat_map","glyp-google","glyp-google_calendar","glyp-government","glyp-grain_seed","glyp-grid","glyp-grouped","glyp-grouping_combine","glyp-grouping_separate","glyp-has_many","glyp-health_care","glyp-heat_map","glyp-heat_treatment","glyp-help","glyp-hidden","glyp-hint","glyp-honeybee_removal","glyp-housing","glyp-icon","glyp-identifier","glyp-import","glyp-import_data","glyp-in_progress","glyp-inbox","glyp-incomplete_certificate","glyp-industrial","glyp-info","glyp-information_technology","glyp-inspect_map","glyp-inspections","glyp-insulation","glyp-interior","glyp-invoice","glyp-invoice_review","glyp-irrigation_install","glyp-irrigation_maintenance","glyp-items","glyp-job","glyp-join","glyp-join_inner","glyp-join_left","glyp-justice","glyp-k9_inspection","glyp-key","glyp-label_bottom","glyp-label_left","glyp-label_right","glyp-label_top","glyp-labor","glyp-landscape","glyp-landscape_maintenance","glyp-laptop","glyp-lead","glyp-lead_listing","glyp-lead_source","glyp-leads_report","glyp-learning_hub","glyp-ledger","glyp-legal","glyp-license","glyp-lifetime","glyp-line_cap_arrow","glyp-line_cap_bar","glyp-line_cap_circle","glyp-line_cap_none","glyp-line_caps","glyp-line_style","glyp-link","glyp-location","glyp-location_charge","glyp-location_credit","glyp-location_import","glyp-location_kind","glyp-location_message","glyp-location_origin","glyp-location_seed","glyp-location_tags","glyp-locations","glyp-locked","glyp-lodging","glyp-log_in","glyp-log_out","glyp-log_report","glyp-logbook","glyp-logbook_documents","glyp-lot_number","glyp-manager","glyp-map","glyp-markdown","glyp-market","glyp-materials","glyp-mattress_encasement","glyp-merge","glyp-message_billing","glyp-message_collections","glyp-message_complaint","glyp-message_misc","glyp-message_technician","glyp-messages","glyp-misc","glyp-miscellaneous","glyp-move_order","glyp-mowing","glyp-multi_housing","glyp-multi_tech_order","glyp-mute","glyp-navicon","glyp-new_location","glyp-new_ticket","glyp-no_charge","glyp-no_service","glyp-note","glyp-note_access","glyp-note_billing","glyp-note_collection","glyp-note_complaint","glyp-note_directions","glyp-note_focused","glyp-note_office","glyp-note_preservice","glyp-note_sales","glyp-note_service","glyp-notification","glyp-number","glyp-office","glyp-office_government","glyp-office_training","glyp-on_demand","glyp-on_demand_order","glyp-open","glyp-open_invoice","glyp-operations","glyp-options","glyp-order_actions","glyp-order_approved","glyp-order_batch","glyp-order_editor","glyp-order_pending","glyp-order_series","glyp-order_unapproved","glyp-org_structure","glyp-org_unit","glyp-org_unit_settings","glyp-origin","glyp-origin_client","glyp-origin_tech","glyp-outbox","glyp-outlook","glyp-overlap","glyp-password","glyp-past_due","glyp-paused","glyp-pay_brackets","glyp-payment","glyp-payment_ach","glyp-payment_application_apply","glyp-payment_application_correction","glyp-payment_application_initial","glyp-payment_application_refund","glyp-payment_application_transfer","glyp-payment_application_unapply","glyp-payment_application_unapply_all","glyp-payment_applications","glyp-payment_batch","glyp-payment_cash","glyp-payment_check","glyp-payment_coupon","glyp-payment_credit","glyp-payment_discount","glyp-payment_eft","glyp-payment_finance_charge","glyp-payments","glyp-payroll","glyp-pdf","glyp-pending","glyp-periodic","glyp-periodic_assessment","glyp-permission","glyp-pest","glyp-pest_ants","glyp-pest_bats","glyp-pest_bed_bugs","glyp-pest_birds","glyp-pest_crawling_insects","glyp-pest_dermestids","glyp-pest_fall_invaders","glyp-pest_flying_insects","glyp-pest_moles","glyp-pest_mosquitoes","glyp-pest_nuisance_animals","glyp-pest_ornamental","glyp-pest_ornamental_diseases","glyp-pest_roaches","glyp-pest_rodents","glyp-pest_scorpions","glyp-pest_snakes","glyp-pest_spiders","glyp-pest_stinging_insects","glyp-pest_stored_product_pests","glyp-pest_ticks_and_fleas","glyp-pest_viruses_and_bacteria","glyp-pest_weeds","glyp-pest_wood_destroyers","glyp-phone","glyp-pick_date","glyp-pick_list","glyp-platform_android","glyp-platform_ios","glyp-platform_macos","glyp-platform_windows","glyp-play","glyp-plus","glyp-plus_filled","glyp-plus_outline","glyp-portal","glyp-price_increase","glyp-price_increase_alt","glyp-pricing_table","glyp-print","glyp-privacy","glyp-product_sale","glyp-production","glyp-professional_consultation","glyp-program","glyp-program_elements","glyp-program_initiation","glyp-program_order","glyp-program_review","glyp-promo","glyp-proposal","glyp-protection","glyp-purchase_order","glyp-quality","glyp-query","glyp-radio_checked","glyp-radio_empty","glyp-reassign","glyp-receipt","glyp-recent","glyp-recommendation","glyp-record_details","glyp-recurring_revenue","glyp-redo","glyp-refresh","glyp-refund","glyp-region","glyp-released","glyp-remove","glyp-renewal","glyp-report","glyp-required_input","glyp-reschedule","glyp-restaurant_bar","glyp-revenue","glyp-review","glyp-rfid","glyp-ride_along","glyp-rodent_exclusion","glyp-route_change","glyp-route_optimization","glyp-rows","glyp-ruler","glyp-sales","glyp-sales_contest","glyp-sales_pipeline","glyp-sales_tax","glyp-sales_tax_exemption","glyp-schedule_lock","glyp-schedule_lock_afternoon","glyp-schedule_lock_day","glyp-schedule_lock_exact","glyp-schedule_lock_four_hour","glyp-schedule_lock_morning","glyp-schedule_lock_none","glyp-schedule_lock_two_day","glyp-schedule_lock_two_hour","glyp-schedule_lock_week","glyp-schedule_tyoe_every","glyp-schedule_type_every","glyp-schedule_type_none","glyp-schedule_type_on_demand","glyp-schedule_type_schedule","glyp-scheduled","glyp-scheduling","glyp-school_church","glyp-script","glyp-search","glyp-seeding","glyp-segment","glyp-sent","glyp-sentricon","glyp-service_agreement","glyp-service_form","glyp-service_miscellaneous","glyp-service_reminder","glyp-service_report","glyp-service_request","glyp-services","glyp-settings","glyp-setup","glyp-signature","glyp-simulator","glyp-site_map","glyp-site_map_annotation","glyp-site_map_chemical","glyp-site_map_edit_details","glyp-site_map_edit_geo","glyp-site_map_equipment","glyp-site_map_exterior","glyp-site_map_foundation","glyp-site_map_icon","glyp-site_map_interior","glyp-site_map_label","glyp-site_map_perimeter","glyp-site_map_settings_left","glyp-site_map_settings_right","glyp-site_map_template","glyp-skip","glyp-smart_traps","glyp-sms","glyp-snow_removal","glyp-sort","glyp-special","glyp-split","glyp-spp_scorecard","glyp-square_edge","glyp-start_sheet","glyp-start_time","glyp-statement","glyp-states","glyp-sticky","glyp-stop_time","glyp-store_material","glyp-store_order","glyp-store_order_back_order","glyp-store_order_cancelled","glyp-store_order_complete","glyp-store_order_pending","glyp-store_order_pending_return","glyp-store_order_pre_order","glyp-store_order_returned","glyp-stores","glyp-styling","glyp-subscribe","glyp-supplemental","glyp-support","glyp-sync","glyp-table","glyp-tablet","glyp-tablets","glyp-tag_manager","glyp-tags","glyp-task_runs","glyp-tech_pest_sightings","glyp-technician","glyp-technician_approach","glyp-template","glyp-termite_fumigation","glyp-terrier","glyp-territory","glyp-text","glyp-thermometer","glyp-third_party_billing","glyp-threshold","glyp-ticket","glyp-ticket_type","glyp-tickets","glyp-tidy","glyp-time","glyp-time_entry","glyp-timeline","glyp-toolbox","glyp-tqi","glyp-tracker","glyp-tracking","glyp-training_course","glyp-treatment_split","glyp-trends","glyp-trip_charge","glyp-ui_type","glyp-unarchive","glyp-unchecked","glyp-undo","glyp-unfavorite","glyp-unit_sweep","glyp-unit_tag","glyp-university","glyp-unlocked","glyp-unmute","glyp-unscheduled","glyp-update_check_positions","glyp-upload","glyp-user","glyp-user_credit","glyp-user_tags","glyp-users","glyp-utility","glyp-vacation","glyp-vacuum","glyp-variant","glyp-vendor","glyp-versions","glyp-video","glyp-visible","glyp-warehouse","glyp-wdo","glyp-web_dusting","glyp-website","glyp-wildlife","glyp-wildlife_exclusion","glyp-winter_check","glyp-wizard","glyp-work","glyp-work_class","glyp-work_code","glyp-work_order","glyp-work_production","glyp-work_progress","glyp-work_yield","glyp-year","glyp-yield","glyp-zip_code","glyp-zone_adjacent","glyp-zone_check","glyp-zone_production","glyp-zone_remote","glyp-zoom_fit"],Zs=o(r=>vi.titleize(r.replace("glyp-","")),"displayName"),zt={names:Ys,displayName:Zs},Mr=new K("GlypPicker"),bn=v.typedKey(),Mi=class Mi extends X{constructor(){super(...arguments);p(this,"grid");p(this,"filterKey",v.untypedKey())}async init(){await super.init(),this.setIcon("glyp-cursor"),this.setTitle("Choose an Icon"),this.grid=this.makePart(Ut,{}),this.onKeyUp(this.filterKey,e=>{Mr.info("Filter key up",e);const i=e.event.target.value;this.grid.setFilter(i)}),this.onClick(bn,e=>{Mr.info(`Picked ${e.data.icon}`),this.state.onPicked(e.data.icon),this.pop()})}renderContent(e){e.div(".glyp-picker-part.tt-flex.column.gap.padded.tt-form",i=>{i.input({type:"search",placeholder:"Filter"}).emitKeyUp(this.filterKey).emitChange(this.filterKey),i.div(".grid-container",n=>{n.part(this.grid)})})}};o(Mi,"GlypPickerModal");let Bt=Mi;const ji=class ji extends fi{setFilter(t){this.state.filter=t,this.dirty()}clearFilter(){this.state.filter=void 0,this.dirty()}get parentClasses(){return["glyp-picker-grid"]}render(t){const e=this.state.filter?this.state.filter.trim().toLowerCase():null;for(const i of zt.names)(!e||i.includes(e))&&t.a(n=>{n.i(i),n.div(".title").text(zt.displayName(i))}).emitClick(bn,{icon:i})}};o(ji,"GlypGrid");let Ut=ji;const Xs={Modal:Bt},eo=new K("TerrierForms");function to(r,t){const e=r.map(i=>({value:i,title:vi.titleize(i)}));return t!=null&&e.unshift({title:t,value:""}),e}o(to,"titleizeOptions");const zi=class zi extends mi{constructor(e,i,n){super(e,i);p(this,"errors");p(this,"pickGlypKey",v.typedKey());this.errors=n,this.part.onClick(this.pickGlypKey,a=>{eo.info(`Pick glyp for ${a.data.key}`);const s=a.data.key,l=this.data[s],c=o(d=>{this.data[s]=d,this.part.dirty()},"onPicked");e.app.showModal(Xs.Modal,{icon:l,onPicked:c})})}input(e,i,n,a,s){return this.errors&&this.errors[n]&&(s||(s={}),s.classes||(s.classes=[]),s.classes.push("error")),super.input(e,i,n,a,s)}renderErrorBubble(e){this.errors&&this.part.renderErrorBubble(e,this.errors)}renderGlypField(e,i){const n=this.data[i];e.a(".tt-readonly-field",a=>{n!=null&&n.length?(a.i(n),a.div().text(zt.displayName(n))):a.div().text("Pick Icon")}).emitClick(this.pickGlypKey,{key:i})}};o(zi,"TerrierFormFields");let Be=zi;const io={titleizeOptions:to};function ro(r,t,e=!0){if(e&&r.classList.contains(t))return r;let i=r.parentElement;for(;i;){if(i.classList.contains(t))return i;i=i.parentElement}return null}o(ro,"queryAncestorClass");const no={queryAncestorClass:ro},qe=new K("Columns"),wn=["count","sum","average","min","max"],xn=["year","month","day"];function ao(r){if(wn.includes(r))return"aggregate";if(xn.includes(r))return"time"}o(ao,"functionType");function so(r,t){var e,i;return(e=t.alias)!=null&&e.length?t.alias:(i=r.prefix)!=null&&i.length?`${r.prefix}${t.name}`:t.name}o(so,"computeSelectName");function oo(r,t){var e,i;t.grouped&&r.i(".glyp-grouped"),(e=t.function)!=null&&e.length?(r.i(".glyp-function"),r.div(".function").text(`${t.function}(<strong>${t.name}</strong>)`)):r.div(".name").text(t.name),(i=t.alias)!=null&&i.length&&(r.div(".as").text("as"),r.div(".alias").text(t.alias))}o(oo,"render");const jr=v.untypedKey(),zr=v.untypedKey(),Br=v.typedKey(),kn=v.typedKey(),Ze=v.untypedKey(),Bi=class Bi extends X{constructor(){super(...arguments);p(this,"modelDef");p(this,"table");p(this,"columnStates",[]);p(this,"columnCount",0);p(this,"tableFields")}updateColumnEditors(){this.assignCollection("columns",Gt,this.columnStates)}addState(e){this.columnCount+=1,this.columnStates.push({schema:this.state.schema,columnsEditor:this,id:`column-${this.columnCount}`,...e})}async init(){this.table=this.state.tableView.table,this.modelDef=this.state.tableView.modelDef,this.tableFields=new mi(this,{...this.table});const e=this.table.columns||[];for(const i of e)this.addState(i);this.updateColumnEditors(),this.setTitle(`Columns for ${this.state.tableView.displayName}`),this.setIcon("glyp-columns"),this.addAction({title:"Apply",icon:"glyp-checkmark",click:{key:jr}},"primary"),this.addAction({title:"Add Columns",icon:"glyp-plus",click:{key:zr}},"secondary"),this.onClick(jr,i=>{this.save()}),this.onClick(kn,i=>{this.removeColumn(i.data.id)}),this.onClick(Br,i=>{this.addColumn(i.data.name)}),this.onClick(zr,i=>{this.toggleDropdown(Ht,{editor:this},i.event.target)}),this.onChange(Ze,i=>{qe.info("Column value changed",i),this.validate().then()})}addColumn(e){const i=this.modelDef.columns[e];qe.info(`Add column ${e}`,i),i?(this.addState({name:i.name}),this.updateColumnEditors(),this.dirty()):alert(`Unknown column name '${e}'`)}get currentColumnNames(){return new Set(this.columnStates.map(e=>e.name))}renderContent(e){e.div(".tt-flex.tt-form.padded.gap.justify-end.align-center",a=>{a.div(".tt-compound-field",s=>{s.label().text("Prefix:"),this.tableFields.textInput(s,"prefix")}),a.div(".stretch").text("All columns will be prefixed with this")}),e.div(".dd-columns-editor-table",a=>{a.div(".dd-editor-header",s=>{s.div(".name").label({text:"Name"}),s.div(".alias").label({text:"Alias"}),s.div(".function").label({text:"Function"}),s.div(".group-by").label({text:"Group By?"})}),this.renderCollection(a,"columns").class("dd-editor-row-container")});const i=this.currentColumnNames,n=Object.values(this.modelDef.columns).filter(a=>{var s;return((s=a.metadata)==null?void 0:s.visibility)=="common"&&!i.has(a.name)});n.length&&(e.h3(".centered.large-top-padding",a=>{a.span().text("Common Columns")}),e.table(".dd-table",a=>{a.thead(s=>{s.tr(l=>{l.th().text("Name"),l.th().text("Description"),l.th().text("")})}),a.tbody(s=>{for(const l of n)s.tr(c=>{var d;c.td(".name").text(l.name),c.td(".description").text(((d=l.metadata)==null?void 0:d.description)||""),c.td().a(".add-column.tt-button.secondary.circle.inline",y=>{y.i(".glyp-plus")}).emitClick(Br,{name:l.name})})})}))}removeColumn(e){const i=I.find(this.columnStates,n=>n.id==e);i&&(this.columnStates=I.without(this.columnStates,i),this.updateColumnEditors())}serialize(){return this.columnStates.map(e=>et.omit(e,"schema","columnsEditor","id"))}async validate(){const e=this.serialize(),i=await this.tableFields.serialize();this.table._id=this.id;const n=et.deepCopy(this.state.query);Se.eachTable(n,a=>{a._id==this.id&&(a.columns=e,a.prefix=i.prefix)}),qe.info("Validating temporary query with column changes",n),Vt.validateQuery(n);for(let a=0;a<e.length;a++)this.columnStates[a].errors=e[a].errors;this.dirty()}async save(){const e=this.serialize(),i=await this.tableFields.serialize();this.state.tableView.updateColumns(e,i.prefix),this.emitMessage(Z.diveChangedKey,{}),this.pop()}};o(Bi,"ColumnsEditorModal");let Lt=Bi;const Ui=class Ui extends ze{constructor(){super(...arguments);p(this,"schema");p(this,"modelDef");p(this,"columnDef");p(this,"functionOptions")}async init(){this.schema=this.state.schema,this.modelDef=this.state.columnsEditor.modelDef,this.columnDef=this.modelDef.columns[this.state.name],qe.info(`Column ${this.state.name} definition:`,this.columnDef);let e=Array.from(wn);(this.columnDef.type=="date"||this.columnDef.type.includes("time"))&&(e=e.concat(Array.from(xn))),this.functionOptions=io.titleizeOptions(e,"")}get parentClasses(){return super.parentClasses.concat(["dd-editor-row"])}render(e){var i;if(e.div(".name",n=>{n.div(".tt-readonly-field",{text:this.state.name})}),e.div(".alias",n=>{this.textInput(n,"alias",{placeholder:"Alias"}).emitChange(Ze)}),e.div(".function",n=>{this.select(n,"function",this.functionOptions).emitChange(Ze)}),e.div(".group-by",n=>{this.checkbox(n,"grouped").emitChange(Ze)}),e.div(".actions",n=>{n.a(a=>{a.i(".glyp-close")}).emitClick(kn,{id:this.state.id})}),(i=this.state.errors)!=null&&i.length)for(const n of this.state.errors)e.div(".error.tt-bubble.alert").text(n.message)}};o(Ui,"ColumnEditor");let Gt=Ui;const Li=class Li extends _i{constructor(){super(...arguments);p(this,"addAllKey",v.untypedKey());p(this,"addKey",v.typedKey());p(this,"checked",new Set);p(this,"columns");p(this,"modelDef")}get autoClose(){return!0}async init(){await super.init(),this.modelDef=this.state.editor.modelDef;const e=this.state.editor.currentColumnNames;this.columns=Object.values(this.modelDef.columns).map(i=>{const n=e.has(i.name),a=`${n?"1":"0"}${i.name}`;return{included:n,sortOrder:a,...i}}),this.columns=I.sortBy(this.columns,"sortOrder"),this.onClick(this.addKey,i=>{qe.info(`Adding column ${i.data.name}`),this.state.editor.addColumn(i.data.name);const n=no.queryAncestorClass(i.event.target,"column");n==null||n.remove()}),this.onClick(this.addAllKey,i=>{for(const n of this.columns)n.included||this.state.editor.addColumn(n.name);this.clear()})}get parentClasses(){return super.parentClasses.concat(["tt-actions-dropdown"])}renderContent(e){for(const i of this.columns)e.a(".column",n=>{var a,s;n.div(".name").text(i.name),n.div(".right-title").text(i.type),i.included&&n.class("inactive"),(s=(a=i.metadata)==null?void 0:a.description)!=null&&s.length&&n.div(".subtitle").text(i.metadata.description)}).emitClick(this.addKey,{name:i.name});e.a(".primary",i=>{i.i(".glyp-check_all"),i.span({text:"Add All"})}).emitClick(this.addAllKey)}};o(Li,"SelectColumnsDropdown");let Ht=Li;const Wt={render:oo,functionType:ao,computeSelectName:so};function lo(r){const t={columns:[]};function e(s,l){const c={message:l};s.errors||(s.errors=[]),s.errors.push(c),t.columns.push(c)}o(e,"addColumnError");const i=new Set;let n=!1;const a=new Set;return Se.eachColumn(r,(s,l)=>{l.errors=void 0,l.grouped&&(n=!0,l.name=="id"&&a.add(s));const c=Wt.computeSelectName(s,l);i.has(c)&&e(l,`<strong>${c}</strong> has already been selected for a different column`),i.add(c)}),n&&Se.eachColumn(r,(s,l)=>{!l.grouped&&Wt.functionType(l.function)!="aggregate"&&!a.has(s)&&e(l,`<strong>${l.name}</strong> must be grouped or have an aggregate function`)}),t}o(lo,"validateQuery");const co={validateQuery:lo},Vt=co,te=new K("QueryEditor"),po=v.typedKey(),Gi=class Gi extends ce{constructor(){super(...arguments);p(this,"form")}async init(){this.form=this.makePart(ke,{query:et.slice(this.state.query,...Js)})}get parentClasses(){return["tt-flex","column","gap"]}renderContent(e){e.part(this.form),e.div(".tt-flex.gap.align-center.justify-end",i=>{i.div(".dd-hint.glyp-hint",n=>{n.div(".title").text("These settings only apply to this query, not the dive as a whole")}),i.a(".alert.tt-flex",n=>{n.i(".glyp-delete"),n.span({text:"Delete"})}).emitClick(Z.deleteQueryKey,{id:this.state.query.id})})}};o(Gi,"SettingsPart");let Qt=Gi;const Hi=class Hi extends ce{constructor(){super(...arguments);p(this,"validation")}setValidation(e){this.validation=e,this.dirty()}renderContent(e){e.div(".dd-sql-output.tt-flex.gap",i=>{if(this.validation){const n=this.validation;i.div(".sql.stretch",a=>{var s;(s=n.error_html)!=null&&s.length?(a.class("alert"),a.pre().text(n.error_html)):n.sql_html?a.pre().text(n.sql_html):a.div(".alert.tt-bubble").text(Dn.escape(n.message))})}else i.div({text:"SQL Goes Here"})})}};o(Hi,"SqlPart");let Jt=Hi;const Wi=class Wi extends ce{constructor(){super(...arguments);p(this,"result")}async updateResult(){const e=this.state.query;te.info("Generating preview for",e),this.startLoading(),this.result=await Se.preview(e),this.stopLoading(),this.dirty()}async init(){}get parentClasses(){return["dd-query-preview"]}renderContent(e){var i;this.result?this.result.status=="error"?e.div(".tt-bubble.alert").text(this.result.message):(i=this.result.columns)!=null&&i.length?e.div(".table-container",n=>{Se.renderPreview(n,this.result)}):e.div(".dd-hint-container",n=>{n.div(".dd-hint.centered.glyp-columns").text("Select at least one column")}):e.a(".tt-button.stretch",n=>{n.i(".glyp-refresh"),n.span(".title").text("Load Preview")}).emitClick(this.state.editor.updatePreviewKey)}};o(Wi,"PreviewPart");let Yt=Wi;const Me=class Me extends ce{constructor(){super(...arguments);p(this,"tableEditor");p(this,"tabs");p(this,"settingsPart");p(this,"sqlPart");p(this,"previewPart");p(this,"clientValidation");p(this,"updatePreviewKey",v.untypedKey())}async init(){const e=this.state.query;this.clientValidation=Vt.validateQuery(e),te.info("Initializing query editor",e),this.tabs=this.makePart(Xr,{side:"left"}),this.settingsPart=this.tabs.upsertTab({key:"settings",title:"Settings",icon:"glyp-settings"},Qt,{editor:this,query:e}),this.listenMessage(ke.settingsChangedKey,i=>{te.info("Query settings changed",i.data),this.updateSettings(i.data)}),this.sqlPart=this.tabs.upsertTab({key:"sql",title:"SQL",icon:"glyp-code"},Jt,{editor:this,query:e}),this.previewPart=this.tabs.upsertTab({key:"preview",title:"Preview",icon:"glyp-table",classes:["no-padding"],click:{key:this.updatePreviewKey}},Yt,{editor:this,query:e}),this.tableEditor=this.makePart(li,{schema:this.state.schema,queryEditor:this,table:this.state.query.from}),this.listenMessage(Kn.updatedKey,i=>{te.info(`Table ${i.data.model} updated`,i.data),this.validate(),this.updatePreview()}),this.onClick(this.updatePreviewKey,async i=>{await this.previewPart.updateResult()}),this.onClick(Me.copyToClipboardKey,async i=>{te.info(`Copy value to clipboard: ${i.data.value}`),await navigator.clipboard.writeText(i.data.value),this.showToast(`Copied '${i.data.value}' to clipboard`,{color:"primary"})}),this.validate().then(),this.updatePreview().then()}get parentClasses(){return["dd-query-editor"]}renderContent(e){e.div(".dd-query-editor-canvas").part(this.tableEditor),e.div(".dd-query-sub-editors").part(this.tabs)}updateSettings(e){te.info("Updating settings",e),Object.assign(this.state.query,e),this.dirty()}async validate(){const e=await Se.validate(this.state.query);te.info("Query validated",e),this.emitMessage(po,e),this.sqlPart.setValidation(e),this.clientValidation=Vt.validateQuery(this.state.query),this.dirty()}async updatePreview(){await this.previewPart.updateResult(),this.tabs.showTab("preview")}};o(Me,"QueryEditor"),p(Me,"copyToClipboardKey",v.typedKey());let lt=Me;const uo=new K("Queries");function Sn(r,t){if(r.joins)for(const e of Object.values(r.joins))t(e),Sn(e,t)}o(Sn,"eachChildTable");function yo(r,t){t(r.from),Sn(r.from,t)}o(yo,"eachTable");function $n(r,t){if(r.columns)for(const e of r.columns)t(r,e);if(r.joins)for(const e of Object.values(r.joins))$n(e,t)}o($n,"eachColumnForTable");function ho(r,t){$n(r.from,t)}o(ho,"eachColumn");async function go(r){return await R.post("/data_dive/validate_query.json",{query:r})}o(go,"validate");async function fo(r){return await R.post("/data_dive/preview_query.json",{query:r})}o(fo,"preview");const Ur="MM/DD/YY",mo="h:mm A";function vo(r,t,e){switch(r.class(t.type),t.type){case"date":const i=q(e.toString());return r.div(".date").text(i.format(Ur));case"datetime":const n=q(e.toString());return r.div(".date").text(n.format(Ur)),r.div(".time").text(n.format(mo));case"dollars":const a=parseFloat(e);return r.div(".dollars").text(`$${a}`);case"cents":const l=(parseInt(e)/100).toFixed(2);return r.div(".dollars").text(`$${l}`);case"string":if(t.select_name.endsWith("id")){const c=e.toString();r.a(".id").data({tooltip:c}).text(`...${c.substring(c.length-6)}`).emitClick(lt.copyToClipboardKey,{value:c})}else r.text(e.toString());return;default:r.text(e.toString())}r.text(e.toString())}o(vo,"renderCell");function _o(r,t,e){r.table(".dd-query-result",i=>{i.thead(n=>{n.tr(a=>{for(const s of e)a.th(s.type,l=>{l.a().text(s.select_name)})})}),i.tbody(n=>{for(const a of t)n.tr(s=>{for(const l of e)s.td(c=>{const d=a[l.select_name];d&&vo(c,l,d)})})})})}o(_o,"renderTable");function bo(r,t){t.rows&&t.columns?_o(r,t.rows,t.columns):r.div(".tt-bubble.alert").text(t.message)}o(bo,"renderPreview");const Vi=class Vi extends Ce{constructor(){super(...arguments);p(this,"pickedKey",v.typedKey());p(this,"model")}async init(){this.onChange(this.pickedKey,e=>{uo.info(`Picked model ${e.data.model}`),this.model=this.state.schema.models[e.data.model]})}get parentClasses(){return["dd-query-model-picker","padded","tt-inset-box","tt-flex","column","gap"]}renderModelOption(e,i){e.label(".model-option",n=>{n.input({type:"radio",name:`new-query-model-${this.id}`,value:i.name}).emitChange(this.pickedKey,{model:i.name}),n.div(a=>{var l;const s=T.pluralize(vi.titleize(i.name));a.div(".name").text(s),(l=i.metadata)!=null&&l.description&&a.div(".description").text(i.metadata.description)})})}render(e){e.h2(".centered",i=>{i.i(".glyp-table"),i.span().text("Select a Table")}),e.p(".caption").text("The table forms the basis of the query. Other tables can be joined into the query but they will all flow from the one selected below."),e.div(".tt-flex.gap.collapsible",i=>{i.div(".stretch.tt-flex.column.gap",n=>{const a=se.commonModels(this.state.schema);if(a.length){n.h3(s=>{s.i(".glyp-refresh"),s.span().text("Common Tables")});for(const s of I.sortBy(a,"name"))this.renderModelOption(n,s)}}),i.div(".stretch.tt-flex.column.gap",n=>{const a=se.uncommonModels(this.state.schema);if(a.length){n.h3(s=>{s.i(".glyp-pending"),s.span().text("Other Tables")});for(const s of I.sortBy(a,"name"))this.renderModelOption(n,s)}})})}};o(Vi,"QueryModelPicker");let ct=Vi;const wo={eachColumn:ho,eachTable:yo,validate:go,preview:fo,renderPreview:bo},Se=wo;function xo(){return URL.createObjectURL(new Blob([])).slice(-36)}o(xo,"makeUuid");const Cn={makeUuid:xo},ko=new K("DD Session"),Ot="dd-show-hints",Lr="dd-hide-hints",ft=class ft{constructor(t){p(this,"_showHints",!1);this.data=t;const e=localStorage.getItem(Ot);this._showHints=!e||e=="true",this.updateShowHints()}get showHints(){return this._showHints}set showHints(t){this._showHints=t,ko.info(`Persisting ${Ot} to ${t}`),localStorage.setItem(Ot,t.toString()),this.updateShowHints()}updateShowHints(){const t=document.querySelector("body");t&&(this._showHints?t.classList.remove(Lr):t.classList.add(Lr))}get user(){return this.data.user}get isSuper(){return this.user.role=="super"}groupsInOrder(){return I.sortBy(Object.values(this.data.groupMap),"name")}groupOptions(){return this.groupsInOrder().map(t=>({title:t.name,value:t.id}))}static async get(){const t=await R.safeGet("/data_dive/user_session.json",{});return new ft(t)}};o(ft,"DdSession");let $e=ft;const Qi=class Qi extends Ce{constructor(){super(...arguments);p(this,"progress",0);p(this,"color","primary")}setTotal(e){this.state.total=e,this.progress=Math.min(this.progress,this.state.total),this.dirty()}setProgress(e,i){this.progress=e,i&&(this.color=i),this.dirty()}increment(){this.progress+=1,this.dirty()}complete(e){this.progress=this.state.total,e&&(this.color=e),this.dirty()}get parentClasses(){return["tt-progress-bar"]}render(e){e.div(".gutter",i=>{const n=this.progress/this.state.total*100;i.div(".bar",this.color).css({width:`${n}%`})})}};o(Qi,"ProgressBarPart");let Zt=Qi;const Ji=class Ji extends Ce{constructor(){super(...arguments);p(this,"entries",[])}async init(){}render(e){e.div(".tt-log-entries",i=>{for(const n of this.entries)this.renderEntry(i,n)})}push(e){this.entries.push(e),this.dirty()}clear(){this.entries=[],this.dirty()}success(e,i){this.push({message:e,prefix:i,level:"success"})}info(e,i){this.push({message:e,prefix:i,level:"info"})}warn(e,i){this.push({message:e,prefix:i,level:"warn"})}error(e,i){this.push({message:e,prefix:i,level:"error"})}debug(e,i){this.push({message:e,prefix:i,level:"debug"})}renderEntry(e,i){e.div(`.log-entry.${i.level}`,n=>{n.div(".message").text(i.message)})}};o(Ji,"LogListPart");let Xt=Ji;const Ke=new K("DiveRuns"),So={pending:"glyp-pending",success:"glyp-complete",error:"glyp-alert"},Yi=class Yi extends X{constructor(){super(...arguments);p(this,"schema");p(this,"filters");p(this,"run");p(this,"error");p(this,"inputFields");p(this,"fileOutput");p(this,"queryResults",{});p(this,"progressBar");p(this,"logList");p(this,"startKey",v.untypedKey());p(this,"pickDateKey",v.typedKey())}async init(){this.setTitle("Run Dive"),this.setIcon("glyp-play"),this.schema=await se.get(),this.progressBar=this.makePart(Zt,{total:10}),this.logList=this.makePart(Xt,{}),this.filters=mt.computeFilterInputs(this.schema,this.state.dive);const e=Ne.populateRawInputData(this.filters);this.inputFields=new Be(this,e),this.listen("datachanged",this.inputFields.dataChangedKey,i=>{this.updateFilters().then()}),await this.updateFilters(),this.addAction({title:"Run",icon:"glyp-play",click:{key:this.startKey}}),this.onClick(this.startKey,i=>{this.startActionLoading(),this.createRun()}),this.onClick(this.pickDateKey,i=>{const n={min:this.inputFields.data[`${i.data.input_key}-min`],max:q(this.inputFields.data[`${i.data.input_key}-max`]).add(1,"day").format(L.literalFormat)};this.toggleDropdown(jt,{initial:n,callback:a=>{Ke.info(`Picked date range for ${i.data.input_key}`,a),this.inputFields.data[`${i.data.input_key}-min`]=a.min,this.inputFields.data[`${i.data.input_key}-max`]=q(a.max).subtract(1,"day").format(L.literalFormat),this.updateFilters(),this.dirty()}},i.event.target)}),this.dirty()}async updateFilters(){const e=await this.inputFields.serialize();Ne.serializeRawInputData(this.filters,e),Ke.info("Raw and serialized input data",e,this.filters),Ke.info("Filter input data:",this.inputFields.data)}async createRun(){this.progressBar.setProgress(0,"primary");const e={dd_dive_id:this.state.dive.id,status:"initial",input_data:{filters:this.filters,...this.state.dive.query_data}},i=await oe().upsert("dd_dive_run",e);i.status=="success"&&i.record?(this.beginStreaming(i.record),this.logList.info("Created dive run")):this.alertToast(`Error creating dive run: ${i.message}`),this.progressBar.increment(),this.dirty()}beginStreaming(e){this.run=e,R.stream(`/data_dive/stream_run/${this.run.id}`).on("init_run",i=>{this.progressBar.setTotal(i.total_steps),this.logList.clear(),Ke.info(`Total steps for run: ${i.total_steps}`),this.dirty()}).on("query_result",i=>{this.queryResults[i.id]=i,this.progressBar.increment(),this.dirty()}).on("file_output",i=>{this.fileOutput=i,this.stopActionLoading(),this.progressBar.complete("success"),this.dirty()}).onLog(i=>{this.progressBar.increment(),Ke.log(i.level,i.message),this.logList.push(i),this.dirty()}).onError(i=>{this.error=i,this.stopActionLoading(),this.progressBar.complete("alert"),this.dirty()}).onClose(()=>{this.stopActionLoading(),this.dirty()})}renderContent(e){e.div(".tt-flex.padded.gap.column",i=>{i.part(this.progressBar),i.div(".tt-flex.collapsible.gap.tt-form",n=>{n.div(".tt-flex.column.shrink.dd-dive-run-inputs",a=>{for(const s of this.filters)this.renderInput(a,s)}),n.div(".dd-dive-run-output",a=>{var s;if(this.error){a.div(".tt-bubble.alert",l=>{var d;const c=this.error;l.div(".message").text(c.message),(d=c.backtrace)!=null&&d.length&&l.div(".backtrace",y=>{for(const h of c.backtrace)y.div(".line").text(h)})});return}for(const l of((s=this.state.dive.query_data)==null?void 0:s.queries)||[])this.renderQuery(a,l);this.fileOutput&&this.renderFileOutput(a,this.fileOutput)})}),i.part(this.logList)})}renderQuery(e,i){const n=this.queryResults[i.id],a=(n==null?void 0:n.status)||"pending";e.div(".query-run",a,s=>{var l;s.i(So[a]),s.div(".name").text(i.name),(n==null?void 0:n.status)=="error"?s.div(".tt-bubble.alert").text(n.message||"Error!"):(l=n==null?void 0:n.message)!=null&&l.length&&s.div(".details").text(n.message)})}renderFileOutput(e,i){e.a(".file-output",{href:i.url},n=>{n.i(".glyp-file_spreadsheet"),n.div(".name").text(i.name),n.div(".details.glyp-download").text("Click to download")})}renderInput(e,i){e.div(".dd-dive-run-input",n=>{const a=T.titleize(i.input_key.split("#")[0].split(".").join(" "));switch(n.label(".caption-size").text(a),i.filter_type){case"direct":return this.renderDirectInput(n,i);case"date_range":return this.renderDateRangeInput(n,i);case"inclusion":return this.renderInclusionInput(n,i);default:n.p().text(`Don't know how to render input for ${i.filter_type} filter`)}})}renderDirectInput(e,i){e.div(".tt-compound-field",n=>{switch(n.label().text(Ne.operatorDisplay(i.operator)),i.column_type){case"cents":n.label().text("$"),this.inputFields.numberInput(n,i.input_key);break;case"number":this.inputFields.numberInput(n,i.input_key);break;default:this.inputFields.textInput(n,i.input_key)}})}renderDateRangeInput(e,i){e.div(".tt-compound-field",n=>{this.inputFields.dateInput(n,`${i.input_key}-min`),n.label().text("→"),this.inputFields.dateInput(n,`${i.input_key}-max`),n.a(".icon-only",{title:"Pick a common date range"},a=>{a.i(".glyp-pick_date")}).emitClick(this.pickDateKey,{input_key:i.input_key})})}renderInclusionInput(e,i){e.div(".inclusion-radios",n=>{for(const a of i.possible_values||[])n.label(".body-size",s=>{this.inputFields.checkbox(s,`${i.input_key}-${a}`),s.span().text(T.titleize(a))})})}};o(Yi,"DiveRunModal");let pt=Yi;const W=new K("DiveEditor"),fe=class fe extends ce{constructor(){super(...arguments);p(this,"tabs");p(this,"newQueryKey",v.untypedKey());p(this,"queries",new Array)}async init(){var e;this.tabs=this.makePart(Xr,{side:"top"}),this.tabs.addBeforeAction({title:"Queries:",icon:"glyp-data_dive_query"}),this.tabs.addAfterAction({title:"Add Another Query",classes:["dd-hint","arrow-right","glyp-hint"],tooltip:"Each query represents a separate tab in the resulting spreadsheet",click:{key:this.newQueryKey}}),this.tabs.addAfterAction({icon:"glyp-plus_outline",classes:["new-query"],click:{key:this.newQueryKey}}),this.queries=((e=this.state.dive.query_data)==null?void 0:e.queries)||[];for(const i of this.queries)this.addQueryTag(i);this.listenMessage(ke.settingsChangedKey,i=>{const n=i.data;W.info("Query settings changed",n),this.tabs.updateTab({key:n.id,title:n.name})}),this.onClick(this.newQueryKey,i=>{this.app.showModal(ti,{editor:this,schema:this.state.schema})}),this.onClick(fe.deleteQueryKey,i=>{this.app.confirm({title:"Delete Query",icon:"glyp-delete",body:"Are you sure you want to delete this query?"},()=>{this.deleteQuery(i.data.id)})})}addQuery(e){this.queries.push(e),this.addQueryTag(e)}addQueryTag(e){const i={...this.state,query:e};this.tabs.upsertTab({key:e.id,title:e.name},lt,i)}deleteQuery(e){W.info(`Deleting query ${e}`),I.deleteIf(this.queries,i=>i.id==e)>0&&(this.tabs.removeTab(e),this.dirty())}get parentClasses(){return["dd-dive-editor"]}renderContent(e){e.part(this.tabs)}async serialize(){const e=this.queries;return{...this.state.dive,query_data:{queries:e}}}};o(fe,"DiveEditor"),p(fe,"diveChangedKey",v.untypedKey()),p(fe,"deleteQueryKey",v.typedKey());let Z=fe;const Zi=class Zi extends Zr{constructor(){super(...arguments);p(this,"editor");p(this,"session");p(this,"showHintsKey",v.untypedKey());p(this,"saveKey",v.untypedKey());p(this,"discardKey",v.untypedKey());p(this,"runKey",v.untypedKey())}async init(){W.info(`Loading dive ${this.state.id}`);const e=await se.get();this.session=await $e.get();const i=await mt.get(this.state.id);this.editor=this.makePart(Z,{schema:e,dive:i,session:this.session}),this.mainContentWidth="wide",this.addBreadcrumb({title:"Dives",icon:"glyp-data_dives",href:"/data_dive"}),this.addBreadcrumb({title:i.name,icon:"glyp-data_dive"}),this.addToolbarInput("show-hints","checkbox",{title:"Hints",icon:"glyp-hint",defaultValue:this.session.showHints.toString(),onChangeKey:this.showHintsKey,onInputKey:this.showHintsKey}),this.addAction({title:"Discard",icon:"glyp-cancelled",classes:["discard-dive-action"],click:{key:this.discardKey}},"tertiary"),this.addAction({title:"Save",icon:"glyp-complete",classes:["save-dive-action"],click:{key:this.saveKey}},"tertiary"),this.addAction({title:"Run",icon:"glyp-play",click:{key:this.runKey}},"tertiary"),this.onClick(this.discardKey,n=>{W.info("Discarding dive changes"),Ee.visit(location.href)}),this.onClick(this.saveKey,n=>this.save()),this.onClick(this.runKey,n=>this.run()),this.onInput(this.showHintsKey,n=>{const a=n.event.target.checked;W.info(`Show hints input to ${a}`,n),this.session.showHints=a}),this.listenMessage(Z.diveChangedKey,n=>{var a;W.info("Dive changed"),(a=this.element)==null||a.classList.add("changed")},{attach:"passive"}),this.dirty()}get parentClasses(){return["dd-dive-editor-page"]}renderContent(e){e.part(this.editor)}async save(){var n;const e=await this.editor.serialize();W.info(`Saving dive ${e.name}`,e);const i=await oe().upsert("dd_dive",e);i.status=="success"?(this.successToast("Saved Dive!"),(n=this.element)==null||n.classList.remove("changed")):this.alertToast(i.message)}async run(){const e=await this.editor.serialize();this.app.showModal(pt,{dive:e})}};o(Zi,"DiveEditorPage");let ei=Zi;const Xi=class Xi extends X{constructor(){super(...arguments);p(this,"addKey",v.untypedKey());p(this,"settingsForm");p(this,"modelPicker")}async init(){this.settingsForm=this.makePart(ke,{query:{id:"new",name:"",notes:""}}),this.modelPicker=this.makePart(ct,{schema:this.state.schema}),this.setIcon("glyp-data_dive_query"),this.setTitle("New Query"),this.addAction({title:"Add",icon:"glyp-plus",click:{key:this.addKey}}),this.onClick(this.addKey,async e=>{await this.save()}),this.onChange(this.modelPicker.pickedKey,e=>{var n;W.info(`Picked model ${e.data.model}`);const i=this.state.schema.models[e.data.model];(n=this.settingsForm.state.query.name)!=null&&n.length||(this.settingsForm.state.query.name=i.name,this.settingsForm.dirty())})}renderContent(e){e.div(".tt-flex.tt-form.padded.column.gap.dd-new-query-form",i=>{i.part(this.settingsForm),i.part(this.modelPicker)})}async save(){var a;W.info("Saving new query");const e=await this.settingsForm.fields.serialize();if(!((a=e.name)!=null&&a.length)){this.showToast("Please enter a query name",{color:"alert"}),this.dirty();return}const i=this.modelPicker.model;if(!i){this.showToast("Please select a model",{color:"alert"});return}const n={...e,id:Cn.makeUuid(),from:{model:i.name}};this.state.editor.addQuery(n),this.state.editor.tabs.showTab(n.id),this.pop()}};o(Xi,"NewQueryModal");let ti=Xi;const le=new K("Filters");function $o(r){let t=["eq","ne"];switch(r){case"text":case"string":t=["eq","ne","ilike"];break;case"float":case"integer":case"cents":t=["eq","ne","lt","gt","lte","gte"];break}return t.map(e=>({value:e,title:Oi(e)}))}o($o,"operatorOptions");function Oi(r){switch(r){case"eq":return"=";case"ne":return"≠";case"ilike":return"≈";case"lt":return"<";case"lte":return"≤";case"gt":return">";case"gte":return"≥";default:return"?"}}o(Oi,"operatorDisplay");function Co(r,t){switch(t.filter_type){case"direct":switch(r.div(".column").text(t.column),r.div(".operator").text(Oi(t.operator)),t.column_type){case"cents":r.div(".value").text(Vs.cents(t.value));break;default:r.div(".value").text(t.value);break}break;case"date_range":r.div(".column").text(t.column),r.div(".value").text(L.rangeDisplay(t.range));return;case"inclusion":r.div(".column").text(t.column),r.div(".operator").text("in"),r.div(".value").text(t.in.join(" | "));return;default:r.div(".empty").text(`${t.filter_type} filter`)}}o(Co,"renderStatic");const Gr=v.untypedKey(),Hr=v.untypedKey(),Pn=v.typedKey(),er=class er extends X{constructor(){super(...arguments);p(this,"modelDef");p(this,"table");p(this,"filterStates",[]);p(this,"filterCount",0)}updateFilterEditors(){this.assignCollection("filters",ri,this.filterStates)}addState(e){this.filterCount+=1,this.filterStates.push({schema:this.state.schema,filtersEditor:this,id:`filter-${this.filterCount}`,...e})}async init(){this.table=this.state.tableView.table,this.modelDef=this.state.tableView.modelDef;const e=this.table.filters||[];for(const i of e)this.addState(i);this.updateFilterEditors(),this.setTitle(`Filters for ${this.state.tableView.displayName}`),this.setIcon("glyp-filter"),this.addAction({title:"Apply",icon:"glyp-checkmark",click:{key:Gr}},"primary"),this.addAction({title:"Add Filter",icon:"glyp-plus_outline",classes:["add-filter","secondary"],click:{key:Hr}},"secondary"),this.onClick(Gr,i=>{this.save()}),this.onClick(Pn,i=>{this.removeFilter(i.data.id)}),this.onClick(Hr,i=>{this.showAddFilterDropdown(i.event.target)})}renderContent(e){e.div(".dd-filters-editor-table",i=>{i.div(".dd-editor-header",n=>{n.div(".column").label({text:"Column"}),n.div(".operator").label({text:"Operator"}),n.div(".filter").label({text:"Filter"})}),this.renderCollection(i,"filters").class("dd-editor-row-container")})}removeFilter(e){const i=I.find(this.filterStates,n=>n.id==e);i&&(le.info(`Removing filter ${e}`,i),this.filterStates=I.without(this.filterStates,i),this.updateFilterEditors())}showAddFilterDropdown(e){const i=o(n=>{le.info(`Adding ${n.filter_type} filter`,n),this.addState(n),this.updateFilterEditors()},"onSelected");this.toggleDropdown(oi,{modelDef:this.modelDef,callback:i},e)}update(e){super.update(e),this.filterStates.length==0&&this.showAddFilterDropdown(null)}save(){const e=this.filterStates.map(i=>et.omit(i,"schema","filtersEditor","id"));this.state.tableView.updateFilters(e),this.emitMessage(Z.diveChangedKey,{}),this.pop()}};o(er,"FiltersEditorModal");let ii=er;const tr=class tr extends ze{constructor(){super(...arguments);p(this,"modelDef");p(this,"columnDef")}async init(){this.modelDef=this.state.filtersEditor.modelDef,this.columnDef=this.modelDef.columns[this.state.column]}get parentClasses(){return super.parentClasses.concat(["dd-editor-row"])}renderActions(e){e.div(".actions",i=>{i.a(n=>{n.i(".glyp-close")}).emitClick(Pn,{id:this.state.id})})}};o(tr,"FilterEditor");let Ue=tr;const ir=class ir extends fi{constructor(){super(...arguments);p(this,"editor")}async init(){this.makeEditor(this.state.filter_type)}makeEditor(e){switch(this.editor&&this.removeChild(this.editor),e){case"direct":this.editor=this.makePart(ni,this.state);break;case"inclusion":this.editor=this.makePart(ai,this.state);break;case"date_range":this.editor=this.makePart(si,this.state);break}}assignState(e){const i=super.assignState(e);return i&&this.makeEditor(this.state.filter_type),i}render(e){this.editor?e.part(this.editor):e.div(".tt-bubble.alert",{text:`Unknown filter type '${this.state.filter_type}'`})}};o(ir,"FilterEditorContainer");let ri=ir;const rr=class rr extends Ue{constructor(){super(...arguments);p(this,"numericChangeKey",v.untypedKey())}async init(){var e,i;await super.init(),((e=this.columnDef)==null?void 0:e.type)=="cents"?(this.state.column_type="cents",this.state.numeric_value=parseInt(this.state.value)/100):((i=this.columnDef)==null?void 0:i.type)=="number"&&(this.state.column_type="number",this.state.numeric_value=parseFloat(this.state.value)),this.onChange(this.numericChangeKey,n=>{var a;le.info(`Direct filter for ${(a=this.columnDef)==null?void 0:a.name} numeric value changed to ${n.value}`),this.state.column_type=="cents"?this.state.value=Math.round(parseFloat(n.value)*100).toString():this.state.value=n.value})}render(e){e.div(".column",i=>{i.div(".tt-readonly-field",{text:this.state.column})}),e.div(".operator",i=>{var a;const n=$o(((a=this.columnDef)==null?void 0:a.type)||"text");this.select(i,"operator",n)}),e.div(".filter",i=>{switch(this.state.column_type){case"cents":i.div(".tt-compound-field",n=>{n.label().text("$"),this.numberInput(n,"numeric_value",{placeholder:"Value"}).emitChange(this.numericChangeKey)});break;case"number":this.numberInput(i,"numeric_value",{placeholder:"Value"}).emitChange(this.numericChangeKey);break;default:this.textInput(i,"value",{placeholder:"Value"})}}),this.renderActions(e)}};o(rr,"DirectFilterEditor");let ni=rr;const Wr=v.typedKey(),nr=class nr extends Ue{constructor(){super(...arguments);p(this,"values")}async init(){await super.init(),this.values=new Set(this.state.in||[]),this.onChange(Wr,e=>{const i=e.data.value,n=e.event.target.checked;le.info(`${i} checkbox changed to ${n}`),n?this.values.add(i):this.values.delete(i),this.state.in=Array.from(this.values)})}render(e){e.div(".column",i=>{i.div(".tt-readonly-field",{text:this.state.column})}),e.div(".operator",i=>{i.span().text("In")}),e.div(".filter",i=>{var n,a;(a=(n=this.columnDef)==null?void 0:n.possible_values)!=null&&a.length?i.div(".tt-flex.gap.wrap.possible-values.align-center",s=>{for(const l of this.columnDef.possible_values)s.label(".body-size",c=>{c.input({type:"checkbox",checked:this.values.has(l)}).emitChange(Wr,{value:l}),c.div().text(l)})}):i.input({type:"text",placeholder:"Values"})}),this.renderActions(e)}};o(nr,"InclusionFilterEditor");let ai=nr;const Vr=v.untypedKey(),Qr=v.typedKey(),Jr=v.typedKey(),ar=class ar extends Ue{constructor(){super(...arguments);p(this,"range")}async init(){"period"in this.state.range?this.range=this.state.range:(this.range={period:"day",relative:-1},this.state.range=this.range),this.onChange(Vr,e=>{this.range.relative=parseFloat(e.value),this.dirty()}),this.onChange(Qr,e=>{le.info(`Date range period ${e.data.period} changed to ${e.value}`),this.range.period=e.data.period,this.dirty()}),this.onClick(Jr,e=>{this.range=e.data,this.state.range=this.range,this.dirty()})}render(e){e.div(".column",i=>{i.div(".tt-readonly-field",{text:this.state.column})}),e.div(".operator",i=>{i.span().text("Range")}),e.div(".filter.column",i=>{i.div(".tt-flex.gap.align-center",n=>{n.div(".shrink",a=>{a.input({type:"number",value:this.range.relative.toString()}).data({tooltip:"Positive for the future, zero for current, and negative for the past"}).emitChange(Vr)}),n.div(".stretch.tt-flex.wrap.gap",a=>{for(const s of L.virtualPeriods)a.label(".caption-size",l=>{l.input({type:"radio",name:`${this.id}-period`,value:s,checked:this.range.period==s}).emitChange(Qr,{period:s}),l.span().text(T.titleize(s))})})}),i.div(".tt-flex.gap.wrap.align-center",n=>{for(const a of L.virtualPeriods)n.div(".shrink",s=>{for(let l=-1;l<2;l++){const c=["date-range-preselect"];a==this.range.period&&l==this.range.relative&&c.push("current"),s.a().class(...c).text(L.rangeDisplay({period:a,relative:l})).emitClick(Jr,{period:a,relative:l})}})})}),this.renderActions(e)}};o(ar,"DateRangeFilterEditor");let si=ar;const Yr=v.typedKey(),sr=class sr extends _i{constructor(){super(...arguments);p(this,"columns")}get autoClose(){return!0}async init(){await super.init(),this.columns=I.sortByFunction(Object.values(this.state.modelDef.columns),e=>{var a;return`${((a=e.metadata)==null?void 0:a.visibility)=="common"?"0":"1"}${e.name}`}),this.onClick(Yr,e=>{const i=e.data.column,n=this.state.modelDef.columns[i];if(n)switch(this.clear(),n.type){case"enum":const a=n.possible_values||[];return this.state.callback({filter_type:"inclusion",column:i,in:a});case"date":case"datetime":return this.state.callback({filter_type:"date_range",column:i,range:{period:"year",relative:0}});default:const s=n.type=="number"||n.type=="cents"?n.type:"text";return this.state.callback({filter_type:"direct",column:i,column_type:s,operator:"eq",value:""})}else this.showToast(`Invalid column ${i}`,{color:"alert"})})}get parentClasses(){return super.parentClasses.concat(["tt-actions-dropdown"])}renderContent(e){var n;e.div(".header",a=>{a.i(".glyp-columns"),a.span().text("Select a Column")});let i=!0;for(const a of this.columns){const s=((n=a.metadata)==null?void 0:n.visibility)=="common";e.a(l=>{var d;l.div(".title").text(a.name);const c=(d=a.metadata)==null?void 0:d.description;c!=null&&c.length&&l.div(".subtitle").text(c),i&&!s&&l.class("border-top")}).emitClick(Yr,{column:a.name}),i=s}}};o(sr,"AddFilterDropdown");let oi=sr;function Po(r,t,e){const n={input_key:`${t.model}.${e.column}`,...e,input_value:""};switch(e.filter_type){case"inclusion":const s=r.models[t.model].columns[e.column];n.possible_values=s.possible_values,n.input_key=`${n.input_key}#in`;break;case"date_range":n.input_key=`${n.input_key}#range`;break;case"direct":n.input_key=`${n.input_key}#${e.operator}`;break}return n}o(Po,"toInput");function Ao(r){const t={};for(const e of r)switch(e.filter_type){case"date_range":const i=L.materializeVirtualRange(e.range);t[`${e.input_key}-min`]=i.min,t[`${e.input_key}-max`]=q(i.max).subtract(1,"day").format(L.literalFormat);break;case"direct":switch(e.column_type){case"cents":t[e.input_key]=(parseInt(e.value)/100).toString();break;default:t[e.input_key]=e.value}break;case"inclusion":for(const n of e.in)t[`${e.input_key}-${n}`]="true";break;default:le.warn(`Don't know how to get ${e.filter_type} raw value`,e)}return t}o(Ao,"populateRawInputData");function Oo(r,t){for(const e of r)switch(e.filter_type){case"date_range":const i={min:t[`${e.input_key}-min`],max:q(t[`${e.input_key}-max`]).add(1,"day").format(L.literalFormat)},n=L.serializePeriod(i);e.input_value=n;break;case"direct":switch(e.column_type){case"cents":const s=t[e.input_key];e.input_value=Math.round(parseFloat(s)*100).toString();break;default:e.input_value=t[e.input_key]}break;case"inclusion":const a=[];for(const s of e.possible_values||[])t[`${e.input_key}-${s}`]&&a.push(s);e.input_value=a.join(",");break;default:le.warn(`Don't know how to serialize ${e.filter_type} raw value`,e)}}o(Oo,"serializeRawInputData");const Ko={renderStatic:Co,toInput:Po,operatorDisplay:Oi,populateRawInputData:Ao,serializeRawInputData:Oo},Ne=Ko,re=new K("Tables"),An=v.typedKey();function On(r,t,e){for(const i of t.filters||[]){const n=Ne.toInput(r,t,i);e[n.input_key]=n}if(t.joins)for(const i of Object.values(t.joins))On(r,i,e)}o(On,"computeFilterInputs$1");const or=class or extends ce{constructor(){super(...arguments);p(this,"schema");p(this,"query");p(this,"table");p(this,"tableName");p(this,"displayName");p(this,"modelDef");p(this,"parentView");p(this,"editTableKey",v.untypedKey());p(this,"editColumnsKey",v.untypedKey());p(this,"editFiltersKey",v.untypedKey());p(this,"newJoinedKey",v.untypedKey());p(this,"createJoinedKey",v.typedKey())}async init(){this.schema=this.state.schema,this.query=this.state.queryEditor.state.query,this.table=this.state.table,this.modelDef=this.schema.models[this.table.model],this.tableName=T.titleize(T.tableize(this.table.model)),this.displayName=this.tableName,this.updateJoinedViews(),this.onClick(this.editColumnsKey,e=>{re.info(`Edit ${this.displayName} Columns`),this.app.showModal(Lt,{schema:this.schema,query:this.query,tableView:this})}),this.onClick(this.editFiltersKey,e=>{re.info(`Edit ${this.displayName} Filters`),this.app.showModal(ii,{schema:this.schema,tableView:this})}),this.onClick(this.newJoinedKey,e=>{re.info(`Adding join to ${this.displayName}`);const i=new Set(Object.keys(this.table.joins||[])),n=Object.values(this.modelDef.belongs_to).filter(l=>!i.has(l.name));let a=!0;const s=I.sortByFunction(n,l=>{var y;return`${((y=this.schema.models[l.model].metadata)==null?void 0:y.visibility)=="common"?"0":"1"}${l.name}`}).map(l=>{var h,u;const c=this.schema.models[l.model],d=((h=c.metadata)==null?void 0:h.visibility)=="common",y=a&&!d?["border-top"]:[];return a=d,{title:se.belongsToDisplay(l),subtitle:(u=c.metadata)==null?void 0:u.description,classes:y,click:{key:this.createJoinedKey,data:{name:l.name}}}});s.length?this.toggleDropdown(Rn,s,e.event.target):this.showToast(`No more possible joins for ${this.displayName}`,{color:"pending"})}),this.onClick(this.createJoinedKey,e=>{const i=this.modelDef.belongs_to[e.data.name];if(i){re.info(`Creating join for ${this.displayName} to ${i.name}`,i);const n={model:i.model,join_type:"inner",belongs_to:i.name},a=o(s=>{var l;re.info("Creating joined table",s),(l=this.table).joins||(l.joins={}),this.table.joins[s.belongs_to]=s,this.updateJoinedViews()},"callback");this.app.showModal(ut,{table:n,belongsTo:i,callback:a,parentTable:this.state.table})}})}updateJoinedViews(){const e=Object.values(this.table.joins||{}).map(i=>({schema:this.schema,queryEditor:this.state.queryEditor,table:i}));this.assignCollection("joined",ci,e);for(const i of this.getCollectionParts("joined"))i.parentView=this}get parentClasses(){const e=["dd-table-editor"];return"join_type"in this.state.table?e.push("joined"):e.push("from"),e}renderContent(e){"join_type"in this.state.table&&e.div(".chicken-foot"),this.renderCollection(e,"joined").class("joins-column"),e.div(".tt-panel.table-panel",i=>{i.div(".title",n=>{const a=this.table;"join_type"in a?n.i(`.glyp-join_${a.join_type}`):n.i(".glyp-table"),n.div().text(this.displayName)}).emitClick(this.editTableKey),this.renderColumns(i),this.renderFilters(i),i.a(".action",n=>{n.i(".glyp-plus"),n.div().text("Join"),n.i(".glyp-belongs_to")}).emitClick(this.newJoinedKey),Object.keys(this.table.joins||{}).length||i.a(".dd-hint.joins.arrow-top.glyp-hint",n=>{n.div(".title").text("Join More Tables")}).emitClick(this.newJoinedKey).data({tooltip:"Include data from other tables that are related to this one"})})}renderColumns(e){e.section(i=>{var n;if(i.div(".title",a=>{var s;a.i(".glyp-columns"),a.span({text:"Columns"}),(s=this.table.prefix)!=null&&s.length&&a.span(".prefix").text(`${this.table.prefix}*`)}),(n=this.table.columns)!=null&&n.length)for(const a of this.table.columns)i.div(".column.line",s=>{var l;if(Wt.render(s,a),(l=a.errors)!=null&&l.length){s.class("error");for(const c of a.errors)s.div(".error-message").text(c.message)}});else i.div(".line.empty").div().text("None"),i.div(".dd-hint-container",a=>{a.div("dd-hint.glyp-hint",s=>{s.div(".hint-title").text("Add Columns")})})}).emitClick(this.editColumnsKey,{})}renderFilters(e){e.section(".filters",i=>{var n;if(i.div(".title",a=>{a.i(".glyp-filter"),a.span({text:"Filters"})}),(n=this.table.filters)!=null&&n.length)for(const a of this.table.filters)i.div(".filter.line",s=>{Ne.renderStatic(s,a)});else i.div(".line.empty").text("None"),i.div(".dd-hint-container",a=>{a.div("dd-hint.glyp-hint",s=>{s.div(".hint-title").text("Add Filters")})})}).emitClick(this.editFiltersKey,{})}sendUpdateMessage(){this.emitMessage(An,this.state.table)}updateColumns(e,i){this.state.table.columns=e,this.state.table.prefix=i,this.sendUpdateMessage(),this.dirty()}updateFilters(e){this.state.table.filters=e,this.sendUpdateMessage(),this.dirty()}};o(or,"TableView");let dt=or;const lr=class lr extends dt{};o(lr,"FromTableView");let li=lr;const cr=class cr extends dt{async init(){await super.init(),this.displayName=T.titleize(this.table.belongs_to),this.onClick(this.editTableKey,t=>{var e;if(this.parentView){re.info(`Editing join table ${this.displayName}`);const n=this.parentView.modelDef.belongs_to[this.table.belongs_to],a=o(s=>{var l;re.info(`Updated joined table ${this.displayName}`,s),this.parentView.table.joins[s.belongs_to]=s,this.table=s,(l=this.parentView)==null||l.dirty()},"callback");this.app.showModal(ut,{table:this.table,belongsTo:n,callback:a,parentTable:(e=this.parentView)==null?void 0:e.table})}else alert("Parent table was never assigned!")})}};o(cr,"JoinedTableView");let ci=cr;const pr=class pr extends ze{constructor(){super(...arguments);p(this,"parentTable")}render(e){const i=T.titleize(this.state.belongs_to),n=this.parentTable.model;e.div(".tt-padded.tt-inset-box",a=>{a.h4(".justify-center",s=>{s.i(".glyp-join"),s.div().text("Join Type")}),a.div(".tt-flex.gap.padded",s=>{s.div(".stretch",l=>{l.label(".body-size",c=>{c.i(".glyp-join_inner"),this.radio(c,"join_type","inner"),c.div().text(`<strong>Inner</strong>: <em>${n}</em> is only included if there's an associated <em>${i}</em>`)})}),s.div(".stretch",l=>{l.label(".body-size",c=>{c.i(".glyp-join_left"),this.radio(c,"join_type","left"),c.div().text(`<strong>Left</strong>: <em>${n}</em> is included even if there's no associated <em>${i}</em>`)})})})})}};o(pr,"JoinedTableEditorForm");let pi=pr;const dr=class dr extends X{constructor(){super(...arguments);p(this,"form");p(this,"applyKey",v.untypedKey())}async init(){this.form=this.makePart(pi,this.state.table),this.form.parentTable=this.state.parentTable,this.setIcon("glyp-join"),this.setTitle(`Join ${this.state.parentTable.model} <i class='glyp-belongs_to'></i> ${se.belongsToDisplay(this.state.belongsTo)}`),this.addAction({title:"Apply",icon:"glyp-checkmark",click:{key:this.applyKey}},"primary"),this.onClick(this.applyKey,async e=>{const i=await this.form.serialize();this.state.callback(i),this.emitMessage(Z.diveChangedKey,{}),this.pop()})}renderContent(e){e.div(".tt-padded").part(this.form)}};o(dr,"JoinedTableEditorModal");let ut=dr;const Eo={updatedKey:An,computeFilterInputs:On},Kn=Eo;function Fo(r,t){return r.owner_id==t.user.id||t.isSuper}o(Fo,"canDelete");async function Do(r){return r=="test"?(await R.safeGet("/data_dive/test_dive.json",{})).dive:oe().find("dd_dive",r,{owner:{}})}o(Do,"get");async function Io(){return await R.safeGet("/data_dive/list.json",{})}o(Io,"list");function To(r,t){var i;const e={};for(const n of((i=t.query_data)==null?void 0:i.queries)||[])Kn.computeFilterInputs(r,n.from,e);return Object.values(e)}o(To,"computeFilterInputs");const qo={list:Io,get:Do,canDelete:Fo,computeFilterInputs:To},mt=qo,ur=class ur extends Ce{constructor(){super(...arguments);p(this,"fields")}async init(){this.fields=new Be(this,this.state.group)}setErrors(e){this.fields.errors=e,this.dirty()}get parentClasses(){return["tt-form","tt-flex","column","gap","padded"]}render(e){this.fields.renderErrorBubble(e),e.div(".tt-flex.collapsible.gap",i=>{i.div(".stretch",n=>{n.label().text("Name"),this.fields.textInput(n,"name")}),i.div(".shrink",n=>{n.label().text("Icon"),this.fields.renderGlypField(n,"icon")})}),e.div(i=>{i.label().text("Description"),this.fields.textArea(i,"description_raw")})}async serialize(){return this.fields.serialize()}};o(ur,"GroupForm");let di=ur;const yr=class yr extends X{constructor(){super(...arguments);p(this,"form");p(this,"saveKey",v.untypedKey());p(this,"deleteKey",v.untypedKey())}async init(){var i,n;const e=this.state.group;this.form=this.makePart(di,{group:e}),this.setTitle((i=e.id)!=null&&i.length?"Edit Group":"New Group"),this.setIcon("glyp-grouped"),this.addAction({title:"Save",icon:"glyp-checkmark",click:{key:this.saveKey}}),(n=e.id)!=null&&n.length&&this.state.session.isSuper&&this.addAction({title:"Delete",icon:"glyp-delete",classes:["alert"],click:{key:this.deleteKey}},"secondary"),this.onClick(this.saveKey,a=>{this.save()}),this.onClick(this.deleteKey,async a=>{this.app.confirm({title:"Delete this group?",body:"Are you sure you want to delete this group?",icon:"glyp-delete"},()=>{this.delete()})})}renderContent(e){e.part(this.form)}async save(){var n;this.startLoading();const e=await this.form.serialize(),i=await oe().upsert("dd_dive_group",e);this.stopLoading(),i.status=="success"?(this.state.callback(i.record),this.successToast(`Saved group ${(n=i.record)==null?void 0:n.name}`),this.pop()):(this.alertToast(`Error saving group: ${i.message}`),this.form.setErrors(i.errors))}async delete(){const e={...this.state.group};e._state=2;const i=await oe().upsert("dd_dive_group",e);i.status=="success"?(this.pop(),this.successToast(`Deleted group ${e.name}`),Ee.visit(_e.list.path({}))):this.form.setErrors(i.errors)}};o(yr,"GroupEditorModal");let yt=yr;const No={visibility:["public","private"]},Xe=new K("DiveForm"),je=class je extends Ce{constructor(){super(...arguments);p(this,"fields")}async init(){this.fields=new Be(this,this.state.dive),this.listen("datachanged",this.fields.dataChangedKey,e=>{Xe.info("Query fields changed",e.data),Object.assign(this.state.dive,e.data),this.emitMessage(je.settingsChangedKey,e.data)},{attach:"passive"})}get parentClasses(){return["tt-flex","column","gap"]}render(e){this.fields.renderErrorBubble(e),e.div(".tt-flex.gap.collapsible",i=>{i.div(".tt-compound-field",n=>{n.label().text("Name"),this.fields.textInput(n,"name")}),i.div(".tt-compound-field.shrink",n=>{n.label().text("Group"),this.fields.select(n,"dd_dive_group_id",this.state.session.groupOptions())})}),e.div(".tt-compound-field",i=>{i.label().text("Description"),this.fields.textInput(i,"description_raw")}),e.div(".tt-flex.gap.align-center.padded",i=>{i.label(".caption-size").text("Visibility:");for(const n of No.visibility)i.label(".caption-size",a=>{this.fields.radio(a,"visibility",n),a.span().text(T.titleize(n))})})}setErrors(e){this.fields.errors=e,this.dirty()}async serialize(){return await this.fields.serialize()}};o(je,"DiveForm"),p(je,"settingsChangedKey",v.typedKey());let ui=je;const hr=class hr extends X{constructor(){super(...arguments);p(this,"settingsForm");p(this,"modelPicker");p(this,"saveKey",v.untypedKey());p(this,"deleteKey",v.untypedKey());p(this,"isNew",!0)}async init(){var e;this.isNew=!((e=this.state.dive.id)!=null&&e.length),this.settingsForm=this.makePart(ui,{dive:this.state.dive,session:this.state.session}),this.modelPicker=this.makePart(ct,{schema:this.state.schema}),this.isNew?this.setTitle("New Dive"):this.setTitle("Edit Dive"),this.setIcon("glyp-data_dive"),this.addAction({title:"Save",icon:"glyp-checkmark",click:{key:this.saveKey}}),!this.isNew&&mt.canDelete(this.state.dive,this.state.session)&&this.addAction({title:"Delete",icon:"glyp-delete",classes:["alert"],click:{key:this.deleteKey}},"secondary"),this.onClick(this.saveKey,async i=>{await this.save()}),this.onClick(this.deleteKey,async i=>{this.app.confirm({title:"Delete this dive?",body:"Are you sure you want to delete this dive?",icon:"glyp-delete"},()=>{this.delete()})})}renderContent(e){e.div(".tt-flex.tt-form.padded.column.gap.dd-new-dive-form",i=>{i.part(this.settingsForm),this.isNew&&i.part(this.modelPicker)})}async save(){const e={...this.state.dive},i=await this.settingsForm.serialize();if(Object.assign(e,i),this.isNew){const a=this.modelPicker.model;if(!a){this.showToast("Please select a model",{color:"alert"});return}const s={id:Cn.makeUuid(),name:i.name,notes:"",from:{model:a.name}};e.query_data={queries:[s]},Xe.info(`Creating new dive ${e.name}!`,e)}else Xe.info(`Updating existing dive ${e.name}`,e);const n=await oe().upsert("dd_dive",e);Xe.info(`Dive upsert response ${n.status}`,n),n.status=="success"?(this.pop(),this.isNew?(this.app.successToast(`Created Dive ${e.name}`),Ee.visit(_e.editor.path({id:n.record.id}))):(this.app.successToast(`Updated Dive ${e.name}`),Ee.visit(_e.list.path({})))):this.settingsForm.setErrors(n.errors)}async delete(){const e={...this.state.dive};e._state=2;const i=await oe().upsert("dd_dive",e);i.status=="success"?(this.pop(),this.successToast(`Deleted dive ${e.name}`),Ee.visit(_e.list.path({}))):this.settingsForm.setErrors(i.errors)}};o(hr,"DiveSettingsModal");let ht=hr;const V=new K("DiveList"),gr=class gr extends Ce{constructor(){super(...arguments);p(this,"editGroupKey",v.typedKey());p(this,"newDiveKey",v.typedKey());p(this,"editDiveKey",v.typedKey());p(this,"runDiveKey",v.typedKey());p(this,"session");p(this,"result");p(this,"schema");p(this,"groupMap",{});p(this,"diveMap",{})}async init(){this.schema=await se.get(),this.session=await $e.get(),this.onClick(this.editGroupKey,e=>{V.info(`Edit group ${e.data.id}`);const i=this.groupMap[e.data.id];i?this.app.showModal(yt,{session:this.session,group:i,callback:n=>this.reload()}):this.alertToast(`No group with id ${e.data.id}`)}),this.onClick(this.newDiveKey,e=>{const i=e.data.group_id;V.info(`Showing new dive modal for group ${i}`);const n={name:"",description_raw:"",visibility:"public",owner_id:this.session.user.id,dd_dive_group_id:i,dive_types:[]};this.app.showModal(ht,{schema:this.schema,dive:n,session:this.session})}),this.onClick(this.editDiveKey,e=>{const i=this.diveMap[e.data.id];i?(V.info(`Editing settings for dive: ${i.name}`),this.app.showModal(ht,{schema:this.schema,dive:i,session:this.session})):V.warn(`No dive with id ${e.data.id}`)}),this.onClick(this.runDiveKey,e=>{const i=this.diveMap[e.data.id];i?(V.info(`Running dive ${i.name}`),this.app.showModal(pt,{dive:i})):V.warn(`No dive with id ${e.data.id}`)}),this.reload().then()}async reload(){this.session=await $e.get(),this.result=await mt.list(),V.info("Loading data dive list",this.result),this.groupMap=this.session.data.groupMap,this.diveMap=I.indexBy(this.result.dives,"id"),this.dirty()}render(e){const i=I.groupBy(this.result.dives,"dd_dive_group_id");e.div(".dd-group-grid",n=>{const a=I.sortBy(Object.values(this.groupMap),"name");for(const s of a)this.renderGroupPanel(n,s,i[s.id]||[])})}renderGroupPanel(e,i,n){const a=In.panel(this.theme).title(i.name).icon(i.icon||"glyp-data_dives").classes("group").content(s=>{s.class("tt-list");for(const l of I.sortBy(n,"name"))this.renderDiveRow(s,l)});this.state.mode=="editor"&&(a.addAction({title:"New Dive",icon:"glyp-data_dive",click:{key:this.newDiveKey,data:{group_id:i.id}}},"secondary"),a.addAction({icon:"glyp-settings",click:{key:this.editGroupKey,data:{id:i.id}}},"tertiary")),a.render(e)}renderDiveRow(e,i){e.div(".dive",n=>{this.state.mode=="editor"?(n.a({href:_e.editor.path({id:i.id})},a=>{i.visibility=="private"?a.i(".glyp-privacy").data({tooltip:"Private Dive"}):a.i(".glyp-data_dive").data({tooltip:"Public Dive"}),a.span().text(i.name)}).data({tooltip:"Open Editor"}),n.a(".icon-only",a=>{a.i(".glyp-settings")}).data({tooltip:"Dive Settings"}).emitClick(this.editDiveKey,{id:i.id})):n.a(a=>{i.visibility=="private"?a.i(".glyp-privacy").data({tooltip:"Private Dive"}):a.i(".glyp-data_dive").data({tooltip:"Public Dive"}),a.span().text(i.name)}).data({tooltip:"Run Dive"}).emitClick(this.runDiveKey,{id:i.id})})}};o(gr,"DiveListPart");let yi=gr;const fr=class fr extends Zr{constructor(){super(...arguments);p(this,"listPart");p(this,"newGroupKey",v.untypedKey())}async init(){this.setTitle("Data Dive"),this.setIcon("glyp-data_dives"),this.mainContentWidth="wide",this.listPart=this.makePart(yi,{mode:"editor"}),this.addAction({title:"New Group",icon:"glyp-plus_outline",click:{key:this.newGroupKey}},"tertiary"),this.onClick(this.newGroupKey,e=>{V.info("Showing new dive group model");const i={name:"",group_types:[]};this.app.showModal(yt,{session:this.listPart.session,group:i,callback:n=>this.listPart.reload()})})}renderContent(e){e.part(this.listPart)}};o(fr,"DiveListPage");let gt=fr;const _e={list:Nr(gt,"/data_dive",{}),editor:Nr(ei,"/data_dive/editor/:id",{id:bi.stringParser})};K.level="debug";const mr=class mr extends Nt{get defaultPart(){return gt}get routes(){return _e}};o(mr,"ContentRouterPart");let hi=mr;const vr=class vr extends Tn{constructor(){super(...arguments);p(this,"contentPart");p(this,"session")}async init(){await super.init(),this.contentPart=this.makePart(hi,{}),this.session=await $e.get(),this.dirty()}get parentClasses(){return["tt-typography"]}render(e){e.part(this.contentPart),e.part(this.overlayPart)}};o(vr,"DdApp");let gi=vr;qn.mount(gi,"data-dive-app",{},{capturePath:"/data_dive"});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var R=Object.defineProperty;var $=(d,O)=>R(d,"name",{value:O,configurable:!0});var K=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function X(d){return d&&d.__esModule&&Object.prototype.hasOwnProperty.call(d,"default")?d.default:d}$(X,"getDefaultExportFromCjs");function nt(d){if(d.__esModule)return d;var O=d.default;if(typeof O=="function"){var g=$(function m(){return this instanceof m?Reflect.construct(O,arguments,this.constructor):O.apply(this,arguments)},"a");g.prototype=O.prototype}else g={};return Object.defineProperty(g,"__esModule",{value:!0}),Object.keys(d).forEach(function(m){var x=Object.getOwnPropertyDescriptor(d,m);Object.defineProperty(g,m,x.get?x:{enumerable:!0,get:function(){return d[m]}})}),g}$(nt,"getAugmentedNamespace");var V={exports:{}};(function(d,O){(function(g,m){d.exports=m()})(K,function(){var g=1e3,m=6e4,x=36e5,F="millisecond",b="second",T="minute",j="hour",v="day",A="week",p="month",J="quarter",D="year",Y="date",Z="Invalid Date",q=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,B=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,G={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(r){var n=["th","st","nd","rd"],t=r%100;return"["+r+(n[(t-20)%10]||n[t]||n[0])+"]"}},P=$(function(r,n,t){var i=String(r);return!i||i.length>=n?r:""+Array(n+1-i.length).join(t)+r},"m"),Q={s:P,z:function(r){var n=-r.utcOffset(),t=Math.abs(n),i=Math.floor(t/60),e=t%60;return(n<=0?"+":"-")+P(i,2,"0")+":"+P(e,2,"0")},m:$(function r(n,t){if(n.date()<t.date())return-r(t,n);var i=12*(t.year()-n.year())+(t.month()-n.month()),e=n.clone().add(i,p),u=t-e<0,s=n.clone().add(i+(u?-1:1),p);return+(-(i+(t-e)/(u?e-s:s-e))||0)},"t"),a:function(r){return r<0?Math.ceil(r)||0:Math.floor(r)},p:function(r){return{M:p,y:D,w:A,d:v,D:Y,h:j,m:T,s:b,ms:F,Q:J}[r]||String(r||"").toLowerCase().replace(/s$/,"")},u:function(r){return r===void 0}},C="en",_={};_[C]=G;var U=$(function(r){return r instanceof N},"p"),I=$(function r(n,t,i){var e;if(!n)return C;if(typeof n=="string"){var u=n.toLowerCase();_[u]&&(e=u),t&&(_[u]=t,e=u);var s=n.split("-");if(!e&&s.length>1)return r(s[0])}else{var o=n.name;_[o]=n,e=o}return!i&&e&&(C=e),e||!i&&C},"t"),h=$(function(r,n){if(U(r))return r.clone();var t=typeof n=="object"?n:{};return t.date=r,t.args=arguments,new N(t)},"w"),a=Q;a.l=I,a.i=U,a.w=function(r,n){return h(r,{locale:n.$L,utc:n.$u,x:n.$x,$offset:n.$offset})};var N=function(){function r(t){this.$L=I(t.locale,null,!0),this.parse(t)}$(r,"M");var n=r.prototype;return n.parse=function(t){this.$d=function(i){var e=i.date,u=i.utc;if(e===null)return new Date(NaN);if(a.u(e))return new Date;if(e instanceof Date)return new Date(e);if(typeof e=="string"&&!/Z$/i.test(e)){var s=e.match(q);if(s){var o=s[2]-1||0,c=(s[7]||"0").substring(0,3);return u?new Date(Date.UTC(s[1],o,s[3]||1,s[4]||0,s[5]||0,s[6]||0,c)):new Date(s[1],o,s[3]||1,s[4]||0,s[5]||0,s[6]||0,c)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},n.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},n.$utils=function(){return a},n.isValid=function(){return this.$d.toString()!==Z},n.isSame=function(t,i){var e=h(t);return this.startOf(i)<=e&&e<=this.endOf(i)},n.isAfter=function(t,i){return h(t)<this.startOf(i)},n.isBefore=function(t,i){return this.endOf(i)<h(t)},n.$g=function(t,i,e){return a.u(t)?this[i]:this.set(e,t)},n.unix=function(){return Math.floor(this.valueOf()/1e3)},n.valueOf=function(){return this.$d.getTime()},n.startOf=function(t,i){var e=this,u=!!a.u(i)||i,s=a.p(t),o=$(function(H,y){var w=a.w(e.$u?Date.UTC(e.$y,y,H):new Date(e.$y,y,H),e);return u?w:w.endOf(v)},"l"),c=$(function(H,y){return a.w(e.toDate()[H].apply(e.toDate("s"),(u?[0,0,0,0]:[23,59,59,999]).slice(y)),e)},"$"),f=this.$W,l=this.$M,S=this.$D,M="set"+(this.$u?"UTC":"");switch(s){case D:return u?o(1,0):o(31,11);case p:return u?o(1,l):o(0,l+1);case A:var L=this.$locale().weekStart||0,W=(f<L?f+7:f)-L;return o(u?S-W:S+(6-W),l);case v:case Y:return c(M+"Hours",0);case j:return c(M+"Minutes",1);case T:return c(M+"Seconds",2);case b:return c(M+"Milliseconds",3);default:return this.clone()}},n.endOf=function(t){return this.startOf(t,!1)},n.$set=function(t,i){var e,u=a.p(t),s="set"+(this.$u?"UTC":""),o=(e={},e[v]=s+"Date",e[Y]=s+"Date",e[p]=s+"Month",e[D]=s+"FullYear",e[j]=s+"Hours",e[T]=s+"Minutes",e[b]=s+"Seconds",e[F]=s+"Milliseconds",e)[u],c=u===v?this.$D+(i-this.$W):i;if(u===p||u===D){var f=this.clone().set(Y,1);f.$d[o](c),f.init(),this.$d=f.set(Y,Math.min(this.$D,f.daysInMonth())).$d}else o&&this.$d[o](c);return this.init(),this},n.set=function(t,i){return this.clone().$set(t,i)},n.get=function(t){return this[a.p(t)]()},n.add=function(t,i){var e,u=this;t=Number(t);var s=a.p(i),o=$(function(l){var S=h(u);return a.w(S.date(S.date()+Math.round(l*t)),u)},"y");if(s===p)return this.set(p,this.$M+t);if(s===D)return this.set(D,this.$y+t);if(s===v)return o(1);if(s===A)return o(7);var c=(e={},e[T]=m,e[j]=x,e[b]=g,e)[s]||1,f=this.$d.getTime()+t*c;return a.w(f,this)},n.subtract=function(t,i){return this.add(-1*t,i)},n.format=function(t){var i=this,e=this.$locale();if(!this.isValid())return e.invalidDate||Z;var u=t||"YYYY-MM-DDTHH:mm:ssZ",s=a.z(this),o=this.$H,c=this.$m,f=this.$M,l=e.weekdays,S=e.months,M=$(function(y,w,E,k){return y&&(y[w]||y(i,u))||E[w].slice(0,k)},"h"),L=$(function(y){return a.s(o%12||12,y,"0")},"c"),W=e.meridiem||function(y,w,E){var k=y<12?"AM":"PM";return E?k.toLowerCase():k},H={YY:String(this.$y).slice(-2),YYYY:this.$y,M:f+1,MM:a.s(f+1,2,"0"),MMM:M(e.monthsShort,f,S,3),MMMM:M(S,f),D:this.$D,DD:a.s(this.$D,2,"0"),d:String(this.$W),dd:M(e.weekdaysMin,this.$W,l,2),ddd:M(e.weekdaysShort,this.$W,l,3),dddd:l[this.$W],H:String(o),HH:a.s(o,2,"0"),h:L(1),hh:L(2),a:W(o,c,!0),A:W(o,c,!1),m:String(c),mm:a.s(c,2,"0"),s:String(this.$s),ss:a.s(this.$s,2,"0"),SSS:a.s(this.$ms,3,"0"),Z:s};return u.replace(B,function(y,w){return w||H[y]||s.replace(":","")})},n.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},n.diff=function(t,i,e){var u,s=a.p(i),o=h(t),c=(o.utcOffset()-this.utcOffset())*m,f=this-o,l=a.m(this,o);return l=(u={},u[D]=l/12,u[p]=l,u[J]=l/3,u[A]=(f-c)/6048e5,u[v]=(f-c)/864e5,u[j]=f/x,u[T]=f/m,u[b]=f/g,u)[s]||f,e?l:a.a(l)},n.daysInMonth=function(){return this.endOf(p).$D},n.$locale=function(){return _[this.$L]},n.locale=function(t,i){if(!t)return this.$L;var e=this.clone(),u=I(t,i,!0);return u&&(e.$L=u),e},n.clone=function(){return a.w(this.$d,this)},n.toDate=function(){return new Date(this.valueOf())},n.toJSON=function(){return this.isValid()?this.toISOString():null},n.toISOString=function(){return this.$d.toISOString()},n.toString=function(){return this.$d.toUTCString()},r}(),z=N.prototype;return h.prototype=z,[["$ms",F],["$s",b],["$m",T],["$H",j],["$W",v],["$M",p],["$y",D],["$D",Y]].forEach(function(r){z[r[1]]=function(n){return this.$g(n,r[0],r[1])}}),h.extend=function(r,n){return r.$i||(r(n,N,h),r.$i=!0),h},h.locale=I,h.isDayjs=U,h.unix=function(r){return h(1e3*r)},h.en=_[C],h.Ls=_,h.p={},h})})(V);var tt=V.exports;const rt=X(tt);export{K as c,rt as d,nt as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var c=Object.defineProperty;var m=(e,t,a)=>t in e?c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var s=(e,t)=>c(e,"name",{value:t,configurable:!0});var d=(e,t,a)=>(m(e,typeof t!="symbol"?t+"":t,a),a);import{e as l,f as g,c as y}from"./page-part-rvqu1H5N.js";const n=class n extends y{async init(){await super.init(),this.addBreadcrumb({title:"Terrier Engine",icon:"glyp-terrier",href:"/"})}};s(n,"DemoPage");let p=n;const r=class r extends l{constructor(){super(...arguments);d(this,"page")}async init(){await super.init(),this.page=this.makePart(this.state.part,{})}render(a){a.div(".tt-demo.tt-typography.tt-form",i=>{i.part(this.page)}),a.part(this.overlayPart)}static mountPage(a,i){const o=document.getElementById("demo-container");if(o)g.mount(r,o,{part:a},i);else throw alert("No #demo-container!"),"No #demo-container!"}};s(r,"DemoApp");let h=r;export{p as D,h as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var D=Object.defineProperty;var H=(e,i,t)=>i in e?D(e,i,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[i]=t;var s=(e,i)=>D(e,"name",{value:i,configurable:!0});var o=(e,i,t)=>(H(e,typeof i!="symbol"?i+"":i,t),t);import{D as L,a as W}from"./demo-app-oXSW09jF.js";import{L as O,T as j,M as B,g as U,p as N,P as K,h as X,d as Y}from"./page-part-rvqu1H5N.js";import{d as v}from"./dayjs.min-bbBKidfw.js";const l=new O("List Viewer");O.level="debug";const b=class b extends K{constructor(){super(...arguments);o(this,"viewer")}render(t){var n;const r=((n=this.viewer.detailsContext)==null?void 0:n.id)==this.state.listId;t.div(".tt-list-viewer-item",a=>{this.viewer.renderListItem(a,this.state);const u=this.state.listStyle||"none";a.class(u),this.state.listClickable&&(a.class("clickable"),a.emitClick(this.viewer.itemClickedKey,{listId:this.state.listId})),r&&a.class("current")}).id(`item-${this.state.listId}`),r&&this.viewer.layout=="inline"&&(l.debug("ListItemPart: rendering inline item details"),this.viewer.currentDetailsPart&&t.part(this.viewer.currentDetailsPart))}};s(b,"ListItemPart");let d=b;const I=class I{constructor(i,t){o(this,"part");o(this,"itemPart");this.viewer=i,this.item=t}get id(){return this.item.listId}makePart(i,t){var r;this.viewer.layout=="side"?this.part=this.viewer.sideContainerPart.makePart(i,t):this.part=(r=this.viewer.currentItemPart)==null?void 0:r.makePart(i,t)}clear(){this.part&&(this.viewer.removeChild(this.part),this.part=void 0),this.itemPart&&this.itemPart.dirty()}};s(I,"ListViewerDetailsContext");let f=I;const k=class k extends K{constructor(){super(...arguments);o(this,"viewer")}async init(){this.viewer=this.state.viewer}get parentClasses(){return["tt-list-viewer-side-details"]}render(t){this.viewer.currentDetailsPart?(l.debug("[SideContainerPart] Rendering details part",this.viewer.currentDetailsPart),t.part(this.viewer.currentDetailsPart)):l.debug("[SideContainerPart] No details part to render")}};s(k,"SideContainerPart");let m=k;const M=class M extends j{constructor(){super(...arguments);o(this,"sideContainerPart");o(this,"detailsContext");o(this,"layout","side");o(this,"items",[]);o(this,"itemPartMap",{});o(this,"itemClickedKey",B.typedKey());o(this,"detailsShownKey",B.typedKey())}get currentDetailsPart(){var t;return(t=this.detailsContext)==null?void 0:t.part}get currentItemPart(){var t;return(t=this.detailsContext)==null?void 0:t.itemPart}async init(){await super.init(),this.sideContainerPart=this.makePart(m,{viewer:this}),await this.reload(),this.dirty(),this.onClick(this.itemClickedKey,t=>{l.debug(`Clicked on list item ${t.data.listId}`,t),this.showDetails(t.data.listId)})}async reload(){this.items=await this.fetchItems(),this.assignCollection("items",d,this.items),this.getCollectionParts("items").forEach(t=>{t.viewer=this,this.itemPartMap[t.state.listId]=t}),window.innerWidth>U.phone?this.layout="side":this.layout="inline"}load(){super.load();const r=N(location.search).get("listId");if(r!=null&&r.length&&this.itemPartMap[r])l.info(`Showing item specified in params: ${r}`),this.showDetails(r);else{const n=this.items.filter(a=>a.listClickable)[0];n?(l.info("Showing first clickable item"),this.showDetails(n.listId)):l.info("No clickable items to show")}}get parentClasses(){return["tt-list-viewer"]}render(t){l.debug("Rendering the viewer"),t.div(".tt-list-viewer-list",r=>{this.renderCollection(r,"items")}),this.layout=="side"&&(l.debug("Rendering sideContainerPart inside the viewer"),t.part(this.sideContainerPart))}showDetails(t){var u;(u=this.detailsContext)==null||u.clear();const r=this.itemPartMap[t];if(!r){l.warn(`No item part ${t}, ${Object.keys(this.itemPartMap).length} item parts: `,this.itemPartMap);return}this.detailsContext=new f(this,r.state),this.detailsContext.itemPart=r,this.renderDetails(this.detailsContext),this.layout=="side"&&this.sideContainerPart.dirty(),r.dirty();const n=N(location.search);n.raw.listId=t;const a=location.pathname+"?"+n.serialize();history.replaceState(null,"",a),this.emitMessage(this.detailsShownKey,{id:t})}};s(M,"ListViewerPart");let p=M;function Z(e,...i){if(i!=null&&i.length){const t={};for(const r of i)t[r]=e[r];return t}else return{...e}}s(Z,"slice");function V(e,...i){const t={...e};for(const r of i)delete t[r];return t}s(V,"omit");function _(e){const i={};for(const[t,r]of Object.entries(e))r!=null&&(typeof r!="string"&&!Array.isArray(r)||r.length)&&(i[t]=r);return i}s(_,"omitEmpty");function tt(e){return e!=null}s(tt,"notNull");function et(e,...i){if(e==null)return!1;for(const t of i)if(e[t]==null)return!1;return!0}s(et,"propNotNull");function it(e){return Object.assign({},e)}s(it,"shallowCopy");function rt(e){return JSON.parse(JSON.stringify(e))}s(rt,"deepCopy");function st(e){switch(typeof e){case"object":if(e&&"toString"in e&&typeof e.toString=="function")return e.toString();break;case"boolean":case"number":case"function":case"symbol":case"bigint":return e.toString();case"string":return e}throw"this object can't be converted to string"}s(st,"safeToString");const F={slice:Z,omit:V,omitEmpty:_,shallowCopy:it,safeToString:st,deepCopy:rt,notNull:tt,propNotNull:et};function E(e,i){return e.reduce((t,r)=>{const n=r[i];return n&&(t[n]||(t[n]=[]),t[n].push(r)),t},{})}s(E,"groupBy");function C(e,i){return e.reduce((t,r)=>{const n=i(r);return n&&(t[n]||(t[n]=[]),t[n].push(r)),t},{})}s(C,"groupByFunction");function nt(e,i,t){for(let[r,n]of Object.entries(C(e,i)))t(r,n)}s(nt,"eachGroupByFunction");function at(e,i){const t=[];for(let r=0;r<e.length-1;r++)t.push(i(e[r],e[r+1]));return t}s(at,"mapPairs");function R(e,i){const t={};for(let r of e){const n=r[i];n&&(t[n]=r)}return t}s(R,"indexBy");function ot(e,i){const t={};for(let r of e){const n=i(r);n&&(t[n]=r)}return t}s(ot,"indexByFunction");function T(e,i,t="asc"){const r=t=="asc"?1:-1;return Array(...e).sort((n,a)=>r*(n[i]>a[i]?1:-1))}s(T,"sortBy");function lt(e,i,t="asc"){const r=t=="asc"?1:-1;return Array(...e).sort((n,a)=>{const u=i(n),G=i(a);return r*(u>G?1:-1)})}s(lt,"sortByFunction");const A=1e5;function J(e){return Math.round(e*A)/A}s(J,"niceRound");function ct(e,i,t=1){const r=Math.floor((i-e)/t+1);return Array.from(Array(r).keys()).map(n=>J(n*t+e))}s(ct,"range");function ut(e){const i=Math.floor(Math.random()*e.length);return e[i]}s(ut,"sample");function ht(e){return Math.min.apply(Math,e)}s(ht,"min");function dt(e){return Math.max.apply(Math,e)}s(dt,"max");function ft(e){return e.reduce((i,t)=>i+t,0)}s(ft,"sum");function mt(e){return e[e.length-1]}s(mt,"last");function q(e,i){if(i){const t={};return e.forEach(r=>t[i(r)]=r),Object.values(t)}else return[...new Set(e)]}s(q,"unique");function Q(e){return e.filter(F.notNull)}s(Q,"compact");function z(e,...i){return e.filter(t=>F.propNotNull(t,...i))}s(z,"compactBy");function pt(e,i){return e.filter(t=>t!=i)}s(pt,"without");function yt(e,i){let t=0,r=0;for(;t<e.length;)i(e[t])?(e.splice(t,1),r+=1):t++;return r}s(yt,"deleteIf");function wt(e,i){for(let t=0;t<e.length;t++)if(i(e[t],t,e))return e[t];return null}s(wt,"find");function gt(e,i){return e.map(t=>{if(i in t)return t[i];throw new Error(`Key '${i}' not found in object: ${JSON.stringify(t)}`)})}s(gt,"pluck");function Pt(e,i,t){const r=t.toLowerCase();return e.filter(n=>i in n?n[i].toLowerCase().includes(r):!1)}s(Pt,"ilike");function vt(e,i){for(let t=0;t<e.length;t++)if(i(e[t],t,e))return t;return null}s(vt,"findIndex");const c=class c{constructor(i){this.array=i}toArray(){return this.array}groupBy(i){return E(this.array,i)}groupByFunction(i){return C(this.array,i)}indexBy(i){return R(this.array,i)}filter(i){return new c(this.array.filter(i))}map(i){return new c(this.array.map(i))}unique(i){return new c(q(this.array,i))}sortBy(i,t="asc"){return new c(T(this.array,i,t))}compact(){return new c(Q(this.array))}compactBy(...i){return new c(z(this.array,...i))}};s(c,"Stream");let y=c;function Ct(e){return new y(e)}s(Ct,"stream");const bt={groupBy:E,compact:Q,compactBy:z,groupByFunction:C,eachGroupByFunction:nt,deleteIf:yt,find:wt,findIndex:vt,stream:Ct,ilike:Pt,min:ht,max:dt,last:mt,indexBy:R,indexByFunction:ot,mapPairs:at,niceRound:J,pluck:gt,range:ct,sample:ut,sum:ft,unique:q,without:pt,sortByFunction:lt,sortBy:T};function It(e){return new Promise(i=>setTimeout(i,e))}s(It,"wait");const kt={wait:It},h=new X("List Viewer Demo"),Mt=bt.range(0,50).map(e=>e%10==0?{listId:`demo-${e}`,listStyle:"header",title:`Header ${e/10+1}`}:{listId:`demo-${e}`,listStyle:"panel",listClickable:!0,title:`Item ${e}`,details:`Panel Item ${e} details...`}),$=class $ extends j{async init(){await kt.wait(100),h.info(`DemoDetailPart ${this.state.listId} init`),this.dirty()}render(i){Y.panel(this.theme).title(this.state.title).content(t=>{t.class("padded"),t.div(".details").text(this.state.details+` at ${v().format("h:mm:ss A")}`)}).render(i),h.info(`DemoDetailPart ${this.state.listId} render`,this.element)}};s($,"DemoDetailPart");let w=$;const x=class x extends p{async init(){await super.init(),setInterval(()=>{h.info(`Reloading at ${v().format("h:mm:ss A")}`),this.reload()},1e4)}async fetchItems(){return Promise.resolve(Mt)}renderListItem(i,t){i.div().text(t.title)}renderDetails(i){i.makePart(w,i.item)}};s(x,"DemoListViewer");let g=x;const S=class S extends L{constructor(){super(...arguments);o(this,"listDetail")}async init(){await super.init(),this.setIcon("glyp-items"),this.setTitle("List Viewer Demo"),this.listDetail=this.makePart(g,{}),this.listenMessage(this.listDetail.detailsShownKey,t=>{h.info(`Details shown for item ${t.data.id} at ${v().format("h:mm:ss A")}`)})}renderContent(t){t.part(this.listDetail)}};s(S,"ListViewerDemoPage");let P=S;W.mountPage(P);
|