@coolon/angular-ui-powerups 2.0.0-alpha.36 → 2.0.0-alpha.38

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.
Files changed (29) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/bundles/coolon-angular-ui-powerups.umd.js +25 -19
  3. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js +2 -2
  5. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/lib/components/commands/command/command.component.js +17 -4
  8. package/esm2015/lib/components/commands/command/command.component.js.map +1 -1
  9. package/esm2015/lib/components/commands/command/command.component.metadata.json +1 -1
  10. package/esm2015/lib/components/commands/command-face.js +7 -3
  11. package/esm2015/lib/components/commands/command-face.js.map +1 -1
  12. package/esm2015/lib/components/commands/group/command-group.js +1 -13
  13. package/esm2015/lib/components/commands/group/command-group.js.map +1 -1
  14. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  15. package/esm5/lib/components/commands/command/command.component.js +17 -4
  16. package/esm5/lib/components/commands/command/command.component.js.map +1 -1
  17. package/esm5/lib/components/commands/command-face.js +7 -3
  18. package/esm5/lib/components/commands/command-face.js.map +1 -1
  19. package/esm5/lib/components/commands/group/command-group.js +1 -13
  20. package/esm5/lib/components/commands/group/command-group.js.map +1 -1
  21. package/esm5/lib/components/components.module.ngfactory.js.map +1 -1
  22. package/fesm2015/coolon-angular-ui-powerups.js +25 -19
  23. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  24. package/fesm5/coolon-angular-ui-powerups.js +25 -19
  25. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  26. package/lib/components/commands/command/command.component.d.ts +4 -0
  27. package/lib/components/commands/command-face.d.ts +1 -0
  28. package/lib/components/commands/group/command-group.d.ts +2 -5
  29. package/package.json +1 -1
@@ -26,6 +26,10 @@ export var CommandFace;
26
26
  return _.isFunction(face === null || face === void 0 ? void 0 : face.icon) ? face.icon() : undefined;
27
27
  }
28
28
  CommandFace.getIconOf = getIconOf;
29
+ function getIconPositionOf(face) {
30
+ return _.isFunction(face === null || face === void 0 ? void 0 : face.iconPosition) ? face.iconPosition() : undefined;
31
+ }
32
+ CommandFace.getIconPositionOf = getIconPositionOf;
29
33
  function getTooltipOf(face) {
30
34
  return _.isFunction(face === null || face === void 0 ? void 0 : face.tooltip) ? face.tooltip() : undefined;
31
35
  }
@@ -40,7 +44,7 @@ export var CommandFace;
40
44
  }
41
45
  Object.defineProperty(Adapter.prototype, "text", {
42
46
  get: function () {
43
- return _.isFunction(this.face.text) ? this.face.text() : undefined;
47
+ return CommandFace.getTextOf(this.face);
44
48
  },
45
49
  enumerable: true,
46
50
  configurable: true
@@ -54,14 +58,14 @@ export var CommandFace;
54
58
  });
55
59
  Object.defineProperty(Adapter.prototype, "iconPosition", {
56
60
  get: function () {
57
- return _.isFunction(this.face.iconPosition) ? this.face.iconPosition() : undefined;
61
+ return CommandFace.getIconPositionOf(this.face);
58
62
  },
59
63
  enumerable: true,
60
64
  configurable: true
61
65
  });
62
66
  Object.defineProperty(Adapter.prototype, "tooltip", {
63
67
  get: function () {
64
- return _.isFunction(this.face.tooltip) ? this.face.tooltip() : undefined;
68
+ return CommandFace.getTooltipOf(this.face);
65
69
  },
66
70
  enumerable: true,
67
71
  configurable: true
@@ -1 +1 @@
1
- {"version":3,"file":"command-face.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/commands/command-face.ts"],"names":[],"mappings":"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","sourcesContent":["import { ThemePalette } from '@angular/material/core';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport _ from 'lodash';\nimport { Enum } from 'typescript-string-enums';\n\nexport interface CommandFace {\n text?(): string;\n\n icon?(): string;\n\n iconPosition?(): string;\n\n tooltip?(): string;\n\n color?(): string; // ThemePalette\n\n style?(): string; // CommandFace.Style;\n}\n\nexport namespace CommandFace {\n\n export enum Position {\n START = 'start',\n END = 'end'\n }\n\n export const Style = Enum({\n FLAT: 'flat',\n STROKED: 'stroked',\n RAISED: 'raised'\n });\n export type Style = Enum<typeof Style>;\n\n export function getColorOf(face: CommandFace): ThemePalette {\n return _.isFunction(face?.color) ? face.color() as ThemePalette : undefined;\n }\n\n export function getStyleOf(face: CommandFace): Style {\n return _.isFunction(face?.style) ? face.style() as Style : undefined;\n }\n\n export function getIconOf(face: CommandFace) {\n return _.isFunction(face?.icon) ? face.icon() : undefined;\n }\n\n export function getTooltipOf(face: CommandFace) {\n return _.isFunction(face?.tooltip) ? face.tooltip() : undefined;\n }\n\n export function getTextOf(face: CommandFace) {\n return _.isFunction(face?.text) ? face.text() : undefined;\n }\n\n export class Adapter {\n constructor(readonly face: CommandFace) {\n }\n\n @Memoize()\n get text() {\n return _.isFunction(this.face.text) ? this.face.text() : undefined;\n }\n\n @Memoize()\n get icon() {\n return CommandFace.getIconOf(this.face);\n }\n\n @Memoize()\n get iconPosition() {\n return _.isFunction(this.face.iconPosition) ? this.face.iconPosition() : undefined;\n }\n\n @Memoize()\n get tooltip() {\n return _.isFunction(this.face.tooltip) ? this.face.tooltip() : undefined;\n }\n\n @Memoize()\n get iconPositionStart(): boolean {\n return this.iconPosition === CommandFace.Position.START;\n }\n\n @Memoize()\n get iconPositionEnd(): boolean {\n return this.iconPosition === CommandFace.Position.END;\n }\n\n @Memoize()\n get color(): ThemePalette {\n return CommandFace.getColorOf(this.face);\n }\n\n @Memoize()\n get style(): Style {\n return CommandFace.getStyleOf(this.face);\n }\n\n }\n}\n"]}
1
+ {"version":3,"file":"command-face.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/commands/command-face.ts"],"names":[],"mappings":"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","sourcesContent":["import { ThemePalette } from '@angular/material/core';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport _ from 'lodash';\nimport { Enum } from 'typescript-string-enums';\nimport { assert } from '@coolon/pectin';\n\nexport interface CommandFace {\n text?(): string;\n\n icon?(): string;\n\n iconPosition?(): string;\n\n tooltip?(): string;\n\n color?(): string; // ThemePalette\n\n style?(): string; // CommandFace.Style;\n}\n\nexport namespace CommandFace {\n\n export enum Position {\n START = 'start',\n END = 'end'\n }\n\n export const Style = Enum({\n FLAT: 'flat',\n STROKED: 'stroked',\n RAISED: 'raised'\n });\n export type Style = Enum<typeof Style>;\n\n export function getColorOf(face: CommandFace): ThemePalette {\n return _.isFunction(face?.color) ? face.color() as ThemePalette : undefined;\n }\n\n export function getStyleOf(face: CommandFace): Style {\n return _.isFunction(face?.style) ? face.style() as Style : undefined;\n }\n\n export function getIconOf(face: CommandFace) {\n return _.isFunction(face?.icon) ? face.icon() : undefined;\n }\n\n export function getIconPositionOf(face: CommandFace) {\n return _.isFunction(face?.iconPosition) ? face.iconPosition() : undefined;\n }\n\n export function getTooltipOf(face: CommandFace) {\n return _.isFunction(face?.tooltip) ? face.tooltip() : undefined;\n }\n\n export function getTextOf(face: CommandFace) {\n return _.isFunction(face?.text) ? face.text() : undefined;\n }\n\n export class Adapter {\n constructor(readonly face: CommandFace) {\n }\n\n @Memoize()\n get text() {\n return CommandFace.getTextOf(this.face);\n }\n\n @Memoize()\n get icon() {\n return CommandFace.getIconOf(this.face);\n }\n\n @Memoize()\n get iconPosition() {\n return CommandFace.getIconPositionOf(this.face);\n }\n\n @Memoize()\n get tooltip() {\n return CommandFace.getTooltipOf(this.face);\n }\n\n @Memoize()\n get iconPositionStart(): boolean {\n return this.iconPosition === CommandFace.Position.START;\n }\n\n @Memoize()\n get iconPositionEnd(): boolean {\n return this.iconPosition === CommandFace.Position.END;\n }\n\n @Memoize()\n get color(): ThemePalette {\n return CommandFace.getColorOf(this.face);\n }\n\n @Memoize()\n get style(): Style {\n return CommandFace.getStyleOf(this.face);\n }\n\n }\n}\n"]}
@@ -1,6 +1,5 @@
1
1
  import { __decorate, __extends, __metadata } from "tslib";
2
2
  import { Dsl, GarbageCollector, MutableListModel, MutableValueModel, StoreInValueModel, TrackExternal, ValueModel } from '@coolon/pectin';
3
- import { CommandFace } from '../command-face';
4
3
  import { Registration } from './registration';
5
4
  import { ViewData } from './view-data';
6
5
  var CommandGroup = /** @class */ (function (_super) {
@@ -10,16 +9,7 @@ var CommandGroup = /** @class */ (function (_super) {
10
9
  _this.parent = parent;
11
10
  _this._rootTemplate = new MutableValueModel();
12
11
  _this._registrations = new MutableListModel();
13
- _this._childFaceModels = new MutableListModel();
14
- _this._faceChangeCount = new MutableValueModel(0);
15
12
  var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
16
- var childFaces = chain(_this._childFaceModels)
17
- .map(function (m) { return m.value; }, { dependsOn: _this._faceChangeCount })
18
- .rejectNil();
19
- var iconCount = childFaces
20
- .select(function (face) { return !!CommandFace.getIconOf(face); })
21
- .count();
22
- _this.hasMixedIcons = valueOf.all(iconCount.isGreaterThan(0), iconCount.doesNotEqual(childFaces.length)).areTruthy();
23
13
  _this.childTemplates = chain(_this._rootTemplate).pluckList('children');
24
14
  _this.initialised = chain(_this._rootTemplate).isNotNil();
25
15
  return _this;
@@ -81,12 +71,10 @@ var CommandGroup = /** @class */ (function (_super) {
81
71
  var _this = this;
82
72
  this._registrations.push(registration);
83
73
  if (registration instanceof Registration.FaceRegistration) {
84
- this._childFaceModels.push(registration.faceModel);
85
74
  var when = Dsl.disposeWith(registration).when;
86
75
  when(registration.faceModel).changes(function (is, was) {
87
- _this.notifyChildFaceChanged(new CommandFace.Adapter(is), new CommandFace.Adapter(was));
76
+ _this.notifyChildFaceChanged(is, was);
88
77
  }, { asLongAs: this.initialised });
89
- registration.onDispose(function () { return _this._childFaceModels.remove(registration.faceModel); });
90
78
  }
91
79
  registration.onDispose(function () { return _this._registrations.remove(registration); });
92
80
  return registration;
@@ -1 +1 @@
1
- {"version":3,"file":"command-group.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/commands/group/command-group.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BooleanValueModelChain,\n Command,\n Disposable,\n Dsl,\n GarbageCollector,\n ListModel,\n ListModelChain,\n MutableListModel,\n MutableValueModel,\n StoreInValueModel,\n TrackExternal,\n ValueModel\n} from '@coolon/pectin';\nimport { CommandFace } from '../command-face';\nimport { FlexComponent } from '../flex.component';\nimport { SeparatorComponent } from '../separator.component';\nimport { Registration } from './registration';\nimport { ViewData } from './view-data';\n\nexport abstract class CommandGroup extends GarbageCollector {\n\n abstract faceModel: ValueModel<CommandFace>;\n\n abstract xPosition: 'before' | 'after';\n abstract yPosition: 'above' | 'below';\n\n private readonly _rootTemplate = new MutableValueModel<ViewData.GroupData>();\n\n private readonly _registrations = new MutableListModel<Registration>();\n private readonly _childFaceModels = new MutableListModel<ValueModel<CommandFace>>();\n\n readonly hasMixedIcons: BooleanValueModelChain;\n private _faceChangeCount = new MutableValueModel<number>(0);\n\n readonly childTemplates: ListModelChain<ViewData>;\n\n private initialised: BooleanValueModelChain;\n\n constructor(readonly parent?: CommandGroup) {\n super();\n\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n\n const childFaces = chain(this._childFaceModels)\n .map(m => m.value, { dependsOn: this._faceChangeCount })\n .rejectNil();\n\n const iconCount = childFaces\n .select(face => !!CommandFace.getIconOf(face))\n .count();\n\n this.hasMixedIcons = valueOf.all(\n iconCount.isGreaterThan(0),\n iconCount.doesNotEqual(childFaces.length)\n ).areTruthy();\n\n\n this.childTemplates = chain(this._rootTemplate).pluckList('children');\n\n this.initialised = chain(this._rootTemplate).isNotNil();\n }\n\n initialise() {\n this.rebuildTemplates();\n }\n\n get rootTemplate() {\n return this._rootTemplate.readonly;\n }\n\n get registrations(): ListModel<Registration> {\n return this._registrations.readonly;\n }\n\n notifyChanged() {\n if (this.parent) {\n this.parent.notifyChanged();\n } else {\n this.rebuildTemplates();\n }\n }\n\n private notifyChildFaceChanged(is: CommandFace.Adapter, was: CommandFace.Adapter) {\n this.notifyChanged();\n }\n\n private rebuildTemplates() {\n this._rootTemplate.value = new ViewData.GroupData(\n this.faceModel.value,\n this.xPosition,\n this.yPosition,\n this.registrations.value.map(r => r.toTemplate())\n );\n }\n\n get depth(): number {\n return this.isRoot() ? 0 : this.parent.depth + 1;\n }\n\n isRoot(): boolean {\n return false;\n }\n\n registerCommand(command: Command<unknown>, faceModel: ValueModel<CommandFace>): Disposable {\n return this.register(new Registration.CommandRegistration(faceModel, command));\n }\n\n registerGroup(group: CommandGroup, faceModel: ValueModel<CommandFace>): Disposable {\n return this.register(new Registration.GroupRegistration(faceModel, group));\n }\n\n registerFlex(component: FlexComponent) {\n return this.register(new Registration.FlexRegistration());\n }\n\n registerSeparator(component: SeparatorComponent) {\n return this.register(new Registration.SeparatorRegistration());\n }\n\n protected register(registration: Registration): Disposable {\n this._registrations.push(registration);\n if (registration instanceof Registration.FaceRegistration) {\n this._childFaceModels.push(registration.faceModel);\n const { when } = Dsl.disposeWith(registration);\n when(registration.faceModel).changes((is, was) => {\n this.notifyChildFaceChanged(new CommandFace.Adapter(is), new CommandFace.Adapter(was));\n }, { asLongAs: this.initialised });\n registration.onDispose(() => this._childFaceModels.remove(registration.faceModel));\n }\n registration.onDispose(() => this._registrations.remove(registration));\n return registration;\n }\n\n}\n\nexport namespace CommandGroup {\n export class Root extends CommandGroup {\n\n @TrackExternal()\n faceModel: ValueModel<CommandFace>;\n\n @TrackExternal({ defaultValue: 'after' })\n xPositionModel: ValueModel<'before' | 'after'>;\n\n @StoreInValueModel('xPositionModel')\n xPosition: 'before' | 'after';\n\n @TrackExternal({ defaultValue: 'below' })\n yPositionModel: ValueModel<'above' | 'below'>;\n\n @StoreInValueModel('yPositionModel')\n yPosition: 'above' | 'below';\n\n isRoot(): boolean {\n return true;\n }\n }\n\n export function factory():Root {\n return new Root()\n }\n}\n\n\n"]}
1
+ {"version":3,"file":"command-group.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/commands/group/command-group.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BooleanValueModelChain,\n Command,\n Disposable,\n Dsl,\n GarbageCollector,\n ListModel,\n ListModelChain,\n MutableListModel,\n MutableValueModel,\n StoreInValueModel, Trace,\n TrackExternal,\n ValueModel\n} from '@coolon/pectin';\nimport { CommandFace } from '../command-face';\nimport { FlexComponent } from '../flex.component';\nimport { SeparatorComponent } from '../separator.component';\nimport { Registration } from './registration';\nimport { ViewData } from './view-data';\n\nexport abstract class CommandGroup extends GarbageCollector {\n\n abstract faceModel: ValueModel<CommandFace>;\n\n abstract xPosition: 'before' | 'after';\n abstract yPosition: 'above' | 'below';\n\n private readonly _rootTemplate = new MutableValueModel<ViewData.GroupData>();\n\n private readonly _registrations = new MutableListModel<Registration>();\n\n readonly childTemplates: ListModelChain<ViewData>;\n\n private initialised: BooleanValueModelChain;\n\n constructor(readonly parent?: CommandGroup) {\n super();\n\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n\n this.childTemplates = chain(this._rootTemplate).pluckList('children');\n\n this.initialised = chain(this._rootTemplate).isNotNil();\n }\n\n initialise() {\n this.rebuildTemplates();\n }\n\n get rootTemplate() {\n return this._rootTemplate.readonly;\n }\n\n get registrations(): ListModel<Registration> {\n return this._registrations.readonly;\n }\n\n notifyChanged() {\n if (this.parent) {\n this.parent.notifyChanged();\n } else {\n this.rebuildTemplates();\n }\n }\n\n private notifyChildFaceChanged(is: CommandFace, was: CommandFace) {\n this.notifyChanged();\n }\n\n private rebuildTemplates() {\n this._rootTemplate.value = new ViewData.GroupData(\n this.faceModel.value,\n this.xPosition,\n this.yPosition,\n this.registrations.value.map(r => r.toTemplate())\n );\n }\n\n get depth(): number {\n return this.isRoot() ? 0 : this.parent.depth + 1;\n }\n\n isRoot(): boolean {\n return false;\n }\n\n registerCommand(command: Command<unknown>, faceModel: ValueModel<CommandFace>): Disposable {\n return this.register(new Registration.CommandRegistration(faceModel, command));\n }\n\n registerGroup(group: CommandGroup, faceModel: ValueModel<CommandFace>): Disposable {\n return this.register(new Registration.GroupRegistration(faceModel, group));\n }\n\n registerFlex(component: FlexComponent): Disposable {\n return this.register(new Registration.FlexRegistration());\n }\n\n registerSeparator(component: SeparatorComponent): Disposable {\n return this.register(new Registration.SeparatorRegistration());\n }\n\n protected register(registration: Registration): Registration {\n this._registrations.push(registration);\n if (registration instanceof Registration.FaceRegistration) {\n const { when } = Dsl.disposeWith(registration);\n when(registration.faceModel).changes((is, was) => {\n this.notifyChildFaceChanged(is, was);\n }, { asLongAs: this.initialised });\n }\n registration.onDispose(() => this._registrations.remove(registration));\n return registration;\n }\n\n}\n\nexport namespace CommandGroup {\n export class Root extends CommandGroup {\n\n @TrackExternal()\n faceModel: ValueModel<CommandFace>;\n\n @TrackExternal({ defaultValue: 'after' })\n xPositionModel: ValueModel<'before' | 'after'>;\n\n @StoreInValueModel('xPositionModel')\n xPosition: 'before' | 'after';\n\n @TrackExternal({ defaultValue: 'below' })\n yPositionModel: ValueModel<'above' | 'below'>;\n\n @StoreInValueModel('yPositionModel')\n yPosition: 'above' | 'below';\n\n isRoot(): boolean {\n return true;\n }\n }\n\n export function factory(): Root {\n return new Root();\n }\n}\n\n\n"]}