@candy-kingdom/bonnie-cms 0.24.0 → 0.25.0

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 (157) hide show
  1. package/README.md +3 -7
  2. package/fesm2022/candy-kingdom-bonnie-cms.mjs +309 -430
  3. package/fesm2022/candy-kingdom-bonnie-cms.mjs.map +1 -1
  4. package/package.json +8 -10
  5. package/styles/admin-styles.scss +139 -139
  6. package/styles/admin-variables.scss +453 -451
  7. package/styles/variables.scss +415 -415
  8. package/types/candy-kingdom-bonnie-cms.d.ts +644 -0
  9. package/esm2022/candy-kingdom-bonnie-cms.mjs +0 -5
  10. package/esm2022/index.mjs +0 -15
  11. package/esm2022/lib/admin-controls/admin-controls.component.mjs +0 -44
  12. package/esm2022/lib/admin-controls/index.mjs +0 -2
  13. package/esm2022/lib/bone-editors/bone-editor-base.component.mjs +0 -143
  14. package/esm2022/lib/bone-editors/index.mjs +0 -3
  15. package/esm2022/lib/bone-editors/unknown-bone-editor/index.mjs +0 -2
  16. package/esm2022/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.mjs +0 -18
  17. package/esm2022/lib/bonnie-cms.module.mjs +0 -140
  18. package/esm2022/lib/core/DeviceType.mjs +0 -8
  19. package/esm2022/lib/core/DeviceVisibility.mjs +0 -9
  20. package/esm2022/lib/core/MediaType.mjs +0 -2
  21. package/esm2022/lib/core/TextEditorField.mjs +0 -7
  22. package/esm2022/lib/core/Utils.mjs +0 -18
  23. package/esm2022/lib/core/index.mjs +0 -6
  24. package/esm2022/lib/core-components/editable-group.mjs +0 -84
  25. package/esm2022/lib/core-components/editable.directive.mjs +0 -173
  26. package/esm2022/lib/core-components/form-base.component.mjs +0 -31
  27. package/esm2022/lib/core-components/index.mjs +0 -5
  28. package/esm2022/lib/core-components/link-popup/index.mjs +0 -2
  29. package/esm2022/lib/core-components/link-popup/link-popup.component.mjs +0 -73
  30. package/esm2022/lib/file-uploader/file-uploader.component.mjs +0 -119
  31. package/esm2022/lib/file-uploader/index.mjs +0 -2
  32. package/esm2022/lib/form-controls/form-controls.component.mjs +0 -16
  33. package/esm2022/lib/form-controls/index.mjs +0 -2
  34. package/esm2022/lib/forms/file-form/file-form.component.mjs +0 -43
  35. package/esm2022/lib/forms/file-form/index.mjs +0 -2
  36. package/esm2022/lib/forms/index.mjs +0 -9
  37. package/esm2022/lib/forms/lottie-form/index.mjs +0 -2
  38. package/esm2022/lib/forms/lottie-form/lottie-form.component.mjs +0 -45
  39. package/esm2022/lib/forms/one-image-form/index.mjs +0 -2
  40. package/esm2022/lib/forms/one-image-form/one-image-form.component.mjs +0 -64
  41. package/esm2022/lib/forms/seo-form/index.mjs +0 -2
  42. package/esm2022/lib/forms/seo-form/seo-form.component.mjs +0 -53
  43. package/esm2022/lib/forms/svg-form/index.mjs +0 -2
  44. package/esm2022/lib/forms/svg-form/svg-form.component.mjs +0 -48
  45. package/esm2022/lib/forms/text-form/TextInputStyle.mjs +0 -7
  46. package/esm2022/lib/forms/text-form/index.mjs +0 -3
  47. package/esm2022/lib/forms/text-form/text-form.component.mjs +0 -33
  48. package/esm2022/lib/forms/translation-form/index.mjs +0 -2
  49. package/esm2022/lib/forms/translation-form/translation-form.component.mjs +0 -32
  50. package/esm2022/lib/forms/unknown-form/index.mjs +0 -2
  51. package/esm2022/lib/forms/unknown-form/unknown-form.component.mjs +0 -23
  52. package/esm2022/lib/generated/file-setting-data.mjs +0 -6
  53. package/esm2022/lib/generated/i-equatable.mjs +0 -6
  54. package/esm2022/lib/generated/i-setting.mjs +0 -6
  55. package/esm2022/lib/generated/index.mjs +0 -18
  56. package/esm2022/lib/generated/localized-text-setting-data.mjs +0 -6
  57. package/esm2022/lib/generated/lottie-setting-data.mjs +0 -6
  58. package/esm2022/lib/generated/one-image-setting-data.mjs +0 -6
  59. package/esm2022/lib/generated/setting-base.mjs +0 -6
  60. package/esm2022/lib/generated/setting-data.mjs +0 -6
  61. package/esm2022/lib/generated/setting-group.mjs +0 -6
  62. package/esm2022/lib/generated/setting.mjs +0 -6
  63. package/esm2022/lib/generated/svg-setting-data.mjs +0 -6
  64. package/esm2022/lib/generated/text-setting-data.mjs +0 -6
  65. package/esm2022/lib/generated/text-setting-type.mjs +0 -10
  66. package/esm2022/lib/media-uploader/index.mjs +0 -2
  67. package/esm2022/lib/media-uploader/media-uploader.component.mjs +0 -161
  68. package/esm2022/lib/services/API_BASE_URL.mjs +0 -3
  69. package/esm2022/lib/services/admin-data.service.mjs +0 -37
  70. package/esm2022/lib/services/data.service.mjs +0 -75
  71. package/esm2022/lib/services/index.mjs +0 -4
  72. package/esm2022/lib/skeleton-editor/BoneEditorMap.mjs +0 -2
  73. package/esm2022/lib/skeleton-editor/ContentPreset.mjs +0 -9
  74. package/esm2022/lib/skeleton-editor/IBoneEditor.mjs +0 -2
  75. package/esm2022/lib/skeleton-editor/IBoneTemplate.mjs +0 -2
  76. package/esm2022/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.mjs +0 -119
  77. package/esm2022/lib/skeleton-editor/index.mjs +0 -9
  78. package/esm2022/lib/skeleton-editor/skeleton-editor-anchor.directive.mjs +0 -16
  79. package/esm2022/lib/skeleton-editor/skeleton-editor.component.mjs +0 -107
  80. package/esm2022/lib/translation-input/index.mjs +0 -2
  81. package/esm2022/lib/translation-input/translation-input.component.mjs +0 -42
  82. package/esm2022/lib/translation-textarea/index.mjs +0 -2
  83. package/esm2022/lib/translation-textarea/translation-textarea.component.mjs +0 -66
  84. package/index.d.ts +0 -14
  85. package/lib/admin-controls/admin-controls.component.d.ts +0 -14
  86. package/lib/admin-controls/index.d.ts +0 -1
  87. package/lib/bone-editors/bone-editor-base.component.d.ts +0 -44
  88. package/lib/bone-editors/index.d.ts +0 -2
  89. package/lib/bone-editors/unknown-bone-editor/index.d.ts +0 -1
  90. package/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.d.ts +0 -11
  91. package/lib/bonnie-cms.module.d.ts +0 -32
  92. package/lib/core/DeviceType.d.ts +0 -6
  93. package/lib/core/DeviceVisibility.d.ts +0 -7
  94. package/lib/core/MediaType.d.ts +0 -2
  95. package/lib/core/TextEditorField.d.ts +0 -5
  96. package/lib/core/Utils.d.ts +0 -4
  97. package/lib/core/index.d.ts +0 -5
  98. package/lib/core-components/editable-group.d.ts +0 -24
  99. package/lib/core-components/editable.directive.d.ts +0 -43
  100. package/lib/core-components/form-base.component.d.ts +0 -13
  101. package/lib/core-components/index.d.ts +0 -4
  102. package/lib/core-components/link-popup/index.d.ts +0 -1
  103. package/lib/core-components/link-popup/link-popup.component.d.ts +0 -28
  104. package/lib/file-uploader/file-uploader.component.d.ts +0 -32
  105. package/lib/file-uploader/index.d.ts +0 -1
  106. package/lib/form-controls/form-controls.component.d.ts +0 -7
  107. package/lib/form-controls/index.d.ts +0 -1
  108. package/lib/forms/file-form/file-form.component.d.ts +0 -14
  109. package/lib/forms/file-form/index.d.ts +0 -1
  110. package/lib/forms/index.d.ts +0 -8
  111. package/lib/forms/lottie-form/index.d.ts +0 -1
  112. package/lib/forms/lottie-form/lottie-form.component.d.ts +0 -16
  113. package/lib/forms/one-image-form/index.d.ts +0 -1
  114. package/lib/forms/one-image-form/one-image-form.component.d.ts +0 -23
  115. package/lib/forms/seo-form/index.d.ts +0 -1
  116. package/lib/forms/seo-form/seo-form.component.d.ts +0 -20
  117. package/lib/forms/svg-form/index.d.ts +0 -1
  118. package/lib/forms/svg-form/svg-form.component.d.ts +0 -19
  119. package/lib/forms/text-form/TextInputStyle.d.ts +0 -5
  120. package/lib/forms/text-form/index.d.ts +0 -2
  121. package/lib/forms/text-form/text-form.component.d.ts +0 -13
  122. package/lib/forms/translation-form/index.d.ts +0 -1
  123. package/lib/forms/translation-form/translation-form.component.d.ts +0 -14
  124. package/lib/forms/unknown-form/index.d.ts +0 -1
  125. package/lib/forms/unknown-form/unknown-form.component.d.ts +0 -9
  126. package/lib/generated/file-setting-data.d.ts +0 -10
  127. package/lib/generated/i-equatable.d.ts +0 -6
  128. package/lib/generated/i-setting.d.ts +0 -10
  129. package/lib/generated/index.d.ts +0 -17
  130. package/lib/generated/localized-text-setting-data.d.ts +0 -11
  131. package/lib/generated/lottie-setting-data.d.ts +0 -9
  132. package/lib/generated/one-image-setting-data.d.ts +0 -14
  133. package/lib/generated/setting-base.d.ts +0 -9
  134. package/lib/generated/setting-data.d.ts +0 -8
  135. package/lib/generated/setting-group.d.ts +0 -11
  136. package/lib/generated/setting.d.ts +0 -9
  137. package/lib/generated/svg-setting-data.d.ts +0 -9
  138. package/lib/generated/text-setting-data.d.ts +0 -10
  139. package/lib/generated/text-setting-type.d.ts +0 -8
  140. package/lib/media-uploader/index.d.ts +0 -1
  141. package/lib/media-uploader/media-uploader.component.d.ts +0 -35
  142. package/lib/services/API_BASE_URL.d.ts +0 -2
  143. package/lib/services/admin-data.service.d.ts +0 -16
  144. package/lib/services/data.service.d.ts +0 -19
  145. package/lib/services/index.d.ts +0 -3
  146. package/lib/skeleton-editor/BoneEditorMap.d.ts +0 -3
  147. package/lib/skeleton-editor/ContentPreset.d.ts +0 -11
  148. package/lib/skeleton-editor/IBoneEditor.d.ts +0 -26
  149. package/lib/skeleton-editor/IBoneTemplate.d.ts +0 -5
  150. package/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.d.ts +0 -32
  151. package/lib/skeleton-editor/index.d.ts +0 -8
  152. package/lib/skeleton-editor/skeleton-editor-anchor.directive.d.ts +0 -8
  153. package/lib/skeleton-editor/skeleton-editor.component.d.ts +0 -31
  154. package/lib/translation-input/index.d.ts +0 -1
  155. package/lib/translation-input/translation-input.component.d.ts +0 -17
  156. package/lib/translation-textarea/index.d.ts +0 -1
  157. package/lib/translation-textarea/translation-textarea.component.d.ts +0 -26
@@ -1 +1 @@
1
- {"version":3,"file":"candy-kingdom-bonnie-cms.mjs","sources":["../../../../libs/bonnie-cms/src/lib/generated/file-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/i-equatable.ts","../../../../libs/bonnie-cms/src/lib/generated/i-setting.ts","../../../../libs/bonnie-cms/src/lib/generated/localized-text-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/lottie-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/one-image-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-base.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-group.ts","../../../../libs/bonnie-cms/src/lib/generated/setting.ts","../../../../libs/bonnie-cms/src/lib/generated/svg-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/text-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/text-setting-type.ts","../../../../libs/bonnie-cms/src/lib/generated/index.ts","../../../../libs/bonnie-cms/src/lib/core/DeviceType.ts","../../../../libs/bonnie-cms/src/lib/core/TextEditorField.ts","../../../../libs/bonnie-cms/src/lib/core/Utils.ts","../../../../libs/bonnie-cms/src/lib/core/DeviceVisibility.ts","../../../../libs/bonnie-cms/src/lib/core-components/editable.directive.ts","../../../../libs/bonnie-cms/src/lib/core-components/editable-group.ts","../../../../libs/bonnie-cms/src/lib/core-components/form-base.component.ts","../../../../libs/bonnie-cms/src/lib/translation-input/translation-input.component.ts","../../../../libs/bonnie-cms/src/lib/translation-input/translation-input.component.html","../../../../libs/bonnie-cms/src/lib/translation-textarea/translation-textarea.component.ts","../../../../libs/bonnie-cms/src/lib/translation-textarea/translation-textarea.component.html","../../../../libs/bonnie-cms/src/lib/core-components/link-popup/link-popup.component.ts","../../../../libs/bonnie-cms/src/lib/core-components/link-popup/link-popup.component.html","../../../../libs/bonnie-cms/src/lib/form-controls/form-controls.component.ts","../../../../libs/bonnie-cms/src/lib/form-controls/form-controls.component.html","../../../../libs/bonnie-cms/src/lib/file-uploader/file-uploader.component.ts","../../../../libs/bonnie-cms/src/lib/file-uploader/file-uploader.component.html","../../../../libs/bonnie-cms/src/lib/forms/seo-form/seo-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/seo-form/seo-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/svg-form/svg-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/svg-form/svg-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/one-image-form/one-image-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/one-image-form/one-image-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/file-form/file-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/file-form/file-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/text-form/TextInputStyle.ts","../../../../libs/bonnie-cms/src/lib/forms/text-form/text-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/text-form/text-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/lottie-form/lottie-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/lottie-form/lottie-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/translation-form/translation-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/translation-form/translation-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/unknown-form/unknown-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/unknown-form/unknown-form.component.html","../../../../libs/bonnie-cms/src/lib/services/API_BASE_URL.ts","../../../../libs/bonnie-cms/src/lib/services/data.service.ts","../../../../libs/bonnie-cms/src/lib/services/admin-data.service.ts","../../../../libs/bonnie-cms/src/lib/admin-controls/admin-controls.component.ts","../../../../libs/bonnie-cms/src/lib/admin-controls/admin-controls.component.html","../../../../libs/bonnie-cms/src/lib/media-uploader/media-uploader.component.ts","../../../../libs/bonnie-cms/src/lib/media-uploader/media-uploader.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor-anchor.directive.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/bone-editor-base.component.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.ts","../../../../libs/bonnie-cms/src/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor.component.ts","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/ContentPreset.ts","../../../../libs/bonnie-cms/src/lib/bonnie-cms.module.ts","../../../../libs/bonnie-cms/src/candy-kingdom-bonnie-cms.ts"],"sourcesContent":["/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcFileMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface FileSettingData extends SettingData {\r\n allowedMimeTypes: string[];\r\n src: FileSrcFileMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport interface IEquatable<T> {\r\n\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\n\r\nexport interface ISetting<T extends SettingData> {\r\n id: string;\r\n title: string;\r\n data: T;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { TextSettingType } from \"./text-setting-type\";\r\nimport { LocalizedString } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface LocalizedTextSettingData extends SettingData {\r\n text: LocalizedString;\r\n textType: TextSettingType;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcFileMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface LottieSettingData extends SettingData {\r\n src: FileSrcFileMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileFormat } from \"@candy-kingdom/bonnie\";\r\nimport { FileSrcImageMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface OneImageSettingData extends SettingData {\r\n width: number;\r\n height: number;\r\n format: FileFormat;\r\n allowedMimeTypes: string[];\r\n src: FileSrcImageMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface SettingBase {\r\n id: string;\r\n order: number;\r\n title: string;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface SettingData {\r\n type: string;\r\n empty: SettingData;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { Setting } from \"./setting\";\r\n\r\nexport interface SettingGroup {\r\n id: string;\r\n order: number;\r\n title: string;\r\n records: Setting<any>[];\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { SettingBase } from \"./setting-base\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { ISetting } from \"./i-setting\";\r\n\r\nexport interface Setting<T extends SettingData> extends SettingBase {\r\n data: T;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcImageMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface SvgSettingData extends SettingData {\r\n src: FileSrcImageMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { TextSettingType } from \"./text-setting-type\";\r\n\r\nexport interface TextSettingData extends SettingData {\r\n text: string;\r\n textType: TextSettingType;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport enum TextSettingType {\r\n SingleLine = 0,\r\n MultiLine = 1,\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport * from './file-setting-data';\r\nexport * from './i-equatable';\r\nexport * from './i-setting';\r\nexport * from './localized-text-setting-data';\r\nexport * from './lottie-setting-data';\r\nexport * from './one-image-setting-data';\r\nexport * from './setting-base';\r\nexport * from './setting-data';\r\nexport * from './setting-group';\r\nexport * from './setting';\r\nexport * from './svg-setting-data';\r\nexport * from './text-setting-data';\r\nexport * from './text-setting-type';\r\n","export enum DeviceType {\r\n NotSet = 0,\r\n Mobile = 1,\r\n Tablet = 2,\r\n Desktop = 3\r\n}\r\n","\r\n\r\n\r\nexport enum TextEditorField {\r\n NotSet = 0,\r\n Input = 1,\r\n Textarea = 2\r\n}\r\n","\r\n// tslint:disable-next-line: max-line-length\r\nexport const regExpIsMobile = new RegExp(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/, 'i');\r\n\r\nexport function isLocalUrlString(url: string): boolean {\r\n if (url === undefined || url === null || url.trim().length === 0)\r\n return true;\r\n\r\n if (url.startsWith('//'))\r\n return false;\r\n\r\n if (url.startsWith('./') || url.startsWith('/'))\r\n return true;\r\n\r\n return false;\r\n}\r\n\r\nexport function hasFlag<T extends number>(value: T, flag: T): boolean {\r\n return (value & flag) === flag;\r\n}\r\n\r\nexport function setOrRemoveFlag<T extends number>(value: T, flag: T, enabled: boolean): T {\r\n return (enabled ? value | flag : value & ~flag) as T;\r\n}\r\n","export enum DeviceVisibility {\r\n None = 0,\r\n Desktop = 1,\r\n Tablet = 2,\r\n Mobile = 4,\r\n All = Desktop | Tablet | Mobile\r\n}\r\n","import { Directive, Output, EventEmitter, forwardRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[boncEditable]',\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableDirective), multi: true }]\r\n})\r\nexport class EditableDirective<T = unknown> {\r\n @Output()\r\n public readonly saved = new EventEmitter<T>();\r\n\r\n @Output()\r\n public readonly editModeChange = new EventEmitter<boolean>();\r\n\r\n @Output()\r\n public readonly externalSaveCall = new EventEmitter<void>();\r\n\r\n @Output()\r\n public readonly canceled = new EventEmitter<void>();\r\n\r\n @Output()\r\n public readonly valueChange = new EventEmitter<T>();\r\n\r\n private propagateChange: (newValue: T) => void = () => { };\r\n\r\n private _inEditMode = false;\r\n private _isDirty = false;\r\n\r\n private _value?: T;\r\n private _originalValue?: T;\r\n private _storedData?: string;\r\n\r\n public get inEditMode(): boolean {\r\n return this._inEditMode;\r\n }\r\n\r\n public subscribe\r\n (\r\n params: {\r\n readonly onValueChange?: (x: T) => void,\r\n readonly onEditModeChange?: (x: boolean) => void,\r\n readonly onSaveRequest?: () => void\r\n }\r\n ): Subscription[] {\r\n\r\n const subscriptions: Subscription[] = [];\r\n\r\n if (params.onValueChange !== undefined && params.onValueChange !== null) {\r\n subscriptions.push\r\n (\r\n this.valueChange.subscribe((x: T) => {\r\n if (params.onValueChange)\r\n params.onValueChange(x);\r\n })\r\n );\r\n }\r\n\r\n if (params.onEditModeChange !== undefined) {\r\n subscriptions.push\r\n (\r\n this.editModeChange.subscribe((x: boolean) => {\r\n if (params.onEditModeChange)\r\n params.onEditModeChange(x);\r\n })\r\n );\r\n }\r\n\r\n if (params.onSaveRequest !== undefined) {\r\n subscriptions.push\r\n (\r\n this.externalSaveCall.subscribe(() => {\r\n if (params.onSaveRequest)\r\n params.onSaveRequest();\r\n })\r\n );\r\n }\r\n\r\n return subscriptions;\r\n }\r\n\r\n public requestSave() {\r\n this.externalSaveCall.emit();\r\n }\r\n\r\n public startEditing = (): void => {\r\n if (this._inEditMode) {\r\n this.updateDirty();\r\n return;\r\n }\r\n\r\n this._inEditMode = true;\r\n this.updateDirty();\r\n this.editModeChange.emit(true);\r\n }\r\n\r\n public save(newData?: T): void {\r\n if (!this._inEditMode) {\r\n console.warn('save before edit mode'); //todo: fix that\r\n }\r\n\r\n this.finishEditing();\r\n\r\n const newUnqieNotEmptyData = this.value === newData || newData === undefined\r\n ? JSON.parse(JSON.stringify(this.value))\r\n : newData;\r\n\r\n this.setOriginal(newUnqieNotEmptyData);\r\n this.updateDirty();\r\n\r\n this.saved.emit(newUnqieNotEmptyData);\r\n\r\n this.propagateChange(newUnqieNotEmptyData);\r\n }\r\n\r\n public patchSave(propName: keyof T, newDataParts: T[keyof T]): void {\r\n if (this._originalValue === undefined || this._originalValue === null)\r\n return;\r\n\r\n if (typeof this._originalValue !== \"object\") {\r\n console.warn('patch save called on not object type');\r\n return;\r\n }\r\n\r\n (this._originalValue as any)[propName] = newDataParts;\r\n\r\n this.setOriginal(this._originalValue);\r\n\r\n this.updateDirty();\r\n\r\n if (!this.isDirty)\r\n this.close();\r\n }\r\n\r\n // change model without opening or closing the editor\r\n\r\n public silentPatch(dict: Partial<T>): void {\r\n for (const key in dict) {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (!dict.hasOwnProperty(key))\r\n continue;\r\n\r\n const propVal = dict[key];\r\n\r\n\r\n if (this._value !== undefined && this._value !== null) {\r\n this._value[key] = propVal as any;\r\n }\r\n\r\n if (this._originalValue !== undefined && this._originalValue !== null) {\r\n this._originalValue[key] = propVal as any;\r\n }\r\n }\r\n this._storedData = JSON.stringify(this._originalValue);\r\n }\r\n\r\n public cancel(): void {\r\n if (!this._inEditMode)\r\n return;\r\n\r\n this.finishEditing();\r\n\r\n // reset value\r\n this.setValue(this._originalValue);\r\n\r\n this.canceled.emit();\r\n }\r\n\r\n public close(): void {\r\n this.finishEditing();\r\n }\r\n\r\n private finishEditing(): void {\r\n if (!this._inEditMode)\r\n return;\r\n\r\n this._inEditMode = false;\r\n this.editModeChange.emit(false);\r\n }\r\n\r\n private setValue(newValue?: T): void {\r\n this._value = (newValue === null || newValue === undefined)\r\n ? undefined\r\n : JSON.parse(JSON.stringify(newValue));\r\n\r\n this.valueChange.emit(this._value);\r\n }\r\n\r\n public set value(newValue: T | undefined) {\r\n this.setValue(newValue);\r\n }\r\n\r\n public get value(): T | undefined {\r\n return this._value;\r\n }\r\n\r\n public updateDirty(): void {\r\n this._isDirty = JSON.stringify(this._value) !== this._storedData;\r\n }\r\n\r\n public markAsDirty(): void {\r\n this._isDirty = true;\r\n }\r\n\r\n public get isDirty(): boolean {\r\n return this._isDirty;\r\n }\r\n\r\n private setOriginal(newOriginalValue: T) {\r\n this._originalValue = newOriginalValue;\r\n this._storedData = JSON.stringify(newOriginalValue);\r\n }\r\n\r\n // #region ngModel\r\n\r\n writeValue(newValue: T): void {\r\n this.finishEditing();\r\n\r\n this.setOriginal(newValue);\r\n this._isDirty = false;\r\n\r\n this.setValue(newValue);\r\n }\r\n\r\n setDisabledState?(): void {\r\n }\r\n\r\n registerOnChange(tellAngularThatSomethingIsChanged: (newValue: T) => void): void {\r\n this.propagateChange = (newValue: T): void => {\r\n tellAngularThatSomethingIsChanged(newValue);\r\n };\r\n }\r\n\r\n registerOnTouched(): void {\r\n }\r\n\r\n // #endregion\r\n}\r\n","import { QueryList, ContentChildren, AfterContentInit, OnDestroy, Output, EventEmitter, Component } from '@angular/core';\r\nimport { Subscription, Subject, debounceTime } from 'rxjs';\r\n\r\nimport { EditableDirective } from './editable.directive';\r\n\r\n@Component({\r\n selector: 'bonc-editable-group',\r\n template: '<ng-content></ng-content>'\r\n})\r\nexport class EditableGroupComponent implements AfterContentInit, OnDestroy {\r\n @Output()\r\n public readonly editModeChange = new EventEmitter<boolean>();\r\n\r\n @Output()\r\n public readonly saved = new EventEmitter<void>();\r\n\r\n @Output()\r\n public readonly requestEditorClose = new EventEmitter<boolean>();\r\n\r\n @ContentChildren(EditableDirective, { descendants: true })\r\n public editables!: QueryList<EditableDirective>;\r\n\r\n private readonly subscriptions: Subscription[] = [];\r\n private _inEditMode = false;\r\n\r\n private readonly saveSubject = new Subject<void>();\r\n\r\n public ngAfterContentInit(): void {\r\n this.saveSubject\r\n .asObservable()\r\n .pipe(debounceTime(100))\r\n .subscribe(() => this.saved.emit());\r\n\r\n this.updateSubscriptions();\r\n\r\n this.editables.changes.subscribe\r\n (\r\n () => {\r\n this.clearSubscribtions();\r\n this.updateSubscriptions();\r\n }\r\n );\r\n }\r\n\r\n public get inEditMode(): boolean {\r\n return this._inEditMode;\r\n }\r\n\r\n public saveAll(): void {\r\n this.editables.forEach(x => x.requestSave());\r\n }\r\n\r\n public cancelAll(): void {\r\n this.editables.forEach(x => x.cancel());\r\n }\r\n\r\n public closeAll(): void {\r\n this.requestEditorClose.emit(true);\r\n this.editables.forEach(x => x.close());\r\n }\r\n\r\n private clearSubscribtions(): void {\r\n this.subscriptions.forEach(x => x.unsubscribe());\r\n this.subscriptions.splice(0, this.subscriptions.length);\r\n }\r\n\r\n private updateSubscriptions(): void {\r\n\r\n this.editables.forEach\r\n (\r\n editable => {\r\n\r\n this.subscriptions.push(\r\n editable.saved.subscribe(\r\n () => this.onSave()\r\n )\r\n );\r\n\r\n this.subscriptions.push(\r\n ...editable.subscribe({\r\n onEditModeChange: this.updateEditMode.bind(this)\r\n })\r\n );\r\n }\r\n );\r\n }\r\n\r\n private onSave(): void {\r\n this.saveSubject.next();\r\n }\r\n\r\n private updateEditMode(): void {\r\n const newEditMode = this.editables\r\n .filter(x => x.inEditMode)\r\n .length > 0;\r\n\r\n if (newEditMode === this._inEditMode)\r\n return;\r\n\r\n this._inEditMode = newEditMode;\r\n\r\n this.editModeChange.next(newEditMode);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.clearSubscribtions();\r\n }\r\n}\r\n","import { Component, Host, Input } from '@angular/core';\r\n\r\nimport { EditableDirective } from './editable.directive';\r\n\r\n@Component({\r\n template: ''\r\n})\r\nexport abstract class FormBaseComponent<TData = unknown> {\r\n public static readonly inputs = ['locale'];\r\n\r\n protected name = '';\r\n private _locale = '';\r\n\r\n constructor(@Host() public readonly editable: EditableDirective<TData>) { }\r\n\r\n @Input()\r\n public set locale(value: string) {\r\n this._locale = value;\r\n }\r\n\r\n public get locale(): string {\r\n return this._locale;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { DeviceType } from '../core';\r\nimport { LocalizedString } from '@candy-kingdom/bonnie';\r\n\r\n@Component({\r\n selector: 'bonc-translation-input',\r\n templateUrl: './translation-input.component.html',\r\n styleUrls: ['./translation-input.component.scss']\r\n})\r\nexport class TranslationInputComponent {\r\n @Input({ required: true })\r\n public text!: LocalizedString;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input()\r\n public device: DeviceType = DeviceType.NotSet;\r\n\r\n @Output()\r\n public startEditing: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public changed: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public blurred: EventEmitter<void> = new EventEmitter();\r\n\r\n public onClick() {\r\n this.startEditing.emit();\r\n }\r\n\r\n public onKeyPress() {\r\n this.changed.emit();\r\n }\r\n\r\n public onBlur() {\r\n this.blurred.emit();\r\n }\r\n}\r\n","<input [(ngModel)]=\"text[locale]\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onKeyPress()\"\r\n (blur)=\"onBlur()\" />\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n NgZone,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { LocalizedString } from '@candy-kingdom/bonnie';\r\nimport { DeviceType } from '../core';\r\n\r\n@Component({\r\n selector: 'bonc-translation-textarea',\r\n templateUrl: './translation-textarea.component.html',\r\n styleUrls: ['./translation-textarea.component.scss']\r\n})\r\nexport class TranslationTextareaComponent implements OnChanges, AfterViewInit {\r\n @ViewChildren(CdkTextareaAutosize)\r\n public autosizeList!: QueryList<CdkTextareaAutosize>;\r\n\r\n @Input()\r\n public minRows?: number;\r\n\r\n @Input()\r\n public maxRows?: number;\r\n\r\n @Input({ required: true })\r\n public text!: LocalizedString;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input()\r\n public device: DeviceType = DeviceType.NotSet;\r\n\r\n @Output()\r\n public startEditing: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public changed: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public blurred: EventEmitter<void> = new EventEmitter();\r\n\r\n constructor(\r\n private ngZone: NgZone\r\n ) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(this.triggerResize.bind(this));\r\n }\r\n\r\n ngOnChanges(): void {\r\n setTimeout(this.triggerResize.bind(this), 500);\r\n }\r\n\r\n public onClick() {\r\n this.startEditing.emit();\r\n }\r\n\r\n public onKeyPress() {\r\n this.changed.emit();\r\n }\r\n\r\n public onBlur() {\r\n this.blurred.emit();\r\n }\r\n\r\n private triggerResize() {\r\n // console.log('trigger resize!');\r\n\r\n this.ngZone.onStable.pipe(take(1))\r\n .subscribe(() => {\r\n this.autosizeList.forEach(x => x.resizeToFitContent(true));\r\n });\r\n }\r\n}\r\n","<textarea [(ngModel)]=\"text[locale]\"\r\n [cdkAutosizeMinRows]=\"minRows\"\r\n [cdkAutosizeMaxRows]=\"maxRows\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onKeyPress()\"\r\n (blur)=\"onBlur()\"\r\n matInput\r\n cdkTextareaAutosize>\r\n</textarea>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { LocalizedString } from '@candy-kingdom/bonnie';\r\nimport { TextEditorField } from '../../core';\r\n\r\n@Component({\r\n selector: 'bonc-link-popup',\r\n templateUrl: './link-popup.component.html',\r\n styleUrl: './link-popup.component.scss'\r\n})\r\nexport class LinkPopupComponent {\r\n public readonly TextEditorField = TextEditorField;\r\n @Output()\r\n public linkChange: EventEmitter<LocalizedString> = new EventEmitter();\r\n\r\n @Output()\r\n public startEditing: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public changed: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public blurred: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public open: EventEmitter<void> = new EventEmitter();\r\n\r\n @Output()\r\n public closed: EventEmitter<void> = new EventEmitter();\r\n\r\n @Input({ required: true })\r\n public field!: TextEditorField;\r\n public LinkPopupField = TextEditorField;\r\n\r\n @Input()\r\n public maxRows?: number;\r\n\r\n @Input()\r\n public minRows?: number;\r\n\r\n @Input({ required: true })\r\n public linkTitle!: LocalizedString; // todo: allready in weblink\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input({ required: true })\r\n public link!: LocalizedString;\r\n\r\n public popupIsShown = false;\r\n\r\n public onClick() {\r\n this.startEditing.emit();\r\n }\r\n\r\n public onChange() {\r\n console.log('change link pop up')\r\n this.changed.emit();\r\n }\r\n\r\n public onBlur() {\r\n this.blurred.emit();\r\n }\r\n\r\n public showPopup(): void {\r\n this.popupIsShown = true;\r\n this.open.emit();\r\n }\r\n\r\n public hidePopup(): void {\r\n this.popupIsShown = false;\r\n this.closed.emit();\r\n }\r\n}\r\n","<bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\r\n (click)=\"showPopup()\"\r\n [text]=\"linkTitle\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"onClick()\"\r\n (changed)=\"onChange()\"\r\n (blurred)=\"onBlur()\">\r\n</bonc-translation-input>\r\n\r\n<bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\r\n (click)=\"showPopup()\"\r\n [text]=\"linkTitle\"\r\n [locale]=\"locale\"\r\n [minRows]=\"minRows\"\r\n [maxRows]=\"maxRows\"\r\n (startEditing)=\"onClick()\"\r\n (changed)=\"onChange()\"\r\n (blurred)=\"onBlur()\">\r\n</bonc-translation-textarea>\r\n\r\n<div *ngIf=\"popupIsShown\">\r\n <div class=\"popup\">\r\n <a (click)=\"hidePopup()\" class=\"close\">close</a>\r\n\r\n <label>Link\r\n <input [(ngModel)]=\"link[locale]\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onChange()\"\r\n (blur)=\"onBlur()\">\r\n </label>\r\n\r\n </div>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { EditableDirective } from '../core-components';\r\n\r\n@Component({\r\n selector: 'bonc-form-controls',\r\n templateUrl: './form-controls.component.html',\r\n styleUrls: ['./form-controls.component.scss']\r\n})\r\nexport class FormControlsComponent {\r\n @Input({ required: true })\r\n public editable!: EditableDirective<any>;\r\n}\r\n","<div [class.edit]=\"editable.inEditMode\" class=\"content\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<div [class.hidden]=\"!editable.inEditMode\" class=\"controls\">\r\n <a *ngIf=\"!editable.isDirty\" (click)=\"editable.cancel()\" class=\"close\">close</a>\r\n <ng-container *ngIf=\"editable.isDirty\">\r\n <a (click)=\"editable.cancel()\">reset</a>\r\n <a (click)=\"editable.requestSave()\" class=\"apply\">apply</a>\r\n </ng-container>\r\n</div>\r\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\r\nimport { HttpClient, HttpEvent, HttpEventType, HttpRequest } from '@angular/common/http';\r\nimport { catchError, last, map, Observable } from 'rxjs';\r\n\r\nimport { FileMeta, FileSrc } from '@candy-kingdom/bonnie';\r\n\r\n@Component({\r\n selector: 'bonc-file-uploader',\r\n templateUrl: './file-uploader.component.html',\r\n styleUrls: ['./file-uploader.component.scss']\r\n})\r\nexport class FileUploaderComponent {\r\n @ViewChild('fileInput', { static: true })\r\n public fileInput!: ElementRef<HTMLInputElement>;\r\n\r\n @Output()\r\n public srcChange = new EventEmitter<FileSrc<FileMeta>>();\r\n\r\n @Input({ required: true })\r\n public uploadUrlMap!: ReadonlyMap<string, string>;\r\n\r\n public progress = 0;\r\n public isUploading = false;\r\n\r\n public autoplay = true;\r\n public clipStyle?: SafeStyle;\r\n\r\n public fileTypeMask?: string = undefined;\r\n\r\n private _uploadTypes: string[] = [];\r\n private _src?: FileSrc<FileMeta>;\r\n\r\n constructor(private sanitizer: DomSanitizer, private http: HttpClient, private readonly cd: ChangeDetectorRef) {\r\n }\r\n\r\n @Input()\r\n public set src(newSrc: FileSrc<FileMeta> | undefined) {\r\n if (this._src === newSrc)\r\n return;\r\n\r\n this._src = newSrc;\r\n }\r\n\r\n public get src(): FileSrc<FileMeta> | undefined {\r\n return this._src;\r\n }\r\n\r\n @Input()\r\n public set uploadTypes(newUploadType: string[]) {\r\n this._uploadTypes.splice(0, this._uploadTypes.length);\r\n\r\n this._uploadTypes.push(...newUploadType);\r\n\r\n this.fileTypeMask = this._uploadTypes.length === 0 ? undefined : this._uploadTypes.join(',');\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get uploadTypes(): string[] {\r\n return this._uploadTypes;\r\n }\r\n\r\n public onFileSelect(fileInput: HTMLInputElement) {\r\n if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)\r\n return;\r\n\r\n const file = fileInput.files[0];\r\n\r\n const uploadUrl = this.uploadUrlMap.get(file.type) ?? this.uploadUrlMap.get(\"\");\r\n\r\n if (uploadUrl === undefined || uploadUrl === null) {\r\n console.error(`upload map doesn't have url for type '${file.type}'`);\r\n return;\r\n }\r\n\r\n const formData: FormData = new FormData();\r\n\r\n formData.append('file', file);\r\n\r\n this.progress = 0;\r\n this.isUploading = true;\r\n\r\n this.updateClip();\r\n\r\n const request = new HttpRequest('POST', uploadUrl, formData, {\r\n reportProgress: true\r\n });\r\n\r\n this.http\r\n .request<FileSrc<FileMeta>>(request)\r\n .pipe\r\n (\r\n map(event => this.getEventMessage(event)),\r\n // tap(message => this.showProgress(message)),\r\n last(), // return last (completed) message to caller\r\n catchError(this.handleError(file))\r\n ).subscribe\r\n (\r\n () => { this.isUploading = false; }\r\n );\r\n }\r\n\r\n public selectFile(event: Event): void {\r\n // ignore buble click on file picker\r\n if (event.target === this.fileInput.nativeElement)\r\n return;\r\n\r\n this.fileInput.nativeElement.click();\r\n }\r\n\r\n private getEventMessage(event: HttpEvent<FileSrc<FileMeta>>): void {\r\n switch (event.type) {\r\n case HttpEventType.Sent:\r\n break;\r\n\r\n case HttpEventType.UploadProgress:\r\n this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;\r\n this.updateClip();\r\n break;\r\n\r\n case HttpEventType.Response:\r\n if (event.body === null || event.body === undefined) {\r\n console.warn(`empty body from uploader`);\r\n break;\r\n }\r\n\r\n this.srcChange.emit(event.body);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n this.cd.detectChanges()\r\n }\r\n\r\n private updateClip(): void {\r\n this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);\r\n }\r\n\r\n private handleError(file: File): (p1: unknown, p2: Observable<unknown>) => Observable<unknown> {\r\n const func = (error: unknown, p2: Observable<unknown>): Observable<unknown> => {\r\n const message = `error uploadingFile ${file.name}.`;\r\n console.error(message, error, p2);\r\n alert(message);\r\n return new Observable<unknown>();\r\n };\r\n\r\n return func;\r\n }\r\n}\r\n","<div *ngIf=\"src === undefined || src.url === undefined || src?.url?.length === 0\">Upload file</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<div (click)=\"selectFile($event)\" class=\"media-container\">\r\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\r\n <span *ngIf=\"isUploading\"\r\n [style.clip-path]=\"clipStyle\"\r\n [style.-webkit-clip-path]=\"clipStyle\"\r\n class=\"loader\"></span>\r\n\r\n <span *ngIf=\"isUploading\" class=\"loader-text\">\r\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\r\n <span *ngIf=\"progress >= 1\">converting</span>\r\n </span>\r\n</div>\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { FileMeta, FileSrc, ImageMeta, OpenGraphData } from '@candy-kingdom/bonnie';\r\n\r\nimport { EditableDirective, FormBaseComponent } from '../../core-components';\r\n\r\nconst uploadMap = new Map<string, string>();\r\nuploadMap.set('', `/api/admin/upload/image?width=${1200}&height=${630}&format=image/jpeg`);\r\n\r\n@Component({\r\n selector: 'bonc-seo-form',\r\n templateUrl: './seo-form.component.html',\r\n styleUrls: ['./seo-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class SeoFormComponent extends FormBaseComponent<OpenGraphData> implements OnInit {\r\n public readonly uploadMap = uploadMap;\r\n\r\n private _pageId = '';\r\n public ogImageUploadUrl = '';\r\n\r\n @Input()\r\n public label = '';\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input()\r\n public set pageId(value: string) {\r\n this._pageId = value;\r\n this.ogImageUploadUrl = `/api/admin/page/Og-Image?pageId=${this.pageId}`; // todo: replace with link to single image api\r\n }\r\n\r\n public get pageId(): string {\r\n return this._pageId;\r\n }\r\n\r\n public ResToSrc(res: { url: string }): string {\r\n return res.url;\r\n }\r\n\r\n public replaceImage($event: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n if (this.editable.value !== undefined) {\r\n this.editable.value.image[this.locale] = $event as FileSrc<ImageMeta>;\r\n }\r\n\r\n this.editable.updateDirty();\r\n }\r\n}\r\n","<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\r\n <h2 *ngIf=\"label\">{{label}}</h2>\r\n\r\n <div class=\"form-group\">\r\n <label>Title</label>\r\n <bonc-translation-input [text]=\"editable.value.title\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-input>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Description</label>\r\n <bonc-translation-textarea [text]=\"editable.value.description\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-textarea>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Share image | 1200x630</label>\r\n\r\n <bonc-file-uploader [src]=\"editable.value.image[locale]\"\r\n [uploadTypes]=\"['image/png', 'image/jpeg']\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"replaceImage($event)\">\r\n <img *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [src]=\"editable.value.image[locale].url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [href]=\"editable.value.image[locale].url\" download target=\"_blank\">Download</a>\r\n </div>\r\n\r\n</bonc-form-controls>\r\n\r\n<div *ngIf=\"!editable.value\">Editable Value canot be null or undefined</div>\r\n","import { ChangeDetectorRef, Component, Host, Input, OnInit, inject } from '@angular/core';\r\n\r\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\r\n\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components/editable.directive';\r\n\r\n@Component({\r\n selector: 'bonc-svg-form',\r\n templateUrl: './svg-form.component.html',\r\n styleUrls: ['./svg-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class SvgFormComponent extends FormBaseComponent<FileSrc<SvgMeta>> implements OnInit {\r\n private readonly cd = inject(ChangeDetectorRef);\r\n\r\n public readonly SvgMime = 'image/svg+xml';\r\n\r\n @Input()\r\n public label = '';\r\n\r\n public uploadMap = new Map<string, string>();\r\n\r\n private _uploadUrl = '/api/admin/upload/image/svg';\r\n\r\n constructor(@Host() editable: EditableDirective<FileSrc<SvgMeta>>) {\r\n super(editable)\r\n\r\n this.uploadMap.set(this.SvgMime, this._uploadUrl);\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input()\r\n public set uploadUrl(newValue: string) {\r\n this._uploadUrl = newValue;\r\n\r\n this.uploadMap.set(this.SvgMime, this._uploadUrl);\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\r\n\r\n this.editable.value = svgSrc;\r\n\r\n this.editable.updateDirty();\r\n }\r\n\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"[SvgMime]\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n\r\n</bonc-form-controls>\r\n","import { ChangeDetectorRef, Component, Host, Input, OnInit, inject } from '@angular/core';\r\n\r\nimport { FileMeta, FileSrc, ImageMeta } from '@candy-kingdom/bonnie';\r\n\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components/editable.directive';\r\n\r\nconst DefaultImageMimeTypes = ['image/png', 'image/jpeg'];\r\n\r\n@Component({\r\n selector: 'bonc-one-image-form',\r\n templateUrl: './one-image-form.component.html',\r\n styleUrls: ['./one-image-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class OneImageFormComponent extends FormBaseComponent<FileSrc<ImageMeta>> implements OnInit {\r\n private readonly cd = inject(ChangeDetectorRef);\r\n\r\n public uploadMap = new Map<string, string>();\r\n\r\n private _mimeTypes = DefaultImageMimeTypes;\r\n\r\n private _uploadUrl = '/api/admin/upload/image';\r\n\r\n private _label = ''\r\n\r\n constructor(@Host() editable: EditableDirective<FileSrc<ImageMeta>>) {\r\n super(editable)\r\n\r\n this.uploadMap.set('', this._uploadUrl);\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input()\r\n public set label(newValue: string) {\r\n this._label = newValue;\r\n }\r\n\r\n public get label(): string {\r\n return this._label;\r\n }\r\n\r\n @Input()\r\n public set uploadUrl(newValue: string) {\r\n this._uploadUrl = newValue;\r\n\r\n this.uploadMap.set('', this._uploadUrl);\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n @Input()\r\n public set mimeTypes(newValue: string[]) {\r\n this._mimeTypes = newValue.length === 0 ? DefaultImageMimeTypes : newValue;\r\n this.cd.detectChanges();\r\n }\r\n\r\n public get mimeTypes(): string[] {\r\n return this._mimeTypes;\r\n }\r\n\r\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n const svgSrc = fileSrc as FileSrc<ImageMeta>;\r\n\r\n this.editable.value = svgSrc;\r\n\r\n this.editable.updateDirty();\r\n }\r\n\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"mimeTypes\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n\r\n</bonc-form-controls>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components';\r\n\r\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\r\n\r\n@Component({\r\n selector: 'bonc-file-form',\r\n templateUrl: './file-form.component.html',\r\n styleUrls: ['./file-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class FileFormComponent extends FormBaseComponent<FileSrc<FileMeta>> implements OnInit {\r\n @Input()\r\n public label = '';\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input({ required: true })\r\n public uploadTypes: string[] = [];\r\n\r\n @Input({ required: true })\r\n public uploadMap = new Map<string, string>();;\r\n\r\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\r\n\r\n this.editable.value = svgSrc;\r\n\r\n this.editable.updateDirty();\r\n }\r\n\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"uploadTypes\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <div *ngIf=\"editable.value?.url?.length ?? 0 > 0\">{{editable.value?.url}}</div>\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n</bonc-form-controls>\r\n","\r\nexport enum TextInputStyle {\r\n NotSet = 0,\r\n SingleLine = 1,\r\n MultiLine = 2\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { TextInputStyle } from './TextInputStyle';\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components';\r\n\r\n@Component({\r\n selector: 'bonc-text-form',\r\n templateUrl: './text-form.component.html',\r\n styleUrls: ['./text-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class TextFormComponent extends FormBaseComponent<string> implements OnInit {\r\n public readonly TextInputStyle = TextInputStyle;\r\n\r\n @Input()\r\n public label = '';\r\n\r\n @Input()\r\n public type = TextInputStyle.SingleLine;\r\n\r\n ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n\r\n <input *ngIf=\"editable && type === TextInputStyle.SingleLine\"\r\n [(ngModel)]=\"editable.value\"\r\n (click)=\"editable.startEditing()\"\r\n (keyup)=\"editable.updateDirty()\"\r\n (blur)=\"editable.updateDirty()\" />\r\n\r\n <textarea *ngIf=\"editable && type === TextInputStyle.MultiLine\"\r\n [(ngModel)]=\"editable.value\"\r\n (click)=\"editable.startEditing()\"\r\n (keyup)=\"editable.updateDirty()\"\r\n (blur)=\"editable.updateDirty()\">\r\n </textarea>\r\n</bonc-form-controls>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\r\n\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\nimport { EditableDirective } from '../../core-components/editable.directive';\r\nimport { AnimationOptions } from 'ngx-lottie';\r\n\r\n@Component({\r\n selector: 'bonc-lottie-form',\r\n templateUrl: './lottie-form.component.html',\r\n styleUrls: ['./lottie-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class LottieFormComponent extends FormBaseComponent<FileSrc<FileMeta>> implements OnInit {\r\n public readonly LottieMimeType = 'application/json';\r\n\r\n public animOptions?: AnimationOptions;\r\n\r\n @Input()\r\n public label = '';\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n\r\n this.editable.valueChange.subscribe(x => {\r\n const url = x?.url ?? '';\r\n this.animOptions = url.length === 0 ? undefined : { path: url };\r\n })\r\n }\r\n\r\n @Input({ required: true })\r\n public uploadMap = new Map<string, string>();;\r\n\r\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\r\n this.editable.startEditing();\r\n\r\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\r\n\r\n this.editable.value = svgSrc;\r\n\r\n this.editable.updateDirty();\r\n }\r\n\r\n}\r\n","<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"[LottieMimeType]\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n\r\n <ng-lottie *ngIf=\"animOptions\"\r\n [options]=\"animOptions\"></ng-lottie>\r\n\r\n\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n</bonc-form-controls>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { LocalizedString } from '@candy-kingdom/bonnie';\r\n\r\nimport { EditableDirective, FormBaseComponent } from '../../core-components';\r\nimport { TextEditorField } from '../../core';\r\n\r\n@Component({\r\n selector: 'bonc-translation-form',\r\n templateUrl: './translation-form.component.html',\r\n styleUrls: ['./translation-form.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class TranslationFormComponent extends FormBaseComponent<LocalizedString> implements OnInit {\r\n public readonly TextEditorField = TextEditorField;\r\n\r\n @Input({ required: true })\r\n public field!: TextEditorField;\r\n\r\n @Input() label?: string;\r\n\r\n\r\n ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n}\r\n","<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n\r\n <bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\r\n [text]=\"editable.value\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-input>\r\n\r\n\r\n <bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\r\n [text]=\"editable.value\"\r\n [minRows]=\"2\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-textarea>\r\n</bonc-form-controls>\r\n\r\n<div *ngIf=\"editable.value===undefined\">Editable value canot be undefined</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBaseComponent } from '../../core-components/form-base.component';\r\n\r\n@Component({\r\n selector: 'bonc-unknown-form',\r\n templateUrl: './unknown-form.component.html',\r\n styleUrls: ['./unknown-form.component.scss']\r\n})\r\nexport class UnknownFormComponent extends FormBaseComponent<string> implements OnInit {\r\n @Input()\r\n public label = '';\r\n\r\n ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.editable.save();\r\n });\r\n }\r\n}\r\n","<label>Unknown form:<b>{{label}}</b></label>\r\n<pre><ng-content></ng-content></pre>\r\n","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const API_BASE_URL = new InjectionToken<string>('ApiBaseUrl');\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { Observable, combineLatest, map, merge, mergeMap, of } from 'rxjs';\r\n\r\nimport { PageBase, View } from '@candy-kingdom/bonnie';\r\n\r\nimport { SettingData } from \"../generated\";\r\nimport { API_BASE_URL } from \"./API_BASE_URL\";\r\n\r\ntype DataDictionary = { [n: string]: Observable<unknown> };\r\n\r\nexport type SettingDataDict = { [id: string]: SettingData };\r\n\r\n@Injectable()\r\nexport class DataService {\r\n constructor(private readonly http: HttpClient, @Inject(API_BASE_URL) private baseHref: string) {\r\n }\r\n\r\n public getView(viewCode: string): Observable<Readonly<PageBase>> {\r\n const pageOb = this.getSkeleton<PageBase>(`${this.baseHref}api/views/${viewCode}`);\r\n return pageOb;\r\n }\r\n\r\n public getPage(pageRoute: string): Observable<Readonly<PageBase>> {\r\n const pageUrl = `/${pageRoute}`\r\n\r\n const pageOb = this.getSkeleton<PageBase>(`${this.baseHref}api/pages/?url=${encodeURIComponent(pageUrl)}`);\r\n return pageOb;\r\n }\r\n\r\n public getSettings(ids: string[]): Observable<Readonly<SettingDataDict>> {\r\n const pageOb = this.http.get<SettingDataDict>(`${this.baseHref}api/settings`, {\r\n params: { ids: ids }\r\n });\r\n\r\n return pageOb;\r\n }\r\n\r\n private getSkeleton<T extends (PageBase | View)>(url: string): Observable<Readonly<T>> {\r\n const skeletonOb = this.http.get<T>(url);\r\n\r\n const routeDataObs = skeletonOb\r\n .pipe\r\n (\r\n map(\r\n x => {\r\n const notEmptyDataRoutes = x.bones\r\n .map(b => ('dataRoute' in b) && typeof (b.dataRoute) === 'string' ? b.dataRoute : '')\r\n .filter(x => x.length > 0);\r\n\r\n if (notEmptyDataRoutes.length === 0) {\r\n const emptyData: DataDictionary = {};\r\n return { page: of(x), data: of(emptyData) };\r\n }\r\n\r\n return {\r\n page: of(x),\r\n data: combineLatest\r\n (\r\n notEmptyDataRoutes\r\n .map(dataRoute => {\r\n const url = `${this.baseHref}api/Pages/Children/?url=${dataRoute}`;\r\n\r\n return {\r\n route: dataRoute,\r\n json: this.http.get(url)\r\n }\r\n })\r\n .reduce(\r\n (prev, curr) => {\r\n prev[curr.route] = curr.json;\r\n return prev;\r\n }, {} as DataDictionary\r\n )\r\n )\r\n }\r\n }\r\n\r\n ),\r\n map(x => combineLatest(x)),\r\n mergeMap(res => merge(res)),\r\n map(x => {\r\n\r\n for (const bone of x.page.bones) {\r\n if (!('dataRoute' in bone) || typeof bone.dataRoute !== 'string' || bone.dataRoute.length === 0)\r\n continue;\r\n\r\n const data = x.data[bone.dataRoute];\r\n\r\n if (data === undefined || data === null)\r\n throw new Error(`Data ${bone.dataRoute} have not been preloaded`);\r\n\r\n (bone as any).data = data; // todo: fix\r\n }\r\n\r\n return x.page;\r\n })\r\n );\r\n\r\n return routeDataObs;\r\n }\r\n}\r\n\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { PageBase } from \"@candy-kingdom/bonnie\";\r\n\r\nimport { SettingBase, SettingGroup } from \"../generated\";\r\nimport { API_BASE_URL } from \"./API_BASE_URL\";\r\n\r\n@Injectable()\r\nexport class AdminDataService {\r\n constructor(private readonly http: HttpClient, @Inject(API_BASE_URL) private baseHref: string) {\r\n console.log('baseHref: ' + baseHref);\r\n }\r\n\r\n public getSettingGroups(): Observable<SettingGroup[]> {\r\n const pageOb = this.http.get<SettingGroup[]>(`${this.baseHref}api/admin/settings`);\r\n return pageOb;\r\n }\r\n\r\n public getPage(url: string): Observable<SettingGroup[]> {\r\n const pageOb = this.http.get<SettingGroup[]>(`${this.baseHref}api/admin/pages/${url}`);\r\n return pageOb;\r\n }\r\n\r\n public storePage(page: PageBase): Observable<void> {\r\n const ob = this.http.post<void>(`${this.baseHref}api/admin/pages`, page);\r\n return ob;\r\n }\r\n\r\n public updateSettings(settings: SettingBase[]): Observable<void> {\r\n const ob = this.http.post<void>(`${this.baseHref}api/admin/settings`, settings);\r\n return ob;\r\n }\r\n}\r\n\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { DeviceType } from '../core';\r\nimport { EditableGroupComponent } from '../core-components';\r\n\r\n@Component({\r\n selector: 'bonc-admin-controls',\r\n templateUrl: './admin-controls.component.html',\r\n styleUrls: ['./admin-controls.component.scss']\r\n})\r\nexport class AdminControlsComponent {\r\n public readonly DeviceType = DeviceType;\r\n\r\n @Input({ required: true })\r\n public editableGroup!: EditableGroupComponent;\r\n\r\n @Input()\r\n public deviceControls = false;\r\n\r\n public locale = 'en';\r\n public device = this.DeviceType.Desktop;\r\n\r\n public changeLocale(): void {\r\n this.locale = this.locale === 'en' ? 'ru' : 'en';\r\n }\r\n\r\n public changeDevice(): void {\r\n switch (this.device) {\r\n case DeviceType.Desktop:\r\n this.device = DeviceType.Tablet;\r\n return;\r\n\r\n case DeviceType.Tablet:\r\n this.device = DeviceType.Mobile;\r\n return;\r\n\r\n case DeviceType.Mobile:\r\n this.device = DeviceType.Desktop;\r\n return;\r\n\r\n default:\r\n this.device = DeviceType.Desktop;\r\n return;\r\n }\r\n }\r\n}\r\n","<div class=\"page-controls\">\r\n <a (click)=\"changeLocale()\" class=\"locale\">Locale: {{locale}}</a>\r\n\r\n <!-- todo: return this functionality -->\r\n <!-- <a *ngIf=\"deviceControls\" (click)=\"changeDevice()\" class=\"device\">\r\n <span *ngIf=\"device === DeviceType.Desktop\">DESKTOP</span>\r\n <span *ngIf=\"device === DeviceType.Tablet\">TABLET</span>\r\n <span *ngIf=\"device === DeviceType.Mobile\">MOBILE</span>\r\n </a> -->\r\n\r\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\r\n (click)=\"editableGroup.saveAll()\"\r\n class=\"save\">Save all</a>\r\n\r\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\r\n (click)=\"editableGroup.cancelAll()\"\r\n class=\"cancel\">Cancel all</a>\r\n</div>\r\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\r\nimport { HttpClient, HttpEvent, HttpEventType, HttpRequest } from '@angular/common/http';\r\nimport { catchError, last, map, Observable } from 'rxjs';\r\n\r\nimport { MediaObjectFit, PixMediaUnion } from '@candy-kingdom/bonnie';\r\nimport { MediaType } from '../core';\r\n\r\nconst imageMimeTypes = ['image/png', 'image/jpeg'];\r\nconst videoMimeTypes = ['video/mp4'];\r\n\r\nconst imageFileTypes = imageMimeTypes.join(',');\r\nconst videoFileTypes = videoMimeTypes.join(',');\r\n\r\nconst allMediaFileTypes = `${imageFileTypes},${videoFileTypes}`;\r\n\r\n@Component({\r\n selector: 'bonc-media-uploader',\r\n templateUrl: './media-uploader.component.html',\r\n styleUrls: ['./media-uploader.component.scss']\r\n})\r\nexport class MediaUploaderComponent {\r\n public readonly MediaObjectFit = MediaObjectFit;\r\n\r\n @ViewChild('fileInput', { static: true })\r\n public fileInput!: ElementRef<HTMLInputElement>;\r\n\r\n @Output()\r\n public srcChange = new EventEmitter<PixMediaUnion>();\r\n\r\n @Input({ required: true })\r\n public uploadUrlMap!: ReadonlyMap<MediaType, string>;\r\n\r\n @Input()\r\n public forceRatio?: number;\r\n\r\n public progress = 0;\r\n public isUploading = false;\r\n\r\n public autoplay = true;\r\n public clipStyle?: SafeStyle;\r\n public fileTypeMask = allMediaFileTypes;\r\n\r\n private _uploadType?: MediaType;\r\n private _src?: PixMediaUnion;\r\n\r\n constructor(private sanitizer: DomSanitizer, private http: HttpClient, private cd: ChangeDetectorRef) {\r\n }\r\n\r\n @Input()\r\n public set src(newSrc: PixMediaUnion | undefined) {\r\n if (this._src === newSrc)\r\n return;\r\n\r\n this._src = newSrc;\r\n }\r\n\r\n public get src(): PixMediaUnion | undefined {\r\n return this._src;\r\n }\r\n\r\n @Input()\r\n public set uploadType(newUploadType: MediaType | undefined) {\r\n switch (newUploadType) {\r\n case \"image\":\r\n this._uploadType = newUploadType;\r\n this.fileTypeMask = imageFileTypes;\r\n break;\r\n\r\n case \"video\":\r\n this._uploadType = newUploadType;\r\n this.fileTypeMask = videoFileTypes;\r\n break;\r\n\r\n case undefined:\r\n default:\r\n this._uploadType = newUploadType;\r\n this.fileTypeMask = allMediaFileTypes;\r\n break;\r\n }\r\n }\r\n\r\n public get uploadType(): MediaType | undefined {\r\n return this._uploadType;\r\n }\r\n\r\n public onFileSelect(fileInput: HTMLInputElement) {\r\n if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)\r\n return;\r\n\r\n const file = fileInput.files[0];\r\n\r\n let uploadingMediaType: MediaType;\r\n\r\n if (this._uploadType !== undefined && this._uploadType !== null) {\r\n uploadingMediaType = this._uploadType;\r\n }\r\n else if (imageMimeTypes.includes(file.type)) {\r\n uploadingMediaType = 'image';\r\n }\r\n else if (videoMimeTypes.includes(file.type)) {\r\n uploadingMediaType = 'video';\r\n }\r\n else {\r\n console.error(`unknown media type ${file.type} (${file.name})`);\r\n return;\r\n }\r\n\r\n const uploadUrl = this.uploadUrlMap.get(uploadingMediaType);\r\n\r\n if (uploadUrl === undefined || uploadUrl === null) {\r\n console.error(`upload map doesn't have url for type ${uploadingMediaType}`);\r\n return;\r\n }\r\n\r\n const formData: FormData = new FormData();\r\n\r\n formData.append('file', file);\r\n formData.append('ratio', `${this.forceRatio ?? 0}`);\r\n\r\n this.progress = 0;\r\n this.isUploading = true;\r\n\r\n this.updateClip();\r\n\r\n const request = new HttpRequest('POST', uploadUrl, formData, {\r\n reportProgress: true\r\n });\r\n\r\n this.http\r\n .request<PixMediaUnion>(request)\r\n .pipe\r\n (\r\n map(event => this.getEventMessage(event)),\r\n // tap(message => this.showProgress(message)),\r\n last(), // return last (completed) message to caller\r\n catchError(this.handleError(file))\r\n ).subscribe\r\n (\r\n () => { this.isUploading = false; }\r\n );\r\n }\r\n\r\n public selectFile(event: Event): void {\r\n // ignore buble click on file picker\r\n if (event.target === this.fileInput.nativeElement)\r\n return;\r\n\r\n this.fileInput.nativeElement.click();\r\n }\r\n\r\n private getEventMessage(event: HttpEvent<PixMediaUnion>): void {\r\n switch (event.type) {\r\n case HttpEventType.Sent:\r\n break;\r\n\r\n case HttpEventType.UploadProgress:\r\n this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;\r\n this.updateClip();\r\n break;\r\n\r\n case HttpEventType.Response:\r\n if (event.body === undefined || event.body === null) {\r\n console.error('media deserialization error. Response body in undefined');\r\n } else {\r\n // remove this\r\n // needed for C# deserialization\r\n const pixmedia = {\r\n $type: event.body.type,\r\n ...event.body as any,\r\n };\r\n\r\n this.srcChange.emit(pixmedia);\r\n }\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n private updateClip(): void {\r\n this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);\r\n }\r\n\r\n private handleError(file: File): (p1: unknown, p2: Observable<unknown>) => Observable<unknown> {\r\n const func = (error: unknown, p2: Observable<unknown>): Observable<unknown> => {\r\n const message = `error uploadingFile ${file.name}.`;\r\n console.error(message, error, p2);\r\n alert(message);\r\n return new Observable<unknown>();\r\n };\r\n\r\n return func;\r\n }\r\n}\r\n","<bon-media [src]=\"src\" [objectFit]=\"MediaObjectFit.Cover\"></bon-media>\r\n\r\n<div *ngIf=\"src?.sources?.length===0\">Upload media</div>\r\n\r\n<div (click)=\"selectFile($event)\" class=\"media-container\">\r\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\r\n <span *ngIf=\"isUploading\"\r\n [style.clip-path]=\"clipStyle\"\r\n [style.-webkit-clip-path]=\"clipStyle\"\r\n class=\"loader\"></span>\r\n\r\n <span *ngIf=\"isUploading\" class=\"loader-text\">\r\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\r\n <span *ngIf=\"progress >= 1\">converting</span>\r\n </span>\r\n</div>\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[boncSkeletonEditorAnchor]'\r\n})\r\nexport class SkeletonEditorAnchorDirective {\r\n\r\n constructor(public viewContainerRef: ViewContainerRef) { }\r\n}\r\n","import { EventEmitter, HostBinding, Component, Input } from '@angular/core';\r\n\r\nimport { Bone } from '@candy-kingdom/bonnie';\r\n\r\nimport { ContentPreset } from '../skeleton-editor/ContentPreset';\r\nimport { IBoneEditor } from '../skeleton-editor/IBoneEditor';\r\nimport { DeviceType } from '../core';\r\n\r\n@Component({ template: '' })\r\nexport abstract class BoneEditorBaseComponent<TBone extends Bone> implements IBoneEditor<TBone> {\r\n public readonly editing: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n public readonly saved: EventEmitter<Bone> = new EventEmitter<Bone>();\r\n public readonly removed: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public readonly noPresets: boolean;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n public device = DeviceType.NotSet;\r\n\r\n private _bone!: TBone;\r\n private _storedData: string = '';\r\n\r\n private _currentPreset: ContentPreset<TBone> | undefined;\r\n\r\n protected readonly presets: ReadonlyArray<ContentPreset<TBone>>;\r\n private _isDirty = false;\r\n private _isEditing = false;\r\n\r\n public abstract onReset(): void;\r\n public abstract onFinishEditing(): void;\r\n\r\n protected abstract getPresets(): ContentPreset<TBone>[];\r\n\r\n constructor() {\r\n this.presets = this.getPresets();\r\n\r\n if (this.presets === undefined || this.presets === null)\r\n throw new Error('presets cannot be undefined in ContentPreset constructor');\r\n\r\n if (this.presets.length === 0) {\r\n this.presets = [\r\n\r\n {\r\n title: 'default',\r\n isActive: () => true,\r\n transformer: bone => bone,\r\n clean: bone => bone,\r\n }\r\n ];\r\n }\r\n\r\n this.noPresets = this.presets.length === 1;\r\n }\r\n\r\n @HostBinding('class.mobile') get isMobile(): boolean {\r\n return this.device !== undefined && this.device === DeviceType.Mobile;\r\n }\r\n\r\n @HostBinding('class.tablet') get isTablet(): boolean {\r\n return this.device !== undefined && this.device === DeviceType.Tablet;\r\n }\r\n\r\n @HostBinding('class.desktop') get isDesktop(): boolean {\r\n return this.device !== undefined && this.device === DeviceType.Desktop;\r\n }\r\n\r\n public get currentPreset(): ContentPreset<TBone> | undefined {\r\n return this._currentPreset;\r\n }\r\n\r\n public get bone(): TBone {\r\n return this._bone;\r\n }\r\n\r\n @Input({ required: true })\r\n public set bone(newData: TBone) {\r\n this._isDirty = false;\r\n this._storedData = JSON.stringify(newData);\r\n this._bone = JSON.parse(this._storedData);\r\n this.updatePresetByData();\r\n }\r\n\r\n public get isDirty(): boolean {\r\n return this._isDirty;\r\n }\r\n\r\n public get isEditing(): boolean {\r\n return this._isEditing;\r\n }\r\n\r\n public resetData(): void {\r\n this._isEditing = false;\r\n this.bone = JSON.parse(this._storedData);\r\n\r\n if (this.onReset !== undefined)\r\n this.onReset();\r\n\r\n this.editing.emit(false);\r\n }\r\n\r\n public updateDirty(): void {\r\n this._isDirty = JSON.stringify(this._bone) !== this._storedData;\r\n }\r\n\r\n public markAsDirty(): void {\r\n this._isDirty = true;\r\n }\r\n\r\n public remove(): void {\r\n this.removed.next();\r\n }\r\n\r\n public save(): void {\r\n if (!this.isDirty)\r\n return;\r\n\r\n this._isDirty = false;\r\n\r\n this.finishEditing();\r\n\r\n this._storedData = JSON.stringify(this._bone);\r\n\r\n const clonedData: TBone = JSON.parse(this._storedData);\r\n this.saved.emit(clonedData);\r\n }\r\n\r\n public startEditing(): void {\r\n if (this._isEditing) {\r\n this.updateDirty();\r\n return;\r\n }\r\n\r\n this._isEditing = true;\r\n this.updateDirty();\r\n\r\n this.editing.emit(true);\r\n }\r\n\r\n public finishEditing(): void {\r\n if (this._isDirty)\r\n throw new Error('Нельзя закрывать редактирование когда есть изменения. Надо сохранить либо зарезетить.');\r\n\r\n if (this.onFinishEditing !== undefined)\r\n this.onFinishEditing();\r\n\r\n this._isEditing = false;\r\n }\r\n\r\n public nextPreset(): void {\r\n const newIndex = this._currentPreset === undefined ? 0 : this.presets.indexOf(this._currentPreset) + 1;\r\n this.applyPresetAtIndex(newIndex);\r\n }\r\n\r\n private applyPresetAtIndex = (newIndex: number): void => {\r\n newIndex = newIndex < 0 ? 0 : newIndex % this.presets.length;\r\n\r\n const currentIndex = this._currentPreset === undefined ? -1 : this.presets.indexOf(this._currentPreset);\r\n if (currentIndex === newIndex)\r\n return;\r\n\r\n this._currentPreset = this.presets[newIndex];\r\n this._currentPreset.transformer(this._bone);\r\n\r\n this.updateDirty();\r\n }\r\n\r\n private updatePresetByData = (): void => {\r\n const countOfActive = this.presets.map(p => p.isActive(this._bone)).filter(p => p).length;\r\n\r\n if (countOfActive !== 1)\r\n throw new Error(`active preset count should be equal 1, but it was: ${countOfActive}. ${this.constructor.name}`);\r\n\r\n for (let i = 0; this.presets.length; i++) {\r\n const preset = this.presets[i];\r\n\r\n if (preset.isActive(this._bone)) {\r\n this.applyPresetAtIndex(i);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { Bone } from '@candy-kingdom/bonnie';\r\n\r\nimport { ContentPreset } from '../../skeleton-editor/ContentPreset';\r\nimport { BoneEditorBaseComponent } from '../bone-editor-base.component';\r\n\r\n@Component({\r\n selector: 'bonc-unknown-bone-editor',\r\n templateUrl: './unknown-bone-editor.component.html',\r\n styleUrls: ['./unknown-bone-editor.component.scss']\r\n})\r\nexport class UnknownBoneEditorComponent extends BoneEditorBaseComponent<Bone> {\r\n public onFinishEditing(): void { }\r\n public onReset(): void { }\r\n\r\n protected getPresets(): ContentPreset<Bone>[] {\r\n return [];\r\n }\r\n}\r\n","<p>Unknown Bone Editor | bone type: {{bone.type}}</p>\r\n<pre>{{bone | json}}</pre>\r\n","import { Component, ComponentFactoryResolver, EventEmitter, Input, OnChanges, Output, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { Bone } from '@candy-kingdom/bonnie';\r\n\r\nimport { SkeletonEditorAnchorDirective } from '../skeleton-editor-anchor.directive';\r\nimport { DeviceType } from '../../core';\r\nimport { IBoneEditor } from '../IBoneEditor';\r\nimport { BoneEditorMap } from '../BoneEditorMap';\r\nimport { UnknownBoneEditorComponent } from '../../bone-editors/unknown-bone-editor/unknown-bone-editor.component';\r\n\r\n// todo: rename class\r\n@Component({\r\n selector: 'bonc-bone-editor-container',\r\n templateUrl: './bone-editor-container.component.html',\r\n styleUrls: ['./bone-editor-container.component.scss']\r\n})\r\nexport class BoneEditorContainerComponent implements OnChanges {\r\n @ViewChild(SkeletonEditorAnchorDirective, { static: true })\r\n public anchor!: SkeletonEditorAnchorDirective;\r\n\r\n @Output()\r\n public removed: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @Output()\r\n public saved: EventEmitter<Bone> = new EventEmitter<Bone>();\r\n\r\n @Output()\r\n public editing: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n public DeviceType = DeviceType;\r\n\r\n public editor!: IBoneEditor;\r\n\r\n public themePopupIsShown = false;\r\n\r\n private _bone!: Bone;\r\n\r\n private removeSubscription?: Subscription;\r\n private saveSubscription?: Subscription;\r\n private changedSubscription?: Subscription;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input()\r\n public device = DeviceType.NotSet;\r\n\r\n constructor(private readonly componentFactoryResolver: ComponentFactoryResolver) {\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.editor === undefined || this.editor === null)\r\n return;\r\n\r\n this.editor.locale = this.locale;\r\n this.editor.device = this.device;\r\n }\r\n\r\n @Input({ required: true })\r\n public map!: BoneEditorMap\r\n\r\n public get bone(): Bone {\r\n return this._bone;\r\n }\r\n\r\n @Input({ required: true })\r\n public set bone(newBone: Bone) {\r\n this._bone = newBone;\r\n\r\n if (this.removeSubscription) {\r\n this.removeSubscription.unsubscribe();\r\n this.removeSubscription = undefined;\r\n }\r\n\r\n if (this.saveSubscription) {\r\n this.saveSubscription.unsubscribe();\r\n this.saveSubscription = undefined;\r\n }\r\n\r\n if (this.changedSubscription) {\r\n this.changedSubscription.unsubscribe();\r\n this.changedSubscription = undefined;\r\n }\r\n\r\n const viewContainerRef = this.anchor.viewContainerRef;\r\n\r\n viewContainerRef.clear();\r\n\r\n const componentType = this.map.get(newBone.type) ?? UnknownBoneEditorComponent;\r\n\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\r\n const boneEditorRef = viewContainerRef.createComponent(componentFactory);\r\n\r\n this.editor = boneEditorRef.instance;\r\n this.editor.bone = newBone;\r\n\r\n this.removeSubscription = this.editor.removed.subscribe(() => {\r\n this.removed.next();\r\n });\r\n\r\n this.changedSubscription = this.editor.editing.subscribe\r\n (\r\n (isEditing: boolean) => {\r\n this.editing.next(isEditing);\r\n }\r\n );\r\n\r\n this.saveSubscription = this.editor.saved.subscribe(\r\n (newBoneValue: Bone) => {\r\n this.saved.next(newBoneValue);\r\n }\r\n );\r\n\r\n this.ngOnChanges();\r\n }\r\n\r\n public nextPreset = (): void => {\r\n if (this.editor === undefined || this.editor === null)\r\n return;\r\n\r\n this.editor.nextPreset();\r\n }\r\n\r\n // todo: add or remove visibility feature\r\n\r\n // public setDisabled = (disabled: boolean): void => {\r\n // if (this.editor === undefined || this.editor === null)\r\n // return;\r\n\r\n // this.editor.startEditing();\r\n\r\n // if (this.device === DeviceType.Desktop)\r\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Desktop, !disabled);\r\n // else if (this.device === DeviceType.Tablet)\r\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Tablet, !disabled);\r\n // else if (this.device === DeviceType.Mobile)\r\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Mobile, !disabled);\r\n\r\n // this.editor.updateDirty();\r\n // }\r\n\r\n public get disabled(): boolean {\r\n if (this.editor === undefined || this.editor === null)\r\n throw new Error('editor should have been set');\r\n\r\n return false;\r\n // todo: add or remove visibility feature\r\n // const visibility = this.editor.bone.visibility;\r\n\r\n // if (this.device === DeviceType.Desktop && hasFlag(visibility, DeviceVisibility.Desktop))\r\n // return false;\r\n\r\n // if (this.device === DeviceType.Tablet && hasFlag(visibility, DeviceVisibility.Tablet))\r\n // return false;\r\n\r\n // if (this.device === DeviceType.Mobile && hasFlag(visibility, DeviceVisibility.Mobile))\r\n // return false;\r\n\r\n // return true;\r\n }\r\n}\r\n","<div *ngIf=\"editor\" class=\"left bar\" [class.inactive]=\"editor.noPresets\">\r\n <!-- <a *ngFor=\"let control of editor.controls\" (click)=\"control.activate()\">{{control.label}}</a> -->\r\n <!-- <a (click)=\"setDisabled(!disabled)\" class=\"disabled\">block {{disabled ? 'disabled' : 'enabled'}} ({{editor.bone.visibility}})</a> -->\r\n <a *ngIf=\"editor.currentPreset && !editor.noPresets\" (click)=\"nextPreset()\" class=\"preset\">style:<br />{{editor.currentPreset.title}}</a>\r\n</div>\r\n\r\n<div class=\"editor-container\"\r\n [class.disabled]=\"disabled\"\r\n [style.width]=\"\r\n device === DeviceType.Desktop ? '75vw'\r\n : device === DeviceType.Tablet ? '55vw'\r\n : device === DeviceType.Mobile ? '35vw'\r\n : '75vw' \">\r\n <ng-template boncSkeletonEditorAnchor>\r\n </ng-template>\r\n</div>\r\n\r\n<div *ngIf=\"editor\" [class.active]=\"editor.isEditing || editor.isDirty\" class=\"right bar\">\r\n <!-- <a *ngIf=\"!editor.isEditing\" (click)=\"editor.remove()\" class=\"delete\">!!! remove</a> -->\r\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.resetData()\" class=\"reset\">reset</a>\r\n <a *ngIf=\"editor.isEditing && !editor.isDirty\" (click)=\"editor.finishEditing()\" class=\"close\">close</a>\r\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.save()\" class=\"save\">apply</a>\r\n</div>\r\n","import { Component, Host, Input, OnChanges, OnInit, QueryList, ViewChildren } from '@angular/core';\r\n\r\nimport { Bone } from '@candy-kingdom/bonnie';\r\nimport { BoneEditorContainerComponent } from './bone-editor-container/bone-editor-container.component';\r\nimport { EditableDirective } from '../core-components/editable.directive';\r\nimport { DeviceType } from '../core';\r\nimport { IBoneTemplate } from './IBoneTemplate';\r\nimport { BoneEditorMap } from './BoneEditorMap';\r\n\r\n// todo: rename class\r\n@Component({\r\n selector: 'bonc-skeleton-editor',\r\n templateUrl: './skeleton-editor.component.html',\r\n styleUrls: ['./skeleton-editor.component.scss'],\r\n hostDirectives: [EditableDirective]\r\n})\r\nexport class SkeletonEditorComponent implements OnInit, OnChanges {\r\n @ViewChildren('boneEditorContainer')\r\n public boneEditorContainerList!: QueryList<BoneEditorContainerComponent>;\r\n\r\n @Input({ required: true })\r\n public locale!: string;\r\n\r\n @Input()\r\n public device = DeviceType.NotSet;\r\n\r\n public readonly templatesAreShown: boolean[] = [];\r\n\r\n constructor(@Host() public editable: EditableDirective<Bone[]>) {\r\n\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.editable.externalSaveCall.subscribe(() => {\r\n this.boneEditorContainerList.forEach\r\n (\r\n editorContainer => editorContainer.editor?.save()\r\n );\r\n\r\n this.editable.save();\r\n });\r\n\r\n this.editable.canceled.subscribe(() => {\r\n this.boneEditorContainerList.forEach\r\n (\r\n editorContainer => editorContainer.editor?.resetData()\r\n );\r\n\r\n this.editable.save();\r\n });\r\n }\r\n\r\n @Input({ required: true })\r\n public map!: BoneEditorMap;\r\n\r\n public ngOnChanges(): void {\r\n this.templatesAreShown.splice(0, this.templatesAreShown.length);\r\n if (this.bones === undefined)\r\n return;\r\n\r\n this.bones.forEach(() => this.templatesAreShown.push(false));\r\n this.templatesAreShown.push(false);\r\n }\r\n\r\n @Input({ required: true })\r\n public templates!: ReadonlyArray<IBoneTemplate>;\r\n\r\n\r\n public get bones(): Bone[] {\r\n return this.editable?.value ?? [];\r\n }\r\n\r\n public boneEditHandler(isEditing: boolean): void {\r\n if (isEditing)\r\n this.editable.startEditing();\r\n else {\r\n const allClosed = this.boneEditorContainerList\r\n .filter(x => x.editor !== undefined && x.editor.isEditing)\r\n .length === 0;\r\n\r\n this.editable.updateDirty();\r\n\r\n if (!this.editable.isDirty && allClosed)\r\n this.editable.close();\r\n }\r\n }\r\n\r\n public boneChangeHandler(index: number, newBoneValue: Bone): void {\r\n if (Array.isArray(this.editable.value)) {\r\n this.editable.value[index] = newBoneValue;\r\n }\r\n\r\n this.editable.save();\r\n }\r\n\r\n public removeBone(boneIndex: number): void {\r\n if (this.bones === undefined || this.bones === null)\r\n return;\r\n\r\n if (!confirm('Вы уверены, что хотите удалить компонент?'))\r\n return;\r\n\r\n this.bones.splice(boneIndex, 1);\r\n\r\n if (!this.editable.inEditMode)\r\n this.editable.startEditing();\r\n\r\n this.editable.save();\r\n }\r\n\r\n public moveDown(boneIndex: number): void {\r\n if (boneIndex >= this.bones.length - 1)\r\n return;\r\n\r\n this.swapBones(boneIndex, boneIndex + 1);\r\n }\r\n\r\n public moveUp(boneIndex: number): void {\r\n if (boneIndex <= 0)\r\n return;\r\n\r\n this.swapBones(boneIndex - 1, boneIndex);\r\n }\r\n\r\n public createBone(index: number, selectedTemplate: IBoneTemplate): void {\r\n const newBone = selectedTemplate.boneFactory();\r\n\r\n this.bones.splice(index, 0, newBone);\r\n }\r\n\r\n private swapBones(index1: number, index2: number): void {\r\n if (index1 < 0 || index2 < 0 || index1 >= this.bones.length || index2 >= this.bones.length)\r\n throw new Error(`ошибка swapBones. неправильные индексы ${index1} и ${index2}. bone count: ${this.bones.length}`);\r\n\r\n const tempBone = this.bones[index1];\r\n this.bones[index1] = this.bones[index2];\r\n this.bones[index2] = tempBone;\r\n }\r\n}\r\n\r\n\r\n","<ng-template #controls let-index='index'>\r\n <div [class.appearable]=\"index > 0 && index < bones.length\" class=\"controls\">\r\n <div *ngIf=\"index < bones.length\" class=\"up-down\">\r\n <a *ngIf=\"index > 0\" (click)=\"moveDown(index - 1)\" class=\"down\">move down</a>\r\n <a *ngIf=\"index > 0\" (click)=\"moveUp(index)\" class=\"up\">move up</a>\r\n </div>\r\n <a (click)=\"templatesAreShown[index] = true\" class=\"add\">create</a>\r\n <a *ngIf=\"index < bones.length\" (click)=\"removeBone(index)\" class=\"remove\">remove</a>\r\n </div>\r\n\r\n <div *ngIf=\"templatesAreShown[index]\" class=\"templates\">\r\n <a *ngFor=\"let template of templates\" (click)=\"templatesAreShown[index] = false; createBone(index,template);\">{{template.title}}</a>\r\n <a (click)=\"templatesAreShown[index] = false\">Close</a>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- todo: add trackby -->\r\n<ng-container *ngFor=\"let bone of bones; let i = index\">\r\n <ng-container>\r\n <ng-container *ngTemplateOutlet=\"controls; context: {index: i}\"></ng-container>\r\n </ng-container>\r\n\r\n <bonc-bone-editor-container #boneEditorContainer\r\n [map]=\"map\"\r\n [bone]=\"bone\"\r\n [locale]=\"locale\"\r\n [device]=\"device\"\r\n (removed)=\"removeBone(i)\"\r\n (editing)=\"boneEditHandler($event)\"\r\n (saved)=\"boneChangeHandler(i, $event)\">\r\n </bonc-bone-editor-container>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"controls; context: {index: bones.length}\"></ng-container>\r\n","import { Bone } from '@candy-kingdom/bonnie';\r\n\r\nexport interface ContentPreset<out TBone extends Bone> {\r\n title: string;\r\n isActive(data: TBone): boolean;\r\n clean(data: TBone): void;\r\n transformer(bone: TBone): void;\r\n}\r\n\r\nexport function createPreset<TBone extends Bone>(params: { title: string, style: string }): ContentPreset<TBone> {\r\n return {\r\n title: params.title,\r\n isActive: x => x.style === params.style,\r\n transformer: bone => bone.style = params.style,\r\n clean: bone => bone.style = params.style,\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\r\nimport { LottieComponent } from 'ngx-lottie';\r\n\r\n\r\nimport { BonnieModule } from '@candy-kingdom/bonnie';\r\n\r\nimport { AdminControlsComponent } from './admin-controls/';\r\nimport { EditableDirective, LinkPopupComponent } from './core-components';\r\nimport { TextFormComponent } from './forms/text-form';\r\nimport { EditableGroupComponent } from './core-components';\r\nimport { FormControlsComponent } from './form-controls';\r\nimport { SeoFormComponent } from './forms/seo-form';\r\nimport { TranslationTextareaComponent } from './translation-textarea';\r\nimport { TranslationInputComponent } from './translation-input';\r\nimport { BoneEditorContainerComponent, SkeletonEditorAnchorDirective, SkeletonEditorComponent } from './skeleton-editor';\r\nimport { UnknownBoneEditorComponent } from './bone-editors/unknown-bone-editor/unknown-bone-editor.component';\r\nimport { MediaUploaderComponent } from './media-uploader/media-uploader.component';\r\nimport { DataService } from './services/data.service';\r\nimport { AdminDataService } from './services/admin-data.service';\r\nimport { TranslationFormComponent } from './forms/translation-form';\r\nimport { SvgFormComponent } from './forms/svg-form';\r\nimport { UnknownFormComponent } from './forms/unknown-form/unknown-form.component';\r\nimport { FileUploaderComponent } from './file-uploader';\r\nimport { FileFormComponent } from './forms/file-form';\r\nimport { LottieFormComponent } from './forms/lottie-form/lottie-form.component';\r\nimport { OneImageFormComponent } from './forms/one-image-form/one-image-form.component';\r\n\r\nconst formComponents = [\r\n TranslationFormComponent,\r\n TextFormComponent,\r\n SeoFormComponent,\r\n SvgFormComponent,\r\n OneImageFormComponent,\r\n FileFormComponent,\r\n LottieFormComponent,\r\n UnknownFormComponent\r\n];\r\n\r\nconst components = [\r\n ...formComponents,\r\n TranslationInputComponent,\r\n TranslationTextareaComponent,\r\n AdminControlsComponent,\r\n EditableGroupComponent,\r\n FormControlsComponent,\r\n SkeletonEditorComponent,\r\n SkeletonEditorAnchorDirective,\r\n BoneEditorContainerComponent,\r\n UnknownBoneEditorComponent,\r\n MediaUploaderComponent,\r\n FileUploaderComponent,\r\n LinkPopupComponent\r\n];\r\n\r\nconst standaloneDirectives = [\r\n EditableDirective\r\n];\r\n\r\n@NgModule({\r\n declarations: [\r\n ...components,\r\n ],\r\n providers:\r\n [\r\n DataService,\r\n AdminDataService\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CdkTextareaAutosize,\r\n BonnieModule,\r\n LottieComponent,\r\n ...standaloneDirectives\r\n ],\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n BonnieModule,\r\n LottieFormComponent,\r\n ...components,\r\n ...standaloneDirectives\r\n ]\r\n})\r\nexport class BonnieCmsModule { } // todo: move to standalone\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.EditableDirective","i1","i2","i3.TranslationInputComponent","i4.TranslationTextareaComponent","i3","i5.FormControlsComponent","i6.FileUploaderComponent","i3.FormControlsComponent","i4.FileUploaderComponent","i4.FormControlsComponent","i5.FileUploaderComponent","i2.SkeletonEditorAnchorDirective","i3.BoneEditorContainerComponent"],"mappings":"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"}
1
+ {"version":3,"file":"candy-kingdom-bonnie-cms.mjs","sources":["../../../../libs/bonnie-cms/src/lib/generated/file-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/i-equatable.ts","../../../../libs/bonnie-cms/src/lib/generated/i-setting.ts","../../../../libs/bonnie-cms/src/lib/generated/localized-text-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/lottie-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/one-image-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-base.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-group.ts","../../../../libs/bonnie-cms/src/lib/generated/setting.ts","../../../../libs/bonnie-cms/src/lib/generated/svg-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/text-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/text-setting-type.ts","../../../../libs/bonnie-cms/src/lib/generated/index.ts","../../../../libs/bonnie-cms/src/lib/core/DeviceType.ts","../../../../libs/bonnie-cms/src/lib/core/TextEditorField.ts","../../../../libs/bonnie-cms/src/lib/core/Utils.ts","../../../../libs/bonnie-cms/src/lib/core/DeviceVisibility.ts","../../../../libs/bonnie-cms/src/lib/core-components/editable.directive.ts","../../../../libs/bonnie-cms/src/lib/core-components/editable-group.ts","../../../../libs/bonnie-cms/src/lib/core-components/form-base.component.ts","../../../../libs/bonnie-cms/src/lib/translation-input/translation-input.component.ts","../../../../libs/bonnie-cms/src/lib/translation-input/translation-input.component.html","../../../../libs/bonnie-cms/src/lib/translation-textarea/translation-textarea.component.ts","../../../../libs/bonnie-cms/src/lib/translation-textarea/translation-textarea.component.html","../../../../libs/bonnie-cms/src/lib/core-components/link-popup/link-popup.component.ts","../../../../libs/bonnie-cms/src/lib/core-components/link-popup/link-popup.component.html","../../../../libs/bonnie-cms/src/lib/form-controls/form-controls.component.ts","../../../../libs/bonnie-cms/src/lib/form-controls/form-controls.component.html","../../../../libs/bonnie-cms/src/lib/file-uploader/file-uploader.component.ts","../../../../libs/bonnie-cms/src/lib/file-uploader/file-uploader.component.html","../../../../libs/bonnie-cms/src/lib/forms/seo-form/seo-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/seo-form/seo-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/svg-form/svg-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/svg-form/svg-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/one-image-form/one-image-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/one-image-form/one-image-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/file-form/file-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/file-form/file-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/text-form/TextInputStyle.ts","../../../../libs/bonnie-cms/src/lib/forms/text-form/text-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/text-form/text-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/lottie-form/lottie-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/lottie-form/lottie-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/translation-form/translation-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/translation-form/translation-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/unknown-form/unknown-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/unknown-form/unknown-form.component.html","../../../../libs/bonnie-cms/src/lib/services/API_BASE_URL.ts","../../../../libs/bonnie-cms/src/lib/services/data.service.ts","../../../../libs/bonnie-cms/src/lib/services/admin-data.service.ts","../../../../libs/bonnie-cms/src/lib/admin-controls/admin-controls.component.ts","../../../../libs/bonnie-cms/src/lib/admin-controls/admin-controls.component.html","../../../../libs/bonnie-cms/src/lib/media-uploader/media-uploader.component.ts","../../../../libs/bonnie-cms/src/lib/media-uploader/media-uploader.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor-anchor.directive.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/bone-editor-base.component.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.ts","../../../../libs/bonnie-cms/src/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor.component.ts","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/ContentPreset.ts","../../../../libs/bonnie-cms/src/candy-kingdom-bonnie-cms.ts"],"sourcesContent":["/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcFileMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface FileSettingData extends SettingData {\r\n allowedMimeTypes: string[];\r\n src: FileSrcFileMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport interface IEquatable<T> {\r\n\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\n\r\nexport interface ISetting<T extends SettingData> {\r\n id: string;\r\n title: string;\r\n data: T;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { TextSettingType } from \"./text-setting-type\";\r\nimport { LocalizedString } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface LocalizedTextSettingData extends SettingData {\r\n text: LocalizedString;\r\n textType: TextSettingType;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcFileMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface LottieSettingData extends SettingData {\r\n src: FileSrcFileMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileFormat } from \"@candy-kingdom/bonnie\";\r\nimport { FileSrcImageMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface OneImageSettingData extends SettingData {\r\n width: number;\r\n height: number;\r\n format: FileFormat;\r\n allowedMimeTypes: string[];\r\n src: FileSrcImageMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface SettingBase {\r\n id: string;\r\n order: number;\r\n title: string;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface SettingData {\r\n type: string;\r\n empty: SettingData;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { Setting } from \"./setting\";\r\n\r\nexport interface SettingGroup {\r\n id: string;\r\n order: number;\r\n title: string;\r\n records: Setting<any>[];\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { SettingBase } from \"./setting-base\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { ISetting } from \"./i-setting\";\r\n\r\nexport interface Setting<T extends SettingData> extends SettingBase {\r\n data: T;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcImageMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface SvgSettingData extends SettingData {\r\n src: FileSrcImageMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { TextSettingType } from \"./text-setting-type\";\r\n\r\nexport interface TextSettingData extends SettingData {\r\n text: string;\r\n textType: TextSettingType;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport enum TextSettingType {\r\n SingleLine = 0,\r\n MultiLine = 1,\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport * from './file-setting-data';\r\nexport * from './i-equatable';\r\nexport * from './i-setting';\r\nexport * from './localized-text-setting-data';\r\nexport * from './lottie-setting-data';\r\nexport * from './one-image-setting-data';\r\nexport * from './setting-base';\r\nexport * from './setting-data';\r\nexport * from './setting-group';\r\nexport * from './setting';\r\nexport * from './svg-setting-data';\r\nexport * from './text-setting-data';\r\nexport * from './text-setting-type';\r\n","export enum DeviceType {\n NotSet = 0,\n Mobile = 1,\n Tablet = 2,\n Desktop = 3\n}\n","\n\n\nexport enum TextEditorField {\n NotSet = 0,\n Input = 1,\n Textarea = 2\n}\n","\n// tslint:disable-next-line: max-line-length\nexport const regExpIsMobile = new RegExp(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/, 'i');\n\nexport function isLocalUrlString(url: string): boolean {\n if (url === undefined || url === null || url.trim().length === 0)\n return true;\n\n if (url.startsWith('//'))\n return false;\n\n if (url.startsWith('./') || url.startsWith('/'))\n return true;\n\n return false;\n}\n\nexport function hasFlag<T extends number>(value: T, flag: T): boolean {\n return (value & flag) === flag;\n}\n\nexport function setOrRemoveFlag<T extends number>(value: T, flag: T, enabled: boolean): T {\n return (enabled ? value | flag : value & ~flag) as T;\n}\n","export enum DeviceVisibility {\n None = 0,\n Desktop = 1,\n Tablet = 2,\n Mobile = 4,\n All = Desktop | Tablet | Mobile\n}\n","import { Directive, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n standalone: true,\n selector: '[boncEditable]',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableDirective), multi: true }]\n})\nexport class EditableDirective<T = unknown> {\n @Output()\n public readonly saved = new EventEmitter<T>();\n\n @Output()\n public readonly editModeChange = new EventEmitter<boolean>();\n\n @Output()\n public readonly externalSaveCall = new EventEmitter<void>();\n\n @Output()\n public readonly canceled = new EventEmitter<void>();\n\n @Output()\n public readonly valueChange = new EventEmitter<T>();\n\n private propagateChange: (newValue: T) => void = () => { };\n\n private _inEditMode = false;\n private _isDirty = false;\n\n private _value?: T;\n private _originalValue?: T;\n private _storedData?: string;\n\n public get inEditMode(): boolean {\n return this._inEditMode;\n }\n\n public subscribe\n (\n params: {\n readonly onValueChange?: (x: T) => void,\n readonly onEditModeChange?: (x: boolean) => void,\n readonly onSaveRequest?: () => void\n }\n ): Subscription[] {\n\n const subscriptions: Subscription[] = [];\n\n if (params.onValueChange !== undefined && params.onValueChange !== null) {\n subscriptions.push\n (\n this.valueChange.subscribe((x: T) => {\n if (params.onValueChange)\n params.onValueChange(x);\n })\n );\n }\n\n if (params.onEditModeChange !== undefined) {\n subscriptions.push\n (\n this.editModeChange.subscribe((x: boolean) => {\n if (params.onEditModeChange)\n params.onEditModeChange(x);\n })\n );\n }\n\n if (params.onSaveRequest !== undefined) {\n subscriptions.push\n (\n this.externalSaveCall.subscribe(() => {\n if (params.onSaveRequest)\n params.onSaveRequest();\n })\n );\n }\n\n return subscriptions;\n }\n\n public requestSave() {\n this.externalSaveCall.emit();\n }\n\n public startEditing = (): void => {\n if (this._inEditMode) {\n this.updateDirty();\n return;\n }\n\n this._inEditMode = true;\n this.updateDirty();\n this.editModeChange.emit(true);\n }\n\n public save(newData?: T): void {\n if (!this._inEditMode) {\n console.warn('save before edit mode'); //todo: fix that\n }\n\n this.finishEditing();\n\n const newUnqieNotEmptyData = this.value === newData || newData === undefined\n ? JSON.parse(JSON.stringify(this.value))\n : newData;\n\n this.setOriginal(newUnqieNotEmptyData);\n this.updateDirty();\n\n this.saved.emit(newUnqieNotEmptyData);\n\n this.propagateChange(newUnqieNotEmptyData);\n }\n\n public patchSave(propName: keyof T, newDataParts: T[keyof T]): void {\n if (this._originalValue === undefined || this._originalValue === null)\n return;\n\n if (typeof this._originalValue !== \"object\") {\n console.warn('patch save called on not object type');\n return;\n }\n\n (this._originalValue as any)[propName] = newDataParts;\n\n this.setOriginal(this._originalValue);\n\n this.updateDirty();\n\n if (!this.isDirty)\n this.close();\n }\n\n // change model without opening or closing the editor\n\n public silentPatch(dict: Partial<T>): void {\n for (const key in dict) {\n // eslint-disable-next-line no-prototype-builtins\n if (!dict.hasOwnProperty(key))\n continue;\n\n const propVal = dict[key];\n\n\n if (this._value !== undefined && this._value !== null) {\n this._value[key] = propVal as any;\n }\n\n if (this._originalValue !== undefined && this._originalValue !== null) {\n this._originalValue[key] = propVal as any;\n }\n }\n this._storedData = JSON.stringify(this._originalValue);\n }\n\n public cancel(): void {\n if (!this._inEditMode)\n return;\n\n this.finishEditing();\n\n // reset value\n this.setValue(this._originalValue);\n\n this.canceled.emit();\n }\n\n public close(): void {\n this.finishEditing();\n }\n\n private finishEditing(): void {\n if (!this._inEditMode)\n return;\n\n this._inEditMode = false;\n this.editModeChange.emit(false);\n }\n\n private setValue(newValue?: T): void {\n this._value = (newValue === null || newValue === undefined)\n ? undefined\n : JSON.parse(JSON.stringify(newValue));\n\n this.valueChange.emit(this._value);\n }\n\n public set value(newValue: T | undefined) {\n this.setValue(newValue);\n }\n\n public get value(): T | undefined {\n return this._value;\n }\n\n public updateDirty(): void {\n this._isDirty = JSON.stringify(this._value) !== this._storedData;\n }\n\n public markAsDirty(): void {\n this._isDirty = true;\n }\n\n public get isDirty(): boolean {\n return this._isDirty;\n }\n\n private setOriginal(newOriginalValue: T) {\n this._originalValue = newOriginalValue;\n this._storedData = JSON.stringify(newOriginalValue);\n }\n\n // #region ngModel\n\n writeValue(newValue: T): void {\n this.finishEditing();\n\n this.setOriginal(newValue);\n this._isDirty = false;\n\n this.setValue(newValue);\n }\n\n setDisabledState?(): void {\n }\n\n registerOnChange(tellAngularThatSomethingIsChanged: (newValue: T) => void): void {\n this.propagateChange = (newValue: T): void => {\n tellAngularThatSomethingIsChanged(newValue);\n };\n }\n\n registerOnTouched(): void {\n }\n\n // #endregion\n}\n","import { QueryList, ContentChildren, AfterContentInit, OnDestroy, Output, EventEmitter, Component } from '@angular/core';\nimport { Subscription, Subject, debounceTime } from 'rxjs';\n\nimport { EditableDirective } from './editable.directive';\n\n@Component({\n selector: 'bonc-editable-group',\n standalone: true,\n template: '<ng-content></ng-content>'\n})\nexport class EditableGroupComponent implements AfterContentInit, OnDestroy {\n @Output()\n public readonly editModeChange = new EventEmitter<boolean>();\n\n @Output()\n public readonly saved = new EventEmitter<void>();\n\n @Output()\n public readonly requestEditorClose = new EventEmitter<boolean>();\n\n @ContentChildren(EditableDirective, { descendants: true })\n public editables!: QueryList<EditableDirective>;\n\n private readonly subscriptions: Subscription[] = [];\n private _inEditMode = false;\n\n private readonly saveSubject = new Subject<void>();\n\n public ngAfterContentInit(): void {\n this.saveSubject\n .asObservable()\n .pipe(debounceTime(100))\n .subscribe(() => this.saved.emit());\n\n this.updateSubscriptions();\n\n this.editables.changes.subscribe\n (\n () => {\n this.clearSubscribtions();\n this.updateSubscriptions();\n }\n );\n }\n\n public get inEditMode(): boolean {\n return this._inEditMode;\n }\n\n public saveAll(): void {\n this.editables.forEach(x => x.requestSave());\n }\n\n public cancelAll(): void {\n this.editables.forEach(x => x.cancel());\n }\n\n public closeAll(): void {\n this.requestEditorClose.emit(true);\n this.editables.forEach(x => x.close());\n }\n\n private clearSubscribtions(): void {\n this.subscriptions.forEach(x => x.unsubscribe());\n this.subscriptions.splice(0, this.subscriptions.length);\n }\n\n private updateSubscriptions(): void {\n\n this.editables.forEach\n (\n editable => {\n\n this.subscriptions.push(\n editable.saved.subscribe(\n () => this.onSave()\n )\n );\n\n this.subscriptions.push(\n ...editable.subscribe({\n onEditModeChange: this.updateEditMode.bind(this)\n })\n );\n }\n );\n }\n\n private onSave(): void {\n this.saveSubject.next();\n }\n\n private updateEditMode(): void {\n const newEditMode = this.editables\n .filter(x => x.inEditMode)\n .length > 0;\n\n if (newEditMode === this._inEditMode)\n return;\n\n this._inEditMode = newEditMode;\n\n this.editModeChange.next(newEditMode);\n }\n\n public ngOnDestroy(): void {\n this.clearSubscribtions();\n }\n}\n","import { Component, Input, inject } from '@angular/core';\n\nimport { EditableDirective } from './editable.directive';\n\n@Component({\n template: ''\n})\nexport abstract class FormBaseComponent<TData = unknown> {\n public static readonly inputs = ['locale'];\n\n protected name = '';\n private _locale = '';\n\n public readonly editable = inject(EditableDirective<TData>, { host: true });\n\n @Input()\n public set locale(value: string) {\n this._locale = value;\n }\n\n public get locale(): string {\n return this._locale;\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DeviceType } from '../core';\nimport { LocalizedString } from '@candy-kingdom/bonnie';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'bonc-translation-input',\n standalone: true,\n imports: [FormsModule],\n templateUrl: './translation-input.component.html',\n styleUrls: ['./translation-input.component.scss']\n})\nexport class TranslationInputComponent {\n @Input({ required: true })\n public text!: LocalizedString;\n\n @Input({ required: true })\n public locale!: string;\n\n @Input()\n public device: DeviceType = DeviceType.NotSet;\n\n @Output()\n public startEditing: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public changed: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public blurred: EventEmitter<void> = new EventEmitter();\n\n public onClick() {\n this.startEditing.emit();\n }\n\n public onKeyPress() {\n this.changed.emit();\n }\n\n public onBlur() {\n this.blurred.emit();\n }\n}\n","<input [(ngModel)]=\"text[locale]\"\n (click)=\"onClick()\"\n (keyup)=\"onKeyPress()\"\n (blur)=\"onBlur()\" />\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n Output,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { take } from 'rxjs/operators';\n\nimport { LocalizedString } from '@candy-kingdom/bonnie';\nimport { DeviceType } from '../core';\n\n@Component({\n selector: 'bonc-translation-textarea',\n standalone: true,\n imports: [FormsModule, CdkTextareaAutosize],\n templateUrl: './translation-textarea.component.html',\n styleUrls: ['./translation-textarea.component.scss']\n})\nexport class TranslationTextareaComponent implements OnChanges, AfterViewInit {\n @ViewChildren(CdkTextareaAutosize)\n public autosizeList!: QueryList<CdkTextareaAutosize>;\n\n @Input()\n public minRows?: number;\n\n @Input()\n public maxRows?: number;\n\n @Input({ required: true })\n public text!: LocalizedString;\n\n @Input({ required: true })\n public locale!: string;\n\n @Input()\n public device: DeviceType = DeviceType.NotSet;\n\n @Output()\n public startEditing: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public changed: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public blurred: EventEmitter<void> = new EventEmitter();\n\n constructor(\n private ngZone: NgZone\n ) {\n }\n\n ngAfterViewInit(): void {\n setTimeout(this.triggerResize.bind(this));\n }\n\n ngOnChanges(): void {\n setTimeout(this.triggerResize.bind(this), 500);\n }\n\n public onClick() {\n this.startEditing.emit();\n }\n\n public onKeyPress() {\n this.changed.emit();\n }\n\n public onBlur() {\n this.blurred.emit();\n }\n\n private triggerResize() {\n // console.log('trigger resize!');\n\n this.ngZone.onStable.pipe(take(1))\n .subscribe(() => {\n this.autosizeList.forEach(x => x.resizeToFitContent(true));\n });\n }\n}\n","<textarea [(ngModel)]=\"text[locale]\"\n [cdkAutosizeMinRows]=\"minRows\"\n [cdkAutosizeMaxRows]=\"maxRows\"\n (click)=\"onClick()\"\n (keyup)=\"onKeyPress()\"\n (blur)=\"onBlur()\"\n matInput\n cdkTextareaAutosize>\n</textarea>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TranslationInputComponent } from '../../translation-input/translation-input.component';\nimport { TranslationTextareaComponent } from '../../translation-textarea/translation-textarea.component';\n\nimport { LocalizedString } from '@candy-kingdom/bonnie';\nimport { TextEditorField } from '../../core';\n\n@Component({\n selector: 'bonc-link-popup',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslationInputComponent, TranslationTextareaComponent],\n templateUrl: './link-popup.component.html',\n styleUrl: './link-popup.component.scss'\n})\nexport class LinkPopupComponent {\n public readonly TextEditorField = TextEditorField;\n @Output()\n public linkChange: EventEmitter<LocalizedString> = new EventEmitter();\n\n @Output()\n public startEditing: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public changed: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public blurred: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public open: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public closed: EventEmitter<void> = new EventEmitter();\n\n @Input({ required: true })\n public field!: TextEditorField;\n public LinkPopupField = TextEditorField;\n\n @Input()\n public maxRows?: number;\n\n @Input()\n public minRows?: number;\n\n @Input({ required: true })\n public linkTitle!: LocalizedString; // todo: allready in weblink\n\n @Input({ required: true })\n public locale!: string;\n\n @Input({ required: true })\n public link!: LocalizedString;\n\n public popupIsShown = false;\n\n public onClick() {\n this.startEditing.emit();\n }\n\n public onChange() {\n console.log('change link pop up')\n this.changed.emit();\n }\n\n public onBlur() {\n this.blurred.emit();\n }\n\n public showPopup(): void {\n this.popupIsShown = true;\n this.open.emit();\n }\n\n public hidePopup(): void {\n this.popupIsShown = false;\n this.closed.emit();\n }\n}\n","<bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\n (click)=\"showPopup()\"\n [text]=\"linkTitle\"\n [locale]=\"locale\"\n (startEditing)=\"onClick()\"\n (changed)=\"onChange()\"\n (blurred)=\"onBlur()\">\n</bonc-translation-input>\n\n<bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\n (click)=\"showPopup()\"\n [text]=\"linkTitle\"\n [locale]=\"locale\"\n [minRows]=\"minRows\"\n [maxRows]=\"maxRows\"\n (startEditing)=\"onClick()\"\n (changed)=\"onChange()\"\n (blurred)=\"onBlur()\">\n</bonc-translation-textarea>\n\n<div *ngIf=\"popupIsShown\">\n <div class=\"popup\">\n <a (click)=\"hidePopup()\" class=\"close\">close</a>\n\n <label>Link\n <input [(ngModel)]=\"link[locale]\"\n (click)=\"onClick()\"\n (keyup)=\"onChange()\"\n (blur)=\"onBlur()\">\n </label>\n\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EditableDirective } from '../core-components';\n\n@Component({\n selector: 'bonc-form-controls',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './form-controls.component.html',\n styleUrls: ['./form-controls.component.scss']\n})\nexport class FormControlsComponent {\n @Input({ required: true })\n public editable!: EditableDirective<any>;\n}\n","<div [class.edit]=\"editable.inEditMode\" class=\"content\">\n <ng-content></ng-content>\n</div>\n\n<div [class.hidden]=\"!editable.inEditMode\" class=\"controls\">\n <a *ngIf=\"!editable.isDirty\" (click)=\"editable.cancel()\" class=\"close\">close</a>\n <ng-container *ngIf=\"editable.isDirty\">\n <a (click)=\"editable.cancel()\">reset</a>\n <a (click)=\"editable.requestSave()\" class=\"apply\">apply</a>\n </ng-container>\n</div>\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, inject } from '@angular/core';\nimport { CommonModule, DecimalPipe } from '@angular/common';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { HttpClient, HttpEvent, HttpEventType, HttpRequest } from '@angular/common/http';\nimport { catchError, last, map, Observable } from 'rxjs';\n\nimport { FileMeta, FileSrc } from '@candy-kingdom/bonnie';\n\n@Component({\n selector: 'bonc-file-uploader',\n standalone: true,\n imports: [CommonModule, DecimalPipe],\n templateUrl: './file-uploader.component.html',\n styleUrls: ['./file-uploader.component.scss']\n})\nexport class FileUploaderComponent {\n @ViewChild('fileInput', { static: true })\n public fileInput!: ElementRef<HTMLInputElement>;\n\n @Output()\n public srcChange = new EventEmitter<FileSrc<FileMeta>>();\n\n @Input({ required: true })\n public uploadUrlMap!: ReadonlyMap<string, string>;\n\n public progress = 0;\n public isUploading = false;\n\n public autoplay = true;\n public clipStyle?: SafeStyle;\n\n public fileTypeMask?: string = undefined;\n\n private _uploadTypes: string[] = [];\n private _src?: FileSrc<FileMeta>;\n\n private readonly sanitizer = inject(DomSanitizer);\n private readonly http = inject(HttpClient);\n private readonly cd = inject(ChangeDetectorRef);\n\n @Input()\n public set src(newSrc: FileSrc<FileMeta> | undefined) {\n if (this._src === newSrc)\n return;\n\n this._src = newSrc;\n }\n\n public get src(): FileSrc<FileMeta> | undefined {\n return this._src;\n }\n\n @Input()\n public set uploadTypes(newUploadType: string[]) {\n this._uploadTypes.splice(0, this._uploadTypes.length);\n\n this._uploadTypes.push(...newUploadType);\n\n this.fileTypeMask = this._uploadTypes.length === 0 ? undefined : this._uploadTypes.join(',');\n\n this.cd.detectChanges();\n }\n\n public get uploadTypes(): string[] {\n return this._uploadTypes;\n }\n\n public onFileSelect(fileInput: HTMLInputElement) {\n if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)\n return;\n\n const file = fileInput.files[0];\n\n const uploadUrl = this.uploadUrlMap.get(file.type) ?? this.uploadUrlMap.get(\"\");\n\n if (uploadUrl === undefined || uploadUrl === null) {\n console.error(`upload map doesn't have url for type '${file.type}'`);\n return;\n }\n\n const formData: FormData = new FormData();\n\n formData.append('file', file);\n\n this.progress = 0;\n this.isUploading = true;\n\n this.updateClip();\n\n const request = new HttpRequest('POST', uploadUrl, formData, {\n reportProgress: true\n });\n\n this.http\n .request<FileSrc<FileMeta>>(request)\n .pipe\n (\n map(event => this.getEventMessage(event)),\n // tap(message => this.showProgress(message)),\n last(), // return last (completed) message to caller\n catchError(this.handleError(file))\n ).subscribe\n (\n () => { this.isUploading = false; }\n );\n }\n\n public selectFile(event: Event): void {\n // ignore buble click on file picker\n if (event.target === this.fileInput.nativeElement)\n return;\n\n this.fileInput.nativeElement.click();\n }\n\n private getEventMessage(event: HttpEvent<FileSrc<FileMeta>>): void {\n switch (event.type) {\n case HttpEventType.Sent:\n break;\n\n case HttpEventType.UploadProgress:\n this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;\n this.updateClip();\n break;\n\n case HttpEventType.Response:\n if (event.body === null || event.body === undefined) {\n console.warn(`empty body from uploader`);\n break;\n }\n\n this.srcChange.emit(event.body);\n break;\n\n default:\n break;\n }\n\n this.cd.detectChanges()\n }\n\n private updateClip(): void {\n this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);\n }\n\n private handleError(file: File): (p1: unknown, p2: Observable<unknown>) => Observable<unknown> {\n const func = (error: unknown, p2: Observable<unknown>): Observable<unknown> => {\n const message = `error uploadingFile ${file.name}.`;\n console.error(message, error, p2);\n alert(message);\n return new Observable<unknown>();\n };\n\n return func;\n }\n}\n","<div *ngIf=\"src === undefined || src.url === undefined || src?.url?.length === 0\">Upload file</div>\n\n<ng-content></ng-content>\n\n<div (click)=\"selectFile($event)\" class=\"media-container\">\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\n <span *ngIf=\"isUploading\"\n [style.clip-path]=\"clipStyle\"\n [style.-webkit-clip-path]=\"clipStyle\"\n class=\"loader\"></span>\n\n <span *ngIf=\"isUploading\" class=\"loader-text\">\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\n <span *ngIf=\"progress >= 1\">converting</span>\n </span>\n</div>\n","import { Component, OnInit, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FileMeta, FileSrc, ImageMeta, OpenGraphData } from '@candy-kingdom/bonnie';\n\nimport { EditableDirective, FormBaseComponent } from '../../core-components';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { TranslationInputComponent } from '../../translation-input/translation-input.component';\nimport { TranslationTextareaComponent } from '../../translation-textarea/translation-textarea.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\nconst uploadMap = new Map<string, string>();\nuploadMap.set('', `/api/admin/upload/image?width=${1200}&height=${630}&format=image/jpeg`);\n\n@Component({\n selector: 'bonc-seo-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, TranslationInputComponent, TranslationTextareaComponent, FileUploaderComponent],\n templateUrl: './seo-form.component.html',\n styleUrls: ['./seo-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class SeoFormComponent extends FormBaseComponent<OpenGraphData> implements OnInit {\n public readonly uploadMap = uploadMap;\n\n private _pageId = '';\n public ogImageUploadUrl = '';\n\n @Input()\n public label = '';\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n\n @Input()\n public set pageId(value: string) {\n this._pageId = value;\n this.ogImageUploadUrl = `/api/admin/page/Og-Image?pageId=${this.pageId}`; // todo: replace with link to single image api\n }\n\n public get pageId(): string {\n return this._pageId;\n }\n\n public ResToSrc(res: { url: string }): string {\n return res.url;\n }\n\n public replaceImage($event: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n if (this.editable.value !== undefined) {\n this.editable.value.image[this.locale] = $event as FileSrc<ImageMeta>;\n }\n\n this.editable.updateDirty();\n }\n}\n","<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\n <h2 *ngIf=\"label\">{{label}}</h2>\n\n <div class=\"form-group\">\n <label>Title</label>\n <bonc-translation-input [text]=\"editable.value.title\"\n [locale]=\"locale\"\n (startEditing)=\"editable.startEditing()\"\n (changed)=\"editable.updateDirty()\"\n (blurred)=\"editable.updateDirty()\">\n </bonc-translation-input>\n </div>\n\n <div class=\"form-group\">\n <label>Description</label>\n <bonc-translation-textarea [text]=\"editable.value.description\"\n [locale]=\"locale\"\n (startEditing)=\"editable.startEditing()\"\n (changed)=\"editable.updateDirty()\"\n (blurred)=\"editable.updateDirty()\">\n </bonc-translation-textarea>\n </div>\n\n <div class=\"form-group\">\n <label>Share image | 1200x630</label>\n\n <bonc-file-uploader [src]=\"editable.value.image[locale]\"\n [uploadTypes]=\"['image/png', 'image/jpeg']\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"replaceImage($event)\">\n <img *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [src]=\"editable.value.image[locale].url\" />\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [href]=\"editable.value.image[locale].url\" download target=\"_blank\">Download</a>\n </div>\n\n</bonc-form-controls>\n\n<div *ngIf=\"!editable.value\">Editable Value canot be null or undefined</div>\n","import { ChangeDetectorRef, Component, Input, OnInit, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\n\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components/editable.directive';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\n@Component({\n selector: 'bonc-svg-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, FileUploaderComponent],\n templateUrl: './svg-form.component.html',\n styleUrls: ['./svg-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class SvgFormComponent extends FormBaseComponent<FileSrc<SvgMeta>> implements OnInit {\n private readonly cd = inject(ChangeDetectorRef);\n\n public readonly SvgMime = 'image/svg+xml';\n\n @Input()\n public label = '';\n\n public uploadMap = new Map<string, string>();\n\n private _uploadUrl = '/api/admin/upload/image/svg';\n\n constructor() {\n super()\n\n this.uploadMap.set(this.SvgMime, this._uploadUrl);\n }\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n\n @Input()\n public set uploadUrl(newValue: string) {\n this._uploadUrl = newValue;\n\n this.uploadMap.set(this.SvgMime, this._uploadUrl);\n\n this.cd.detectChanges();\n }\n\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\n\n this.editable.value = svgSrc;\n\n this.editable.updateDirty();\n }\n\n}\n","<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n <bonc-file-uploader [src]=\"editable.value\"\n [uploadTypes]=\"[SvgMime]\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"onFileUploaded($event)\">\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\n\n</bonc-form-controls>\n","import { ChangeDetectorRef, Component, Input, OnInit, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FileMeta, FileSrc, ImageMeta } from '@candy-kingdom/bonnie';\n\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components/editable.directive';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\nconst DefaultImageMimeTypes = ['image/png', 'image/jpeg'];\n\n@Component({\n selector: 'bonc-one-image-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, FileUploaderComponent],\n templateUrl: './one-image-form.component.html',\n styleUrls: ['./one-image-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class OneImageFormComponent extends FormBaseComponent<FileSrc<ImageMeta>> implements OnInit {\n private readonly cd = inject(ChangeDetectorRef);\n\n public uploadMap = new Map<string, string>();\n\n private _mimeTypes = DefaultImageMimeTypes;\n\n private _uploadUrl = '/api/admin/upload/image';\n\n private _label = ''\n\n constructor() {\n super()\n\n this.uploadMap.set('', this._uploadUrl);\n }\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n\n @Input()\n public set label(newValue: string) {\n this._label = newValue;\n }\n\n public get label(): string {\n return this._label;\n }\n\n @Input()\n public set uploadUrl(newValue: string) {\n this._uploadUrl = newValue;\n\n this.uploadMap.set('', this._uploadUrl);\n\n this.cd.detectChanges();\n }\n\n @Input()\n public set mimeTypes(newValue: string[]) {\n this._mimeTypes = newValue.length === 0 ? DefaultImageMimeTypes : newValue;\n this.cd.detectChanges();\n }\n\n public get mimeTypes(): string[] {\n return this._mimeTypes;\n }\n\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n const svgSrc = fileSrc as FileSrc<ImageMeta>;\n\n this.editable.value = svgSrc;\n\n this.editable.updateDirty();\n }\n\n}\n","<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n <bonc-file-uploader [src]=\"editable.value\"\n [uploadTypes]=\"mimeTypes\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"onFileUploaded($event)\">\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\n\n</bonc-form-controls>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components';\n\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\n@Component({\n selector: 'bonc-file-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, FileUploaderComponent],\n templateUrl: './file-form.component.html',\n styleUrls: ['./file-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class FileFormComponent extends FormBaseComponent<FileSrc<FileMeta>> implements OnInit {\n @Input()\n public label = '';\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n\n @Input({ required: true })\n public uploadTypes: string[] = [];\n\n @Input({ required: true })\n public uploadMap = new Map<string, string>();;\n\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\n\n this.editable.value = svgSrc;\n\n this.editable.updateDirty();\n }\n\n}\n","<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n <bonc-file-uploader [src]=\"editable.value\"\n [uploadTypes]=\"uploadTypes\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"onFileUploaded($event)\">\n <div *ngIf=\"editable.value?.url?.length ?? 0 > 0\">{{editable.value?.url}}</div>\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\n</bonc-form-controls>\n","\nexport enum TextInputStyle {\n NotSet = 0,\n SingleLine = 1,\n MultiLine = 2\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TextInputStyle } from './TextInputStyle';\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\n\n@Component({\n selector: 'bonc-text-form',\n standalone: true,\n imports: [CommonModule, FormsModule, FormControlsComponent],\n templateUrl: './text-form.component.html',\n styleUrls: ['./text-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class TextFormComponent extends FormBaseComponent<string> implements OnInit {\n public readonly TextInputStyle = TextInputStyle;\n\n @Input()\n public label = '';\n\n @Input()\n public type = TextInputStyle.SingleLine;\n\n ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n}\n","<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n\n <input *ngIf=\"editable && type === TextInputStyle.SingleLine\"\n [(ngModel)]=\"editable.value\"\n (click)=\"editable.startEditing()\"\n (keyup)=\"editable.updateDirty()\"\n (blur)=\"editable.updateDirty()\" />\n\n <textarea *ngIf=\"editable && type === TextInputStyle.MultiLine\"\n [(ngModel)]=\"editable.value\"\n (click)=\"editable.startEditing()\"\n (keyup)=\"editable.updateDirty()\"\n (blur)=\"editable.updateDirty()\">\n </textarea>\n</bonc-form-controls>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AnimationOptions, LottieComponent } from 'ngx-lottie';\n\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\n\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components/editable.directive';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\n@Component({\n selector: 'bonc-lottie-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, FileUploaderComponent, LottieComponent],\n templateUrl: './lottie-form.component.html',\n styleUrls: ['./lottie-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class LottieFormComponent extends FormBaseComponent<FileSrc<FileMeta>> implements OnInit {\n public readonly LottieMimeType = 'application/json';\n\n public animOptions?: AnimationOptions;\n\n @Input()\n public label = '';\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n\n this.editable.valueChange.subscribe(x => {\n const url = x?.url ?? '';\n this.animOptions = url.length === 0 ? undefined : { path: url };\n })\n }\n\n @Input({ required: true })\n public uploadMap = new Map<string, string>();;\n\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\n\n this.editable.value = svgSrc;\n\n this.editable.updateDirty();\n }\n\n}\n","<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n <bonc-file-uploader [src]=\"editable.value\"\n [uploadTypes]=\"[LottieMimeType]\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"onFileUploaded($event)\">\n\n <ng-lottie *ngIf=\"animOptions\"\n [options]=\"animOptions\"></ng-lottie>\n\n\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\n</bonc-form-controls>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LocalizedString } from '@candy-kingdom/bonnie';\n\nimport { EditableDirective, FormBaseComponent } from '../../core-components';\nimport { TextEditorField } from '../../core';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { TranslationInputComponent } from '../../translation-input/translation-input.component';\nimport { TranslationTextareaComponent } from '../../translation-textarea/translation-textarea.component';\n\n@Component({\n selector: 'bonc-translation-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, TranslationInputComponent, TranslationTextareaComponent],\n templateUrl: './translation-form.component.html',\n styleUrls: ['./translation-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class TranslationFormComponent extends FormBaseComponent<LocalizedString> implements OnInit {\n public readonly TextEditorField = TextEditorField;\n\n @Input({ required: true })\n public field!: TextEditorField;\n\n @Input() label?: string;\n\n\n ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n}\n","<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n\n <bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\n [text]=\"editable.value\"\n [locale]=\"locale\"\n (startEditing)=\"editable.startEditing()\"\n (changed)=\"editable.updateDirty()\"\n (blurred)=\"editable.updateDirty()\">\n </bonc-translation-input>\n\n\n <bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\n [text]=\"editable.value\"\n [minRows]=\"2\"\n [locale]=\"locale\"\n (startEditing)=\"editable.startEditing()\"\n (changed)=\"editable.updateDirty()\"\n (blurred)=\"editable.updateDirty()\">\n </bonc-translation-textarea>\n</bonc-form-controls>\n\n<div *ngIf=\"editable.value===undefined\">Editable value canot be undefined</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components/editable.directive';\n\n@Component({\n selector: 'bonc-unknown-form',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './unknown-form.component.html',\n styleUrls: ['./unknown-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class UnknownFormComponent extends FormBaseComponent<string> implements OnInit {\n @Input()\n public label = '';\n\n ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n}\n","<label>Unknown form:<b>{{label}}</b></label>\n<pre><ng-content></ng-content></pre>\n","import { InjectionToken } from \"@angular/core\";\n\nexport const API_BASE_URL = new InjectionToken<string>('ApiBaseUrl');\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { Observable, combineLatest, map, merge, mergeMap, of } from 'rxjs';\n\nimport { PageBase, View } from '@candy-kingdom/bonnie';\n\nimport { SettingData } from \"../generated\";\nimport { API_BASE_URL } from \"./API_BASE_URL\";\n\ntype DataDictionary = { [n: string]: Observable<unknown> };\n\nexport type SettingDataDict = { [id: string]: SettingData };\n\n@Injectable()\nexport class DataService {\n private readonly http = inject(HttpClient);\n private readonly baseHref = inject(API_BASE_URL);\n\n public getView(viewCode: string): Observable<Readonly<PageBase>> {\n const pageOb = this.getSkeleton<PageBase>(`${this.baseHref}api/views/${viewCode}`);\n return pageOb;\n }\n\n public getPage(pageRoute: string): Observable<Readonly<PageBase>> {\n const pageUrl = `/${pageRoute}`\n\n const pageOb = this.getSkeleton<PageBase>(`${this.baseHref}api/pages/?url=${encodeURIComponent(pageUrl)}`);\n return pageOb;\n }\n\n public getSettings(ids: string[]): Observable<Readonly<SettingDataDict>> {\n const pageOb = this.http.get<SettingDataDict>(`${this.baseHref}api/settings`, {\n params: { ids: ids }\n });\n\n return pageOb;\n }\n\n private getSkeleton<T extends (PageBase | View)>(url: string): Observable<Readonly<T>> {\n const skeletonOb = this.http.get<T>(url);\n\n const routeDataObs = skeletonOb\n .pipe\n (\n map(\n x => {\n const notEmptyDataRoutes = x.bones\n .map(b => ('dataRoute' in b) && typeof (b.dataRoute) === 'string' ? b.dataRoute : '')\n .filter(x => x.length > 0);\n\n if (notEmptyDataRoutes.length === 0) {\n const emptyData: DataDictionary = {};\n return { page: of(x), data: of(emptyData) };\n }\n\n return {\n page: of(x),\n data: combineLatest\n (\n notEmptyDataRoutes\n .map(dataRoute => {\n const url = `${this.baseHref}api/Pages/Children/?url=${dataRoute}`;\n\n return {\n route: dataRoute,\n json: this.http.get(url)\n }\n })\n .reduce(\n (prev, curr) => {\n prev[curr.route] = curr.json;\n return prev;\n }, {} as DataDictionary\n )\n )\n }\n }\n\n ),\n map(x => combineLatest(x)),\n mergeMap(res => merge(res)),\n map(x => {\n\n for (const bone of x.page.bones) {\n if (!('dataRoute' in bone) || typeof bone.dataRoute !== 'string' || bone.dataRoute.length === 0)\n continue;\n\n const data = x.data[bone.dataRoute];\n\n if (data === undefined || data === null)\n throw new Error(`Data ${bone.dataRoute} have not been preloaded`);\n\n (bone as any).data = data; // todo: fix\n }\n\n return x.page;\n })\n );\n\n return routeDataObs;\n }\n}\n\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { Observable } from 'rxjs';\n\nimport { PageBase } from \"@candy-kingdom/bonnie\";\n\nimport { SettingBase, SettingGroup } from \"../generated\";\nimport { API_BASE_URL } from \"./API_BASE_URL\";\n\n@Injectable()\nexport class AdminDataService {\n private readonly http = inject(HttpClient);\n private readonly baseHref = inject(API_BASE_URL);\n\n constructor() {\n console.log('baseHref: ' + this.baseHref);\n }\n\n public getSettingGroups(): Observable<SettingGroup[]> {\n const pageOb = this.http.get<SettingGroup[]>(`${this.baseHref}api/admin/settings`);\n return pageOb;\n }\n\n public getPage(url: string): Observable<SettingGroup[]> {\n const pageOb = this.http.get<SettingGroup[]>(`${this.baseHref}api/admin/pages/${url}`);\n return pageOb;\n }\n\n public storePage(page: PageBase): Observable<void> {\n const ob = this.http.post<void>(`${this.baseHref}api/admin/pages`, page);\n return ob;\n }\n\n public updateSettings(settings: SettingBase[]): Observable<void> {\n const ob = this.http.post<void>(`${this.baseHref}api/admin/settings`, settings);\n return ob;\n }\n}\n\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { DeviceType } from '../core';\nimport { EditableGroupComponent } from '../core-components';\n\n@Component({\n selector: 'bonc-admin-controls',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './admin-controls.component.html',\n styleUrls: ['./admin-controls.component.scss']\n})\nexport class AdminControlsComponent {\n public readonly DeviceType = DeviceType;\n\n @Input({ required: true })\n public editableGroup!: EditableGroupComponent;\n\n @Input()\n public deviceControls = false;\n\n public locale = 'en';\n public device = this.DeviceType.Desktop;\n\n public changeLocale(): void {\n this.locale = this.locale === 'en' ? 'ru' : 'en';\n }\n\n public changeDevice(): void {\n switch (this.device) {\n case DeviceType.Desktop:\n this.device = DeviceType.Tablet;\n return;\n\n case DeviceType.Tablet:\n this.device = DeviceType.Mobile;\n return;\n\n case DeviceType.Mobile:\n this.device = DeviceType.Desktop;\n return;\n\n default:\n this.device = DeviceType.Desktop;\n return;\n }\n }\n}\n","<div class=\"page-controls\">\n <a (click)=\"changeLocale()\" class=\"locale\">Locale: {{locale}}</a>\n\n <!-- todo: return this functionality -->\n <!-- <a *ngIf=\"deviceControls\" (click)=\"changeDevice()\" class=\"device\">\n <span *ngIf=\"device === DeviceType.Desktop\">DESKTOP</span>\n <span *ngIf=\"device === DeviceType.Tablet\">TABLET</span>\n <span *ngIf=\"device === DeviceType.Mobile\">MOBILE</span>\n </a> -->\n\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\n (click)=\"editableGroup.saveAll()\"\n class=\"save\">Save all</a>\n\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\n (click)=\"editableGroup.cancelAll()\"\n class=\"cancel\">Cancel all</a>\n</div>\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, inject } from '@angular/core';\nimport { CommonModule, DecimalPipe } from '@angular/common';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { HttpClient, HttpEvent, HttpEventType, HttpRequest } from '@angular/common/http';\nimport { catchError, last, map, Observable } from 'rxjs';\n\nimport { MediaObjectFit, PixMediaUnion, MarcyMediaComponent } from '@candy-kingdom/bonnie';\nimport { MediaType } from '../core';\n\nconst imageMimeTypes = ['image/png', 'image/jpeg'];\nconst videoMimeTypes = ['video/mp4'];\n\nconst imageFileTypes = imageMimeTypes.join(',');\nconst videoFileTypes = videoMimeTypes.join(',');\n\nconst allMediaFileTypes = `${imageFileTypes},${videoFileTypes}`;\n\n@Component({\n selector: 'bonc-media-uploader',\n standalone: true,\n imports: [CommonModule, DecimalPipe, MarcyMediaComponent],\n templateUrl: './media-uploader.component.html',\n styleUrls: ['./media-uploader.component.scss']\n})\nexport class MediaUploaderComponent {\n public readonly MediaObjectFit = MediaObjectFit;\n\n @ViewChild('fileInput', { static: true })\n public fileInput!: ElementRef<HTMLInputElement>;\n\n @Output()\n public srcChange = new EventEmitter<PixMediaUnion>();\n\n @Input({ required: true })\n public uploadUrlMap!: ReadonlyMap<MediaType, string>;\n\n @Input()\n public forceRatio?: number;\n\n public progress = 0;\n public isUploading = false;\n\n public autoplay = true;\n public clipStyle?: SafeStyle;\n public fileTypeMask = allMediaFileTypes;\n\n private _uploadType?: MediaType;\n private _src?: PixMediaUnion;\n\n private readonly sanitizer = inject(DomSanitizer);\n private readonly http = inject(HttpClient);\n private readonly cd = inject(ChangeDetectorRef);\n\n @Input()\n public set src(newSrc: PixMediaUnion | undefined) {\n if (this._src === newSrc)\n return;\n\n this._src = newSrc;\n }\n\n public get src(): PixMediaUnion | undefined {\n return this._src;\n }\n\n @Input()\n public set uploadType(newUploadType: MediaType | undefined) {\n switch (newUploadType) {\n case \"image\":\n this._uploadType = newUploadType;\n this.fileTypeMask = imageFileTypes;\n break;\n\n case \"video\":\n this._uploadType = newUploadType;\n this.fileTypeMask = videoFileTypes;\n break;\n\n case undefined:\n default:\n this._uploadType = newUploadType;\n this.fileTypeMask = allMediaFileTypes;\n break;\n }\n }\n\n public get uploadType(): MediaType | undefined {\n return this._uploadType;\n }\n\n public onFileSelect(fileInput: HTMLInputElement) {\n if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)\n return;\n\n const file = fileInput.files[0];\n\n let uploadingMediaType: MediaType;\n\n if (this._uploadType !== undefined && this._uploadType !== null) {\n uploadingMediaType = this._uploadType;\n }\n else if (imageMimeTypes.includes(file.type)) {\n uploadingMediaType = 'image';\n }\n else if (videoMimeTypes.includes(file.type)) {\n uploadingMediaType = 'video';\n }\n else {\n console.error(`unknown media type ${file.type} (${file.name})`);\n return;\n }\n\n const uploadUrl = this.uploadUrlMap.get(uploadingMediaType);\n\n if (uploadUrl === undefined || uploadUrl === null) {\n console.error(`upload map doesn't have url for type ${uploadingMediaType}`);\n return;\n }\n\n const formData: FormData = new FormData();\n\n formData.append('file', file);\n formData.append('ratio', `${this.forceRatio ?? 0}`);\n\n this.progress = 0;\n this.isUploading = true;\n\n this.updateClip();\n\n const request = new HttpRequest('POST', uploadUrl, formData, {\n reportProgress: true\n });\n\n this.http\n .request<PixMediaUnion>(request)\n .pipe\n (\n map(event => this.getEventMessage(event)),\n // tap(message => this.showProgress(message)),\n last(), // return last (completed) message to caller\n catchError(this.handleError(file))\n ).subscribe\n (\n () => { this.isUploading = false; }\n );\n }\n\n public selectFile(event: Event): void {\n // ignore buble click on file picker\n if (event.target === this.fileInput.nativeElement)\n return;\n\n this.fileInput.nativeElement.click();\n }\n\n private getEventMessage(event: HttpEvent<PixMediaUnion>): void {\n switch (event.type) {\n case HttpEventType.Sent:\n break;\n\n case HttpEventType.UploadProgress:\n this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;\n this.updateClip();\n break;\n\n case HttpEventType.Response:\n if (event.body === undefined || event.body === null) {\n console.error('media deserialization error. Response body in undefined');\n } else {\n // remove this\n // needed for C# deserialization\n const pixmedia = {\n $type: event.body.type,\n ...event.body as any,\n };\n\n this.srcChange.emit(pixmedia);\n }\n break;\n\n default:\n break;\n }\n\n this.cd.detectChanges();\n }\n\n private updateClip(): void {\n this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);\n }\n\n private handleError(file: File): (p1: unknown, p2: Observable<unknown>) => Observable<unknown> {\n const func = (error: unknown, p2: Observable<unknown>): Observable<unknown> => {\n const message = `error uploadingFile ${file.name}.`;\n console.error(message, error, p2);\n alert(message);\n return new Observable<unknown>();\n };\n\n return func;\n }\n}\n","<bon-media [src]=\"src\" [objectFit]=\"MediaObjectFit.Cover\"></bon-media>\n\n<div *ngIf=\"src?.sources?.length===0\">Upload media</div>\n\n<div (click)=\"selectFile($event)\" class=\"media-container\">\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\n <span *ngIf=\"isUploading\"\n [style.clip-path]=\"clipStyle\"\n [style.-webkit-clip-path]=\"clipStyle\"\n class=\"loader\"></span>\n\n <span *ngIf=\"isUploading\" class=\"loader-text\">\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\n <span *ngIf=\"progress >= 1\">converting</span>\n </span>\n</div>\n","import { Directive, ViewContainerRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[boncSkeletonEditorAnchor]',\n standalone: true\n})\nexport class SkeletonEditorAnchorDirective {\n public readonly viewContainerRef = inject(ViewContainerRef);\n}\n","import { EventEmitter, HostBinding, Component, Input } from '@angular/core';\n\nimport { Bone } from '@candy-kingdom/bonnie';\n\nimport { ContentPreset } from '../skeleton-editor/ContentPreset';\nimport { IBoneEditor } from '../skeleton-editor/IBoneEditor';\nimport { DeviceType } from '../core';\n\n@Component({ template: '' })\nexport abstract class BoneEditorBaseComponent<TBone extends Bone> implements IBoneEditor<TBone> {\n public readonly editing: EventEmitter<boolean> = new EventEmitter<boolean>();\n public readonly saved: EventEmitter<Bone> = new EventEmitter<Bone>();\n public readonly removed: EventEmitter<void> = new EventEmitter<void>();\n\n public readonly noPresets: boolean;\n\n @Input({ required: true })\n public locale!: string;\n public device = DeviceType.NotSet;\n\n private _bone!: TBone;\n private _storedData: string = '';\n\n private _currentPreset: ContentPreset<TBone> | undefined;\n\n protected readonly presets: ReadonlyArray<ContentPreset<TBone>>;\n private _isDirty = false;\n private _isEditing = false;\n\n public abstract onReset(): void;\n public abstract onFinishEditing(): void;\n\n protected abstract getPresets(): ContentPreset<TBone>[];\n\n constructor() {\n this.presets = this.getPresets();\n\n if (this.presets === undefined || this.presets === null)\n throw new Error('presets cannot be undefined in ContentPreset constructor');\n\n if (this.presets.length === 0) {\n this.presets = [\n\n {\n title: 'default',\n isActive: () => true,\n transformer: bone => bone,\n clean: bone => bone,\n }\n ];\n }\n\n this.noPresets = this.presets.length === 1;\n }\n\n @HostBinding('class.mobile') get isMobile(): boolean {\n return this.device !== undefined && this.device === DeviceType.Mobile;\n }\n\n @HostBinding('class.tablet') get isTablet(): boolean {\n return this.device !== undefined && this.device === DeviceType.Tablet;\n }\n\n @HostBinding('class.desktop') get isDesktop(): boolean {\n return this.device !== undefined && this.device === DeviceType.Desktop;\n }\n\n public get currentPreset(): ContentPreset<TBone> | undefined {\n return this._currentPreset;\n }\n\n public get bone(): TBone {\n return this._bone;\n }\n\n @Input({ required: true })\n public set bone(newData: TBone) {\n this._isDirty = false;\n this._storedData = JSON.stringify(newData);\n this._bone = JSON.parse(this._storedData);\n this.updatePresetByData();\n }\n\n public get isDirty(): boolean {\n return this._isDirty;\n }\n\n public get isEditing(): boolean {\n return this._isEditing;\n }\n\n public resetData(): void {\n this._isEditing = false;\n this.bone = JSON.parse(this._storedData);\n\n if (this.onReset !== undefined)\n this.onReset();\n\n this.editing.emit(false);\n }\n\n public updateDirty(): void {\n this._isDirty = JSON.stringify(this._bone) !== this._storedData;\n }\n\n public markAsDirty(): void {\n this._isDirty = true;\n }\n\n public remove(): void {\n this.removed.next();\n }\n\n public save(): void {\n if (!this.isDirty)\n return;\n\n this._isDirty = false;\n\n this.finishEditing();\n\n this._storedData = JSON.stringify(this._bone);\n\n const clonedData: TBone = JSON.parse(this._storedData);\n this.saved.emit(clonedData);\n }\n\n public startEditing(): void {\n if (this._isEditing) {\n this.updateDirty();\n return;\n }\n\n this._isEditing = true;\n this.updateDirty();\n\n this.editing.emit(true);\n }\n\n public finishEditing(): void {\n if (this._isDirty)\n throw new Error('Нельзя закрывать редактирование когда есть изменения. Надо сохранить либо зарезетить.');\n\n if (this.onFinishEditing !== undefined)\n this.onFinishEditing();\n\n this._isEditing = false;\n }\n\n public nextPreset(): void {\n const newIndex = this._currentPreset === undefined ? 0 : this.presets.indexOf(this._currentPreset) + 1;\n this.applyPresetAtIndex(newIndex);\n }\n\n private applyPresetAtIndex = (newIndex: number): void => {\n newIndex = newIndex < 0 ? 0 : newIndex % this.presets.length;\n\n const currentIndex = this._currentPreset === undefined ? -1 : this.presets.indexOf(this._currentPreset);\n if (currentIndex === newIndex)\n return;\n\n this._currentPreset = this.presets[newIndex];\n this._currentPreset.transformer(this._bone);\n\n this.updateDirty();\n }\n\n private updatePresetByData = (): void => {\n const countOfActive = this.presets.map(p => p.isActive(this._bone)).filter(p => p).length;\n\n if (countOfActive !== 1)\n throw new Error(`active preset count should be equal 1, but it was: ${countOfActive}. ${this.constructor.name}`);\n\n for (let i = 0; this.presets.length; i++) {\n const preset = this.presets[i];\n\n if (preset.isActive(this._bone)) {\n this.applyPresetAtIndex(i);\n break;\n }\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { CommonModule, JsonPipe } from '@angular/common';\nimport { Bone } from '@candy-kingdom/bonnie';\n\nimport { ContentPreset } from '../../skeleton-editor/ContentPreset';\nimport { BoneEditorBaseComponent } from '../bone-editor-base.component';\n\n@Component({\n selector: 'bonc-unknown-bone-editor',\n standalone: true,\n imports: [CommonModule, JsonPipe],\n templateUrl: './unknown-bone-editor.component.html',\n styleUrls: ['./unknown-bone-editor.component.scss']\n})\nexport class UnknownBoneEditorComponent extends BoneEditorBaseComponent<Bone> {\n public onFinishEditing(): void { }\n public onReset(): void { }\n\n protected getPresets(): ContentPreset<Bone>[] {\n return [];\n }\n}\n","<p>Unknown Bone Editor | bone type: {{bone.type}}</p>\n<pre>{{bone | json}}</pre>\n","import { Component, ComponentFactoryResolver, EventEmitter, Input, OnChanges, Output, ViewChild, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Subscription } from 'rxjs';\n\nimport { Bone } from '@candy-kingdom/bonnie';\n\nimport { SkeletonEditorAnchorDirective } from '../skeleton-editor-anchor.directive';\nimport { DeviceType } from '../../core';\nimport { IBoneEditor } from '../IBoneEditor';\nimport { BoneEditorMap } from '../BoneEditorMap';\nimport { UnknownBoneEditorComponent } from '../../bone-editors/unknown-bone-editor/unknown-bone-editor.component';\n\n// todo: rename class\n@Component({\n selector: 'bonc-bone-editor-container',\n standalone: true,\n imports: [CommonModule, SkeletonEditorAnchorDirective],\n templateUrl: './bone-editor-container.component.html',\n styleUrls: ['./bone-editor-container.component.scss']\n})\nexport class BoneEditorContainerComponent implements OnChanges {\n @ViewChild(SkeletonEditorAnchorDirective, { static: true })\n public anchor!: SkeletonEditorAnchorDirective;\n\n @Output()\n public removed: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public saved: EventEmitter<Bone> = new EventEmitter<Bone>();\n\n @Output()\n public editing: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n public DeviceType = DeviceType;\n\n public editor!: IBoneEditor;\n\n public themePopupIsShown = false;\n\n private _bone!: Bone;\n\n private removeSubscription?: Subscription;\n private saveSubscription?: Subscription;\n private changedSubscription?: Subscription;\n\n @Input({ required: true })\n public locale!: string;\n\n @Input()\n public device = DeviceType.NotSet;\n\n private readonly componentFactoryResolver = inject(ComponentFactoryResolver);\n\n ngOnChanges(): void {\n if (this.editor === undefined || this.editor === null)\n return;\n\n this.editor.locale = this.locale;\n this.editor.device = this.device;\n }\n\n @Input({ required: true })\n public map!: BoneEditorMap\n\n public get bone(): Bone {\n return this._bone;\n }\n\n @Input({ required: true })\n public set bone(newBone: Bone) {\n this._bone = newBone;\n\n if (this.removeSubscription) {\n this.removeSubscription.unsubscribe();\n this.removeSubscription = undefined;\n }\n\n if (this.saveSubscription) {\n this.saveSubscription.unsubscribe();\n this.saveSubscription = undefined;\n }\n\n if (this.changedSubscription) {\n this.changedSubscription.unsubscribe();\n this.changedSubscription = undefined;\n }\n\n const viewContainerRef = this.anchor.viewContainerRef;\n\n viewContainerRef.clear();\n\n const componentType = this.map.get(newBone.type) ?? UnknownBoneEditorComponent;\n\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\n const boneEditorRef = viewContainerRef.createComponent(componentFactory);\n\n this.editor = boneEditorRef.instance;\n this.editor.bone = newBone;\n\n this.removeSubscription = this.editor.removed.subscribe(() => {\n this.removed.next();\n });\n\n this.changedSubscription = this.editor.editing.subscribe\n (\n (isEditing: boolean) => {\n this.editing.next(isEditing);\n }\n );\n\n this.saveSubscription = this.editor.saved.subscribe(\n (newBoneValue: Bone) => {\n this.saved.next(newBoneValue);\n }\n );\n\n this.ngOnChanges();\n }\n\n public nextPreset = (): void => {\n if (this.editor === undefined || this.editor === null)\n return;\n\n this.editor.nextPreset();\n }\n\n // todo: add or remove visibility feature\n\n // public setDisabled = (disabled: boolean): void => {\n // if (this.editor === undefined || this.editor === null)\n // return;\n\n // this.editor.startEditing();\n\n // if (this.device === DeviceType.Desktop)\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Desktop, !disabled);\n // else if (this.device === DeviceType.Tablet)\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Tablet, !disabled);\n // else if (this.device === DeviceType.Mobile)\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Mobile, !disabled);\n\n // this.editor.updateDirty();\n // }\n\n public get disabled(): boolean {\n if (this.editor === undefined || this.editor === null)\n throw new Error('editor should have been set');\n\n return false;\n // todo: add or remove visibility feature\n // const visibility = this.editor.bone.visibility;\n\n // if (this.device === DeviceType.Desktop && hasFlag(visibility, DeviceVisibility.Desktop))\n // return false;\n\n // if (this.device === DeviceType.Tablet && hasFlag(visibility, DeviceVisibility.Tablet))\n // return false;\n\n // if (this.device === DeviceType.Mobile && hasFlag(visibility, DeviceVisibility.Mobile))\n // return false;\n\n // return true;\n }\n}\n","<div *ngIf=\"editor\" class=\"left bar\" [class.inactive]=\"editor.noPresets\">\n <!-- <a *ngFor=\"let control of editor.controls\" (click)=\"control.activate()\">{{control.label}}</a> -->\n <!-- <a (click)=\"setDisabled(!disabled)\" class=\"disabled\">block {{disabled ? 'disabled' : 'enabled'}} ({{editor.bone.visibility}})</a> -->\n <a *ngIf=\"editor.currentPreset && !editor.noPresets\" (click)=\"nextPreset()\" class=\"preset\">style:<br />{{editor.currentPreset.title}}</a>\n</div>\n\n<div class=\"editor-container\"\n [class.disabled]=\"disabled\"\n [style.width]=\"\n device === DeviceType.Desktop ? '75vw'\n : device === DeviceType.Tablet ? '55vw'\n : device === DeviceType.Mobile ? '35vw'\n : '75vw' \">\n <ng-template boncSkeletonEditorAnchor>\n </ng-template>\n</div>\n\n<div *ngIf=\"editor\" [class.active]=\"editor.isEditing || editor.isDirty\" class=\"right bar\">\n <!-- <a *ngIf=\"!editor.isEditing\" (click)=\"editor.remove()\" class=\"delete\">!!! remove</a> -->\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.resetData()\" class=\"reset\">reset</a>\n <a *ngIf=\"editor.isEditing && !editor.isDirty\" (click)=\"editor.finishEditing()\" class=\"close\">close</a>\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.save()\" class=\"save\">apply</a>\n</div>\n","import { Component, Input, OnChanges, OnInit, QueryList, ViewChildren, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { Bone } from '@candy-kingdom/bonnie';\nimport { BoneEditorContainerComponent } from './bone-editor-container/bone-editor-container.component';\nimport { EditableDirective } from '../core-components/editable.directive';\nimport { DeviceType } from '../core';\nimport { IBoneTemplate } from './IBoneTemplate';\nimport { BoneEditorMap } from './BoneEditorMap';\n\n// todo: rename class\n@Component({\n selector: 'bonc-skeleton-editor',\n standalone: true,\n imports: [CommonModule, BoneEditorContainerComponent],\n templateUrl: './skeleton-editor.component.html',\n styleUrls: ['./skeleton-editor.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class SkeletonEditorComponent implements OnInit, OnChanges {\n @ViewChildren('boneEditorContainer')\n public boneEditorContainerList!: QueryList<BoneEditorContainerComponent>;\n\n @Input({ required: true })\n public locale!: string;\n\n @Input()\n public device = DeviceType.NotSet;\n\n public readonly templatesAreShown: boolean[] = [];\n\n public readonly editable = inject(EditableDirective<Bone[]>, { host: true });\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.boneEditorContainerList.forEach\n (\n editorContainer => editorContainer.editor?.save()\n );\n\n this.editable.save();\n });\n\n this.editable.canceled.subscribe(() => {\n this.boneEditorContainerList.forEach\n (\n editorContainer => editorContainer.editor?.resetData()\n );\n\n this.editable.save();\n });\n }\n\n @Input({ required: true })\n public map!: BoneEditorMap;\n\n public ngOnChanges(): void {\n this.templatesAreShown.splice(0, this.templatesAreShown.length);\n if (this.bones === undefined)\n return;\n\n this.bones.forEach(() => this.templatesAreShown.push(false));\n this.templatesAreShown.push(false);\n }\n\n @Input({ required: true })\n public templates!: ReadonlyArray<IBoneTemplate>;\n\n\n public get bones(): Bone[] {\n return this.editable?.value ?? [];\n }\n\n public boneEditHandler(isEditing: boolean): void {\n if (isEditing)\n this.editable.startEditing();\n else {\n const allClosed = this.boneEditorContainerList\n .filter(x => x.editor !== undefined && x.editor.isEditing)\n .length === 0;\n\n this.editable.updateDirty();\n\n if (!this.editable.isDirty && allClosed)\n this.editable.close();\n }\n }\n\n public boneChangeHandler(index: number, newBoneValue: Bone): void {\n if (Array.isArray(this.editable.value)) {\n this.editable.value[index] = newBoneValue;\n }\n\n this.editable.save();\n }\n\n public removeBone(boneIndex: number): void {\n if (this.bones === undefined || this.bones === null)\n return;\n\n if (!confirm('Вы уверены, что хотите удалить компонент?'))\n return;\n\n this.bones.splice(boneIndex, 1);\n\n if (!this.editable.inEditMode)\n this.editable.startEditing();\n\n this.editable.save();\n }\n\n public moveDown(boneIndex: number): void {\n if (boneIndex >= this.bones.length - 1)\n return;\n\n this.swapBones(boneIndex, boneIndex + 1);\n }\n\n public moveUp(boneIndex: number): void {\n if (boneIndex <= 0)\n return;\n\n this.swapBones(boneIndex - 1, boneIndex);\n }\n\n public createBone(index: number, selectedTemplate: IBoneTemplate): void {\n const newBone = selectedTemplate.boneFactory();\n\n this.bones.splice(index, 0, newBone);\n }\n\n private swapBones(index1: number, index2: number): void {\n if (index1 < 0 || index2 < 0 || index1 >= this.bones.length || index2 >= this.bones.length)\n throw new Error(`ошибка swapBones. неправильные индексы ${index1} и ${index2}. bone count: ${this.bones.length}`);\n\n const tempBone = this.bones[index1];\n this.bones[index1] = this.bones[index2];\n this.bones[index2] = tempBone;\n }\n}\n\n\n","<ng-template #controls let-index='index'>\n <div [class.appearable]=\"index > 0 && index < bones.length\" class=\"controls\">\n <div *ngIf=\"index < bones.length\" class=\"up-down\">\n <a *ngIf=\"index > 0\" (click)=\"moveDown(index - 1)\" class=\"down\">move down</a>\n <a *ngIf=\"index > 0\" (click)=\"moveUp(index)\" class=\"up\">move up</a>\n </div>\n <a (click)=\"templatesAreShown[index] = true\" class=\"add\">create</a>\n <a *ngIf=\"index < bones.length\" (click)=\"removeBone(index)\" class=\"remove\">remove</a>\n </div>\n\n <div *ngIf=\"templatesAreShown[index]\" class=\"templates\">\n <a *ngFor=\"let template of templates\" (click)=\"templatesAreShown[index] = false; createBone(index,template);\">{{template.title}}</a>\n <a (click)=\"templatesAreShown[index] = false\">Close</a>\n </div>\n</ng-template>\n\n<!-- todo: add trackby -->\n<ng-container *ngFor=\"let bone of bones; let i = index\">\n <ng-container>\n <ng-container *ngTemplateOutlet=\"controls; context: {index: i}\"></ng-container>\n </ng-container>\n\n <bonc-bone-editor-container #boneEditorContainer\n [map]=\"map\"\n [bone]=\"bone\"\n [locale]=\"locale\"\n [device]=\"device\"\n (removed)=\"removeBone(i)\"\n (editing)=\"boneEditHandler($event)\"\n (saved)=\"boneChangeHandler(i, $event)\">\n </bonc-bone-editor-container>\n\n</ng-container>\n\n<ng-container *ngTemplateOutlet=\"controls; context: {index: bones.length}\"></ng-container>\n","import { Bone } from '@candy-kingdom/bonnie';\n\nexport interface ContentPreset<out TBone extends Bone> {\n title: string;\n isActive(data: TBone): boolean;\n clean(data: TBone): void;\n transformer(bone: TBone): void;\n}\n\nexport function createPreset<TBone extends Bone>(params: { title: string, style: string }): ContentPreset<TBone> {\n return {\n title: params.title,\n isActive: x => x.style === params.style,\n transformer: bone => bone.style = params.style,\n clean: bone => bone.style = params.style,\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i1.EditableDirective"],"mappings":"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"}