diff --git a/.github/workflows/generate_matrix.yaml b/.github/workflows/generate_matrix.yaml index 0be2f06f..4024f566 100644 --- a/.github/workflows/generate_matrix.yaml +++ b/.github/workflows/generate_matrix.yaml @@ -1,25 +1,25 @@ -name: Generate Matrix - -on: - push: - branches: - - version-14 - - version-15 - pull_request: - -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - -jobs: - generate: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: '3.10' - - - name: Generate Scanning Decision Matrix - run: python3 ./beam/docs/generate_matrix.py +name: Generate Matrix + +on: + push: + branches: + - version-14 + - version-15 + pull_request: + +env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +jobs: + generate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Generate Scanning Decision Matrix + run: python3 ./beam/docs/generate_matrix.py diff --git a/beam/beam/demand/demand.py b/beam/beam/demand/demand.py new file mode 100644 index 00000000..3aa9e3f0 --- /dev/null +++ b/beam/beam/demand/demand.py @@ -0,0 +1,612 @@ +import calendar +import datetime +from collections import deque +from time import localtime +from typing import TYPE_CHECKING, Any, TypedDict, Union + +import frappe +from frappe.utils.data import flt, get_datetime +from frappe.utils.nestedset import get_descendants_of + +from beam.beam.demand.sqlite import dict_factory, get_demand_db + +if TYPE_CHECKING: + from sqlite3 import Cursor + + from erpnext.accounts.doctype.purchase_invoice.purchase_invoice import PurchaseInvoice + from erpnext.accounts.doctype.purchase_invoice_item.purchase_invoice_item import ( + PurchaseInvoiceItem, + ) + from erpnext.accounts.doctype.sales_invoice.sales_invoice import SalesInvoice + from erpnext.accounts.doctype.sales_invoice_item.sales_invoice_item import SalesInvoiceItem + from erpnext.stock.doctype.delivery_note.delivery_note import DeliveryNote + from erpnext.stock.doctype.delivery_note_item.delivery_note_item import DeliveryNoteItem + from erpnext.stock.doctype.purchase_receipt.purchase_receipt import PurchaseReceipt + from erpnext.stock.doctype.purchase_receipt_item.purchase_receipt_item import PurchaseReceiptItem + from erpnext.stock.doctype.stock_entry.stock_entry import StockEntry + from erpnext.stock.doctype.stock_entry_detail.stock_entry_detail import StockEntryDetail + from erpnext.stock.doctype.stock_reconciliation.stock_reconciliation import StockReconciliation + from erpnext.stock.doctype.stock_reconciliation_item.stock_reconciliation_item import ( + StockReconciliationItem, + ) + + +class Demand(TypedDict): + key: str + demand: str + doctype: str + company: str + parent: str + warehouse: str + workstation: str + name: str + item_code: str + allocated_date: datetime.datetime + delivery_date: datetime.datetime + modified: datetime.datetime + stock_uom: str + allocated_qty: float + net_required_qty: float + total_required_qty: float + status: str + assigned: str + + +def get_qty_from_sle(item_code: str, warehouse: str | None = None, company: str | None = None): + warehouses = [] + if warehouse: + warehouses = [warehouse] + + if not warehouse or frappe.get_cached_value("Warehouse", warehouse, "is_group"): + warehouses = get_demand_warehouses(company) + + balance_qty = frappe.get_all( + "Stock Ledger Entry", + filters={"item_code": item_code, "warehouse": ["in", warehouses], "is_cancelled": False}, + fields=["qty_after_transaction", "warehouse"], + order_by="posting_date desc, posting_time desc, creation DESC", + ) + + if not warehouse: + return balance_qty + + return flt(balance_qty[0].qty_after_transaction) if balance_qty else 0.0 + + +def get_manufacturing_demand() -> list[frappe._dict]: + manufacturing_demand = [] + + pending_work_orders = frappe.get_all( + "Work Order", + filters={"docstatus": 1, "status": "Not Started"}, + fields=["name", "company", "wip_warehouse", "planned_start_date", "creation"], + order_by="planned_start_date, creation ASC", + ) + + for work_order in pending_work_orders: + work_order_items = frappe.get_all( + "Work Order Item", + filters={"parent": work_order.name}, + fields=["name", "item_code", "required_qty", "transferred_qty"], + ) + workstation = frappe.get_all( + "Work Order Operation", + filters={"parent": work_order.name}, + fields=["workstation"], + order_by="idx ASC", + ) + workstation = workstation[0].get("workstation") if workstation else None + + for item in work_order_items: + if item.transferred_qty - item.required_qty >= 0: + continue + + manufacturing_demand.append( + frappe._dict( + { + "doctype": "Work Order", + "parent": work_order.name, + "company": work_order.company, + "warehouse": work_order.wip_warehouse, + "workstation": workstation or "", + "name": item.name, + "item_code": item.item_code, + "delivery_date": work_order.planned_start_date, + "total_required_qty": item.required_qty - item.transferred_qty, + "stock_uom": frappe.db.get_value("Item", item.item_code, "stock_uom"), + "creation": work_order.creation, + } + ) + ) + + return manufacturing_demand + + +def get_sales_demand() -> list[frappe._dict]: + sales_demand = [] + default_fg_warehouse = frappe.db.get_single_value( + "Manufacturing Settings", "default_fg_warehouse" + ) + + sales_orders = frappe.get_all( + "Sales Order", + filters={"docstatus": 1, "status": ["!=", "Closed"]}, + fields=["name", "company", "delivery_date", "creation"], + order_by="delivery_date, creation ASC", + ) + + shipping_workstations = { + s.company: s.shipping_workstation + for s in frappe.get_all("BEAM Settings", ["company", "shipping_workstation"]) + } + + for sales_order in sales_orders: + sales_order_items = frappe.get_all( + "Sales Order Item", + filters={"parent": sales_order.name}, + fields=["name", "item_code", "stock_qty", "delivered_qty"], + ) + + for item in sales_order_items: + if item.stock_qty - item.delivered_qty <= 0: + continue + + sales_demand.append( + frappe._dict( + { + "doctype": "Sales Order", + "parent": sales_order.name, + "company": sales_order.company, + "warehouse": default_fg_warehouse, + "workstation": shipping_workstations.get(sales_order.company) or "", + "name": item.name, + "item_code": item.item_code, + "delivery_date": sales_order.delivery_date, + "total_required_qty": item.stock_qty - item.delivered_qty, + "stock_uom": frappe.db.get_value("Item", item.item_code, "stock_uom"), + "creation": sales_order.creation, + } + ) + ) + + return sales_demand + + +def build_demand_map() -> None: + manufacturing_demand = get_manufacturing_demand() + sales_demand = get_sales_demand() + + output = [] + for row in manufacturing_demand + sales_demand: + row.key = frappe.generate_hash() + row.delivery_date = str(calendar.timegm(get_datetime(row.delivery_date).timetuple())) + row.creation = str(calendar.timegm(get_datetime(row.creation).timetuple())) + row.total_required_qty = str(row.total_required_qty) + output.append(row) + + with get_demand_db() as conn: + cur = conn.cursor() + cur.execute("DELETE FROM demand;") # sqlite does not implement a TRUNCATE command + cur.execute("DELETE FROM allocation;") # sqlite does not implement a TRUNCATE command + for row in output: + cur.execute( + f"""INSERT INTO demand ('{"', '".join(row.keys())}') VALUES ('{"', '".join(row.values())}')""" + ) + + build_allocation_map() + + +def build_allocation_map( + row: Union[ + "DeliveryNoteItem", + "PurchaseInvoiceItem", + "PurchaseReceiptItem", + "SalesInvoiceItem", + "StockEntryDetail", + "StockReconciliationItem", + None, + ] = None, + action: dict | None = None, +): + if row and action: + update_allocations(row=row, action=action) + else: + create_allocations() + + +def get_demand_query( + cursor: "Cursor", + row: Union[ + "DeliveryNoteItem", + "PurchaseInvoiceItem", + "PurchaseReceiptItem", + "SalesInvoiceItem", + "StockEntryDetail", + "StockReconciliationItem", + None, + ] = None, +): + item_filter = f"WHERE item_code = '{row.item_code}'" if row else "" + + return cursor.execute( + f""" + SELECT + d.*, + COALESCE( + (SELECT SUM(a.allocated_qty) FROM allocation a WHERE a.demand = d.key), + 0 + ) AS allocated_qty, + d.total_required_qty - COALESCE( + (SELECT SUM(a.allocated_qty) FROM allocation a WHERE a.demand = d.key), + 0 + ) AS net_required_qty + FROM + demand d + {item_filter} + ORDER BY + delivery_date ASC; + """ + ) + + +def get_item_demand_map( + cursor: "Cursor", + row: Union[ + "DeliveryNoteItem", + "PurchaseInvoiceItem", + "PurchaseReceiptItem", + "SalesInvoiceItem", + "StockEntryDetail", + "StockReconciliationItem", + None, + ] = None, +): + demand_query = get_demand_query(cursor, row=row) + demand_rows = demand_query.fetchall() + + item_demand_map = frappe._dict({}) + for demand_row in demand_rows: + if demand_row.item_code in item_demand_map: + item_demand_map[demand_row.item_code].append(demand_row) + else: + item_demand_map[demand_row.item_code] = [demand_row] + + return item_demand_map + + +def update_allocations( + row: Union[ + "DeliveryNoteItem", + "PurchaseInvoiceItem", + "PurchaseReceiptItem", + "SalesInvoiceItem", + "StockEntryDetail", + "StockReconciliationItem", + ], + action: dict, +): + with get_demand_db() as conn: + conn.row_factory = dict_factory + cursor = conn.cursor() + + quantity_field = action.get("quantity_field") + row_qty = row.get(quantity_field) if quantity_field else None + + warehouse_field = action.get("warehouse_field") + warehouse = row.get(warehouse_field) + + allocation_query = cursor.execute( + f""" + SELECT * + FROM allocation + WHERE item_code = '{row.item_code}' AND warehouse = '{warehouse}' AND allocated_qty > 0 + """ + ) + + existing_allocations = allocation_query.fetchall() + if existing_allocations: + demand_effect = action.get("demand_effect") + for allocation in existing_allocations: + demand_query = cursor.execute(f"SELECT * FROM demand WHERE key = '{allocation.demand}'") + demand_row = demand_query.fetchone() + + if demand_effect == "increase": + new_allocated_qty = min(demand_row.total_required_qty, allocation.allocated_qty + row_qty) + elif demand_effect == "decrease": + new_allocated_qty = max(0, allocation.allocated_qty - row_qty) + elif demand_effect == "adjustment": + new_allocated_qty = min(demand_row.total_required_qty, row_qty) + + cursor.execute( + f"UPDATE allocation SET allocated_qty = {new_allocated_qty} WHERE key = '{allocation.key}'" + ) + else: + item_demand_map = get_item_demand_map(cursor, row=row) + demand_rows = item_demand_map.get(row.item_code) + if not demand_rows: + return + demand_queue = deque(demand_rows) + + allocations = [] + while demand_queue: + current_demand = demand_queue[0] + net_required_qty = current_demand["total_required_qty"] - current_demand["allocated_qty"] + allocated_qty = min(row_qty, net_required_qty) + + allocations.append( + { + **new_allocation(current_demand), + "warehouse": warehouse, + "allocated_qty": str(allocated_qty), + } + ) + + if row_qty >= net_required_qty: + # Full demand can be met + demand_queue.popleft() + else: + # Partial demand is met + current_demand["total_required_qty"] -= allocated_qty + break + + for allocation in allocations: + cursor.execute( + f"""INSERT INTO allocation ('{"', '".join(allocation.keys())}') VALUES ('{"', '".join(allocation.values())}')""" + ) + + +def create_allocations(): + with get_demand_db() as conn: + conn.row_factory = dict_factory + cur = conn.cursor() + + item_demand_map = get_item_demand_map(cur) + + allocations = [] + for item_code, demand_rows in item_demand_map.items(): + demand_queue = deque(demand_rows) + supply_queue = deque(get_qty_from_sle(item_code)) + if not any([supply_queue, demand_queue]): + continue + + while supply_queue and demand_queue: + current_demand = demand_queue[0] + current_supply = supply_queue[0] + + net_required_qty = current_demand["total_required_qty"] - current_demand["allocated_qty"] + allocated_qty = min(current_supply["qty_after_transaction"], net_required_qty) + + allocation = { + **new_allocation(current_demand), + "warehouse": current_supply.get("warehouse"), + "allocated_qty": str(allocated_qty), + } + + if current_supply["qty_after_transaction"] >= net_required_qty: + # Full demand can be met + current_supply["qty_after_transaction"] -= allocated_qty + demand_queue.popleft() + + if current_supply["qty_after_transaction"] == 0: + supply_queue.popleft() + break + else: + # Partial demand is met + current_demand["total_required_qty"] -= allocated_qty + supply_queue.popleft() + + allocations.append(allocation) + + for allocation in allocations: + cur.execute( + f"""INSERT INTO allocation ('{"', '".join(allocation.keys())}') VALUES ('{"', '".join(allocation.values())}')""" + ) + + +def new_allocation(demand_row): + return frappe._dict( + { + "key": frappe.generate_hash(), + "demand": demand_row.key, + "doctype": demand_row.doctype, + "company": demand_row.company, + "parent": demand_row.parent, + "name": demand_row.name, + "item_code": demand_row.item_code, + "allocated_date": str(calendar.timegm(get_datetime().timetuple())), + "modified": str(calendar.timegm(get_datetime().timetuple())), + "stock_uom": demand_row.stock_uom, + "status": "Soft Allocated", + "assigned": demand_row.assigned or "", + "creation": str(demand_row.creation), + } + ) + + +def modify_allocations( + doc: Union[ + "DeliveryNote", + "PurchaseInvoice", + "PurchaseReceipt", + "SalesInvoice", + "StockEntry", + "StockReconciliation", + ], + method: str, +): + demand_hooks = frappe.get_hooks("demand") + + doctype_matrix: dict[str, list[dict[str, Any]]] = demand_hooks.get(doc.doctype) + if not doctype_matrix: + return + + method_matrix = doctype_matrix.get(method) + if not method_matrix: + return + + demand_warehouses = get_demand_warehouses(doc.get("company")) + for row in doc.get("items"): + for action in method_matrix: + # implicit conditions: skip allocation for non-demand warehouses + warehouse_field = action.get("warehouse_field") + if warehouse_field: + warehouse = row.get(warehouse_field) + if warehouse not in demand_warehouses: + continue + + # explicit conditions + conditions = action.get("conditions") + if conditions: + for key, value in conditions.items(): + if doc.get(key) == value: + build_allocation_map(row=row, action=action) + else: + build_allocation_map(row=row, action=action) + + +def get_demand_warehouses(company: str | None = None) -> list[str]: + if not company: + company = frappe.defaults.get_defaults().get("company") + + root_warehouse = frappe.get_all( + "Warehouse", + {"company": company, "is_group": True, "parent_warehouse": ["is", "not set"]}, + pluck="name", + )[0] + + return get_descendant_warehouses(company, root_warehouse) + + +def get_descendant_warehouses(company, warehouse) -> list[str]: + beam_settings = frappe.get_doc("BEAM Settings", company) + + warehouse_types = [wt.warehouse_type for wt in beam_settings.warehouse_types] + if not warehouse_types: + return get_descendants_of("Warehouse", warehouse, ignore_permissions=True, order_by="lft") + + order_by = "lft" + limit = None + lft, rgt = frappe.get_cached_value("Warehouse", warehouse, ["lft", "rgt"]) + + if rgt - lft <= 1: + return [] + + return frappe.get_all( + "Warehouse", + filters={ + "lft": [">", lft], + "rgt": ["<", rgt], + "company": beam_settings.company, + "warehouse_type": ["not in", warehouse_types], + }, + pluck="name", + order_by=order_by, + limit_page_length=limit, + ) + + +@frappe.whitelist() +def get_demand( + company=None, + item_code=None, + warehouse=None, + workstation=None, + assigned=None, + order_by="workstation, assigned", + status=None, +) -> list[Demand]: + filters = {} + if workstation: + filters["workstation"] = f"{workstation}" + if item_code: + filters["item_code"] = f"{item_code}" + if warehouse: + filters["warehouse"] = f"{warehouse}" + + a_filters = d_filters = "" + if filters: + d_filters = "AND " + "\nAND ".join([f"d.{key} IN ('{value}')" for key, value in filters.items()]) + a_filters = "AND " + "\nAND ".join([f"a.{key} IN ('{value}')" for key, value in filters.items()]) + + # if assigned: + # _filters += f" AND assigned LIKE %{assigned}%" + + with get_demand_db() as conn: + conn.row_factory = dict_factory + cur = conn.cursor() + query = f""" + SELECT + d.key, + '' AS demand, + d.doctype, + d.company, + d.parent, + + d.warehouse, + d.name, + d.item_code, + d.delivery_date AS allocated_date, + d.delivery_date, + + d.modified, + d.stock_uom, + COALESCE( + (SELECT SUM(a.allocated_qty) FROM allocation a WHERE a.demand = d.key), + 0 + ) AS allocated_qty, + d.total_required_qty - COALESCE( + (SELECT SUM(a.allocated_qty) FROM allocation a WHERE a.demand = d.key), + 0 + ) AS net_required_qty, + d.total_required_qty, + + '' AS status, + d.assigned, + d.creation + FROM demand d + WHERE allocated_qty <= 0 + {d_filters} + UNION ALL + SELECT + a.key, + a.demand, + a.doctype, + a.company, + a.parent, + + a.warehouse, + a.name, + a.item_code, + a.allocated_date AS delivery_date, + a.allocated_date, + + a.modified, + a.stock_uom, + a.allocated_qty, + COALESCE( + (SELECT d.total_required_qty FROM demand d WHERE a.demand = d.key), + 0 + ) - + COALESCE( + (SELECT SUM(c.allocated_qty) FROM allocation c WHERE a.demand = c.demand), + 0 + ) AS net_required_qty, + (SELECT d.total_required_qty FROM demand d WHERE a.demand = d.key) AS total_required_qty, + + a.status, + a.assigned, + a.creation + FROM allocation a + WHERE allocated_qty > 0 + {a_filters} + ORDER BY delivery_date, creation, parent ASC + """ + + rows = cur.execute(query).fetchall() + for row in rows: + row.delivery_date = datetime.datetime(*localtime(row.delivery_date)[:6]) + row.allocated_date = datetime.datetime(*localtime(row.allocated_date)[:6]) + row.modified = datetime.datetime(*localtime(row.modified)[:6]) + row.creation = datetime.datetime(*localtime(row.creation)[:6]) + + return rows diff --git a/beam/beam/demand/sqlite.py b/beam/beam/demand/sqlite.py new file mode 100644 index 00000000..9b330891 --- /dev/null +++ b/beam/beam/demand/sqlite.py @@ -0,0 +1,87 @@ +import pathlib +import sqlite3 + +import frappe +from frappe.utils import get_site_path +from frappe.utils.synchronization import filelock + + +def get_demand_db_path() -> pathlib.Path: + return pathlib.Path(f"{get_site_path()}/demand.db").resolve() + + +def get_demand_db() -> sqlite3.Connection: + path = get_demand_db_path() + with filelock(str(path)), sqlite3.connect(path) as conn: + cursor = conn.cursor() + cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='demand';") + data = cursor.fetchone() + if data: + return sqlite3.connect(path) + return create_demand_db(cursor) + + +def create_demand_db(cursor: sqlite3.Cursor) -> sqlite3.Connection: + path = get_demand_db_path() + cursor.execute( + """ + CREATE TABLE demand( + key text, + doctype text, + company text, + parent text, + warehouse text, + workstation text, + name text, + item_code text, + delivery_date int, + modified int, + total_required_qty real, + stock_uom text, + assigned text, + creation int + ) + """ + ) + cursor.execute( + """ + CREATE TABLE allocation( + key text, + demand text, + doctype text, + company text, + parent text, + warehouse text, + workstation text, + name text, + item_code text, + allocated_date int, + modified int, + allocated_qty real, + stock_uom text, + status text, + assigned text, + creation int + ) + """ + ) + cursor.execute("CREATE INDEX idx_demand_key ON demand(key)") + cursor.execute("CREATE INDEX idx_demand_company ON demand(company)") + cursor.execute("CREATE INDEX idx_demand_warehouse ON demand(warehouse)") + cursor.execute("CREATE INDEX idx_demand_item_code ON demand(item_code)") + cursor.execute("CREATE INDEX idx_demand_delivery_date ON demand(delivery_date)") + + cursor.execute("CREATE INDEX idx_allocation_key ON allocation(key)") + cursor.execute("CREATE INDEX idx_allocation_demand ON allocation(demand)") + cursor.execute("CREATE INDEX idx_allocation_company ON allocation(company)") + cursor.execute("CREATE INDEX idx_allocation_warehouse ON allocation(warehouse)") + cursor.execute("CREATE INDEX idx_allocation_item_code ON allocation(item_code)") + + return sqlite3.connect(path) + + +def dict_factory(cursor: sqlite3.Cursor, row: sqlite3.Row) -> frappe._dict: + _dict = frappe._dict() + for idx, col in enumerate(cursor.description): + _dict[col[0]] = row[idx] + return _dict diff --git a/beam/beam/doctype/beam_settings/beam_settings.json b/beam/beam/doctype/beam_settings/beam_settings.json index e2f175ea..cb1b0462 100644 --- a/beam/beam/doctype/beam_settings/beam_settings.json +++ b/beam/beam/doctype/beam_settings/beam_settings.json @@ -2,10 +2,20 @@ "actions": [], "allow_rename": 1, "autoname": "field:company", - "creation": "2024-03-18 17:06:58.552999", + "creation": "2024-03-18 17:06:58.552900", "doctype": "DocType", "engine": "InnoDB", - "field_order": ["company", "enable_handling_units", "barcode_font_size"], + "field_order": [ + "general_tab", + "company", + "barcode_font_size", + "enable_handling_units", + "column_break_twrc", + "receiving_workstation", + "shipping_workstation", + "demand_tab", + "warehouse_types" + ], "fields": [ { "fieldname": "company", @@ -29,11 +39,44 @@ "fieldname": "barcode_font_size", "fieldtype": "Int", "label": "Barcode Font Size" + }, + { + "description": "These Warehouse Types will be excluded when checking for inventory availability", + "fieldname": "warehouse_types", + "fieldtype": "Table MultiSelect", + "label": "Warehouse Types", + "options": "Warehouse Types" + }, + { + "fieldname": "general_tab", + "fieldtype": "Tab Break", + "label": "General" + }, + { + "fieldname": "column_break_twrc", + "fieldtype": "Column Break" + }, + { + "fieldname": "receiving_workstation", + "fieldtype": "Link", + "label": "Receiving Workstation", + "options": "Workstation" + }, + { + "fieldname": "shipping_workstation", + "fieldtype": "Link", + "label": "Shipping Workstation", + "options": "Workstation" + }, + { + "fieldname": "demand_tab", + "fieldtype": "Tab Break", + "label": "Demand" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2024-05-29 01:43:57.177980", + "modified": "2024-08-19 15:23:36.892295", "modified_by": "Administrator", "module": "BEAM", "name": "BEAM Settings", diff --git a/beam/beam/doctype/warehouse_types/__init__.py b/beam/beam/doctype/warehouse_types/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/beam/beam/doctype/warehouse_types/warehouse_types.json b/beam/beam/doctype/warehouse_types/warehouse_types.json new file mode 100644 index 00000000..dc358e14 --- /dev/null +++ b/beam/beam/doctype/warehouse_types/warehouse_types.json @@ -0,0 +1,30 @@ +{ + "actions": [], + "allow_rename": 1, + "creation": "2024-06-14 02:54:12.889848", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": ["warehouse_type"], + "fields": [ + { + "fieldname": "warehouse_type", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Warehouse Type", + "options": "Warehouse Type" + } + ], + "index_web_pages_for_search": 1, + "istable": 1, + "links": [], + "modified": "2024-06-14 03:07:41.341693", + "modified_by": "Administrator", + "module": "BEAM", + "name": "Warehouse Types", + "owner": "Administrator", + "permissions": [], + "sort_field": "modified", + "sort_order": "DESC", + "states": [] +} diff --git a/beam/beam/doctype/warehouse_types/warehouse_types.py b/beam/beam/doctype/warehouse_types/warehouse_types.py new file mode 100644 index 00000000..62d0584b --- /dev/null +++ b/beam/beam/doctype/warehouse_types/warehouse_types.py @@ -0,0 +1,9 @@ +# Copyright (c) 2024, AgriTheory and contributors +# For license information, please see license.txt + +# import frappe +from frappe.model.document import Document + + +class WarehouseTypes(Document): + pass diff --git a/beam/beam/handling_unit.py b/beam/beam/handling_unit.py index f24251c4..2e4e622e 100644 --- a/beam/beam/handling_unit.py +++ b/beam/beam/handling_unit.py @@ -47,6 +47,17 @@ def generate_handling_units(doc, method=None): row.to_handling_unit = handling_unit.name continue + if ( + doc.doctype == "Stock Entry" + and doc.purpose == "Repack" + and row.t_warehouse + and not row.handling_unit + ): + handling_unit = frappe.new_doc("Handling Unit") + handling_unit.save() + row.handling_unit = handling_unit.name + continue + if doc.doctype == "Subcontracting Receipt" and not row.handling_unit: handling_unit = frappe.new_doc("Handling Unit") handling_unit.save() diff --git a/beam/beam/overrides/stock_entry.py b/beam/beam/overrides/stock_entry.py index ce77c301..d241a1a5 100644 --- a/beam/beam/overrides/stock_entry.py +++ b/beam/beam/overrides/stock_entry.py @@ -1,10 +1,6 @@ -import copy - import frappe from erpnext.stock.doctype.stock_entry.stock_entry import StockEntry -from erpnext.stock.doctype.stock_entry_detail.stock_entry_detail import StockEntryDetail from frappe.utils import cstr, flt -from typing_extensions import Self from beam.beam.doctype.beam_settings.beam_settings import create_beam_settings @@ -119,10 +115,12 @@ def validate_items_with_handling_unit(doc, method=None): ): continue elif ( - doc.stock_entry_type in ["Repack", "Manufacture"] + doc.stock_entry_type in ("Repack", "Manufacture") and not (row.t_warehouse or row.is_finished_item or row.is_scrap_item) and not row.handling_unit ): frappe.throw(frappe._(f"Row #{row.idx}: Handling Unit is missing for item {row.item_code}")) + elif row.handling_unit: + continue elif not row.handling_unit: frappe.throw(frappe._(f"Row #{row.idx}: Handling Unit is missing for item {row.item_code}")) diff --git a/beam/beam/overrides/subcontracting_receipt.py b/beam/beam/overrides/subcontracting_receipt.py index 055a5da6..e66930c6 100644 --- a/beam/beam/overrides/subcontracting_receipt.py +++ b/beam/beam/overrides/subcontracting_receipt.py @@ -88,14 +88,13 @@ def get_sle(self): if stock_entry := frappe.db.exists( "Stock Entry", {"subcontracting_order": row.subcontracting_order, "docstatus": 1} ): - sle_hu = frappe.db.sql( - f""" - Select name, handling_unit, item_code - From `tabStock Ledger Entry` - where voucher_type = "Stock Entry" and voucher_no = '{stock_entry}' and - warehouse = '{self.supplier_warehouse}' - """, - as_dict=True, + sle_hu_map[row.subcontracting_order] = frappe.get_all( + "Stock Ledger Entry", + filters={ + "voucher_type": "Stock Entry", + "voucher_no": stock_entry, + "warehouse": self.supplier_warehouse, + }, + fields=["name", "handling_unit", "item_code"], ) - sle_hu_map[row.subcontracting_order] = sle_hu return sle_hu_map diff --git a/beam/beam/report/demand_map/__init__.py b/beam/beam/report/demand_map/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/beam/beam/report/demand_map/demand_map.js b/beam/beam/report/demand_map/demand_map.js new file mode 100644 index 00000000..e176a35f --- /dev/null +++ b/beam/beam/report/demand_map/demand_map.js @@ -0,0 +1,53 @@ +// Copyright (c) 2024, AgriTheory and contributors +// For license information, please see license.txt + +frappe.query_reports['Demand Map'] = { + filters: [ + { + fieldname: 'order_by', + fieldtype: 'Select', + options: ['Oldest Unallocated', 'Oldest Allocated', 'Newest Allocated', 'Newest Unallocated'], + default: 'Newest Unallocated', + label: frappe._('Sort By'), + }, + { + fieldname: 'item_code', + fieldtype: 'Link', + label: frappe._('Item'), + options: 'Item', + }, + ], + formatter: function (value, row, column, data, default_formatter) { + value = default_formatter(value, row, column, data) + if (data && ['net_required_qty', 'total_required_qty'].includes(column.fieldname)) { + if (data.net_required_qty <= data.allocated_qty) { + value = `${value}` + } else if (!data.allocated_qty && data.net_required_qty) { + value = `${value}` + } else if (data.allocated_qty > 0) { + value = `${value}` + } else if (data.indent == 1 && data.allocated_qty) { + value = `${value}` + } + } + if (data && column.fieldname == 'allocated_qty') { + if (data.net_required_qty <= data.allocated_qty) { + value = `${value}` + } else if (!data.allocated_qty) { + value = `${value}` + } else if (data.net_required_qty > data.allocated_qty) { + value = `${value}` + } + } + if (data && column.fieldname == 'status') { + if (data.status == 'Unallocated') { + value = `${value}` + } else if (data.status == 'Partially Allocated') { + value = `${value}` + } else if (data.status == 'Soft Allocated') { + value = `${value}` + } + } + return value + }, +} diff --git a/beam/beam/report/demand_map/demand_map.json b/beam/beam/report/demand_map/demand_map.json new file mode 100644 index 00000000..81e3551e --- /dev/null +++ b/beam/beam/report/demand_map/demand_map.json @@ -0,0 +1,50 @@ +{ + "add_total_row": 0, + "columns": [], + "creation": "2024-07-22 10:40:58.797332", + "disabled": 0, + "docstatus": 0, + "doctype": "Report", + "filters": [], + "idx": 0, + "is_standard": "Yes", + "letterhead": null, + "modified": "2024-07-22 10:40:58.797332", + "modified_by": "Administrator", + "module": "BEAM", + "name": "Demand Map", + "owner": "Administrator", + "prepared_report": 0, + "ref_doctype": "Item", + "report_name": "Demand Map", + "report_type": "Script Report", + "roles": [ + { + "role": "Item Manager" + }, + { + "role": "Stock Manager" + }, + { + "role": "Stock User" + }, + { + "role": "Sales User" + }, + { + "role": "Purchase User" + }, + { + "role": "Maintenance User" + }, + { + "role": "Accounts User" + }, + { + "role": "Manufacturing User" + }, + { + "role": "All" + } + ] +} diff --git a/beam/beam/report/demand_map/demand_map.py b/beam/beam/report/demand_map/demand_map.py new file mode 100644 index 00000000..82c5a7d5 --- /dev/null +++ b/beam/beam/report/demand_map/demand_map.py @@ -0,0 +1,150 @@ +# Copyright (c) 2024, AgriTheory and contributors +# For license information, please see license.txt + +import datetime +from time import localtime + +from frappe import _ +from frappe.utils.data import flt + +from beam.beam.demand.demand import dict_factory, get_demand_db + + +def execute(filters=None): + return get_columns(filters), get_data(filters) + + +def get_columns(filters): + return [ + {"fieldname": "key", "fieldtype": "Data", "hidden": True}, + {"fieldname": "doctype", "fieldtype": "Link", "options": "DocType", "hidden": True}, + { + "label": _("Item Code"), + "fieldname": "item_code", + "fieldtype": "Link", + "options": "Item", + "width": "250px", + }, + { + "label": _("Demand Warehouse"), + "fieldname": "demand_warehouse", + "fieldtype": "Link", + "options": "Warehouse", + "width": "200px", + }, + { + "label": _("Source Warehouse"), + "fieldname": "source_warehouse", + "fieldtype": "Data", + "width": "200px", + }, + { + "label": _("Workstation"), + "fieldname": "workstation", + "fieldtype": "Data", + "width": "200px", + }, + { + "label": _("Document"), + "fieldname": "parent", + "fieldtype": "Dynamic Link", + "options": "doctype", + "width": "200px", + }, + {"fieldname": "name", "fieldtype": "Data", "hidden": True}, + { + "label": _("Delivery Date"), + "fieldname": "delivery_date", + "fieldtype": "Datetime", + "width": "200px", + "align": "Right", + }, + { + "label": _("Total Req Qty"), + "fieldname": "total_required_qty", + "fieldtype": "Float", + "width": "120px", + "align": "Right", + }, + { + "label": _("Net Req Qty"), + "fieldname": "net_required_qty", + "fieldtype": "Float", + "width": "120px", + "align": "Right", + }, + { + "label": _("Allocated"), + "fieldname": "allocated_qty", + "fieldtype": "Float", + "width": "100px", + "align": "Right", + }, + { + "label": _("Stock UOM"), + "fieldname": "stock_uom", + "fieldtype": "Data", + "width": "100px", + }, + { + "label": _("Status"), + "fieldname": "status", + "fieldtype": "Data", + "width": "150px", + "align": "center", + }, + { + "label": _("Assigned"), + "fieldname": "assigned", + "fieldtype": "Data", + "width": "150px", + }, + ] + + +def get_data(filters): + rows = [] + with get_demand_db() as conn: + conn.row_factory = dict_factory + cursor = conn.cursor() + filter_query = "" + if filters.item_code: + filter_query = f"WHERE item_code = '{filters.item_code}'" + demand = cursor.execute( + f""" + SELECT + d.*, + COALESCE( + (SELECT SUM(a.allocated_qty) FROM allocation a WHERE a.demand = d.key), + 0 + ) AS allocated_qty + FROM + demand d + {filter_query} + ORDER BY delivery_date ASC; + """ + ).fetchall() + + # TODO: implement sort filters here + indent_counter = 0 + + for row in demand: + row.indent = 0 + row.delivery_date = datetime.datetime(*localtime(row.delivery_date)[:6]) + row.demand_warehouse = row.pop("warehouse") + rows.append(row) + allocations = cursor.execute(f"SELECT * FROM allocation WHERE demand = '{row.key}'").fetchall() + row.allocated_qty = sum(flt(allocation.allocated_qty) for allocation in allocations) + row.net_required_qty = row.total_required_qty - row.allocated_qty + for allocation in allocations: + allocation.indent = 1 + allocation.total_required_qty = None + allocation.net_required_qty = None + allocation.delivery_date = datetime.datetime(*localtime(allocation.allocated_date)[:6]) + allocation.source_warehouse = allocation.pop("warehouse") + if allocation.source_warehouse != row.demand_warehouse: + allocation.source_warehouse = ( + f'{allocation.source_warehouse}' + ) + rows.append(allocation) + return rows diff --git a/beam/beam/scan/__init__.py b/beam/beam/scan/__init__.py index b95a32ea..7e034427 100644 --- a/beam/beam/scan/__init__.py +++ b/beam/beam/scan/__init__.py @@ -1,6 +1,6 @@ import datetime import json -from typing import Any, Optional, Union +from typing import Any import frappe from erpnext.stock.doctype.stock_entry.stock_entry import StockEntry diff --git a/beam/beam/scan/form.json b/beam/beam/scan/form.json new file mode 100644 index 00000000..3e1d3aad --- /dev/null +++ b/beam/beam/scan/form.json @@ -0,0 +1,342 @@ +{ + "Handling Unit": { + "Delivery Note": [ + { + "action": "add_or_associate", + "doctype": "Delivery Note Item", + "field": "handling_unit", + "target": "target.handling_unit", + "context": "target" + }, + { + "action": "add_or_associate", + "doctype": "Delivery Note Item", + "field": "rate", + "target": "target.rate", + "context": "target" + } + ], + "Item Price": [ + { + "action": "set_item_code_and_handling_unit", + "doctype": "Item Price", + "field": "item_code", + "target": "target.item_code", + "context": "target" + } + ], + "Packing Slip": [ + { + "action": "add_or_associate", + "doctype": "Packing Slip Item", + "field": "conversion_factor", + "target": "target.conversion_factor", + "context": "target" + }, + { + "action": "add_or_associate", + "doctype": "Packing Slip Item", + "field": "handling_unit", + "target": "target.handling_unit", + "context": "target" + }, + { + "action": "add_or_associate", + "doctype": "Packing Slip Item", + "field": "pulled_quantity", + "target": "target.qty", + "context": "target" + }, + { + "action": "add_or_associate", + "doctype": "Packing Slip Item", + "field": "rate", + "target": "target.rate", + "context": "target" + }, + { + "action": "add_or_associate", + "doctype": "Packing Slip Item", + "field": "stock_qty", + "target": "target.stock_qty", + "context": "target" + }, + { + "action": "add_or_associate", + "doctype": "Packing Slip Item", + "field": "warehouse", + "target": "target.warehouse", + "context": "target" + }, + { + "action": "add_or_associate", + "doctype": "Packing Slip Item", + "field": "dn_detail", + "target": "target.dn_detail", + "context": "target" + } + ], + "Purchase Invoice": [ + { + "action": "add_or_associate", + "doctype": "Purchase Invoice Item", + "field": "handling_unit", + "target": "target.handling_unit", + "context": "target" + } + ], + "Putaway Rule": [ + { + "action": "set_item_code_and_handling_unit", + "doctype": "Putaway Rule", + "field": "item_code", + "target": "target.item_code", + "context": "target" + } + ], + "Quality Inspection": [ + { + "action": "set_item_code_and_handling_unit", + "doctype": "Quality Inspection", + "field": "item_code", + "target": "target.item_code", + "context": "target" + }, + { + "action": "set_item_code_and_handling_unit", + "doctype": "Quality Inspection", + "field": "handling_unit", + "target": "target.handling_unit", + "context": "target" + } + ], + "Sales Invoice": [ + { + "action": "add_or_associate", + "doctype": "Sales Invoice Item", + "field": "handling_unit", + "target": "target.handling_unit", + "context": "target" + } + ], + "Stock Entry": [ + { + "action": "add_or_associate", + "doctype": "Stock Entry Detail", + "field": "basic_rate", + "target": "target.valuation_rate", + "context": "target" + }, + { + "action": "add_or_associate", + "doctype": "Stock Entry Detail", + "field": "conversion_factor", + "target": "target.conversion_factor", + "context": "target" + }, + { + "action": "add_or_associate", + "doctype": "Stock Entry Detail", + "field": "handling_unit", + "target": "target.handling_unit", + "context": "target" + }, + { + "action": "add_or_associate", + "doctype": "Stock Entry Detail", + "field": "s_warehouse", + "target": "target.warehouse", + "context": "target" + }, + { + "action": "add_or_associate", + "doctype": "Stock Entry Detail", + "field": "transfer_qty", + "target": "target.stock_qty", + "context": "target" + } + ], + "Stock Reconciliation": [ + { + "action": "add_or_associate", + "doctype": "Stock Reconciliation Item", + "field": "handling_unit", + "target": "target.handling_unit", + "context": "target" + } + ], + "Warranty Claim": [ + { + "action": "set_item_code_and_handling_unit", + "doctype": "Warranty Claim", + "field": "item_code", + "target": "target.item_code", + "context": "target" + }, + { + "action": "set_item_code_and_handling_unit", + "doctype": "Warranty Claim", + "field": "handling_unit", + "target": "target.handling_unit", + "context": "target" + } + ] + }, + "Item": { + "Delivery Note": [ + { + "action": "add_or_increment", + "doctype": "Delivery Note Item", + "field": "item_code", + "target": "target.item_code", + "context": "target" + } + ], + "Item Price": [ + { + "action": "set_item_code_and_handling_unit", + "doctype": "Item Price", + "field": "item_code", + "target": "target.item_code", + "context": "target" + } + ], + "Packing Slip": [ + { + "action": "add_or_increment", + "doctype": "Packing Slip Item", + "field": "item_code", + "target": "target.item_code", + "context": "target" + } + ], + "Purchase Invoice": [ + { + "action": "add_or_increment", + "doctype": "Purchase Invoice Item", + "field": "item_code", + "target": "target.item_code", + "context": "target" + } + ], + "Purchase Receipt": [ + { + "action": "add_or_increment", + "doctype": "Purchase Receipt Item", + "field": "item_code", + "target": "target.item_code", + "context": "target" + } + ], + "Putaway Rule": [ + { + "action": "set_item_code_and_handling_unit", + "doctype": "Putaway Rule", + "field": "item_code", + "target": "target.item_code", + "context": "target" + } + ], + "Quality Inspection": [ + { + "action": "set_item_code_and_handling_unit", + "doctype": "Quality Inspection", + "field": "item_code", + "target": "target.item_code", + "context": "target" + } + ], + "Sales Invoice": [ + { + "action": "add_or_increment", + "doctype": "Sales Invoice Item", + "field": "item_code", + "target": "target.item_code", + "context": "target" + } + ], + "Stock Entry": [ + { + "action": "add_or_increment", + "doctype": "Stock Entry Detail", + "field": "item_code", + "target": "target.item_code", + "context": "target" + } + ], + "Stock Reconciliation": [ + { + "action": "add_or_increment", + "doctype": "Stock Reconciliation Item", + "field": "item_code", + "target": "target.item_code", + "context": "target" + } + ], + "Warranty Claim": [ + { + "action": "set_item_code_and_handling_unit", + "doctype": "Warranty Claim", + "field": "item_code", + "target": "target.item_code", + "context": "target" + } + ] + }, + "Warehouse": { + "Delivery Note": [ + { + "action": "set_warehouse", + "doctype": "Delivery Note Item", + "field": "warehouse", + "target": "target.warehouse", + "context": "target" + } + ], + "Purchase Invoice": [ + { + "action": "set_warehouse", + "doctype": "Purchase Invoice Item", + "field": "warehouse", + "target": "target.warehouse", + "context": "target" + } + ], + "Purchase Receipt": [ + { + "action": "set_warehouse", + "doctype": "Purchase Receipt Item", + "field": "warehouse", + "target": "target.warehouse", + "context": "target" + } + ], + "Sales Invoice": [ + { + "action": "set_warehouse", + "doctype": "Sales Invoice Item", + "field": "warehouse", + "target": "target.warehouse", + "context": "target" + } + ], + "Stock Entry": [ + { + "action": "set_warehouse", + "doctype": "Stock Entry", + "field": "warehouse", + "target": "target.warehouse", + "context": "target" + } + ], + "Stock Reconciliation": [ + { + "action": "set_warehouse", + "doctype": "Stock Reconciliation Item", + "field": "warehouse", + "target": "target.warehouse", + "context": "target" + } + ] + } +} diff --git a/beam/beam/scan/list.json b/beam/beam/scan/list.json new file mode 100644 index 00000000..708e595c --- /dev/null +++ b/beam/beam/scan/list.json @@ -0,0 +1,126 @@ +{ + "Handling Unit": { + "Delivery Note": [{ "action": "filter", "doctype": "Delivery Note", "field": "name", "target": "target" }], + "Item": [{ "action": "route", "doctype": "Item", "field": "Item", "target": "target" }], + "Packing Slip": [{ "action": "filter", "doctype": "Packing Slip", "field": "name", "target": "target" }], + "Purchase Invoice": [ + { + "action": "filter", + "doctype": "Purchase Invoice", + "field": "name", + "target": "target" + } + ], + "Purchase Receipt": [ + { + "action": "route", + "doctype": "Purchase Receipt", + "field": "Purchase Receipt", + "target": "target" + } + ], + "Putaway Rule": [{ "action": "filter", "doctype": "Putaway Rule", "field": "item_code", "target": "target" }], + "Quality Inspection": [ + { + "action": "filter", + "doctype": "Quality Inspection", + "field": "handling_unit", + "target": "target" + } + ], + "Sales Invoice": [{ "action": "filter", "doctype": "Sales Invoice", "field": "name", "target": "target" }], + "Stock Entry": [{ "action": "filter", "doctype": "Stock Entry", "field": "name", "target": "target" }], + "Stock Reconciliation": [ + { + "action": "filter", + "doctype": "Stock Reconciliation", + "field": "name", + "target": "target" + } + ] + }, + "Item": { + "Delivery Note": [ + { "action": "filter", "doctype": "Delivery Note Item", "field": "item_code", "target": "target" } + ], + "Item": [{ "action": "route", "doctype": "Item", "field": "Item", "target": "target" }], + "Item Price": [{ "action": "filter", "doctype": "Item Price", "field": "item_code", "target": "target" }], + "Packing Slip": [{ "action": "filter", "doctype": "Packing Slip Item", "field": "item_code", "target": "target" }], + "Purchase Invoice": [ + { + "action": "filter", + "doctype": "Purchase Invoice Item", + "field": "item_code", + "target": "target" + } + ], + "Purchase Receipt": [ + { + "action": "filter", + "doctype": "Purchase Receipt Item", + "field": "item_code", + "target": "target" + } + ], + "Putaway Rule": [{ "action": "filter", "doctype": "Putaway Rule", "field": "item_code", "target": "target" }], + "Quality Inspection": [ + { "action": "filter", "doctype": "Quality Inspection", "field": "item_code", "target": "target" } + ], + "Sales Invoice": [ + { "action": "filter", "doctype": "Sales Invoice Item", "field": "item_code", "target": "target" } + ], + "Stock Entry": [{ "action": "filter", "doctype": "Stock Entry Detail", "field": "item_code", "target": "target" }], + "Stock Reconciliation": [ + { + "action": "filter", + "doctype": "Stock Reconciliation Item", + "field": "item_code", + "target": "target" + } + ], + "Warranty Claim": [{ "action": "filter", "doctype": "Warranty Claim", "field": "item_code", "target": "target" }] + }, + "Warehouse": { + "Delivery Note": [ + { "action": "filter", "doctype": "Delivery Note Item", "field": "warehouse", "target": "target" } + ], + "Item": [ + { + "action": "filter", + "doctype": "Item Default", + "field": "default_warehouse", + "target": "target" + } + ], + "Packing Slip": [{ "action": "filter", "doctype": "Packing Slip Item", "field": "warehouse", "target": "target" }], + "Purchase Invoice": [ + { + "action": "filter", + "doctype": "Purchase Invoice Item", + "field": "warehouse", + "target": "target" + } + ], + "Purchase Receipt": [ + { + "action": "filter", + "doctype": "Purchase Receipt Item", + "field": "warehouse", + "target": "target" + } + ], + "Sales Invoice": [ + { "action": "filter", "doctype": "Sales Invoice Item", "field": "warehouse", "target": "target" } + ], + "Stock Entry": [{ "action": "filter", "doctype": "Stock Entry Detail", "field": "warehouse", "target": "target" }], + "Stock Reconciliation": [ + { + "action": "filter", + "doctype": "Stock Reconciliation Item", + "field": "warehouse", + "target": "target" + } + ], + "Warehouse": [{ "action": "route", "doctype": "Warehouse", "field": "Warehouse", "target": "target" }] + } +} diff --git a/beam/customize.py b/beam/customize.py index 5c980404..c287d306 100644 --- a/beam/customize.py +++ b/beam/customize.py @@ -1,42 +1,42 @@ -import json -from pathlib import Path - -import frappe - - -def load_customizations(): - customizations_directory = Path().cwd().parent / "apps" / "beam" / "beam" / "beam" / "custom" - files = list(customizations_directory.glob("**/*.json")) - for file in files: - customizations = json.loads(Path(file).read_text()) - for field in customizations.get("custom_fields"): - if field.get("module") != "BEAM": - continue - existing_field = frappe.get_value("Custom Field", field.get("name")) - custom_field = ( - frappe.get_doc("Custom Field", field.get("name")) - if existing_field - else frappe.new_doc("Custom Field") - ) - field.pop("modified") - {custom_field.set(key, value) for key, value in field.items()} - custom_field.flags.ignore_permissions = True - custom_field.flags.ignore_version = True - custom_field.save() - for prop in customizations.get("property_setters"): - if prop.get("module") != "BEAM": - continue - property_setter = frappe.get_doc( - { - "name": prop.get("name"), - "doctype": "Property Setter", - "doctype_or_field": prop.get("doctype_or_field"), - "doc_type": prop.get("doc_type"), - "field_name": prop.get("field_name"), - "property": prop.get("property"), - "value": prop.get("value"), - "property_type": prop.get("property_type"), - } - ) - property_setter.flags.ignore_permissions = True - property_setter.insert() +import json +from pathlib import Path + +import frappe + + +def load_customizations(): + customizations_directory = Path().cwd().parent / "apps" / "beam" / "beam" / "beam" / "custom" + files = list(customizations_directory.glob("**/*.json")) + for file in files: + customizations = json.loads(Path(file).read_text()) + for field in customizations.get("custom_fields"): + if field.get("module") != "BEAM": + continue + existing_field = frappe.get_value("Custom Field", field.get("name")) + custom_field = ( + frappe.get_doc("Custom Field", field.get("name")) + if existing_field + else frappe.new_doc("Custom Field") + ) + field.pop("modified") + {custom_field.set(key, value) for key, value in field.items()} + custom_field.flags.ignore_permissions = True + custom_field.flags.ignore_version = True + custom_field.save() + for prop in customizations.get("property_setters"): + if prop.get("module") != "BEAM": + continue + property_setter = frappe.get_doc( + { + "name": prop.get("name"), + "doctype": "Property Setter", + "doctype_or_field": prop.get("doctype_or_field"), + "doc_type": prop.get("doc_type"), + "field_name": prop.get("field_name"), + "property": prop.get("property"), + "value": prop.get("value"), + "property_type": prop.get("property_type"), + } + ) + property_setter.flags.ignore_permissions = True + property_setter.insert() diff --git a/beam/docs/demand.md b/beam/docs/demand.md new file mode 100644 index 00000000..00e54115 --- /dev/null +++ b/beam/docs/demand.md @@ -0,0 +1,12 @@ +# Demand + +This feature computes the what Items are needed and where they are available. + +### Demand Map Report + + + + + +### Demand API / Workstation Integration +The Demand feature is used by \ No newline at end of file diff --git a/beam/docs/generate_matrix.py b/beam/docs/generate_matrix.py index bdafe8e3..bde59eb6 100644 --- a/beam/docs/generate_matrix.py +++ b/beam/docs/generate_matrix.py @@ -1,30 +1,29 @@ -import textwrap -from pathlib import Path - - -def generate_matrix(): - from beam.beam.scan import frm, listview - - output = "# Listview Actions\n" - output += "| Scanned Doctype | Listview | Action | Target |\n" - output += "|-----------------|-----------------------|--------|--------|\n" - - for doctype, listviews in listview.items(): - for lv, actions in listviews.items(): - for action in actions: - output += f"|{doctype}|{lv}|{action.get('action')}|{action.get('field')}|\n" - - output += "\n --- \n\n" - output += "# Form Actions\n" - output += "| Scanned Doctype | Form | Action | Target |\n" - output += "|-----------------|-----------------------|--------|--------|\n" - - for doctype, forms in frm.items(): - for form, actions in forms.items(): - for action in actions: - output += f"|{doctype}|{form}|{action.get('action')}|{action.get('field')}|\n" - - filepath = Path(__file__).parent / "matrix.md" - - with filepath.open("w", encoding="utf-8") as f: - f.write(output) +from pathlib import Path + + +def generate_matrix(): + from beam.beam.scan import frm, listview + + output = "# Listview Actions\n" + output += "| Scanned Doctype | Listview | Action | Target |\n" + output += "|-----------------|-----------------------|--------|--------|\n" + + for doctype, listviews in listview.items(): + for lv, actions in listviews.items(): + for action in actions: + output += f"|{doctype}|{lv}|{action.get('action')}|{action.get('field')}|\n" + + output += "\n --- \n\n" + output += "# Form Actions\n" + output += "| Scanned Doctype | Form | Action | Target |\n" + output += "|-----------------|-----------------------|--------|--------|\n" + + for doctype, forms in frm.items(): + for form, actions in forms.items(): + for action in actions: + output += f"|{doctype}|{form}|{action.get('action')}|{action.get('field')}|\n" + + filepath = Path(__file__).parent / "matrix.md" + + with filepath.open("w", encoding="utf-8") as f: + f.write(output) diff --git a/beam/hooks.py b/beam/hooks.py index cef19806..10c92be8 100644 --- a/beam/hooks.py +++ b/beam/hooks.py @@ -110,53 +110,35 @@ # Hook on document methods and events doc_events = { - "Item": { - "validate": [ - "beam.beam.barcodes.create_beam_barcode", - ] + ("Item", "Warehouse"): { + "validate": ["beam.beam.barcodes.create_beam_barcode"], }, - "Warehouse": { - "validate": [ - "beam.beam.barcodes.create_beam_barcode", - ] + # ( + # "Purchase Receipt", + # "Stock Entry", + # "Sales Invoice", + # "Delivery Note", + # ): {"validate": ["beam.beam.handling_unit.validate_handling_unit_overconsumption"]}, + ( + "Delivery Note", + "Purchase Invoice", + "Purchase Receipt", + "Sales Invoice", + "Stock Entry", + "Stock Reconciliation", + ): { + "on_submit": ["beam.beam.demand.demand.modify_allocations"], + "on_cancel": ["beam.beam.demand.demand.modify_allocations"], }, - "Purchase Receipt": { - "before_submit": [ - "beam.beam.handling_unit.generate_handling_units", - ], - "validate": [ - # "beam.beam.handling_unit.validate_handling_unit_overconsumption", - ], - }, - "Purchase Invoice": { - "before_submit": [ - "beam.beam.handling_unit.generate_handling_units", - ], + ("Purchase Receipt", "Purchase Invoice", "Subcontracting Receipt"): { + "before_submit": ["beam.beam.handling_unit.generate_handling_units"], }, "Stock Entry": { - "validate": [ - # "beam.beam.handling_unit.validate_handling_unit_overconsumption", - ], "before_submit": [ "beam.beam.handling_unit.generate_handling_units", "beam.beam.overrides.stock_entry.validate_items_with_handling_unit", ], }, - "Sales Invoice": { - "validate": [ - # "beam.beam.handling_unit.validate_handling_unit_overconsumption", - ], - }, - "Delivery Note": { - "validate": [ - # "beam.beam.handling_unit.validate_handling_unit_overconsumption", - ], - }, - "Subcontracting Receipt": { - "before_submit": [ - "beam.beam.handling_unit.generate_handling_units", - ], - }, } # Scheduled Tasks @@ -187,11 +169,10 @@ # Overriding Methods # ------------------------------ -# -# override_whitelisted_methods = { -# "frappe.desk.doctype.event.event.get_events": "beam.event.get_events" -# } -# + +# override_whitelisted_methods = {"demand": "beam.beam..graphql_server"} + + # each overriding function accepts a `data` argument; # generated from the base implementation of the doctype dashboard, # along with any modifications made in other Frappe apps @@ -248,3 +229,240 @@ # auth_hooks = [ # "beam.auth.validate" # ] + +demand = { + "Delivery Note": { + "on_submit": [ + {"warehouse_field": "s_warehouse", "quantity_field": "stock_qty", "demand_effect": "increase"} + ], + "on_cancel": [ + {"warehouse_field": "s_warehouse", "quantity_field": "stock_qty", "demand_effect": "decrease"} + ], + }, + "Purchase Invoice": { + "on_submit": [ + { + "warehouse_field": "warehouse", + "quantity_field": "stock_qty", + "demand_effect": "decrease", + "conditions": {"is_return": False}, + }, + { + "warehouse_field": "warehouse", + "quantity_field": "stock_qty", + "demand_effect": "increase", + "conditions": {"is_return": True}, + }, + ], + "on_cancel": [ + { + "warehouse_field": "warehouse", + "quantity_field": "stock_qty", + "demand_effect": "increase", + "conditions": {"is_return": False}, + }, + { + "warehouse_field": "warehouse", + "quantity_field": "stock_qty", + "demand_effect": "decrease", + "conditions": {"is_return": True}, + }, + ], + }, + "Purchase Receipt": { + "on_submit": [ + {"warehouse_field": "warehouse", "quantity_field": "stock_qty", "demand_effect": "increase"} + ], + "on_cancel": [ + {"warehouse_field": "warehouse", "quantity_field": "stock_qty", "demand_effect": "decrease"} + ], + }, + "Sales Invoice": { + "on_submit": [ + { + "warehouse_field": "warehouse", + "quantity_field": "stock_qty", + "demand_effect": "increase", + "conditions": {"is_return": False}, + }, + { + "warehouse_field": "warehouse", + "quantity_field": "stock_qty", + "demand_effect": "decrease", + "conditions": {"is_return": True}, + }, + ], + "on_cancel": [ + { + "warehouse_field": "warehouse", + "quantity_field": "stock_qty", + "demand_effect": "decrease", + "conditions": {"is_return": False}, + }, + { + "warehouse_field": "warehouse", + "quantity_field": "stock_qty", + "demand_effect": "increase", + "conditions": {"is_return": True}, + }, + ], + }, + "Stock Entry": { + "on_submit": [ + { + "warehouse_field": "s_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "decrease", + "conditions": {"purpose": "Material Transfer for Manufacture"}, + }, + { + "warehouse_field": "t_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "increase", + "conditions": {"purpose": "Material Transfer for Manufacture"}, + }, + { + "warehouse_field": "s_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "decrease", + "conditions": {"purpose": "Material Issue"}, + }, + { + "warehouse_field": "t_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "increase", + "conditions": {"purpose": "Material Receipt"}, + }, + { + "warehouse_field": "s_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "decrease", + "conditions": {"purpose": "Material Transfer"}, + }, + { + "warehouse_field": "t_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "increase", + "conditions": {"purpose": "Material Transfer"}, + }, + { + "warehouse_field": "s_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "decrease", + "conditions": {"purpose": "Manufacture"}, + }, + { + "warehouse_field": "t_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "increase", + "conditions": {"purpose": "Manufacture"}, + }, + { + "warehouse_field": "s_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "decrease", + "conditions": {"purpose": "Repack"}, + }, + { + "warehouse_field": "t_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "increase", + "conditions": {"purpose": "Repack"}, + }, + { + "warehouse_field": "s_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "decrease", + "conditions": {"purpose": "Send to Subcontractor"}, + }, + { + "warehouse_field": "t_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "increase", + "conditions": {"purpose": "Send to Subcontractor"}, + }, + ], + "on_cancel": [ + { + "warehouse_field": "s_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "increase", + "conditions": {"purpose": "Material Transfer for Manufacture"}, + }, + { + "warehouse_field": "t_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "decrease", + "conditions": {"purpose": "Material Transfer for Manufacture"}, + }, + { + "warehouse_field": "s_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "increase", + "conditions": {"purpose": "Material Issue"}, + }, + { + "warehouse_field": "s_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "decrease", + "conditions": {"purpose": "Material Receipt"}, + }, + { + "warehouse_field": "s_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "increase", + "conditions": {"purpose": "Material Transfer"}, + }, + { + "warehouse_field": "t_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "decrease", + "conditions": {"purpose": "Material Transfer"}, + }, + { + "warehouse_field": "s_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "increase", + "conditions": {"purpose": "Manufacture"}, + }, + { + "warehouse_field": "t_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "decrease", + "conditions": {"purpose": "Manufacture"}, + }, + { + "warehouse_field": "s_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "increase", + "conditions": {"purpose": "Repack"}, + }, + { + "warehouse_field": "t_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "decrease", + "conditions": {"purpose": "Repack"}, + }, + { + "warehouse_field": "s_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "increase", + "conditions": {"purpose": "Send to Subcontractor"}, + }, + { + "warehouse_field": "t_warehouse", + "quantity_field": "transfer_qty", + "demand_effect": "decrease", + "conditions": {"purpose": "Send to Subcontractor"}, + }, + ], + }, + "Stock Reconciliation": { + "on_submit": [ + {"warehouse_field": "warehouse", "quantity_field": "qty", "demand_effect": "adjustment"} + ], + "on_cancel": [ + {"warehouse_field": "warehouse", "quantity_field": "qty", "demand_effect": "adjustment"} + ], + }, +} diff --git a/beam/install.py b/beam/install.py index b5e09b88..119456cd 100644 --- a/beam/install.py +++ b/beam/install.py @@ -1,42 +1,49 @@ -import frappe - -from beam.beam.scan.config import get_scan_doctypes -from beam.customize import load_customizations - - -def after_install(): - load_customizations() - print("Setting up Handling Unit Inventory Dimension") - if frappe.db.exists("Inventory Dimension", "Handling Unit"): - return - huid = frappe.new_doc("Inventory Dimension") - huid.dimension_name = "Handling Unit" - huid.reference_document = "Handling Unit" - huid.apply_to_all_doctypes = 1 - huid.save() - - # re-label - for custom_field in frappe.get_all("Custom Field", {"label": "Source Handling Unit"}): - frappe.set_value("Custom Field", custom_field, "label", "Handling Unit") - - # hide target fields - for custom_field in frappe.get_all( - "Custom Field", {"label": "Target Handling Unit"}, ["name", "dt"] - ): - if custom_field.dt == "Purchase Invoice Item": - frappe.set_value("Custom Field", custom_field, "label", "Handling Unit") - else: - frappe.set_value("Custom Field", custom_field, "read_only", 1) - frappe.set_value("Custom Field", custom_field["name"], "no_copy", 1) - - frm_doctypes = get_scan_doctypes()["frm"] - - for custom_field in frappe.get_all("Custom Field", {"label": "Handling Unit"}, ["name", "dt"]): - frappe.set_value("Custom Field", custom_field["name"], "no_copy", 1) - - if ( - custom_field["dt"] not in frm_doctypes - and custom_field["dt"].replace(" Item", "").replace(" Detail", "") not in frm_doctypes - ): - frappe.set_value("Custom Field", custom_field["name"], "read_only", 1) - frappe.set_value("Custom Field", custom_field["name"], "no_copy", 1) +import pathlib + +import frappe +from frappe.utils import get_site_path + +from beam.beam.demand.demand import build_demand_map +from beam.beam.scan.config import get_scan_doctypes +from beam.customize import load_customizations + + +def after_install(): + load_customizations() + print("Setting up demand database") + pathlib.Path(f"{get_site_path()}/demand.db").unlink(missing_ok=True) + build_demand_map() + print("Setting up Handling Unit Inventory Dimension") + if frappe.db.exists("Inventory Dimension", "Handling Unit"): + return + huid = frappe.new_doc("Inventory Dimension") + huid.dimension_name = "Handling Unit" + huid.reference_document = "Handling Unit" + huid.apply_to_all_doctypes = 1 + huid.save() + + # re-label + for custom_field in frappe.get_all("Custom Field", {"label": "Source Handling Unit"}): + frappe.set_value("Custom Field", custom_field, "label", "Handling Unit") + + # hide target fields + for custom_field in frappe.get_all( + "Custom Field", {"label": "Target Handling Unit"}, ["name", "dt"] + ): + if custom_field.dt == "Purchase Invoice Item": + frappe.set_value("Custom Field", custom_field, "label", "Handling Unit") + else: + frappe.set_value("Custom Field", custom_field, "read_only", 1) + frappe.set_value("Custom Field", custom_field["name"], "no_copy", 1) + + frm_doctypes = get_scan_doctypes()["frm"] + + for custom_field in frappe.get_all("Custom Field", {"label": "Handling Unit"}, ["name", "dt"]): + frappe.set_value("Custom Field", custom_field["name"], "no_copy", 1) + + if ( + custom_field["dt"] not in frm_doctypes + and custom_field["dt"].replace(" Item", "").replace(" Detail", "") not in frm_doctypes + ): + frappe.set_value("Custom Field", custom_field["name"], "read_only", 1) + frappe.set_value("Custom Field", custom_field["name"], "no_copy", 1) diff --git a/beam/tests/conftest.py b/beam/tests/conftest.py index ac79821b..61cbb3c8 100644 --- a/beam/tests/conftest.py +++ b/beam/tests/conftest.py @@ -6,6 +6,8 @@ import pytest from frappe.utils import get_bench_path +from beam.beam.demand.demand import build_demand_map, get_demand_db + def _get_logger(*args, **kwargs): from frappe.utils.logger import get_logger @@ -39,4 +41,13 @@ def db_instance(): frappe.init(site=currentsite, sites_path=sites) frappe.connect() frappe.db.commit = MagicMock() + + # demand db - not frappe db + with get_demand_db() as conn: + cur = conn.cursor() + cur.execute("DELETE FROM demand;") # sqlite does not implement a TRUNCATE command + cur.execute("DELETE FROM allocation;") # sqlite does not implement a TRUNCATE command + + build_demand_map() + yield frappe.db diff --git a/beam/tests/fixtures.py b/beam/tests/fixtures.py index 0edf6a68..f79da6cd 100644 --- a/beam/tests/fixtures.py +++ b/beam/tests/fixtures.py @@ -60,6 +60,8 @@ ("Refrigerator Station", "200"), ("Oven Station", "20"), ("Mixer Station", "10"), + ("Receiving", "100"), + ("Shipping", "100"), ] operations = [ diff --git a/beam/tests/setup.py b/beam/tests/setup.py index c6828950..4b292367 100644 --- a/beam/tests/setup.py +++ b/beam/tests/setup.py @@ -1,9 +1,7 @@ import datetime -import types from itertools import groupby import frappe -from erpnext.accounts.doctype.account.account import update_account_number from erpnext.manufacturing.doctype.production_plan.production_plan import ( get_items_for_material_requests, ) @@ -11,6 +9,7 @@ from erpnext.stock.get_item_details import get_item_details from frappe.desk.page.setup_wizard.setup_wizard import setup_complete +from beam.beam.demand.demand import build_demand_map from beam.tests.fixtures import boms, customers, items, operations, suppliers, workstations @@ -44,6 +43,7 @@ def before_test(): frappe.db.set_value("Module Onboarding", modu, "is_complete", 1) frappe.set_value("Website Settings", "Website Settings", "home_page", "login") frappe.db.commit() + build_demand_map() def create_test_data(): @@ -70,12 +70,13 @@ def create_test_data(): company_address.city = "Chelsea" company_address.state = "MA" company_address.pincode = "89077" - company_address.is_your_company_address = 1 + company_address.is_your_company_address = True company_address.append("links", {"link_doctype": "Company", "link_name": settings.company}) company_address.save() frappe.set_value("Company", settings.company, "tax_id", "04-1871930") create_warehouses(settings) setup_manufacturing_settings(settings) + setup_beam_settings(settings) create_workstations() create_operations() create_item_groups(settings) @@ -142,11 +143,11 @@ def create_customers(settings): def setup_manufacturing_settings(settings): mfg_settings = frappe.get_doc("Manufacturing Settings", "Manufacturing Settings") - mfg_settings.material_consumption = 1 + mfg_settings.material_consumption = True mfg_settings.default_wip_warehouse = "Kitchen - APC" mfg_settings.default_fg_warehouse = "Baked Goods - APC" mfg_settings.overproduction_percentage_for_work_order = 5.00 - mfg_settings.job_Card_excess_transfer = 1 + mfg_settings.job_card_excess_transfer = True mfg_settings.save() if frappe.db.exists("Account", {"account_name": "Work In Progress", "company": settings.company}): @@ -164,7 +165,7 @@ def setup_manufacturing_settings(settings): if frappe.db.exists("Account", {"account_name": "Work In Progress", "company": settings.company}): return wip = frappe.new_doc("Account") - wip.account_name = "Standard Costing Reconciliation" + wip.account_name = "Inventory Write Off" wip.parent_account = "1400 - Stock Assets - APC" wip.account_number = "1430" wip.company = settings.company @@ -176,6 +177,16 @@ def setup_manufacturing_settings(settings): frappe.set_value("Warehouse", "Kitchen - APC", "account", wip.name) +def setup_beam_settings(settings): + beams = frappe.new_doc("BEAM Settings") + beams.company = settings.company + beams.enable_handling_units = True + beams.append("warehouse_types", {"warehouse_type": "Quarantine"}) + beams.receiving_workstation = "Receiving" + beams.shipping_workstation = "Shipping" + beams.save() + + def create_workstations(): for ws in workstations: if frappe.db.exists("Workstation", ws[0]): @@ -218,21 +229,21 @@ def create_items(settings): if not frappe.db.exists("Price List", "Bakery Buying"): pl = frappe.new_doc("Price List") pl.price_list_name = "Bakery Buying" - pl.buying = 1 + pl.buying = True pl.append("countries", {"country": "United States"}) pl.save() if not frappe.db.exists("Price List", "Bakery Wholesale"): pl = frappe.new_doc("Price List") pl.price_list_name = "Bakery Wholesale" - pl.selling = 1 + pl.selling = True pl.append("countries", {"country": "United States"}) pl.save() if not frappe.db.exists("Pricing Rule", "Bakery Retail"): pr = frappe.new_doc("Pricing Rule") pr.title = "Bakery Retail" - pr.selling = 1 + pr.selling = True pr.apply_on = "Item Group" pr.company = settings.company pr.margin_type = "Percentage" @@ -250,16 +261,16 @@ def create_items(settings): i.item_group = item.get("item_group") i.stock_uom = item.get("uom") i.description = item.get("description") - i.maintain_stock = 1 - i.enable_handling_unit = 0 if i.item_code in ("Water", "Ice Water") else 1 - i.include_item_in_manufacturing = 1 + i.maintain_stock = True + i.enable_handling_unit = i.item_code not in ("Water", "Ice Water") + i.include_item_in_manufacturing = True i.default_warehouse = settings.get("warehouse") i.default_material_request_type = ( "Purchase" if item.get("item_group") in ("Bakery Supplies", "Ingredients") else "Manufacture" ) i.valuation_method = "FIFO" - i.is_purchase_item = 1 if item.get("item_group") in ("Bakery Supplies", "Ingredients") else 0 - i.is_sales_item = 1 if item.get("item_group") == "Baked Goods" else 0 + i.is_purchase_item = item.get("item_group") in ("Bakery Supplies", "Ingredients") + i.is_sales_item = item.get("item_group") == "Baked Goods" i.append( "item_defaults", {"company": settings.company, "default_warehouse": item.get("default_warehouse")}, @@ -269,13 +280,17 @@ def create_items(settings): if i.item_code == "Parchment Paper": i.append("uoms", {"uom": "Box", "conversion_factor": 100}) i.purchase_uom = "Box" + if i.item_code in ("Water", "Ice Water"): + i.append("uoms", {"uom": "Gallon Liquid (US)", "conversion_factor": 15.142}) + i.purchase_uom = "Gallon Liquid (US)" + i.valuation_rate = 0.01 if i.item_code == "Water" else 0.02 i.save() if item.get("item_price"): ip = frappe.new_doc("Item Price") ip.item_code = i.item_code ip.uom = i.stock_uom ip.price_list = "Bakery Wholesale" if i.is_sales_item else "Bakery Buying" - ip.buying = 1 + ip.buying = True ip.valid_from = "2018-1-1" ip.price_list_rate = item.get("item_price") ip.save() @@ -286,20 +301,22 @@ def create_items(settings): "items", { "item_code": "Water", - "qty": 10000000, + "qty": 9, # intentionally to help with demand tests "t_warehouse": "Refrigerator - APC", - "basic_rate": 0.0, - "allow_zero_valuation_rate": 1, + "uom": "Cup", + "basic_rate": 0.15, + "expense_account": "5111 - Cost of Goods Sold - APC", }, ) water.append( "items", { "item_code": "Ice Water", - "qty": 10000000, + "qty": 11, # intentionally to help with demand tests + "uom": "Cup", "t_warehouse": "Refrigerator - APC", - "basic_rate": 0.0, - "allow_zero_valuation_rate": 1, + "basic_rate": 0.30, + "expense_account": "5111 - Cost of Goods Sold - APC", }, ) water.save() @@ -322,6 +339,90 @@ def create_warehouses(settings): wh.parent_warehouse = root_wh wh.company = settings.company wh.save() + create_quarantine_warehouse(settings, parent_wh=root_wh) + + +# TODO: replace with test utils functionality +def create_quarantine_warehouse( + settings, + wh_name="Quarantined, Scrap and Rejected Items", + account_name=None, + parent_account=None, + account_number="1430", + parent_wh=None, + is_default_scrap_wh=True, +): + if not account_name: + if not parent_account: + # If one possible parent account in system, use it, if zero or 2+, account is standalone + parent_accts = frappe.get_all( + "Account", + { + "company": settings.company, + "root_type": "Asset", + "account_type": "Stock", + "is_group": 1, + }, + "name", + pluck="name", + ) + parent_account = parent_accts[0] if len(parent_accts) == 1 else "" + + if not frappe.db.exists( + "Account", + { + "name": wh_name, + "company": settings.company, + "root_type": "Asset", + "account_type": "Stock", + }, + ): + a = frappe.new_doc("Account") + a.name = a.account_name = wh_name + a.account_number = account_number + a.is_group = 0 + a.company = settings.company + a.root_type = "Asset" + a.report_type = "Balance Sheet" + a.account_currency = frappe.get_value("Company", settings.company, "default_currency") + a.parent_account = parent_account + a.account_type = "Stock" + a.save() + account_name = a.name + + if not parent_wh: + parent_wh = frappe.get_value("Warehouse", {"company": settings.company, "is_group": 1}) + + wh_type = "Quarantine" + if not frappe.db.exists("Warehouse Type", wh_type): + wht = frappe.new_doc("Warehouse Type") + wht.name = wh_type + wht.save() + + if not frappe.db.exists( + "Warehouse", + { + "warehouse_name": wh_name, + "company": settings.company, + "is_rejected_warehouse": 1, + "account": account_name, + }, + ): + wh = frappe.new_doc("Warehouse") + wh.warehouse_name = wh_name + wh.company = settings.company + wh.is_group = 0 + wh.parent_warehouse = parent_wh + wh.is_rejected_warehouse = 1 + wh.account = account_name + wh.warehouse_type = wh_type + wh.save() + wh_name = wh.name + + if is_default_scrap_wh: + ms = frappe.get_doc("Manufacturing Settings") + ms.default_scrap_warehouse = wh_name + ms.save() def create_boms(settings): @@ -336,7 +437,7 @@ def create_boms(settings): b.rm_cost_as_per = "Price List" b.buying_price_list = "Bakery Buying" b.currency = "USD" - b.with_operations = 1 + b.with_operations = True for item in bom.get("items"): b.append("items", {**item, "stock_uom": item.get("uom")}) b.items[-1].bom_no = frappe.get_value("BOM", {"item": item.get("item_code")}) @@ -369,7 +470,7 @@ def create_sales_order(settings): "items", { "item_code": "Double Plum Pie", - "delivery_date": so.transaction_date, + "delivery_date": so.transaction_date + datetime.timedelta(days=1), "qty": 40, "warehouse": "Baked Goods - APC", }, @@ -378,7 +479,7 @@ def create_sales_order(settings): "items", { "item_code": "Gooseberry Pie", - "delivery_date": so.transaction_date, + "delivery_date": so.transaction_date + datetime.timedelta(days=2), "qty": 10, "warehouse": "Baked Goods - APC", }, @@ -387,7 +488,7 @@ def create_sales_order(settings): "items", { "item_code": "Kaduka Key Lime Pie", - "delivery_date": so.transaction_date, + "delivery_date": so.transaction_date + datetime.timedelta(days=3), "qty": 10, "warehouse": "Baked Goods - APC", }, @@ -414,7 +515,7 @@ def create_material_request(settings): "items", { "item_code": "Double Plum Pie", - "schedule_date": mr.schedule_date, + "schedule_date": mr.schedule_date + datetime.timedelta(days=1), "qty": 40, "warehouse": "Baked Goods - APC", }, @@ -423,7 +524,7 @@ def create_material_request(settings): "items", { "item_code": "Gooseberry Pie", - "schedule_date": mr.schedule_date, + "schedule_date": mr.schedule_date + datetime.timedelta(days=2), "qty": 10, "warehouse": "Baked Goods - APC", }, @@ -432,7 +533,7 @@ def create_material_request(settings): "items", { "item_code": "Kaduka Key Lime Pie", - "schedule_date": mr.schedule_date, + "schedule_date": mr.schedule_date + datetime.timedelta(days=3), "qty": 10, "warehouse": "Baked Goods - APC", }, @@ -445,7 +546,7 @@ def create_production_plan(settings, prod_plan_from_doc): pp = frappe.new_doc("Production Plan") pp.posting_date = settings.day pp.company = settings.company - pp.combine_sub_items = 1 + pp.combine_sub_items = True if prod_plan_from_doc == "Sales Order": pp.get_items_from = "Sales Order" pp.append( @@ -467,8 +568,11 @@ def create_production_plan(settings, prod_plan_from_doc): for item in pp.po_items: item.planned_start_date = settings.day pp.get_sub_assembly_items() + start_time = datetime.datetime(settings.day.year, settings.day.month, settings.day.day, 0, 0) for item in pp.sub_assembly_items: - item.schedule_date = settings.day + item.schedule_date = start_time + time = frappe.get_value("BOM Operation", {"parent": item.bom_no}, "sum(time_in_mins) AS time") + start_time += datetime.timedelta(minutes=time + 2) pp.for_warehouse = "Storeroom - APC" raw_materials = get_items_for_material_requests( pp.as_dict(), warehouses=None, get_parent_warehouse_data=None @@ -506,13 +610,13 @@ def create_production_plan(settings, prod_plan_from_doc): continue if supplier == "Freedom Provisions": pr = frappe.new_doc("Purchase Invoice") - pr.update_stock = 1 + pr.update_stock = True else: pr = frappe.new_doc("Purchase Receipt") pr.company = settings.company pr.supplier = supplier pr.posting_date = settings.day - pr.set_posting_time = 1 + pr.set_posting_time = True pr.buying_price_list = "Bakery Buying" for item in items: item_details = get_item_details( @@ -530,24 +634,35 @@ def create_production_plan(settings, prod_plan_from_doc): pr.save() # pr.submit() # don't submit - needed to test handling unit generation + # TODO: call internal functions to make sub assembly items first pp.make_work_order() - wos = frappe.get_all("Work Order", {"production_plan": pp.name}) + wos = frappe.get_all("Work Order", {"production_plan": pp.name}, order_by="creation") + start_time = datetime.datetime(settings.day.year, settings.day.month, settings.day.day, 0, 0) for wo in wos: wo = frappe.get_doc("Work Order", wo) wo.wip_warehouse = "Kitchen - APC" + wo.actual_start_date = wo.planned_start_date = start_time wo.save() wo.submit() job_cards = frappe.get_all("Job Card", {"work_order": wo.name}) for job_card in job_cards: job_card = frappe.get_doc("Job Card", job_card) + batch_size, total_operation_time = frappe.get_value( + "Operation", job_card.operation, ["batch_size", "total_operation_time"] + ) + time_in_mins = (total_operation_time / batch_size) * wo.qty job_card.append( "time_logs", { "completed_qty": wo.qty, + "from_time": start_time, + "to_time": start_time + datetime.timedelta(minutes=time_in_mins), + "time_in_mins": time_in_mins, }, ) job_card.save() - job_card.submit() + start_time = job_card.time_logs[0].to_time + datetime.timedelta(minutes=2) + # job_card.submit() # TODO: don't submit for demand tests def create_purchase_receipt_for_received_qty_test(settings): @@ -555,7 +670,7 @@ def create_purchase_receipt_for_received_qty_test(settings): pr.company = settings.company pr.supplier = "Freedom Provisions" pr.posting_date = settings.day - pr.set_posting_time = 1 + pr.set_posting_time = True pr.buying_price_list = "Bakery Buying" item = frappe.get_doc("Item", "Gooseberry") pr.append( diff --git a/beam/tests/test_demand.py b/beam/tests/test_demand.py new file mode 100644 index 00000000..b2b7c634 --- /dev/null +++ b/beam/tests/test_demand.py @@ -0,0 +1,147 @@ +from pathlib import Path + +import frappe +import pytest +from frappe.utils import get_site_path + +from beam.beam.demand.demand import build_demand_map, get_demand + +# TODO: +# configure rejected warehouse and make sure its under test for demand +# debug allocation issues when +# add filters to Demand Map: manufactured items, purchased items, finished goods +# + + +@pytest.mark.order(1) +def test_opening_demand(): + # destroy and reset + demand_db_path = Path(f"{get_site_path()}/demand.db").resolve() + if demand_db_path.exists(): + demand_db_path.unlink(missing_ok=True) + + build_demand_map() + # get demand assert that correct quantities and allocations exist + water = get_demand(company=frappe.defaults.get_defaults().get("company"), item_code="Water") + + assert len(water) == 4 + + assert water[0].total_required_qty == 2.5 + assert water[0].net_required_qty == 2.5 + assert water[0].allocated_qty == 0.0 + assert water[0].warehouse == "Kitchen - APC" + assert water[0].parent == "MFG-WO-2024-00007" + + assert water[1].total_required_qty == 2.5 + assert water[1].net_required_qty == 2.5 + assert water[1].allocated_qty == 0 + assert water[1].warehouse == "Kitchen - APC" + assert water[1].parent == "MFG-WO-2024-00008" + + assert water[2].total_required_qty == 10.0 + assert water[2].net_required_qty == 10.0 + assert water[2].allocated_qty == 0.0 + assert water[2].warehouse == "Kitchen - APC" + assert water[2].parent == "MFG-WO-2024-00009" + + assert water[3].total_required_qty == 10.0 + assert water[3].net_required_qty == 1.0 + assert water[3].allocated_qty == 9.0 + assert water[3].warehouse == "Refrigerator - APC" + assert water[3].parent == "MFG-WO-2024-00006" + + ice_water = get_demand( + company=frappe.defaults.get_defaults().get("company"), item_code="Ice Water" + ) + + assert len(ice_water) == 1 + + assert ice_water[0].total_required_qty == 50 + assert ice_water[0].net_required_qty == 39 + assert ice_water[0].allocated_qty == 11 + assert ice_water[0].warehouse == "Refrigerator - APC" + assert ice_water[0].parent == "MFG-WO-2024-00005" + + +@pytest.mark.order(2) +def test_insufficient_total_demand_scenario(): + # test multiple partial allocations + se = frappe.new_doc("Stock Entry") + se.stock_entry_type = se.purpose = "Material Receipt" + se.append( + "items", + { + "item_code": "Water", + "qty": 7, + "t_warehouse": "Refrigerator - APC", + "uom": "Cup", + "basic_rate": 0.15, + "expense_account": "5111 - Cost of Goods Sold - APC", + }, + ) + se.append( + "items", + { + "item_code": "Ice Water", + "qty": 100, + "uom": "Cup", + "t_warehouse": "Refrigerator - APC", + "basic_rate": 0.30, + "expense_account": "5111 - Cost of Goods Sold - APC", + }, + ) + se.save() + se.submit() + water = get_demand(company=se.company, item_code="Water") + + assert len(water) == 4 + + assert water[0].total_required_qty == 2.5 + assert water[0].net_required_qty == 2.5 + assert water[0].allocated_qty == 0 + assert water[0].warehouse == "Kitchen - APC" + assert water[0].parent == "MFG-WO-2024-00007" + + assert water[1].total_required_qty == 2.5 + assert water[1].net_required_qty == 2.5 + assert water[1].allocated_qty == 0.0 + assert water[1].warehouse == "Kitchen - APC" + assert water[1].parent == "MFG-WO-2024-00008" + + assert water[2].total_required_qty == 10.0 + assert water[2].net_required_qty == 10.0 + assert water[2].allocated_qty == 0.0 + assert water[2].warehouse == "Kitchen - APC" + assert water[2].parent == "MFG-WO-2024-00009" + + assert water[3].total_required_qty == 10.0 + assert water[3].net_required_qty == 0.0 + assert water[3].allocated_qty == 10.0 + assert water[3].warehouse == "Refrigerator - APC" + assert water[3].parent == "MFG-WO-2024-00006" + + # assert partial allocations + ice_water = get_demand(company=se.company, item_code="Ice Water") + + assert len(ice_water) == 1 + + assert ice_water[0].total_required_qty == 50 + assert ice_water[0].net_required_qty == 0.0 + assert ice_water[0].allocated_qty == 50 + assert ice_water[0].warehouse == "Refrigerator - APC" + assert ice_water[0].parent == "MFG-WO-2024-00005" + + # assert make-up allocation and not over-allocation + + +@pytest.mark.order(13) +def test_allocation_from_purchasing(): + for pr in frappe.get_all( + "Purchase Receipt", ["name", "'Purchase Receipt' AS doctype"] + ) + frappe.get_all("Purchase Invoice", ["name", "'Purchase Invoice' AS doctype"]): + pr = frappe.get_doc(pr.doctype, pr.name) + for row in pr.items: + if row.handling_unit: # flag for inventoriable item + # TODO: this should be improved with greater specificity, but detecting that creating inventory leads to modification of the demand db is OK for now + d = get_demand(pr.company, item_code=row.item_code) + assert len(d) > 0 diff --git a/beam/tests/test_handling_unit.py b/beam/tests/test_handling_unit.py index 39c0273e..ce71409c 100644 --- a/beam/tests/test_handling_unit.py +++ b/beam/tests/test_handling_unit.py @@ -1,3 +1,5 @@ +import time + import frappe import pytest from erpnext.manufacturing.doctype.work_order.work_order import make_stock_entry @@ -7,6 +9,7 @@ make_subcontracting_receipt, ) +from beam.beam.demand.demand import get_demand from beam.beam.scan import get_handling_unit @@ -20,7 +23,7 @@ def submit_all_purchase_receipts(): pr.submit() -@pytest.mark.order(1) +@pytest.mark.order(10) def test_purchase_receipt_handling_unit_generation(): for pr in frappe.get_all("Purchase Receipt"): pr = frappe.get_doc("Purchase Receipt", pr) @@ -31,11 +34,11 @@ def test_purchase_receipt_handling_unit_generation(): assert isinstance(row.handling_unit, str) if row.rejected_qty: assert row.rejected_qty + row.qty == row.received_qty - hu = get_handling_unit(row.handling_unit) - assert hu.stock_qty == row.stock_qty + hu = get_handling_unit(row.handling_unit) + assert hu.stock_qty == row.stock_qty -@pytest.mark.order(2) +@pytest.mark.order(11) def test_purchase_invoice(): for pi in frappe.get_all("Purchase Invoice"): pi = frappe.get_doc("Purchase Invoice", pi) @@ -52,7 +55,7 @@ def test_purchase_invoice(): assert row.handling_unit == None -@pytest.mark.order(3) +@pytest.mark.order(13) def test_stock_entry_material_receipt(): submit_all_purchase_receipts() se = frappe.new_doc("Stock Entry") @@ -70,7 +73,7 @@ def test_stock_entry_material_receipt(): "items", { "item_code": "Ice Water", - "qty": 1000000000, + "qty": 100, "t_warehouse": "Refrigerator - APC", "basic_rate": 0, "allow_zero_valuation_rate": 1, @@ -91,7 +94,7 @@ def test_stock_entry_material_receipt(): assert row.handling_unit == sle.handling_unit -@pytest.mark.order(4) +@pytest.mark.order(14) def test_stock_entry_repack(): submit_all_purchase_receipts() pr_hu = frappe.get_value( @@ -118,6 +121,18 @@ def test_stock_entry_repack(): "handling_unit": pr_hu["handling_unit"], }, ) + scan = frappe.call( + "beam.beam.scan.scan", + **{ + "barcode": pr_hu.handling_unit, + "context": {"frm": "Stock Entry", "doc": se.as_dict()}, + "current_qty": 100, + }, + ) + assert scan[0]["action"] == "add_or_associate" + se.items[0].handling_unit = scan[0]["context"].get( + "handling_unit" + ) # simulates the effect of 'associate' se.append( "items", { @@ -147,7 +162,7 @@ def test_stock_entry_repack(): assert hu.stock_qty == 100 -@pytest.mark.order(4) +@pytest.mark.order(15) def test_stock_entry_material_transfer_for_manufacture(): submit_all_purchase_receipts() wo = frappe.get_value("Work Order", {"production_item": "Kaduka Key Lime Pie Filling"}) @@ -198,13 +213,18 @@ def test_stock_entry_material_transfer_for_manufacture(): assert row.handling_unit != row.to_handling_unit -@pytest.mark.order(6) +@pytest.mark.order(16) def test_stock_entry_for_manufacture(): submit_all_purchase_receipts() wo = frappe.get_value("Work Order", {"production_item": "Kaduka Key Lime Pie Filling"}) se_tfm = frappe.get_value( "Stock Entry", {"work_order": wo, "purpose": "Material Transfer for Manufacture"} ) + job_cards = frappe.get_all("Job Card", {"work_order": wo}) + for job_card in job_cards: + job_card = frappe.get_doc("Job Card", job_card) + job_card.submit() + se = make_stock_entry(wo, "Manufacture", 40) # simulate scanning for row in se.get("items"): @@ -261,7 +281,7 @@ def test_stock_entry_for_manufacture(): assert row.t_warehouse == sle.warehouse # target warehouse -@pytest.mark.order(7) +@pytest.mark.order(17) def test_delivery_note(): se = frappe.new_doc("Stock Entry") se.stock_entry_type = se.purpose = "Material Receipt" @@ -304,7 +324,7 @@ def test_delivery_note(): assert hu.item_code == dn.items[0].item_code -@pytest.mark.order(8) +@pytest.mark.order(18) def test_sales_invoice(): se = frappe.new_doc("Stock Entry") se.stock_entry_type = se.purpose = "Material Receipt" @@ -348,7 +368,7 @@ def test_sales_invoice(): assert hu.item_code == si.items[0].item_code -@pytest.mark.order(9) +@pytest.mark.order(19) def test_packing_slip(): se = frappe.new_doc("Stock Entry") se.stock_entry_type = se.purpose = "Material Receipt" @@ -405,7 +425,7 @@ def test_packing_slip(): assert hu.stock_qty == 0 -@pytest.mark.order(10) +@pytest.mark.order(20) def test_stock_entry_material_transfer(): # create clean material receipt to avoid conflicts with Repack test semr = frappe.new_doc("Stock Entry") @@ -494,7 +514,7 @@ def test_stock_entry_material_transfer(): assert row.t_warehouse == tsle.warehouse # target warehouse -@pytest.mark.order(11) +@pytest.mark.order(21) def test_stock_entry_for_send_to_subcontractor(): submit_all_purchase_receipts() se = frappe.new_doc("Stock Entry") @@ -555,7 +575,7 @@ def test_stock_entry_for_send_to_subcontractor(): assert hu.qty > 0 -@pytest.mark.order(12) +@pytest.mark.order(22) def test_subcontracting_receipt(): for row in frappe.get_all("Subcontracting Order", pluck="name"): if not frappe.db.exists( @@ -577,7 +597,7 @@ def test_subcontracting_receipt(): assert hu.stock_qty == row.returned_qty -@pytest.mark.order(13) +@pytest.mark.order(23) @pytest.mark.skip() # Remove when validate_handling_unit_overconsumption is uncommented in hooks.py doc_events def test_handling_units_overconsumption_in_material_transfer_stock_entry(): # Tests validate_handling_unit_overconsumption Stock Entry incoming code block @@ -633,7 +653,7 @@ def test_handling_units_overconsumption_in_material_transfer_stock_entry(): ) -@pytest.mark.order(14) +@pytest.mark.order(24) @pytest.mark.skip() # Remove when validate_handling_unit_overconsumption is uncommented in hooks.py doc_events def test_handling_units_overconsumption_in_delivery_note(): # Tests validate_handling_unit_overconsumption Delivery Note code block diff --git a/beam/tests/test_hooks_override.py b/beam/tests/test_hooks_override.py index 48238a2b..48f585e5 100644 --- a/beam/tests/test_hooks_override.py +++ b/beam/tests/test_hooks_override.py @@ -42,6 +42,7 @@ def patched_hooks(*args, **kwargs): monkeymodule.setattr("frappe.get_hooks", patched_hooks) +@pytest.mark.order(30) def test_beam_frm_hooks_override(patch_frappe_get_hooks): item_barcode = frappe.get_value("Item Barcode", {"parent": "Kaduka Key Lime Pie"}, "barcode") dn = frappe.new_doc("Delivery Note") diff --git a/beam/www/beam/index.css b/beam/www/beam/index.css new file mode 100644 index 00000000..1ddec11f --- /dev/null +++ b/beam/www/beam/index.css @@ -0,0 +1,1273 @@ +@import 'https://fonts.googleapis.com/css2?family=Arimo:ital,wght@0,400..700;1,400..700&display=swap'; +.list-index { + color: var(--header-text-color); + font-weight: 700; + padding-left: var(--atable-row-padding); + padding-right: 1em; + text-align: center; + -webkit-user-select: none; + user-select: none; + width: var(--683f7d0b); + max-width: var(--683f7d0b); +} +.atable #header-index { + width: var(--683f7d0b); + max-width: var(--683f7d0b); +} +nav[data-v-a8e3b676] { + padding-top: 0.5rem; +} +li[data-v-a8e3b676] { + list-style: none; + padding: 2rem; + margin: 0.5rem; + font-size: 150%; + border: 2px solid gray; + outline: 2px solid transparent; +} +li[data-v-a8e3b676]:active { + outline: 2px solid gray; +} +.home-nav[data-v-a8e3b676] { + display: block; +} +b[data-v-3831f3aa] { + display: flex; + justify-content: center; + align-items: center; +} +.container[data-v-3831f3aa] { + display: flex; + gap: 20px; +} +.box[data-v-3831f3aa] { + padding: 2rem; + margin: 0.5rem; + font-size: 100%; + border: 2px solid gray; + outline: 2px solid transparent; + flex: 1; + min-width: 100px; +} +.list-index { + color: var(--header-text-color); + font-weight: 700; + padding-left: var(--atable-row-padding); + padding-right: 1em; + text-align: center; + -webkit-user-select: none; + user-select: none; + width: var(--f004d4be); + max-width: var(--f004d4be); +} +.atable #header-index { + width: var(--f004d4be); + max-width: var(--f004d4be); +} +.container[data-v-7261b52e][data-v-c2bb50f8] { + display: block; + position: relative; + padding-left: 2.5ch; + margin: 0; + margin-top: 0.5rem; + cursor: pointer; + font-size: 2rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.container input[data-v-7261b52e][data-v-c2bb50f8] { + position: absolute; + opacity: 0; + cursor: pointer; + height: 0; + width: 0; +} +.checkmark[data-v-7261b52e][data-v-c2bb50f8] { + position: absolute; + top: 0; + left: 0; + height: 2rem; + width: 2rem; + background-color: #eee; + outline: 2px solid transparent; + border: 1px solid var(--highlight); +} +.container:hover input ~ .checkmark[data-v-7261b52e][data-v-c2bb50f8] { + background-color: #fff; +} +.container input:checked ~ .checkmark[data-v-7261b52e][data-v-c2bb50f8] { + background-color: var(--brand-secondary); +} +.checkmark[data-v-7261b52e][data-v-c2bb50f8]:after { + content: ''; + position: absolute; + display: none; +} +.container input:checked ~ .checkmark[data-v-7261b52e][data-v-c2bb50f8]:after { + display: block; +} +.container .checkmark[data-v-7261b52e][data-v-c2bb50f8]:after { + left: 25%; + top: 50%; + width: 0.5rem; + height: 1rem; + border: solid var(--text-color); + border-width: 0 3px 3px 0; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg) translate(-50%, -50%); +} +[data-v-c2bb50f8]:root { + --primary-color: #0098c9; + --primary-text-color: #ffffff; + --brand-color: #202a44; + --gray-5: #f2f2f2; + --gray-10: #e6e6e6; + --gray-20: #cccccc; + --gray-50: #808080; + --gray-60: #666666; + --gray-80: #333333; + --brand-danger: #e63c28; + --brand-success: #155724; + --row-color-zebra-light: #eeeeee; + --row-color-zebra-dark: #dddddd; + --focus-cell-background: #ffffff; + --focus-cell-outline: #000000; + --cell-border-color: #ffffff; + --cell-text-color: #3a3c41; + --active-cell-background: #ffffff; + --active-cell-outline: #e6a92d; + --row-border-color: var(--gray-20); + --header-border-color: #ffffff; + --header-text-color: var(--gray-20); + --row-number-background-color: #ffffff; + --input-border-color: var(--gray-20); + --input-label-color: var(--gray-60); + --input-active-border-color: #000000; + --input-active-label-color: #000000; + --required-border: #e63c28; + --font-size: 10px; + --font-family: Arimo, Arial, sans-serif; + --table-font-size: 16px; + --atable-font-family: 'Arimo', sans-serif; + --atable-row-padding: 0px; + --atable-row-height: 1.5em; + --btn-color: white; + --btn-border: #cccccc; + --btn-hover: #f2f2f2; + --btn-label-color: black; +} +.aform[data-v-c2bb50f8] { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; + align-items: baseline; + padding: 1rem; + border: 1px solid var(--gray-5); + border-left: 4px solid var(--gray-5); + margin-bottom: 1rem; +} +.aform__form-element[data-v-c2bb50f8] { + min-width: 30%; + flex-basis: 32%; + border: 1px solid transparent; + padding: 0; + margin: 0; + margin-right: 0.5rem; + margin-bottom: 0.5rem; + display: grid; + position: relative; + margin: 0.5rem 0; +} +.aform__input-field[data-v-c2bb50f8] { + outline: 1px solid transparent; + border: 1px solid var(--input-border-color); + font-size: 1rem; + padding: 0.5rem 0.25rem 0.25rem 0.5rem; + margin: 0; + border-radius: 0; + box-sizing: border-box; + width: 100%; + position: relative; + color: var(--cell-text-color); +} +.aform__field-label[data-v-c2bb50f8] { + color: var(--input-label-color); + display: inline-block; + position: absolute; + padding: 0 0.25rem; + margin: 0rem; + z-index: 2; + font-size: 0.7rem; + font-weight: 300; + letter-spacing: 0.05rem; + width: auto; + box-sizing: border-box; + background: #fff; + margin: 0; + border: 1px solid var(--input-border-color); + grid-row: 1; + top: 0; + left: 10px; + border: none; + transform: translateY(-50%); +} +p.error[data-v-c2bb50f8] { + display: block; + display: inline-block; + display: none; + padding: 0rem 0rem 0rem 0.5rem; + margin: 0.5rem 0 0.25rem 0rem; + border: 1px solid transparent; + width: 100%; + width: auto; + color: var(--brand-danger); + font-size: 0.8rem; + position: absolute; + right: 0; + top: 0; + background: #fff; + padding: 0.25rem; + transform: translate(-1rem, -50%); + margin: 0; +} +.aform__input-field[data-v-c2bb50f8]:focus { + border: 1px solid var(--input-active-border-color); +} +.aform__input-field:focus + .aform__field-label[data-v-c2bb50f8] { + color: var(--input-active-label-color); +} +.aform__checkbox[data-v-c2bb50f8] { + cursor: pointer; + width: auto; +} +.aform__checkbox[data-v-c2bb50f8]:checked { + accent-color: var(--primary-color); + border: 1px solid black; +} +.aform__checkbox-container[data-v-c2bb50f8] { + width: 100%; + display: inline-block; + text-align: left; +} +.aform__checkbox-container input[data-v-c2bb50f8] { + width: auto; +} +.aform__checkbox-container:hover + .aform__field-label[data-v-c2bb50f8] { + color: var(--input-active-label-color); +} +.aform-primary-action[data-v-c2bb50f8] { + font-size: 100%; + text-align: center; + min-height: 2em; + padding: 0.25rem 1rem; + border: 1px solid var(--primary-color); + color: var(--primary-text-color); + background-color: var(--primary-color); + outline: 2px solid var(--primary-text-color); + transition: outline-offset 0.2s ease; + font-size: var(--font-size); + margin: 0.5ch; +} +.aform-primary-action[data-v-c2bb50f8]:hover, +.aform-primary-action[data-v-c2bb50f8]:active { + outline: 2px solid var(--primary-text-color); + outline-offset: -4px; + transition: outline-offset 0.2s ease; +} +tr[data-v-c2bb50f8]:focus { + background-color: #add8e6; + outline: auto; +} +.atable[data-v-c2bb50f8] { + font-family: var(--atable-font-family); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: var(--table-font-size); + border-collapse: collapse; +} +.row-index[data-v-c2bb50f8] { + color: var(--header-text-color); + font-weight: 700; + text-align: center; + -webkit-user-select: none; + user-select: none; + width: 2ch; +} +.expandable-row[data-v-c2bb50f8] { + border-top: 1px solid var(--row-border-color); + height: var(--atable-row-height); + border-left: 4px solid var(--row-border-color); +} +.expanded-row[data-v-c2bb50f8] { + border-bottom: 1px solid var(--row-border-color); + border-top: 1px solid var(--row-border-color); +} +.expanded-row-content[data-v-c2bb50f8] { + border-bottom: 1px solid var(--row-border-color); + border-top: 1px solid var(--row-border-color); + padding: 1.5rem; +} +.atable__cell[data-v-c2bb50f8] { + border-radius: 0; + box-sizing: border-box; + margin: 0; + outline: none; + box-shadow: none; + color: var(--cell-text-color); + text-overflow: ellipsis; + overflow: hidden; + padding-left: 0.5ch !important; + padding-right: 0.5ch; + padding-top: var(--atable-row-padding); + padding-bottom: var(--atable-row-padding); + border-spacing: 0px; + border-collapse: collapse; +} +.atable__cell[data-v-c2bb50f8]:focus, +.atable__cell[data-v-c2bb50f8]:focus-within { + background-color: var(--focus-cell-background); + outline-width: 2px; + outline-style: solid; + outline-color: var(--focus-cell-outline); + box-shadow: none; + min-height: 1.15em; + max-height: 1.15em; + overflow: hidden; +} +.table-row[data-v-c2bb50f8] { + border-top: 1px solid var(--row-border-color); + height: var(--atable-row-height); +} +.list-index[data-v-c2bb50f8] { + color: var(--header-text-color); + font-weight: 700; + padding-left: var(--atable-row-padding); + padding-right: 1em; + text-align: center; + -webkit-user-select: none; + user-select: none; + width: var(--6c56d534); + max-width: var(--6c56d534); +} +.tree-index[data-v-c2bb50f8] { + color: var(--header-text-color); + font-weight: 700; + text-align: center; + -webkit-user-select: none; + user-select: none; + width: 2ch; +} +.atable #header-index[data-v-c2bb50f8] { + width: var(--6c56d534); + max-width: var(--6c56d534); +} +.atable th[data-v-c2bb50f8] { + border-width: 0px; + border-style: solid; + border-radius: 0; + padding-left: 0.5ch; + padding-right: 0.5ch; + padding-top: var(--atable-row-padding); + padding-bottom: var(--atable-row-padding); + color: var(--gray-60); + height: var(--atable-row-height); + font-weight: 300; + letter-spacing: 0.05rem; +} +.atable th[data-v-c2bb50f8]:focus { + outline: none; +} +.amodal[data-v-c2bb50f8] { + z-index: 100; + position: absolute; + background-color: var(--row-color-zebra-dark); +} +.login-container[data-v-c2bb50f8] { + width: 100%; + position: relative; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-family: var(--font-family); +} +.account-container[data-v-c2bb50f8] { + width: 100%; + margin-left: auto; + margin-top: 0.5rem; + margin-right: auto; + display: flex; + flex-direction: column; + justify-content: center; +} +.account-header[data-v-c2bb50f8] { + display: flex; + flex-direction: column; + text-align: center; + margin-top: 0.5rem; +} +#account-title[data-v-c2bb50f8] { + font-size: 1.5rem; + line-height: 2rem; + font-weight: 600; + letter-spacing: -0.025em; + margin: 0; +} +#account-subtitle[data-v-c2bb50f8] { + font-size: 0.875rem; + line-height: 1.25rem; + margin: 1rem; +} +.login-form-container[data-v-c2bb50f8] { + display: grid; + gap: 0.5rem; +} +.login-form-element[data-v-c2bb50f8] { + display: grid; + margin: 0.5rem 0; +} +.login-field[data-v-c2bb50f8] { + padding: 0.5rem 0.25rem 0.25rem 0.5rem; + outline: 1px solid transparent; + border: 1px solid var(--input-border-color); + border-radius: 0.25rem; +} +.login-field[data-v-c2bb50f8]:focus { + border: 1px solid black; +} +.btn[data-v-c2bb50f8] { + background-color: var(--btn-color); + color: var(--btn-label-color); + border: 1px solid var(--btn-border); + margin: 0.5rem 0; + padding: 0.25rem; + position: relative; + cursor: pointer; +} +.btn[data-v-c2bb50f8]:hover { + background-color: var(--btn-hover); +} +.btn[data-v-c2bb50f8]:disabled { + background-color: light-dark(rgba(239, 239, 239, 0.3), rgba(59, 59, 59, 0.3)); + color: light-dark(rgb(84, 84, 84), rgb(170, 170, 170)); +} +.disabled[data-v-c2bb50f8] { + opacity: 0.5; +} +.loading-icon[data-v-c2bb50f8] { + animation: spin-c2bb50f8 1s linear infinite forwards; + display: inline-block; + margin-right: 0.2rem; + line-height: 0; + font-size: 1rem; + position: relative; + top: 0.2rem; +} +@keyframes spin-c2bb50f8 { + 0% { + transform: rotate(0); + } + to { + transform: rotate(360deg); + } +} +[data-v-c2bb50f8]:root { + --primary-color: #f2f2f2; + --primary-text-color: #666666; + --brand-color: #202a44; +} +body[data-v-c2bb50f8] { + font-family: var(--font-family); + background-color: #fff; + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + flex: 1 0 auto; + height: 100%; +} +.home-icon[data-v-c2bb50f8] { + font-size: 1.875rem; + text-align: left; + color: var(--primary-text-color); + border: 1px solid transparent; +} +.home-icon[data-v-c2bb50f8]:hover { + border: 1px solid var(--brand-primary); +} +.beam__navbar[data-v-c2bb50f8] { + padding: 0.625rem; + background-color: var(--primary-color); + margin-left: 0; + min-height: 4em; + max-height: 4em; + color: var(--primary-text-color); + display: flex; + flex-flow: row nowrap; + align-content: center; + justify-content: flex-start; + align-items: center; + position: relative; + border-bottom: 1px solid var(--row-border-color); +} +.beam__navbar .nav-title[data-v-c2bb50f8] { + display: inline-block; + border: 1px solid transparent; + margin-left: 0.625rem; + text-align: left; + font-size: 1.125rem; + color: var(--primary-text-color); +} +.beam__navbar .navbar-action-wrapper[data-v-c2bb50f8] { + position: absolute; + right: 0.625rem; + top: 50%; + transform: translateY(-50%); + text-align: right; +} +.beam__listview[data-v-c2bb50f8] { + list-style-type: none; + margin: 0rem 0.625rem; + padding: 0 0 2.5em; + margin-top: 1px; +} +.beam__listitem[data-v-c2bb50f8] { + padding: 0.625rem; + border-bottom: 1px solid var(--row-border-color); + max-width: 100%; + box-sizing: border-box; + display: flex; + flex-flow: row nowrap; + justify-content: space-between; + gap: 1.25rem; + cursor: pointer; + outline: 2px solid transparent; + outline-offset: -1px; +} +.beam__listitem[data-v-c2bb50f8]:focus { + outline: 2px solid var(--focus-cell-outline); + background-color: var(--focus-cell-background); +} +.beam__listtext[data-v-c2bb50f8] { + width: 80%; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + flex-grow: 1; + color: var(--primary-text-color); +} +.beam__listitem label[data-v-c2bb50f8] { + font-size: 0.875rem; + font-weight: 700; + display: block; + overflow: hidden; + text-overflow: ellipsis; +} +.beam__listitem p[data-v-c2bb50f8] { + font-size: 0.875rem; + margin: 0; + overflow: hidden; + text-overflow: ellipsis; +} +.beam__itemcount[data-v-c2bb50f8] { + font-size: 1.3125rem; + color: var(--primary-text-color); +} +.beam__itemcount span[data-v-c2bb50f8] { + margin: 0; + padding: 0; + outline: none; +} +.beam__listanchor[data-v-c2bb50f8] { + text-decoration: none; + outline: none; + color: var(--primary-text-color); +} +.btn[data-v-c2bb50f8] { + font-size: 0.875rem; + text-align: center; + padding: 0.3125rem 0.75rem; + border: 1px solid var(--btn-border); + color: var(--btn-label-color); + background-color: var(--btn-color); + cursor: pointer; +} +.btn[data-v-c2bb50f8]:hover, +.btn[data-v-c2bb50f8]:active { + background-color: var(--btn-hover); +} +.beam__actionfooter[data-v-c2bb50f8] { + margin-left: 0; + background: linear-gradient(180deg, transparent 0%, white 100%); + color: var(--text-color); + position: fixed; + bottom: 0; + left: 0; + right: 0; + padding: 0.625rem; + text-align: center; +} +.success[data-v-c2bb50f8] { + color: var(--brand-success); +} +.alert[data-v-c2bb50f8] { + color: var(--brand-danger); +} +.beam__modal[data-v-c2bb50f8] { + position: fixed; + inset: 0; + background-color: #00000080; + -webkit-backdrop-filter: blur(2px); + backdrop-filter: blur(2px); + z-index: 1000; + text-align: center; + padding: 1.25rem; +} +.beam__modal-confirm[data-v-c2bb50f8] { + background: #fff; + padding: 1.25rem; + width: 80%; + max-width: 400px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.beam__modal-confirm button[data-v-c2bb50f8] { + margin: 0.625rem; +} +.beam__modal-confirm h2[data-v-c2bb50f8] { + border-bottom: 1px solid var(--row-border-color); + padding-bottom: 0.625rem; + color: var(--primary-text-color); +} +.container[data-v-7261b52e] { + display: block; + position: relative; + padding-left: 2.5ch; + margin: 0; + margin-top: 0.5rem; + cursor: pointer; + font-size: 2rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.container input[data-v-7261b52e] { + position: absolute; + opacity: 0; + cursor: pointer; + height: 0; + width: 0; +} +.checkmark[data-v-7261b52e] { + position: absolute; + top: 0; + left: 0; + height: 2rem; + width: 2rem; + background-color: #eee; + outline: 2px solid transparent; + border: 1px solid var(--highlight); +} +.container:hover input ~ .checkmark[data-v-7261b52e] { + background-color: #fff; +} +.container input:checked ~ .checkmark[data-v-7261b52e] { + background-color: var(--brand-secondary); +} +.checkmark[data-v-7261b52e]:after { + content: ''; + position: absolute; + display: none; +} +.container input:checked ~ .checkmark[data-v-7261b52e]:after { + display: block; +} +.container .checkmark[data-v-7261b52e]:after { + left: 25%; + top: 50%; + width: 0.5rem; + height: 1rem; + border: solid var(--text-color); + border-width: 0 3px 3px 0; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg) translate(-50%, -50%); +} +:root { + --primary-color: #0098c9; + --primary-text-color: #ffffff; + --brand-color: #202a44; + --gray-5: #f2f2f2; + --gray-10: #e6e6e6; + --gray-20: #cccccc; + --gray-50: #808080; + --gray-60: #666666; + --gray-80: #333333; + --brand-danger: #e63c28; + --brand-success: #155724; + --row-color-zebra-light: #eeeeee; + --row-color-zebra-dark: #dddddd; + --focus-cell-background: #ffffff; + --focus-cell-outline: #000000; + --cell-border-color: #ffffff; + --cell-text-color: #3a3c41; + --active-cell-background: #ffffff; + --active-cell-outline: #e6a92d; + --row-border-color: var(--gray-20); + --header-border-color: #ffffff; + --header-text-color: var(--gray-20); + --row-number-background-color: #ffffff; + --input-border-color: var(--gray-20); + --input-label-color: var(--gray-60); + --input-active-border-color: #000000; + --input-active-label-color: #000000; + --required-border: #e63c28; + --font-size: 10px; + --font-family: Arimo, Arial, sans-serif; + --table-font-size: 16px; + --atable-font-family: 'Arimo', sans-serif; + --atable-row-padding: 0px; + --atable-row-height: 1.5em; + --btn-color: white; + --btn-border: #cccccc; + --btn-hover: #f2f2f2; + --btn-label-color: black; +} +.aform { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; + align-items: baseline; + padding: 1rem; + border: 1px solid var(--gray-5); + border-left: 4px solid var(--gray-5); + margin-bottom: 1rem; +} +.aform__form-element { + min-width: 30%; + flex-basis: 32%; + border: 1px solid transparent; + padding: 0; + margin: 0; + margin-right: 0.5rem; + margin-bottom: 0.5rem; + display: grid; + position: relative; + margin: 0.5rem 0; +} +.aform__input-field { + outline: 1px solid transparent; + border: 1px solid var(--input-border-color); + font-size: 1rem; + padding: 0.5rem 0.25rem 0.25rem 0.5rem; + margin: 0; + border-radius: 0; + box-sizing: border-box; + width: 100%; + position: relative; + color: var(--cell-text-color); +} +.aform__field-label { + color: var(--input-label-color); + display: inline-block; + position: absolute; + padding: 0 0.25rem; + margin: 0rem; + z-index: 2; + font-size: 0.7rem; + font-weight: 300; + letter-spacing: 0.05rem; + width: auto; + box-sizing: border-box; + background: #fff; + margin: 0; + border: 1px solid var(--input-border-color); + grid-row: 1; + top: 0; + left: 10px; + border: none; + transform: translateY(-50%); +} +p.error { + display: block; + display: inline-block; + display: none; + padding: 0rem 0rem 0rem 0.5rem; + margin: 0.5rem 0 0.25rem 0rem; + border: 1px solid transparent; + width: 100%; + width: auto; + color: var(--brand-danger); + font-size: 0.8rem; + position: absolute; + right: 0; + top: 0; + background: #fff; + padding: 0.25rem; + transform: translate(-1rem, -50%); + margin: 0; +} +.aform__input-field:focus { + border: 1px solid var(--input-active-border-color); +} +.aform__input-field:focus + .aform__field-label { + color: var(--input-active-label-color); +} +.aform__checkbox { + cursor: pointer; + width: auto; +} +.aform__checkbox:checked { + accent-color: var(--primary-color); + border: 1px solid black; +} +.aform__checkbox-container { + width: 100%; + display: inline-block; + text-align: left; +} +.aform__checkbox-container input { + width: auto; +} +.aform__checkbox-container:hover + .aform__field-label { + color: var(--input-active-label-color); +} +.aform-primary-action { + font-size: 100%; + text-align: center; + min-height: 2em; + padding: 0.25rem 1rem; + border: 1px solid var(--primary-color); + color: var(--primary-text-color); + background-color: var(--primary-color); + outline: 2px solid var(--primary-text-color); + transition: outline-offset 0.2s ease; + font-size: var(--font-size); + margin: 0.5ch; +} +.aform-primary-action:hover, +.aform-primary-action:active { + outline: 2px solid var(--primary-text-color); + outline-offset: -4px; + transition: outline-offset 0.2s ease; +} +tr:focus { + background-color: #add8e6; + outline: auto; +} +.atable { + font-family: var(--atable-font-family); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: var(--table-font-size); + border-collapse: collapse; +} +.row-index { + color: var(--header-text-color); + font-weight: 700; + text-align: center; + -webkit-user-select: none; + user-select: none; + width: 2ch; +} +.expandable-row { + border-top: 1px solid var(--row-border-color); + height: var(--atable-row-height); + border-left: 4px solid var(--row-border-color); +} +.expanded-row { + border-bottom: 1px solid var(--row-border-color); + border-top: 1px solid var(--row-border-color); +} +.expanded-row-content { + border-bottom: 1px solid var(--row-border-color); + border-top: 1px solid var(--row-border-color); + padding: 1.5rem; +} +.atable__cell { + border-radius: 0; + box-sizing: border-box; + margin: 0; + outline: none; + box-shadow: none; + color: var(--cell-text-color); + text-overflow: ellipsis; + overflow: hidden; + padding-left: 0.5ch !important; + padding-right: 0.5ch; + padding-top: var(--atable-row-padding); + padding-bottom: var(--atable-row-padding); + border-spacing: 0px; + border-collapse: collapse; +} +.atable__cell:focus, +.atable__cell:focus-within { + background-color: var(--focus-cell-background); + outline-width: 2px; + outline-style: solid; + outline-color: var(--focus-cell-outline); + box-shadow: none; + min-height: 1.15em; + max-height: 1.15em; + overflow: hidden; +} +.table-row { + border-top: 1px solid var(--row-border-color); + height: var(--atable-row-height); +} +.list-index { + color: var(--header-text-color); + font-weight: 700; + padding-left: var(--atable-row-padding); + padding-right: 1em; + text-align: center; + -webkit-user-select: none; + user-select: none; + width: var(--5d142590); + max-width: var(--5d142590); +} +.tree-index { + color: var(--header-text-color); + font-weight: 700; + text-align: center; + -webkit-user-select: none; + user-select: none; + width: 2ch; +} +.atable #header-index { + width: var(--5d142590); + max-width: var(--5d142590); +} +.atable th { + border-width: 0px; + border-style: solid; + border-radius: 0; + padding-left: 0.5ch; + padding-right: 0.5ch; + padding-top: var(--atable-row-padding); + padding-bottom: var(--atable-row-padding); + color: var(--gray-60); + height: var(--atable-row-height); + font-weight: 300; + letter-spacing: 0.05rem; +} +.atable th:focus { + outline: none; +} +.amodal { + z-index: 100; + position: absolute; + background-color: var(--row-color-zebra-dark); +} +.login-container { + width: 100%; + position: relative; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-family: var(--font-family); +} +.account-container { + width: 100%; + margin-left: auto; + margin-top: 0.5rem; + margin-right: auto; + display: flex; + flex-direction: column; + justify-content: center; +} +.account-header { + display: flex; + flex-direction: column; + text-align: center; + margin-top: 0.5rem; +} +#account-title { + font-size: 1.5rem; + line-height: 2rem; + font-weight: 600; + letter-spacing: -0.025em; + margin: 0; +} +#account-subtitle { + font-size: 0.875rem; + line-height: 1.25rem; + margin: 1rem; +} +.login-form-container { + display: grid; + gap: 0.5rem; +} +.login-form-element { + display: grid; + margin: 0.5rem 0; +} +.login-field { + padding: 0.5rem 0.25rem 0.25rem 0.5rem; + outline: 1px solid transparent; + border: 1px solid var(--input-border-color); + border-radius: 0.25rem; +} +.login-field:focus { + border: 1px solid black; +} +.btn { + background-color: var(--btn-color); + color: var(--btn-label-color); + border: 1px solid var(--btn-border); + margin: 0.5rem 0; + padding: 0.25rem; + position: relative; + cursor: pointer; +} +.btn:hover { + background-color: var(--btn-hover); +} +.btn:disabled { + background-color: light-dark(rgba(239, 239, 239, 0.3), rgba(59, 59, 59, 0.3)); + color: light-dark(rgb(84, 84, 84), rgb(170, 170, 170)); +} +.disabled { + opacity: 0.5; +} +.loading-icon { + animation: spin 1s linear infinite forwards; + display: inline-block; + margin-right: 0.2rem; + line-height: 0; + font-size: 1rem; + position: relative; + top: 0.2rem; +} +@keyframes spin { + 0% { + transform: rotate(0); + } + to { + transform: rotate(360deg); + } +} +:root { + --primary-color: #f2f2f2; + --primary-text-color: #666666; + --brand-color: #202a44; +} +body { + font-family: var(--font-family); + background-color: #fff; + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + flex: 1 0 auto; + height: 100%; +} +.home-icon { + font-size: 1.875rem; + text-align: left; + color: var(--primary-text-color); + border: 1px solid transparent; +} +.home-icon:hover { + border: 1px solid var(--brand-primary); +} +.beam__navbar { + padding: 0.625rem; + background-color: var(--primary-color); + margin-left: 0; + min-height: 4em; + max-height: 4em; + color: var(--primary-text-color); + display: flex; + flex-flow: row nowrap; + align-content: center; + justify-content: flex-start; + align-items: center; + position: relative; + border-bottom: 1px solid var(--row-border-color); +} +.beam__navbar .nav-title { + display: inline-block; + border: 1px solid transparent; + margin-left: 0.625rem; + text-align: left; + font-size: 1.125rem; + color: var(--primary-text-color); +} +.beam__navbar .navbar-action-wrapper { + position: absolute; + right: 0.625rem; + top: 50%; + transform: translateY(-50%); + text-align: right; +} +.beam__listview { + list-style-type: none; + margin: 0rem 0.625rem; + padding: 0 0 2.5em; + margin-top: 1px; +} +.beam__listitem { + padding: 0.625rem; + border-bottom: 1px solid var(--row-border-color); + max-width: 100%; + box-sizing: border-box; + display: flex; + flex-flow: row nowrap; + justify-content: space-between; + gap: 1.25rem; + cursor: pointer; + outline: 2px solid transparent; + outline-offset: -1px; +} +.beam__listitem:focus { + outline: 2px solid var(--focus-cell-outline); + background-color: var(--focus-cell-background); +} +.beam__listtext { + width: 80%; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + flex-grow: 1; + color: var(--primary-text-color); +} +.beam__listitem label { + font-size: 0.875rem; + font-weight: 700; + display: block; + overflow: hidden; + text-overflow: ellipsis; +} +.beam__listitem p { + font-size: 0.875rem; + margin: 0; + overflow: hidden; + text-overflow: ellipsis; +} +.beam__itemcount { + font-size: 1.3125rem; + color: var(--primary-text-color); +} +.beam__itemcount span { + margin: 0; + padding: 0; + outline: none; +} +.beam__listanchor { + text-decoration: none; + outline: none; + color: var(--primary-text-color); +} +.btn { + font-size: 0.875rem; + text-align: center; + padding: 0.3125rem 0.75rem; + border: 1px solid var(--btn-border); + color: var(--btn-label-color); + background-color: var(--btn-color); + cursor: pointer; +} +.btn:hover, +.btn:active { + background-color: var(--btn-hover); +} +.beam__actionfooter { + margin-left: 0; + background: linear-gradient(180deg, transparent 0%, white 100%); + color: var(--text-color); + position: fixed; + bottom: 0; + left: 0; + right: 0; + padding: 0.625rem; + text-align: center; +} +.success { + color: var(--brand-success); +} +.alert { + color: var(--brand-danger); +} +.beam__modal { + position: fixed; + inset: 0; + background-color: #00000080; + -webkit-backdrop-filter: blur(2px); + backdrop-filter: blur(2px); + z-index: 1000; + text-align: center; + padding: 1.25rem; +} +.beam__modal-confirm { + background: #fff; + padding: 1.25rem; + width: 80%; + max-width: 400px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.beam__modal-confirm button { + margin: 0.625rem; +} +.beam__modal-confirm h2 { + border-bottom: 1px solid var(--row-border-color); + padding-bottom: 0.625rem; + color: var(--primary-text-color); +} +div[data-v-ea555c73] { + padding-top: 0.5rem; +} +li[data-v-ea555c73] { + list-style: none; + padding: 2rem; + margin: 0.5rem; + font-size: 150%; + border-bottom: 2px solid grey; + display: flex; + justify-content: space-between; + padding: 10px; +} +li[data-v-ea555c73]:active { + border-bottom: 2px solid ble; +} +.right-align[data-v-ea555c73] { + margin-left: auto; +} +b[data-v-fc36c5e0] { + display: flex; + justify-content: center; + align-items: center; +} +.container[data-v-fc36c5e0] { + display: flex; + gap: 20px; +} +.box[data-v-fc36c5e0] { + padding: 2rem; + margin: 0.5rem; + font-size: 100%; + border: 2px solid gray; + outline: 2px solid transparent; + flex: 1; + min-width: 100px; +} +.fix-height[data-v-fc36c5e0] { + height: 7rem; + font-size: 150%; + text-align: center; + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 20px; +} diff --git a/beam/www/beam/index.js.map b/beam/www/beam/index.js.map new file mode 100644 index 00000000..2083e445 --- /dev/null +++ b/beam/www/beam/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../node_modules/@vue/runtime-core/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../node_modules/@vue/runtime-core/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../../node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../../node_modules/@vue/runtime-dom/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../../node_modules/@stonecrop/beam/dist/beam.js","../../../node_modules/vue-router/dist/vue-router.mjs","Beam.vue","pages/Home.vue","pages/WorkOrder.vue","pages/Receive.vue","pages/Ship.vue","pages/Transfer.vue","pages/Manufacture.vue","pages/Repack.vue","pages/JobCard.vue","pages/Operation.vue","index.ts"],"sourcesContent":["/**\n* @vue/shared v3.4.37\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str, expectsLowerCase) {\n const set = new Set(str.split(\",\"));\n return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction((str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n});\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](...arg);\n }\n};\nconst def = (obj, key, value, writable = false) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n writable,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"HOISTED\": -1,\n \"-1\": \"HOISTED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `HOISTED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n start = Math.max(0, Math.min(start, source.length));\n end = Math.max(0, Math.min(end, source.length));\n if (start > end) return \"\";\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = \"\";\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n if (isString(value) || typeof value === \"number\") {\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props) return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>| looseEqual(item, val));\n}\n\nconst isRef = (val) => {\n return !!(val && val.__v_isRef === true);\n};\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (isRef(val)) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return (\n // Symbol.description in es2019+ so we need to cast here to pass\n // the lib: es2016 check\n isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n );\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n* @vue/reactivity v3.4.37\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { NOOP, extend, isArray, isSymbol, isMap, isIntegerKey, hasOwn, hasChanged, isObject, makeMap, capitalize, toRawType, def, isFunction } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this._active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n this._active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeEffect;\nclass ReactiveEffect {\n constructor(fn, trigger, scheduler, scope) {\n this.fn = fn;\n this.trigger = trigger;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n /**\n * @internal\n */\n this._dirtyLevel = 4;\n /**\n * @internal\n */\n this._trackId = 0;\n /**\n * @internal\n */\n this._runnings = 0;\n /**\n * @internal\n */\n this._shouldSchedule = false;\n /**\n * @internal\n */\n this._depsLength = 0;\n recordEffectScope(this, scope);\n }\n get dirty() {\n if (this._dirtyLevel === 2 || this._dirtyLevel === 3) {\n this._dirtyLevel = 1;\n pauseTracking();\n for (let i = 0; i < this._depsLength; i++) {\n const dep = this.deps[i];\n if (dep.computed) {\n triggerComputed(dep.computed);\n if (this._dirtyLevel >= 4) {\n break;\n }\n }\n }\n if (this._dirtyLevel === 1) {\n this._dirtyLevel = 0;\n }\n resetTracking();\n }\n return this._dirtyLevel >= 4;\n }\n set dirty(v) {\n this._dirtyLevel = v ? 4 : 0;\n }\n run() {\n this._dirtyLevel = 0;\n if (!this.active) {\n return this.fn();\n }\n let lastShouldTrack = shouldTrack;\n let lastEffect = activeEffect;\n try {\n shouldTrack = true;\n activeEffect = this;\n this._runnings++;\n preCleanupEffect(this);\n return this.fn();\n } finally {\n postCleanupEffect(this);\n this._runnings--;\n activeEffect = lastEffect;\n shouldTrack = lastShouldTrack;\n }\n }\n stop() {\n if (this.active) {\n preCleanupEffect(this);\n postCleanupEffect(this);\n this.onStop && this.onStop();\n this.active = false;\n }\n }\n}\nfunction triggerComputed(computed) {\n return computed.value;\n}\nfunction preCleanupEffect(effect2) {\n effect2._trackId++;\n effect2._depsLength = 0;\n}\nfunction postCleanupEffect(effect2) {\n if (effect2.deps.length > effect2._depsLength) {\n for (let i = effect2._depsLength; i < effect2.deps.length; i++) {\n cleanupDepEffect(effect2.deps[i], effect2);\n }\n effect2.deps.length = effect2._depsLength;\n }\n}\nfunction cleanupDepEffect(dep, effect2) {\n const trackId = dep.get(effect2);\n if (trackId !== void 0 && effect2._trackId !== trackId) {\n dep.delete(effect2);\n if (dep.size === 0) {\n dep.cleanup();\n }\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn, NOOP, () => {\n if (_effect.dirty) {\n _effect.run();\n }\n });\n if (options) {\n extend(_effect, options);\n if (options.scope) recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nlet pauseScheduleStack = 0;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction pauseScheduling() {\n pauseScheduleStack++;\n}\nfunction resetScheduling() {\n pauseScheduleStack--;\n while (!pauseScheduleStack && queueEffectSchedulers.length) {\n queueEffectSchedulers.shift()();\n }\n}\nfunction trackEffect(effect2, dep, debuggerEventExtraInfo) {\n var _a;\n if (dep.get(effect2) !== effect2._trackId) {\n dep.set(effect2, effect2._trackId);\n const oldDep = effect2.deps[effect2._depsLength];\n if (oldDep !== dep) {\n if (oldDep) {\n cleanupDepEffect(oldDep, effect2);\n }\n effect2.deps[effect2._depsLength++] = dep;\n } else {\n effect2._depsLength++;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n }\n}\nconst queueEffectSchedulers = [];\nfunction triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {\n var _a;\n pauseScheduling();\n for (const effect2 of dep.keys()) {\n let tracking;\n if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0);\n effect2._dirtyLevel = dirtyLevel;\n }\n if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n effect2.trigger();\n if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) {\n effect2._shouldSchedule = false;\n if (effect2.scheduler) {\n queueEffectSchedulers.push(effect2.scheduler);\n }\n }\n }\n }\n resetScheduling();\n}\n\nconst createDep = (cleanup, computed) => {\n const dep = /* @__PURE__ */ new Map();\n dep.cleanup = cleanup;\n dep.computed = computed;\n return dep;\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = createDep(() => depsMap.delete(key)));\n }\n trackEffect(\n activeEffect,\n dep,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key\n } : void 0\n );\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n return;\n }\n let deps = [];\n if (type === \"clear\") {\n deps = [...depsMap.values()];\n } else if (key === \"length\" && isArray(target)) {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || !isSymbol(key2) && key2 >= newLength) {\n deps.push(dep);\n }\n });\n } else {\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n switch (type) {\n case \"add\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isIntegerKey(key)) {\n deps.push(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n pauseScheduling();\n for (const dep of deps) {\n if (dep) {\n triggerEffects(\n dep,\n 4,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n } : void 0\n );\n }\n }\n resetScheduling();\n}\nfunction getDepFromReactive(object, key) {\n const depsMap = targetMap.get(object);\n return depsMap && depsMap.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\", i + \"\");\n }\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n return arr[key](...args.map(toRaw));\n } else {\n return res;\n }\n };\n });\n [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n pauseTracking();\n pauseScheduling();\n const res = toRaw(this)[key].apply(this, args);\n resetScheduling();\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction hasOwnProperty(key) {\n if (!isSymbol(key)) key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the receiver is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n return false;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(\n true\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly2 = false, isShallow2 = false) {\n target = target[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly2) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has: has2 } = getProto(rawTarget);\n const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n if (has2.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has2.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n}\nfunction has(key, isReadonly2 = false) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly2) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly2 = false) {\n target = target[\"__v_raw\"];\n !isReadonly2 && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n}\nfunction add(value, _isShallow = false) {\n if (!_isShallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n}\nfunction set(key, value, _isShallow = false) {\n if (!_isShallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2 ? get2.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\", void 0, void 0, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly2, isShallow2) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n !isReadonly2 && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n !isReadonly2 && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations2 = {\n get(key) {\n return get(this, key);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations2 = {\n get(key) {\n return get(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has,\n add(value) {\n return add.call(this, value, true);\n },\n set(key, value) {\n return set.call(this, key, value, true);\n },\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations2[method] = createIterableMethod(\n method,\n true,\n true\n );\n });\n return [\n mutableInstrumentations2,\n readonlyInstrumentations2,\n shallowInstrumentations2,\n shallowReadonlyInstrumentations2\n ];\n}\nconst [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has2.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `value cannot be made ${isReadonly2 ? \"readonly\" : \"reactive\"}: ${String(\n target\n )}`\n );\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nconst COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this.getter = getter;\n this._setter = _setter;\n this.dep = void 0;\n this.__v_isRef = true;\n this[\"__v_isReadonly\"] = false;\n this.effect = new ReactiveEffect(\n () => getter(this._value),\n () => triggerRefValue(\n this,\n this.effect._dirtyLevel === 2 ? 2 : 3\n )\n );\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\"] = isReadonly;\n }\n get value() {\n const self = toRaw(this);\n if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) {\n triggerRefValue(self, 4);\n }\n trackRefValue(self);\n if (self.effect._dirtyLevel >= 2) {\n if (!!(process.env.NODE_ENV !== \"production\") && this._warnRecursive) {\n warn(COMPUTED_SIDE_EFFECT_WARN, `\n\ngetter: `, this.getter);\n }\n triggerRefValue(self, 2);\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x\n get _dirty() {\n return this.effect.dirty;\n }\n set _dirty(v) {\n this.effect.dirty = v;\n }\n // #endregion\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n warn(\"Write operation failed: computed value is readonly\");\n } : NOOP;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nfunction trackRefValue(ref2) {\n var _a;\n if (shouldTrack && activeEffect) {\n ref2 = toRaw(ref2);\n trackEffect(\n activeEffect,\n (_a = ref2.dep) != null ? _a : ref2.dep = createDep(\n () => ref2.dep = void 0,\n ref2 instanceof ComputedRefImpl ? ref2 : void 0\n ),\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"get\",\n key: \"value\"\n } : void 0\n );\n }\n}\nfunction triggerRefValue(ref2, dirtyLevel = 4, newVal, oldVal) {\n ref2 = toRaw(ref2);\n const dep = ref2.dep;\n if (dep) {\n triggerEffects(\n dep,\n dirtyLevel,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: newVal,\n oldValue: oldVal\n } : void 0\n );\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = void 0;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n const oldVal = this._rawValue;\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, 4, newVal, oldVal);\n }\n }\n}\nfunction triggerRef(ref2) {\n triggerRefValue(ref2, 4, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = void 0;\n this.__v_isRef = true;\n const { get, set } = factory(\n () => trackRefValue(this),\n () => triggerRefValue(this)\n );\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this.__v_isRef = true;\n this.__v_isReadonly = true;\n }\n get value() {\n return this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nconst deferredComputed = computed;\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\"\n};\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseScheduling, pauseTracking, proxyRefs, reactive, readonly, ref, resetScheduling, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, track, trigger, triggerRef, unref };\n","/**\n* @vue/runtime-core v3.4.37\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, ref, shallowReadonly, track, reactive, shallowReactive, trigger, isReactive, ReactiveEffect, isShallow, getCurrentScope, customRef, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, isBuiltInDirective, EMPTY_OBJ, isObject, remove, isRegExp, invokeArrayFns, toHandlerKey, capitalize, camelize, hasOwn, isGloballyAllowed, NO, hyphenate, isReservedProp, EMPTY_ARR, toRawType, makeMap, def, isOn, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, hasChanged, isSet, isMap, isPlainObject, looseToNumber, isModelListener, toNumber } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nlet isWarning = false;\nfunction warn$1(msg, ...args) {\n if (isWarning) return;\n isWarning = true;\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n // eslint-disable-next-line no-restricted-syntax\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n isWarning = false;\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\")) return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\",\n \"COMPONENT_UPDATE\": 15,\n \"15\": \"COMPONENT_UPDATE\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush\",\n [15]: \"component update\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n if (isArray(fn)) {\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n );\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n pauseTracking();\n callWithErrorHandling(\n appErrorHandler,\n null,\n 10,\n [err, exposedInstance, errorInfo]\n );\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else {\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.pre) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!queue.length || !queue.includes(\n job,\n isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n )) {\n if (job.id == null) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs || !activePostFlushCbs.includes(\n cb,\n cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n )) {\n pendingPostFlushCbs.push(cb);\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n const cb = activePostFlushCbs[postFlushIndex];\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n if (cb.active !== false) cb();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre) return -1;\n if (b.pre && !a.pre) return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n queue.sort(comparator);\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n callWithErrorHandling(\n job,\n job.i,\n job.i ? 15 : 14\n );\n }\n }\n } finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n } else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.i;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n } else {\n seen.set(fn, count + 1);\n }\n }\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Map();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n instance.effect.dirty = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record) return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (let i = 0; i < instances.length; i++) {\n const instance = instances[i];\n const oldComp = normalizeClassComponent(instance.type);\n let dirtyInstances = hmrDirtyComponents.get(oldComp);\n if (!dirtyInstances) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set());\n }\n dirtyInstances.add(instance);\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n dirtyInstances.add(instance);\n instance.ceReload(newComp.styles);\n dirtyInstances.delete(instance);\n } else if (instance.parent) {\n instance.parent.effect.dirty = true;\n queueJob(() => {\n instance.parent.update();\n dirtyInstances.delete(instance);\n });\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n }\n queuePostFlushCb(() => {\n hmrDirtyComponents.clear();\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n // eslint-disable-next-line no-restricted-syntax\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx) return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getComponentPublicInstance(currentRenderingInstance);\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n};\nconst recursiveGetSubtree = (instance) => {\n const subTree = instance.subTree;\n return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;\n};\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: BaseTransitionPropsValidators,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n for (const c of children) {\n if (c.type !== Comment) {\n if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n warn$1(\n \" can only be used on a single element or component. Use for lists.\"\n );\n break;\n }\n child = c;\n hasFound = true;\n if (!!!(process.env.NODE_ENV !== \"production\")) break;\n }\n }\n }\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n warn$1(`invalid mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n let enterHooks = resolveTransitionHooks(\n innerChild,\n rawProps,\n state,\n instance,\n // #11061, ensure enterHooks is fresh after clone\n (hooks) => enterHooks = hooks\n );\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) {\n const leavingHooks = resolveTransitionHooks(\n oldInnerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\" && innerChild.type !== Comment) {\n state.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n if (instance.update.active !== false) {\n instance.effect.dirty = true;\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(\n state,\n oldInnerChild\n );\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el[leaveCbKey] = () => {\n earlyRemove();\n el[leaveCbKey] = void 0;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance, postClone) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(\n hook,\n instance,\n 9,\n args\n );\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every((hook2) => hook2.length <= 1)) done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el[leaveCbKey]) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n leavingVNode.el[leaveCbKey]();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n const done = el[enterCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el[enterCbKey] = void 0;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key2 = String(vnode.key);\n if (el[enterCbKey]) {\n el[enterCbKey](\n true\n /* cancelled */\n );\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = el[leaveCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el[leaveCbKey] = void 0;\n if (leavingVNodesCache[key2] === vnode) {\n delete leavingVNodesCache[key2];\n }\n };\n leavingVNodesCache[key2] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode2) {\n const hooks2 = resolveTransitionHooks(\n vnode2,\n props,\n state,\n instance,\n postClone\n );\n if (postClone) postClone(hooks2);\n return hooks2;\n }\n };\n return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n if (!isKeepAlive(vnode)) {\n return vnode;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && vnode.component) {\n return vnode.component.subTree;\n }\n const { shapeFlag, children } = vnode;\n if (children) {\n if (shapeFlag & 16) {\n return children[0];\n }\n if (shapeFlag & 32 && isFunction(children.default)) {\n return children.default();\n }\n }\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n if (child.type === Fragment) {\n if (child.patchFlag & 128) keyedFragmentCount++;\n ret = ret.concat(\n getTransitionRawChildren(child.children, keepComment, key)\n );\n } else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2;\n }\n }\n return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8326: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.effect.dirty = true;\n queueJob(instance.parent.update);\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const sharedContext = instance.ctx;\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = /* @__PURE__ */ new Map();\n const keys = /* @__PURE__ */ new Set();\n let current = null;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const {\n renderer: {\n p: patch,\n m: move,\n um: _unmount,\n o: { createElement }\n }\n } = sharedContext;\n const storageContainer = createElement(\"div\");\n sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n const instance2 = vnode.component;\n move(vnode, container, anchor, 0, parentSuspense);\n patch(\n instance2.vnode,\n vnode,\n container,\n anchor,\n instance2,\n parentSuspense,\n namespace,\n vnode.slotScopeIds,\n optimized\n );\n queuePostRenderEffect(() => {\n instance2.isDeactivated = false;\n if (instance2.a) {\n invokeArrayFns(instance2.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance2 = vnode.component;\n invalidateMount(instance2.m);\n invalidateMount(instance2.a);\n move(vnode, storageContainer, null, 1, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance2.da) {\n invokeArrayFns(instance2.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n instance2.isDeactivated = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n function unmount(vnode) {\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && (!filter || !filter(name))) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (cached && (!current || !isSameVNodeType(cached, current))) {\n unmount(cached);\n } else if (current) {\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n watch(\n () => [props.include, props.exclude],\n ([include, exclude]) => {\n include && pruneCache((name) => matches(include, name));\n exclude && pruneCache((name) => !matches(exclude, name));\n },\n // prune post-render after `current` has been updated\n { flush: \"post\", deep: true }\n );\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n if (pendingCacheKey != null) {\n if (isSuspense(instance.subTree.type)) {\n queuePostRenderEffect(() => {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }, instance.subTree.suspense);\n } else {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach((cached) => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type && cached.key === vnode.key) {\n resetShapeFlag(vnode);\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n if (vnode.type === Comment) {\n current = null;\n return vnode;\n }\n const comp = vnode.type;\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n );\n const { include, exclude, max } = props;\n if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128) {\n rawVNode.ssContent = vnode;\n }\n }\n pendingCacheKey = key;\n if (cachedVNode) {\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n setTransitionHooks(vnode, vnode.transition);\n }\n vnode.shapeFlag |= 512;\n keys.delete(key);\n keys.add(key);\n } else {\n keys.add(key);\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n vnode.shapeFlag |= 256;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n } else if (isString(pattern)) {\n return pattern.split(\",\").includes(name);\n } else if (isRegExp(pattern)) {\n return pattern.test(name);\n }\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n vnode.shapeFlag &= ~256;\n vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => {\n if (!isInSSRComponentSetup || lifecycle === \"sp\") {\n injectHook(lifecycle, (...args) => hook(...args), target);\n }\n};\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n \"rtg\"\n);\nconst onRenderTracked = createHook(\n \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn$1(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res) res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n if (name !== \"default\") props.name = name;\n return createVNode(\"slot\", props, fallback && fallback());\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(\n Fragment,\n {\n key: (props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key || `_${name}`) + // #7256 force differentiate fallback content from actual content\n (!validSlotContent && fallback ? \"_fb\" : \"\")\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child)) return true;\n if (child.type === Comment) return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i) return null;\n if (isStatefulComponent(i)) return getComponentPublicInstance(i);\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n i.effect.dirty = true;\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n if (key === \"__v_skip\") {\n return true;\n }\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance.attrs, \"get\", \"\");\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate \n\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n","\n\n\n\n","\n\n\n","\n\n\n\n","\n\n\n","\n\n\n\n\n","\n\n\n\n\n","import {\n\tActionFooter,\n\tBeamModal,\n\tBeamModalOutlet,\n\tConfirm,\n\tItemCheck,\n\tItemCount,\n\tListAnchor,\n\tListItem,\n\tListView,\n\tNavbar,\n\tScanInput,\n} from '@stonecrop/beam'\nimport { createApp } from 'vue'\nimport { createRouter, createWebHashHistory, type RouteRecordRaw } from 'vue-router'\n\nimport Beam from './Beam.vue'\nimport { makeServer } from './mocks/mirage'\nimport Home from './pages/Home.vue'\nimport Workstation from './pages/Workstation.vue'\nimport WorkOrder from './pages/WorkOrder.vue'\nimport Receive from './pages/Receive.vue'\nimport Ship from './pages/Ship.vue'\nimport Transfer from './pages/Transfer.vue'\nimport Manufacture from './pages/Manufacture.vue'\nimport Repack from './pages/Repack.vue'\nimport JobCard from './pages/JobCard.vue'\nimport Operation from './pages/Operation.vue'\n\nif (import.meta.env.DEV) {\n\tmakeServer()\n}\n\nconst routes: RouteRecordRaw[] = [\n\t{\n\t\tpath: '/',\n\t\tname: 'home',\n\t\tcomponent: Home,\n\t},\n\t{\n\t\tpath: '',\n\t\tname: 'home',\n\t\tcomponent: Home,\n\t},\n\t{\n\t\tpath: '/manufacture',\n\t\tname: 'manufacture',\n\t\tcomponent: Manufacture,\n\t},\n\t{\n\t\tpath: '/work_order/:orderId/',\n\t\tname: 'work_order',\n\t\tcomponent: WorkOrder,\n\t},\n\t{\n\t\tpath: '/job_card/:orderId/',\n\t\tname: 'job_card',\n\t\tcomponent: JobCard,\n\t},\n\t{\n\t\tpath: '/work_order/:orderId/operation/:id',\n\t\tname: 'operation',\n\t\tcomponent: Operation,\n\t},\n\t{\n\t\tpath: '/transfer',\n\t\tname: 'transfer',\n\t\tcomponent: Transfer,\n\t},\n\t{\n\t\tpath: '/receive',\n\t\tname: 'receive',\n\t\tcomponent: Receive,\n\t},\n\t{\n\t\tpath: '/ship',\n\t\tname: 'ship',\n\t\tcomponent: Ship,\n\t},\n\t{\n\t\tpath: '/repack',\n\t\tname: 'repack',\n\t\tcomponent: Repack,\n\t},\n\t// {\n\t// \tpath: '/workstation',\n\t// \tname: 'workstation',\n\t// \tcomponent: Workstation,\n\t// },\n]\n\nconst router = createRouter({\n\thistory: createWebHashHistory(),\n\troutes,\n})\n\nconst app = createApp(Beam)\napp.use(router)\napp.component('ActionFooter', ActionFooter)\napp.component('BeamModal', BeamModal)\napp.component('BeamModalOutlet', BeamModalOutlet)\napp.component('Confirm', Confirm)\napp.component('ItemCheck', ItemCheck)\napp.component('ItemCount', ItemCount)\napp.component('ListAnchor', ListAnchor)\napp.component('ListItem', ListItem)\napp.component('ListView', ListView)\napp.component('Navbar', Navbar)\napp.component('ScanInput', ScanInput)\napp.mount('#beam')\n"],"names":["makeMap","str","expectsLowerCase","set","val","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","isOn","key","isModelListener","extend","remove","arr","el","i","hasOwnProperty","hasOwn","isArray","isMap","toTypeString","isSet","isFunction","isString","isSymbol","isObject","isPromise","objectToString","value","toRawType","isPlainObject","isIntegerKey","isReservedProp","cacheStringFunction","fn","cache","camelizeRE","camelize","_","c","hyphenateRE","hyphenate","capitalize","toHandlerKey","hasChanged","oldValue","invokeArrayFns","fns","arg","def","obj","writable","looseToNumber","n","_globalThis","getGlobalThis","normalizeStyle","res","item","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","ret","tmp","normalizeClass","name","isRef","toDisplayString","replacer","_key","entries","val2","stringifySymbol","v","_a","activeEffectScope","EffectScope","detached","currentEffectScope","fromParent","l","last","recordEffectScope","effect","scope","getCurrentScope","activeEffect","ReactiveEffect","trigger","scheduler","pauseTracking","dep","triggerComputed","resetTracking","lastShouldTrack","shouldTrack","lastEffect","preCleanupEffect","postCleanupEffect","computed","effect2","cleanupDepEffect","trackId","pauseScheduleStack","trackStack","pauseScheduling","resetScheduling","queueEffectSchedulers","trackEffect","debuggerEventExtraInfo","oldDep","triggerEffects","dirtyLevel","tracking","createDep","cleanup","targetMap","ITERATE_KEY","MAP_KEY_ITERATE_KEY","track","target","type","depsMap","newValue","oldTarget","deps","newLength","key2","isNonTrackableKeys","builtInSymbols","arrayInstrumentations","createArrayInstrumentations","instrumentations","args","toRaw","BaseReactiveHandler","_isReadonly","_isShallow","receiver","isReadonly2","isShallow2","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","readonly","reactive","MutableReactiveHandler","isOldValueReadonly","isReadonly","isShallow","hadKey","result","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","shallowReadonlyHandlers","toShallow","getProto","get","rawTarget","rawKey","has2","wrap","toReadonly","toReactive","has","size","add","get2","deleteEntry","clear","hadItems","createForEach","callback","thisArg","observed","createIterableMethod","method","targetIsMap","isPair","isKeyOnly","innerIterator","done","createReadonlyMethod","createInstrumentations","mutableInstrumentations2","shallowInstrumentations2","readonlyInstrumentations2","shallowReadonlyInstrumentations2","mutableInstrumentations","readonlyInstrumentations","shallowInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","shallow","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","shallowReadonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","createReactiveObject","shallowReactive","shallowReadonly","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","isReactive","isProxy","raw","markRaw","ComputedRefImpl","getter","_setter","isSSR","triggerRefValue","self","trackRefValue","getterOrOptions","debugOptions","setter","onlyGetter","ref2","newVal","oldVal","r","ref","createRef","shallowRef","rawValue","RefImpl","__v_isShallow","useDirectValue","unref","shallowUnwrapHandlers","proxyRefs","objectWithRefs","stack","isWarning","warn$1","msg","instance","appWarnHandler","trace","getComponentTrace","callWithErrorHandling","a","_b","vnode","formatComponentName","warnArgs","formatTrace","currentVNode","normalizedStack","parentInstance","logs","entry","formatTraceEntry","recurseCount","postfix","isRoot","open","close","formatProps","props","keys","formatProp","err","handleError","callWithAsyncErrorHandling","values","throwInDev","contextVNode","cur","exposedInstance","errorInfo","errorCapturedHooks","appErrorHandler","logError","isFlushing","isFlushPending","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","nextTick","p","findInsertionIndex","id","start","end","middle","middleJob","middleJobId","getId","queueJob","job","queueFlush","flushJobs","invalidateJob","queuePostFlushCb","cb","flushPreFlushCbs","seen","flushPostFlushCbs","deduped","b","comparator","diff","check","define_process_env_default","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","prev","pushScopeId","popScopeId","withCtx","ctx","isNonScopedSlot","renderFnWithContext","setBlockTracking","prevInstance","withDirectives","directives","getComponentPublicInstance","bindings","dir","modifiers","traverse","invokeDirectiveHook","prevVNode","oldBindings","binding","hook","setTransitionHooks","hooks","defineComponent","options","extraOptions","isAsyncWrapper","isKeepAlive","onActivated","registerKeepAliveHook","onDeactivated","currentInstance","wrappedHook","current","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","reset","setCurrentInstance","createHook","lifecycle","isInSSRComponentSetup","onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","COMPONENTS","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","resolveDynamicComponent","component","warnMissing","Component","selfName","getComponentName","resolve","registry","renderList","source","renderItem","index","cached","renderSlot","slots","fallback","noSlotted","createVNode","slot","openBlock","validSlotContent","ensureValidVNode","rendered","createBlock","Fragment","vnodes","child","isVNode","Comment","getPublicInstance","isStatefulComponent","publicPropertiesMap","resolveMergedOptions","instanceWatch","hasSetupBinding","state","PublicInstanceProxyHandlers","setupState","data","accessCache","appContext","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","propsOptions","descriptor","normalizePropsOrEmits","applyOptions","publicThis","callHook","dataOptions","computedOptions","methods","watchOptions","provideOptions","injectOptions","created","beforeMount","mounted","beforeUpdate","updated","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","render","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","inheritAttrs","components","filters","resolveInjections","methodHandler","opt","createWatcher","provides","provide","registerLifecycleHook","register","_hook","exposed","checkDuplicateProperties","normalizeInject","inject","h","createPathGetter","handler","watch","base","mixins","extendsOptions","globalMixins","optionMergeStrategies","resolved","m","mergeOptions","to","from","strats","asMixin","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","createAppContext","uid$1","createAppAPI","hydrate","rootComponent","rootProps","context","installedPlugins","isMounted","app","version","plugin","mixin","directive","rootContainer","isHydrate","namespace","lastApp","currentApp","parentProvides","defaultValue","treatDefaultAsFactory","internalObjectProto","createInternalObject","isInternalObject","initProps","rawProps","isStateful","attrs","setFullProps","updateProps","rawPrevProps","optimized","patchFlag","rawCurrentProps","hasAttrsChanged","propsToUpdate","isEmitListener","camelizedKey","resolvePropValue","kebabKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","propsDefaults","mixinPropsCache","normalizePropsOptions","comp","hasExtends","extendProps","raw2","normalizedKey","validatePropName","prop","propType","shouldCast","shouldCastTrue","typeName","isInternalKey","normalizeSlotValue","normalizeVNode","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","normalizeVNodeSlots","children","assignSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","setRef","rawRef","oldRawRef","parentSuspense","isUnmount","refValue","owner","oldRef","refs","_isString","_isRef","doSet","existing","queuePostRenderEffect","TeleportEndKey","isTeleport","queueEffectWithSuspense","createRenderer","baseCreateRenderer","createHydrationFns","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","hostSetText","hostSetElementText","hostParentNode","hostNextSibling","hostSetScopeId","hostInsertStaticContent","patch","n1","n2","container","anchor","parentComponent","slotScopeIds","isSameVNodeType","getNextHostNode","unmount","shapeFlag","Text","processText","processCommentNode","Static","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","nextSibling","next","removeStaticNode","mountElement","patchElement","vnodeHook","transition","dirs","mountChildren","resolveChildrenNamespace","setScopeId","invokeVNodeHook","needCallTransitionHooks","needTransition","scopeId","subTree","parentVNode","cloneIfMounted","dynamicChildren","oldProps","newProps","toggleRecurse","patchBlockChildren","patchChildren","patchProps","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","traverseStaticChildren","mountComponent","updateComponent","initialVNode","createComponentInstance","setupComponent","setupRenderEffect","placeholder","shouldUpdateComponent","updateComponentPreRender","componentUpdateFn","bu","u","parent","nonHydratedAsyncRoot","locateNonHydratedAsyncRoot","originNext","nextTree","renderComponentRoot","prevTree","updateHOCHostEl","bm","isAsyncWrapperVNode","hydrateNode","hydrateSubTree","scopedInitialVNode","update","nextVNode","prevProps","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","unmountChildren","oldLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","j","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","move","moveType","leave","delayLeave","afterLeave","remove2","performLeave","doRemove","cacheIndex","shouldInvokeDirs","shouldInvokeVnodeHook","unmountComponent","removeFragment","performRemove","bum","um","invalidateMount","teleportEnd","currentNamespace","allowed","ch1","ch2","len","arrI","subComponent","ssrContextKey","useSSRContext","INITIAL_WATCHER_VALUE","doWatch","immediate","deep","flush","once","onTrack","onTrigger","_cb","unwatch","reactiveGetter","source2","forceTrigger","isMultiSource","s","onCleanup","baseGetter","ssrCleanup","path","segments","depth","getModelModifiers","modelName","emit","event","rawArgs","handlerName","onceHandler","normalizeEmitsOptions","extendEmits","normalizedFromExtend","withProxy","renderCache","fallthroughAttrs","proxyToUse","thisProxy","render2","getFunctionalFallthrough","blockStack","root","filterModelListeners","cloneVNode","prevChildren","nextProps","nextChildren","emits","hasPropsChanged","dynamicProps","emitsOptions","nextKeys","isSuspense","suspense","currentBlock","disableTracking","closeBlock","isBlockTreeEnabled","setupBlock","createElementBlock","createBaseVNode","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","normalizeChildren","_createVNode","cloned","isClassComponent","guardReactiveProps","klass","style","extraProps","mergeRef","cloneTransition","mergedProps","mergeProps","createTextVNode","text","flag","createCommentVNode","asBlock","slotFlag","toMerge","incoming","emptyAppContext","uid","internalSetCurrentInstance","setInSSRSetupState","g","registerGlobalSetter","setters","unsetCurrentInstance","setupResult","setupStatefulComponent","setup","setupContext","createSetupContext","resolvedResult","handleSetupResult","e","finishComponentSetup","compile","skipOptions","template","isCustomElement","compilerOptions","delimiters","componentCompilerOptions","finalCompilerOptions","attrsProxyHandlers","classifyRE","classify","includeInferred","match","inferFromRegistry","computed$1","propsOrChildren","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","svgNS","mathmlNS","doc","templateContainer","nodeOps","tag","is","node","selector","content","before","wrapper","vtcKey","patchClass","isSVG","transitionClasses","vShowOriginalDisplay","vShowHidden","vShow","setDisplay","CSS_VAR_TEXT","displayRE","patchStyle","isCssString","hasControlledDisplay","prevStyle","setStyle","cssVarText","importantRE","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","isBoolean","patchDOMProp","needRemove","addEventListener","removeEventListener","veiKey","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","initialValue","patchStopImmediatePropagation","originalStop","isNativeOn","patchProp","shouldSetAsProp","rendererOptions","renderer","ensureRenderer","createApp","mount","containerOrSelector","normalizeContainer","resolveRootNamespace","F","O","H","o","t","d","P","U","f","$","L","z","I","K","W","Y","q","G","V","B","J","Q","R","X","w","Z","x","ee","y","E","pe","M","te","oe","ne","se","ae","le","k","C","N","S","A","T","ce","ie","re","me","ue","D","de","_e","isBrowser","isESModule","assign","applyToParams","params","newParams","noop","HASH_RE","AMPERSAND_RE","SLASH_RE","EQUAL_RE","IM_RE","PLUS_RE","ENC_BRACKET_OPEN_RE","ENC_BRACKET_CLOSE_RE","ENC_CARET_RE","ENC_BACKTICK_RE","ENC_CURLY_OPEN_RE","ENC_PIPE_RE","ENC_CURLY_CLOSE_RE","ENC_SPACE_RE","commonEncode","encodeHash","encodeQueryValue","encodeQueryKey","encodePath","encodeParam","decode","TRAILING_SLASH_RE","removeTrailingSlash","parseURL","parseQuery","location","currentLocation","query","searchString","hash","hashPos","searchPos","resolveRelativePath","stringifyURL","stringifyQuery","stripBase","pathname","isSameRouteLocation","aLastIndex","bLastIndex","isSameRouteRecord","isSameRouteLocationParams","isSameRouteLocationParamsValue","isEquivalentArray","fromSegments","toSegments","lastToSegment","position","toPosition","segment","START_LOCATION_NORMALIZED","NavigationType","NavigationDirection","normalizeBase","baseEl","BEFORE_HASH_RE","createHref","getElementPosition","offset","docRect","elRect","computeScrollPosition","scrollToPosition","scrollToOptions","positionEl","isIdSelector","getScrollKey","delta","scrollPositions","saveScrollPosition","scrollPosition","getSavedScrollPosition","scroll","createBaseLocation","createCurrentLocation","search","slicePos","pathFromHash","useHistoryListeners","historyState","replace","listeners","teardowns","pauseState","popStateHandler","fromState","listener","pauseListeners","listen","teardown","beforeUnloadListener","history","destroy","buildState","back","forward","replaced","computeScroll","useHistoryStateNavigation","changeLocation","hashIndex","url","push","currentState","createWebHistory","historyNavigation","historyListeners","go","triggerListeners","routerHistory","createWebHashHistory","isRouteLocation","route","isRouteName","NavigationFailureSymbol","NavigationFailureType","createRouterError","isNavigationFailure","error","BASE_PARAM_PATTERN","BASE_PATH_PARSER_OPTIONS","REGEX_CHARS_RE","tokensToParser","score","pattern","segmentScores","tokenIndex","token","subSegmentScore","repeatable","optional","regexp","subPattern","parse","stringify","avoidDuplicatedSlash","param","compareScoreArray","comparePathParserScore","aScore","bScore","isLastScoreNegative","ROOT_TOKEN","VALID_PARAM_RE","tokenizePath","crash","message","buffer","previousState","tokens","finalizeSegment","char","customRe","consumeBuffer","addCharToBuffer","createRouteRecordMatcher","record","parser","matcher","createRouterMatcher","routes","globalOptions","matchers","matcherMap","getRecordMatcher","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","normalizeRouteRecord","normalizedRecords","aliases","alias","originalMatcher","normalizedRecord","parentPath","connectingSlash","isAliasRecord","removeRoute","isMatchable","insertMatcher","matcherRef","getRoutes","paramsFromLocation","matched","parentMatcher","mergeMetaFields","clearRoutes","normalizeRecordProps","propsObject","meta","defaults","partialOptions","lower","upper","mid","insertionAncestor","getInsertionAncestor","ancestor","searchParams","searchParam","eqPos","currentValue","normalizeQuery","normalizedQuery","matchedRouteKey","viewDepthKey","routerKey","routeLocationKey","routerViewLocationKey","useCallbacks","handlers","guardToPromiseFn","guard","runWithContext","enterCallbackArray","reject","valid","guardReturn","guardCall","extractComponentsGuards","guardType","guards","rawComponent","isRouteComponent","componentPromise","resolvedComponent","useLink","router","currentRoute","activeRecordIndex","length","routeMatched","currentMatched","parentRecordPath","getOriginalPath","isActive","includesParams","isExactActive","navigate","guardEvent","RouterLinkImpl","link","elClass","getLinkClass","RouterLink","outer","inner","innerValue","outerValue","propClass","globalClass","defaultClass","RouterViewImpl","injectedRoute","routeToDisplay","injectedDepth","initialDepth","matchedRoute","matchedRouteRef","viewRef","oldInstance","oldName","currentName","ViewComponent","routePropsOption","routeProps","slotContent","RouterView","createRouter","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","pendingLocation","normalizeParams","paramValue","encodeParams","decodeParams","parentOrRoute","recordMatcher","routeMatcher","hasRoute","rawLocation","locationNormalized","href","matcherLocation","targetParams","fullPath","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","redirect","newTargetLocation","redirectedFrom","targetLocation","force","shouldRedirect","toLocation","failure","handleScroll","markAsReady","triggerError","finalizeNavigation","triggerAfterEach","checkCanceledNavigationAndReject","installedApps","leavingRecords","updatingRecords","enteringRecords","extractChangingRecords","canceledNavigationCheck","runGuardQueue","beforeEnter","isPush","isFirstNavigation","removeHistoryListener","setupListeners","_from","info","readyHandlers","errorListeners","ready","list","isReady","scrollBehavior","started","reactiveRoute","unmountApp","promise","recordFrom","recordTo","useRoute","_name","showModal","handleScanInput","barcode","incrementListItemCountByBarcode","items","detectedItemsByIndex","detectedIndex","rowIndex","incrementedValue","closeModal","confirmModal","home","workOrderId","workOrder","operations","jobCards","orderResponse","operation","checkJobResponse","jobData","jobResponse","jobCard","_sfc_render","_ctx","_cache","shipping","row","transfer","transfers","response","operationStarted","elapsedTime","date","startOperation","stopOperation","Home","Manufacture","WorkOrder","JobCard","Operation","Transfer","Receive","Ship","Repack","Beam","ActionFooter","BeamModal","BeamModalOutlet","Confirm","ItemCheck","ItemCount","ListAnchor","ListItem","ListView","Navbar","ScanInput"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]} \ No newline at end of file diff --git a/beam/www/beam/index.ts b/beam/www/beam/index.ts index ffa1762b..ddc4da02 100644 --- a/beam/www/beam/index.ts +++ b/beam/www/beam/index.ts @@ -43,25 +43,30 @@ const routes: RouteRecordRaw[] = [ component: Home, }, { - path: '/workstation', - name: 'workstation', - component: Workstation, + path: '/manufacture', + name: 'manufacture', + component: Manufacture, }, { - path: '/work_order', + path: '/work_order/:orderId/', name: 'work_order', component: WorkOrder, }, { - path: '/job_card/:id', + path: '/job_card/:orderId/', name: 'job_card', component: JobCard, }, { - path: '/work_order/:workOrder/operation/:id', + path: '/work_order/:orderId/operation/:id', name: 'operation', component: Operation, }, + { + path: '/transfer', + name: 'transfer', + component: Transfer, + }, { path: '/receive', name: 'receive', @@ -72,21 +77,16 @@ const routes: RouteRecordRaw[] = [ name: 'ship', component: Ship, }, - { - path: '/transfer', - name: 'transfer', - component: Transfer, - }, - { - path: '/manufacture', - name: 'manufacture', - component: Manufacture, - }, { path: '/repack', name: 'repack', component: Repack, }, + // { + // path: '/workstation', + // name: 'workstation', + // component: Workstation, + // }, ] const router = createRouter({ diff --git a/beam/www/beam/pages/Home.vue b/beam/www/beam/pages/Home.vue index 2f7d60e5..144b5f9d 100644 --- a/beam/www/beam/pages/Home.vue +++ b/beam/www/beam/pages/Home.vue @@ -1,16 +1,40 @@ - + diff --git a/beam/www/beam/pages/Operation.vue b/beam/www/beam/pages/Operation.vue index d46fe106..50c10c84 100644 --- a/beam/www/beam/pages/Operation.vue +++ b/beam/www/beam/pages/Operation.vue @@ -1,5 +1,4 @@ - + diff --git a/beam/www/beam/types/index.ts b/beam/www/beam/types/index.ts index 99733be5..e7788f98 100644 --- a/beam/www/beam/types/index.ts +++ b/beam/www/beam/types/index.ts @@ -20,6 +20,7 @@ export type JobCard = ParentDoctype & { export type WorkOrder = ParentDoctype & { item_name: string qty: number + produced_qty: number operations: WorkOrderOperation[] } @@ -35,4 +36,18 @@ export type WorkOrderOperation = ChildDoctype & { completed_qty: number description?: string operation: string + time_in_mins?: number +} + +export type ListViewItem = { + label: string + description?: string + count?: { + count: number + of: number + uom?: string + } + checked?: boolean + linkComponent?: string + route?: string } diff --git a/beam/www/demand.html b/beam/www/demand.html new file mode 100644 index 00000000..dff7dec9 --- /dev/null +++ b/beam/www/demand.html @@ -0,0 +1,31 @@ +{% extends "templates/web.html" %} + +{% block content %} +
+
+
+ +{% endblock %} + +{%- block style -%} + +{% endblock %} \ No newline at end of file diff --git a/beam/www/demand.py b/beam/www/demand.py new file mode 100644 index 00000000..90603315 --- /dev/null +++ b/beam/www/demand.py @@ -0,0 +1,9 @@ +import frappe + +no_cache = True + + +def get_context(context): + csrf_token = frappe.sessions.get_csrf_token() + context.csrf_token = csrf_token + frappe.db.commit() diff --git a/package.json b/package.json index 234ba46d..180f1927 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "build:watch": "vite build --watch --config=./beam/www/beam/vite.config.ts" }, "dependencies": { - "@stonecrop/beam": "^0.2.27", + "@stonecrop/beam": "^0.2.28", "@vitejs/plugin-vue": "^5.0.4", "onscan.js": "^1.5.2", "vite": "^5.2.11", diff --git a/yarn.lock b/yarn.lock index aa490246..f63ee942 100644 --- a/yarn.lock +++ b/yarn.lock @@ -212,10 +212,10 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz#0cb240c147c0dfd0e3eaff4cc060a772d39e155c" integrity sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw== -"@stonecrop/beam@^0.2.27": - version "0.2.27" - resolved "https://registry.yarnpkg.com/@stonecrop/beam/-/beam-0.2.27.tgz#b18b0646237ae2b0910f2c238d541f00ad832824" - integrity sha512-tHRShy1rwuMefg8qvCMrCrxxifk49wpIxLEqZvDIhq2Bweh+/I8u+ZuGNdbkz1qWWPfb2KDKR9xuiSQdbBxqYQ== +"@stonecrop/beam@^0.2.28": + version "0.2.28" + resolved "https://registry.yarnpkg.com/@stonecrop/beam/-/beam-0.2.28.tgz#79f1cbd96190448c9fc952720740e62f76d5f39c" + integrity sha512-A7Z7XL6YeT4VJoVlkiQkacnBxPi7d2w5/vZUM/9LAvnjnAaXBugKWb7luxarUPtHoE4Oz5weasWF0CKmXOSCzQ== dependencies: vue "^3.4.31"