orderopia-ordering-api-client-vue 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -30,23 +30,19 @@ var import_vue = require("vue");
30
30
  var import_orderopia_ordering_api_client = require("orderopia-ordering-api-client");
31
31
  function useBasket() {
32
32
  const basket = (0, import_vue.ref)(import_orderopia_ordering_api_client.basketManager.getBasket());
33
- let unsubscribe = null;
34
- (0, import_vue.onMounted)(() => {
35
- unsubscribe = import_orderopia_ordering_api_client.basketManager.subscribe((state) => {
36
- basket.value = state;
37
- });
33
+ const unsubscribe = import_orderopia_ordering_api_client.basketManager.subscribe((state) => {
34
+ basket.value = state;
38
35
  });
39
- (0, import_vue.onUnmounted)(() => {
40
- unsubscribe?.();
41
- unsubscribe = null;
36
+ (0, import_vue.onScopeDispose)(() => {
37
+ unsubscribe();
42
38
  });
43
39
  const totalQuantity = (0, import_vue.computed)(
44
- () => basket.value.items.reduce((sum, i) => sum + i.quantity, 0)
40
+ () => basket.value.items.reduce((sum, i) => sum + (i.quantity ?? 0), 0)
45
41
  );
46
42
  return {
47
43
  basket,
48
44
  totalQuantity,
49
- // pass-through convenience (optional but nice)
45
+ // pass-through helpers (nice DX)
50
46
  addToBasket: import_orderopia_ordering_api_client.basketManager.addToBasket.bind(import_orderopia_ordering_api_client.basketManager),
51
47
  removeFromBasket: import_orderopia_ordering_api_client.basketManager.removeFromBasket.bind(import_orderopia_ordering_api_client.basketManager),
52
48
  clearBasket: import_orderopia_ordering_api_client.basketManager.clearBasket.bind(import_orderopia_ordering_api_client.basketManager)
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/composables/useBasket.ts","../src/install.ts"],"sourcesContent":["// src/index.ts\r\nexport { useBasket } from './composables/useBasket'\r\nexport { OrderopiaVuePlugin } from './install'\r\n","// src/composables/useBasket.ts\r\nimport { ref, computed, onMounted, onUnmounted } from 'vue'\r\nimport {\r\n basketManager,\r\n type BasketState\r\n} from 'orderopia-ordering-api-client'\r\nexport function useBasket() {\r\n const basket = ref<BasketState>(basketManager.getBasket())\r\n\r\n let unsubscribe: (() => void) | null = null\r\n\r\n onMounted(() => {\r\n unsubscribe = basketManager.subscribe(state => {\r\n basket.value = state\r\n })\r\n })\r\n\r\n onUnmounted(() => {\r\n unsubscribe?.()\r\n unsubscribe = null\r\n })\r\n\r\n const totalQuantity = computed(() =>\r\n basket.value.items.reduce((sum, i) => sum + i.quantity, 0)\r\n )\r\n\r\n return {\r\n basket,\r\n totalQuantity,\r\n\r\n // pass-through convenience (optional but nice)\r\n addToBasket: basketManager.addToBasket.bind(basketManager),\r\n removeFromBasket: basketManager.removeFromBasket.bind(basketManager),\r\n clearBasket: basketManager.clearBasket.bind(basketManager)\r\n }\r\n}\r\n","// src/install.ts\r\nimport type { App } from 'vue'\r\n\r\nexport function OrderopiaVuePlugin() {\r\n return {\r\n install(app: App) {\r\n // nothing yet, but future-proof\r\n }\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,iBAAsD;AACtD,2CAGO;AACA,SAAS,YAAY;AAC1B,QAAM,aAAS,gBAAiB,mDAAc,UAAU,CAAC;AAEzD,MAAI,cAAmC;AAEvC,4BAAU,MAAM;AACd,kBAAc,mDAAc,UAAU,WAAS;AAC7C,aAAO,QAAQ;AAAA,IACjB,CAAC;AAAA,EACH,CAAC;AAED,8BAAY,MAAM;AAChB,kBAAc;AACd,kBAAc;AAAA,EAChB,CAAC;AAED,QAAM,oBAAgB;AAAA,IAAS,MAC7B,OAAO,MAAM,MAAM,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,UAAU,CAAC;AAAA,EAC3D;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA,IAGA,aAAa,mDAAc,YAAY,KAAK,kDAAa;AAAA,IACzD,kBAAkB,mDAAc,iBAAiB,KAAK,kDAAa;AAAA,IACnE,aAAa,mDAAc,YAAY,KAAK,kDAAa;AAAA,EAC3D;AACF;;;AChCO,SAAS,qBAAqB;AACnC,SAAO;AAAA,IACL,QAAQ,KAAU;AAAA,IAElB;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/composables/useBasket.ts","../src/install.ts"],"sourcesContent":["// src/index.ts\r\nexport { useBasket } from './composables/useBasket'\r\nexport { OrderopiaVuePlugin } from './install'\r\n","// src/composables/useBasket.ts\r\nimport { ref, computed, onScopeDispose } from 'vue'\r\nimport {\r\n basketManager,\r\n type BasketState\r\n} from 'orderopia-ordering-api-client'\r\n\r\nexport function useBasket() {\r\n // Start with current basket immediately\r\n const basket = ref<BasketState>(basketManager.getBasket())\r\n\r\n // Subscribe immediately (NOT in onMounted)\r\n const unsubscribe = basketManager.subscribe(state => {\r\n basket.value = state\r\n })\r\n\r\n // Auto-cleanup when the component/composable scope is destroyed\r\n onScopeDispose(() => {\r\n unsubscribe()\r\n })\r\n\r\n const totalQuantity = computed(() =>\r\n basket.value.items.reduce((sum, i) => sum + (i.quantity ?? 0), 0)\r\n )\r\n\r\n return {\r\n basket,\r\n totalQuantity,\r\n\r\n // pass-through helpers (nice DX)\r\n addToBasket: basketManager.addToBasket.bind(basketManager),\r\n removeFromBasket: basketManager.removeFromBasket.bind(basketManager),\r\n clearBasket: basketManager.clearBasket.bind(basketManager)\r\n }\r\n}\r\n","// src/install.ts\r\nimport type { App } from 'vue'\r\n\r\nexport function OrderopiaVuePlugin() {\r\n return {\r\n install(app: App) {\r\n // nothing yet, but future-proof\r\n }\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,iBAA8C;AAC9C,2CAGO;AAEA,SAAS,YAAY;AAE1B,QAAM,aAAS,gBAAiB,mDAAc,UAAU,CAAC;AAGzD,QAAM,cAAc,mDAAc,UAAU,WAAS;AACnD,WAAO,QAAQ;AAAA,EACjB,CAAC;AAGD,iCAAe,MAAM;AACnB,gBAAY;AAAA,EACd,CAAC;AAED,QAAM,oBAAgB;AAAA,IAAS,MAC7B,OAAO,MAAM,MAAM,OAAO,CAAC,KAAK,MAAM,OAAO,EAAE,YAAY,IAAI,CAAC;AAAA,EAClE;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA,IAGA,aAAa,mDAAc,YAAY,KAAK,kDAAa;AAAA,IACzD,kBAAkB,mDAAc,iBAAiB,KAAK,kDAAa;AAAA,IACnE,aAAa,mDAAc,YAAY,KAAK,kDAAa;AAAA,EAC3D;AACF;;;AC/BO,SAAS,qBAAqB;AACnC,SAAO;AAAA,IACL,QAAQ,KAAU;AAAA,IAElB;AAAA,EACF;AACF;","names":[]}
package/dist/index.js CHANGED
@@ -1,27 +1,23 @@
1
1
  // src/composables/useBasket.ts
2
- import { ref, computed, onMounted, onUnmounted } from "vue";
2
+ import { ref, computed, onScopeDispose } from "vue";
3
3
  import {
4
4
  basketManager
5
5
  } from "orderopia-ordering-api-client";
6
6
  function useBasket() {
7
7
  const basket = ref(basketManager.getBasket());
8
- let unsubscribe = null;
9
- onMounted(() => {
10
- unsubscribe = basketManager.subscribe((state) => {
11
- basket.value = state;
12
- });
8
+ const unsubscribe = basketManager.subscribe((state) => {
9
+ basket.value = state;
13
10
  });
14
- onUnmounted(() => {
15
- unsubscribe?.();
16
- unsubscribe = null;
11
+ onScopeDispose(() => {
12
+ unsubscribe();
17
13
  });
18
14
  const totalQuantity = computed(
19
- () => basket.value.items.reduce((sum, i) => sum + i.quantity, 0)
15
+ () => basket.value.items.reduce((sum, i) => sum + (i.quantity ?? 0), 0)
20
16
  );
21
17
  return {
22
18
  basket,
23
19
  totalQuantity,
24
- // pass-through convenience (optional but nice)
20
+ // pass-through helpers (nice DX)
25
21
  addToBasket: basketManager.addToBasket.bind(basketManager),
26
22
  removeFromBasket: basketManager.removeFromBasket.bind(basketManager),
27
23
  clearBasket: basketManager.clearBasket.bind(basketManager)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/composables/useBasket.ts","../src/install.ts"],"sourcesContent":["// src/composables/useBasket.ts\r\nimport { ref, computed, onMounted, onUnmounted } from 'vue'\r\nimport {\r\n basketManager,\r\n type BasketState\r\n} from 'orderopia-ordering-api-client'\r\nexport function useBasket() {\r\n const basket = ref<BasketState>(basketManager.getBasket())\r\n\r\n let unsubscribe: (() => void) | null = null\r\n\r\n onMounted(() => {\r\n unsubscribe = basketManager.subscribe(state => {\r\n basket.value = state\r\n })\r\n })\r\n\r\n onUnmounted(() => {\r\n unsubscribe?.()\r\n unsubscribe = null\r\n })\r\n\r\n const totalQuantity = computed(() =>\r\n basket.value.items.reduce((sum, i) => sum + i.quantity, 0)\r\n )\r\n\r\n return {\r\n basket,\r\n totalQuantity,\r\n\r\n // pass-through convenience (optional but nice)\r\n addToBasket: basketManager.addToBasket.bind(basketManager),\r\n removeFromBasket: basketManager.removeFromBasket.bind(basketManager),\r\n clearBasket: basketManager.clearBasket.bind(basketManager)\r\n }\r\n}\r\n","// src/install.ts\r\nimport type { App } from 'vue'\r\n\r\nexport function OrderopiaVuePlugin() {\r\n return {\r\n install(app: App) {\r\n // nothing yet, but future-proof\r\n }\r\n }\r\n}\r\n"],"mappings":";AACA,SAAS,KAAK,UAAU,WAAW,mBAAmB;AACtD;AAAA,EACE;AAAA,OAEK;AACA,SAAS,YAAY;AAC1B,QAAM,SAAS,IAAiB,cAAc,UAAU,CAAC;AAEzD,MAAI,cAAmC;AAEvC,YAAU,MAAM;AACd,kBAAc,cAAc,UAAU,WAAS;AAC7C,aAAO,QAAQ;AAAA,IACjB,CAAC;AAAA,EACH,CAAC;AAED,cAAY,MAAM;AAChB,kBAAc;AACd,kBAAc;AAAA,EAChB,CAAC;AAED,QAAM,gBAAgB;AAAA,IAAS,MAC7B,OAAO,MAAM,MAAM,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,UAAU,CAAC;AAAA,EAC3D;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA,IAGA,aAAa,cAAc,YAAY,KAAK,aAAa;AAAA,IACzD,kBAAkB,cAAc,iBAAiB,KAAK,aAAa;AAAA,IACnE,aAAa,cAAc,YAAY,KAAK,aAAa;AAAA,EAC3D;AACF;;;AChCO,SAAS,qBAAqB;AACnC,SAAO;AAAA,IACL,QAAQ,KAAU;AAAA,IAElB;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/composables/useBasket.ts","../src/install.ts"],"sourcesContent":["// src/composables/useBasket.ts\r\nimport { ref, computed, onScopeDispose } from 'vue'\r\nimport {\r\n basketManager,\r\n type BasketState\r\n} from 'orderopia-ordering-api-client'\r\n\r\nexport function useBasket() {\r\n // Start with current basket immediately\r\n const basket = ref<BasketState>(basketManager.getBasket())\r\n\r\n // Subscribe immediately (NOT in onMounted)\r\n const unsubscribe = basketManager.subscribe(state => {\r\n basket.value = state\r\n })\r\n\r\n // Auto-cleanup when the component/composable scope is destroyed\r\n onScopeDispose(() => {\r\n unsubscribe()\r\n })\r\n\r\n const totalQuantity = computed(() =>\r\n basket.value.items.reduce((sum, i) => sum + (i.quantity ?? 0), 0)\r\n )\r\n\r\n return {\r\n basket,\r\n totalQuantity,\r\n\r\n // pass-through helpers (nice DX)\r\n addToBasket: basketManager.addToBasket.bind(basketManager),\r\n removeFromBasket: basketManager.removeFromBasket.bind(basketManager),\r\n clearBasket: basketManager.clearBasket.bind(basketManager)\r\n }\r\n}\r\n","// src/install.ts\r\nimport type { App } from 'vue'\r\n\r\nexport function OrderopiaVuePlugin() {\r\n return {\r\n install(app: App) {\r\n // nothing yet, but future-proof\r\n }\r\n }\r\n}\r\n"],"mappings":";AACA,SAAS,KAAK,UAAU,sBAAsB;AAC9C;AAAA,EACE;AAAA,OAEK;AAEA,SAAS,YAAY;AAE1B,QAAM,SAAS,IAAiB,cAAc,UAAU,CAAC;AAGzD,QAAM,cAAc,cAAc,UAAU,WAAS;AACnD,WAAO,QAAQ;AAAA,EACjB,CAAC;AAGD,iBAAe,MAAM;AACnB,gBAAY;AAAA,EACd,CAAC;AAED,QAAM,gBAAgB;AAAA,IAAS,MAC7B,OAAO,MAAM,MAAM,OAAO,CAAC,KAAK,MAAM,OAAO,EAAE,YAAY,IAAI,CAAC;AAAA,EAClE;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA,IAGA,aAAa,cAAc,YAAY,KAAK,aAAa;AAAA,IACzD,kBAAkB,cAAc,iBAAiB,KAAK,aAAa;AAAA,IACnE,aAAa,cAAc,YAAY,KAAK,aAAa;AAAA,EAC3D;AACF;;;AC/BO,SAAS,qBAAqB;AACnC,SAAO;AAAA,IACL,QAAQ,KAAU;AAAA,IAElB;AAAA,EACF;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orderopia-ordering-api-client-vue",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Vue bindings for Orderopia Ordering API Client",
5
5
  "license": "MIT",
6
6
  "type": "module",