jsbox-cview 1.6.7 → 1.6.8

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.
@@ -20,7 +20,7 @@ const single_views_1 = require("../single-views");
20
20
  class DialogSheet extends sheet_1.Sheet {
21
21
  constructor(props) {
22
22
  super({
23
- presentMode: props.presentMode || ($device.isIpad ? 2 : 1),
23
+ presentMode: props.presentMode ?? ($device.isIpad ? 2 : 1),
24
24
  bgcolor: props.bgcolor,
25
25
  });
26
26
  this._props = props;
@@ -89,13 +89,22 @@ class PageViewer extends base_1.Base {
89
89
  return this._props.page;
90
90
  }
91
91
  set page(page) {
92
- this._props.page = page;
93
- if (this.scroll.view.contentOffset.x !== page * this._pageWidth)
92
+ if (this.scroll.view.contentOffset.x !== page * this._pageWidth) {
94
93
  this.scroll.view.contentOffset = $point(page * this._pageWidth, 0);
94
+ }
95
+ if (this._props.page !== page) {
96
+ this._props.page = page;
97
+ if (this._events.changed)
98
+ this._events.changed(this, page);
99
+ }
95
100
  }
96
101
  scrollToPage(page) {
97
102
  this.scroll.view.scrollToOffset($point(page * this._pageWidth, 0));
98
- this._props.page = page;
103
+ if (this._props.page !== page) {
104
+ this._props.page = page;
105
+ if (this._events.changed)
106
+ this._events.changed(this, page);
107
+ }
99
108
  }
100
109
  }
101
110
  exports.PageViewer = PageViewer;
@@ -1,21 +1,5 @@
1
1
  import { Base } from "../components/base";
2
2
  import { ContentView } from "../components/single-views";
3
- /**
4
- * status
5
- * - created = 0 被创建,未被加载
6
- * - loaded = 1 被加载,显示状态未知
7
- * - appeared= 2 处于可显示状态
8
- * - disappeared = 3 处于不显示状态
9
- * - removed = 4 根视图被移除
10
- * 其中只有 2 和 3 可以相互转化,其他不可以
11
- */
12
- export declare const controllerStatus: {
13
- created: number;
14
- loaded: number;
15
- appeared: number;
16
- disappeared: number;
17
- removed: number;
18
- };
19
3
  export declare class ControllerRootView extends ContentView {
20
4
  constructor({ props, layout, events, }: {
21
5
  props: {
@@ -33,7 +17,6 @@ export interface BaseControllerProps {
33
17
  bgcolor?: UIColor;
34
18
  }
35
19
  export interface BaseControllerEvents {
36
- didCreate?: (controller: BaseController) => void;
37
20
  didLoad?: (controller: BaseController) => void;
38
21
  didAppear?: (controller: BaseController) => void;
39
22
  didDisappear?: (controller: BaseController) => void;
@@ -1,26 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseController = exports.ControllerRootView = exports.controllerStatus = void 0;
3
+ exports.BaseController = exports.ControllerRootView = void 0;
4
4
  const base_1 = require("../components/base");
5
5
  const single_views_1 = require("../components/single-views");
6
6
  const cvid_1 = require("../utils/cvid");
7
7
  const controller_router_1 = require("./controller-router");
8
- /**
9
- * status
10
- * - created = 0 被创建,未被加载
11
- * - loaded = 1 被加载,显示状态未知
12
- * - appeared= 2 处于可显示状态
13
- * - disappeared = 3 处于不显示状态
14
- * - removed = 4 根视图被移除
15
- * 其中只有 2 和 3 可以相互转化,其他不可以
16
- */
17
- exports.controllerStatus = {
18
- created: 0,
19
- loaded: 1,
20
- appeared: 2,
21
- disappeared: 3,
22
- removed: 4,
23
- };
8
+ const controller_status_1 = require("./controller-status");
24
9
  class ControllerRootView extends single_views_1.ContentView {
25
10
  constructor({ props, layout, events, }) {
26
11
  super({ props, layout, events });
@@ -102,7 +87,7 @@ class BaseController {
102
87
  this._props = props || {};
103
88
  this._events = events;
104
89
  this.id = this._props.id || cvid_1.cvid.newId;
105
- this._status = exports.controllerStatus.created; // status使用额外的get来使其只读
90
+ this._status = controller_status_1.controllerStatus.created; // status使用额外的get来使其只读
106
91
  this.rootView = new ControllerRootView({
107
92
  props: {
108
93
  bgcolor: this._props.bgcolor || $color("primarySurface"),
@@ -116,38 +101,38 @@ class BaseController {
116
101
  }
117
102
  load() {
118
103
  // 只有status为created才可以运行
119
- if (this._status !== exports.controllerStatus.created)
104
+ if (this._status !== controller_status_1.controllerStatus.created)
120
105
  return;
121
- this._status = exports.controllerStatus.loaded;
106
+ this._status = controller_status_1.controllerStatus.loaded;
122
107
  if (this._events.didLoad)
123
108
  this._events.didLoad(this);
124
109
  controller_router_1.router.add(this);
125
110
  }
126
111
  appear() {
127
112
  // 只有status为loaded或者disappeared,才可以运行
128
- if (this._status !== exports.controllerStatus.loaded && this._status !== exports.controllerStatus.disappeared)
113
+ if (this._status !== controller_status_1.controllerStatus.loaded && this._status !== controller_status_1.controllerStatus.disappeared)
129
114
  return;
130
115
  if (this._events.didAppear)
131
116
  this._events.didAppear(this);
132
- this._status = exports.controllerStatus.appeared;
117
+ this._status = controller_status_1.controllerStatus.appeared;
133
118
  }
134
119
  disappear() {
135
120
  // 只有status为loaded或者appeared,才可以运行
136
- if (this._status !== exports.controllerStatus.loaded && this._status !== exports.controllerStatus.appeared)
121
+ if (this._status !== controller_status_1.controllerStatus.loaded && this._status !== controller_status_1.controllerStatus.appeared)
137
122
  return;
138
123
  if (this._events.didDisappear)
139
124
  this._events.didDisappear(this);
140
- this._status = exports.controllerStatus.disappeared;
125
+ this._status = controller_status_1.controllerStatus.disappeared;
141
126
  }
142
127
  // 此方法不能用于移除rootView,其作用是将控制器从Router中移除,并触发didRemove事件
143
128
  remove() {
144
129
  // 如果已经移除,不可以再次运行
145
- if (this._status === exports.controllerStatus.removed)
130
+ if (this._status === controller_status_1.controllerStatus.removed)
146
131
  return;
147
132
  if (this._events.didRemove)
148
133
  this._events.didRemove(this);
149
134
  controller_router_1.router.delete(this);
150
- this._status = exports.controllerStatus.removed;
135
+ this._status = controller_status_1.controllerStatus.removed;
151
136
  }
152
137
  uirender(props) {
153
138
  controller_router_1.router.root = this;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.router = void 0;
4
+ const controller_status_1 = require("./controller-status");
4
5
  /**
5
6
  * 控制器的路由器,用于管理控制器的集合和操作。
6
7
  *
@@ -52,7 +53,7 @@ class Router {
52
53
  get appeared() {
53
54
  const appearedControllers = [];
54
55
  for (const c of this._set) {
55
- if (c.status === 2)
56
+ if (c.status === controller_status_1.controllerStatus.appeared)
56
57
  appearedControllers.push(c);
57
58
  }
58
59
  return appearedControllers;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * status
3
+ * - created = 0 被创建,未被加载
4
+ * - loaded = 1 被加载,显示状态未知
5
+ * - appeared= 2 处于可显示状态
6
+ * - disappeared = 3 处于不显示状态
7
+ * - removed = 4 根视图被移除
8
+ * 其中只有 2 和 3 可以相互转化,其他不可以
9
+ */
10
+ export declare const controllerStatus: {
11
+ readonly created: 0;
12
+ readonly loaded: 1;
13
+ readonly appeared: 2;
14
+ readonly disappeared: 3;
15
+ readonly removed: 4;
16
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.controllerStatus = void 0;
4
+ /**
5
+ * status
6
+ * - created = 0 被创建,未被加载
7
+ * - loaded = 1 被加载,显示状态未知
8
+ * - appeared= 2 处于可显示状态
9
+ * - disappeared = 3 处于不显示状态
10
+ * - removed = 4 根视图被移除
11
+ * 其中只有 2 和 3 可以相互转化,其他不可以
12
+ */
13
+ exports.controllerStatus = {
14
+ created: 0,
15
+ loaded: 1,
16
+ appeared: 2,
17
+ disappeared: 3,
18
+ removed: 4,
19
+ };
@@ -5,6 +5,7 @@ const base_controller_1 = require("./base-controller");
5
5
  const pageviewer_1 = require("../components/pageviewer");
6
6
  const pageviewer_titlebar_1 = require("../components/pageviewer-titlebar");
7
7
  const custom_navigation_bar_1 = require("../components/custom-navigation-bar");
8
+ const controller_status_1 = require("./controller-status");
8
9
  /**
9
10
  * # CView PageViewer Controller
10
11
  *
@@ -23,7 +24,20 @@ class PageViewerController extends base_controller_1.BaseController {
23
24
  bgcolor: props.bgcolor,
24
25
  },
25
26
  layout,
26
- events,
27
+ events: {
28
+ didLoad: events.didLoad,
29
+ didAppear: (controller) => {
30
+ props.items[this.index].controller.appear();
31
+ events.didAppear?.(controller);
32
+ },
33
+ didDisappear: (controller) => {
34
+ props.items.forEach((item) => item.controller.disappear());
35
+ events.didDisappear?.(controller);
36
+ },
37
+ didRemove: (controller) => {
38
+ events.didRemove?.(controller);
39
+ },
40
+ },
27
41
  });
28
42
  this._props = props;
29
43
  this.cviews = {};
@@ -37,13 +51,28 @@ class PageViewerController extends base_controller_1.BaseController {
37
51
  make.top.equalTo(view.prev.bottom);
38
52
  },
39
53
  events: {
40
- floatPageChanged: (cview, floatPage) => (this.cviews.titlebar.floatedIndex = floatPage),
54
+ floatPageChanged: (cview, floatPage) => {
55
+ this.cviews.titlebar.floatedIndex = floatPage;
56
+ },
57
+ changed: (cview, page) => {
58
+ this._props.index = page;
59
+ if (this.status !== controller_status_1.controllerStatus.appeared)
60
+ return;
61
+ this._props.items.forEach((item, i) => {
62
+ if (i === page) {
63
+ item.controller.appear();
64
+ }
65
+ else {
66
+ item.controller.disappear();
67
+ }
68
+ });
69
+ },
41
70
  },
42
71
  });
43
72
  this.cviews.titlebar = new pageviewer_titlebar_1.PageViewerTitleBar({
44
73
  props: {
45
74
  items: this._props.items.map((n) => n.title),
46
- index: this._props.index || 0,
75
+ index: this._props.index ?? 0,
47
76
  },
48
77
  layout: $layout.fill,
49
78
  events: {
@@ -5,6 +5,7 @@ const base_controller_1 = require("./base-controller");
5
5
  const base_1 = require("../components/base");
6
6
  const single_views_1 = require("../components/single-views");
7
7
  const cvid_1 = require("../utils/cvid");
8
+ const controller_status_1 = require("./controller-status");
8
9
  class SecondaryView extends base_1.Base {
9
10
  constructor({ props, layout, views = [], }) {
10
11
  super();
@@ -207,13 +208,13 @@ class SplitViewController extends base_controller_1.BaseController {
207
208
  this.rootView.views = [this.cviews.secondaryView, this.cviews.primaryView];
208
209
  }
209
210
  load() {
210
- if (this.status !== base_controller_1.controllerStatus.created)
211
+ if (this.status !== controller_status_1.controllerStatus.created)
211
212
  return;
212
213
  super.load();
213
214
  this._renewScreenEdgePanGesture();
214
215
  }
215
216
  remove() {
216
- if (this.status === base_controller_1.controllerStatus.removed)
217
+ if (this.status === controller_status_1.controllerStatus.removed)
217
218
  return;
218
219
  $objc_release(this._screenEdgePanGestureObject);
219
220
  this.cviews.maskView.releaseGestureObject();
@@ -4,6 +4,7 @@ exports.TabBarController = void 0;
4
4
  const base_controller_1 = require("./base-controller");
5
5
  const single_views_1 = require("../components/single-views");
6
6
  const tabbar_1 = require("../components/tabbar");
7
+ const controller_status_1 = require("./controller-status");
7
8
  /**
8
9
  * # CView TabBar Controller
9
10
  *
@@ -86,7 +87,7 @@ class TabBarController extends base_controller_1.BaseController {
86
87
  n.view.hidden = i !== num;
87
88
  });
88
89
  this._props.index = num;
89
- this._props.items.find((item) => item.controller.status === 2)?.controller.disappear();
90
+ this._props.items.find((item) => item.controller.status === controller_status_1.controllerStatus.appeared)?.controller.disappear();
90
91
  this._props.items[num].controller.appear();
91
92
  }
92
93
  get index() {
package/dist/index.d.ts CHANGED
@@ -21,6 +21,7 @@ export * from "./components/single-views";
21
21
  export * from "./components/static-preference-listview";
22
22
  export * from "./components/symbol-button";
23
23
  export * from "./components/tabbar";
24
+ export * from "./controller/controller-status";
24
25
  export * from "./controller/base-controller";
25
26
  export * from "./controller/controller-router";
26
27
  export * from "./controller/pageviewer-controller";
package/dist/index.js CHANGED
@@ -37,6 +37,7 @@ __exportStar(require("./components/single-views"), exports);
37
37
  __exportStar(require("./components/static-preference-listview"), exports);
38
38
  __exportStar(require("./components/symbol-button"), exports);
39
39
  __exportStar(require("./components/tabbar"), exports);
40
+ __exportStar(require("./controller/controller-status"), exports);
40
41
  __exportStar(require("./controller/base-controller"), exports);
41
42
  __exportStar(require("./controller/controller-router"), exports);
42
43
  __exportStar(require("./controller/pageviewer-controller"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jsbox-cview",
3
- "version": "1.6.7",
3
+ "version": "1.6.8",
4
4
  "description": "为 JSBox 设计的微型框架",
5
5
  "repository": {
6
6
  "type": "git",